如何使用spi协议mtd_dataflash.c ..?

时间:2013-08-21 12:00:35

标签: linux-device-driver embedded-linux archlinux cortex-m3 uclinux

我已经为spi_gpio驱动程序配置了它的工作正常,如此链接Spidev do not write/read simultaneously using ioctl,我开始知道spi协议工作正常,现在我想使用spi协议与AT45DB321D 4M seria flash进行通信。通过查看AT45DB321D的数据表,我发现mtd_dataflash.c与我的设备相同。

我的锣方式是否正确......?

如果是这样,我怎么能用spi映射这个驱动程序来与AT45DB321D串行闪存进行通信......?指导我通过提供有用的文档来解决这个问题。

(我正在使用带有uclinux的cortex-m3 LPC1788开发吟游诗人)

已编辑:我可以通过以下代码并使用/dev/spidev0.1

来读取设备ID
int ret = 0;
int fd;
unsigned char buff[10],buf[]={ 0x9F }, str[4];
ret = ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits);
if (ret == -1)
    pabort("can't set bits per word");

ret = ioctl(fd, SPI_IOC_RD_BITS_PER_WORD, &bits);
if (ret == -1)
    pabort("can't get bits per word");

/*
 * max speed hz
 */
ret = ioctl(fd, SPI_IOC_WR_MAX_SPEED_HZ, &speed);
if (ret == -1)
    pabort("can't set max speed hz");

ret = ioctl(fd, SPI_IOC_RD_MAX_SPEED_HZ, &speed);
if (ret == -1)
    pabort("can't get max speed hz");
write(fd,buf,1);
read(fd, buff,10);
LPC178X_CS_HIGH;
sprintf(str,"%02X%02X%02X\n",buff[0],buff[1],buff[2]);
printf("Devce ID: ");
puts(str);

我的问题是如何将数据写入闪存AT45DB321D内存请任何帮助......?

1 个答案:

答案 0 :(得分:0)

有用的文档和建议总是来自内核源代码。阅读SPI框架的工作原理并了解其他开发人员的工作。例如,您可以看到Atmel 9260如何注册 mtd_dataflash 。总线基础结构使用模态字段将设备与驱动程序匹配。其他字段特定于您的硬件。