0

私は spi_gpio ドライバー用に構成しましたが、このリンクのように、Spidev は ioctl を使用して同時に書き込み/読み取りを行わないため、正常に動作しています。 . AT45DB321Dのデータシートを見て、mtd_dataflash.cが私のデバイスと同じであることを発見しました。

私のゴングは正しいですか...?

もしそうなら、AT45DB321Dシリアルフラッシュと通信するためにこのドライバーをspiでマップするにはどうすればよいですか...? 役立つドキュメントを提供することで、これを解決するように案内してください。

(私は uclinux で cortex-m3 LPC1788 開発 bard を使用しています)

編集:次のコードと /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 メモリにデータを書き込む方法です。何か助けてください...?

4

1 に答える 1

0

役立つドキュメントや提案は、常にカーネル ソースから提供されます。SPI フレームワークがどのように機能するかを読み、他の開発者が行ったことを見てください。たとえば、Atmel 9260がmtd_dataflashを登録する方法を確認できます。modalias フィールドは、デバイスとドライバーを一致させるためにバス インフラストラクチャによって使用されます。他のフィールドはハードウェアに固有です。

于 2013-08-22T08:53:45.113 に答える