debian sun7i spiは> = 64バイトでは機能しません。

debian sun7i spiは> = 64バイトでは機能しません。

私のCubieboard2 spiは64バイト未満の配列ではうまく動作しますが、64バイトより大きい配列では「操作が許可されていません」エラーが発生します。

dmesg出力:

[spi-err] sun7i_spi_handler: spi0 ERR comes, irq status = 0x00003f01
[spi-err] sun7i_spi_handler: spi0 master mode error: txFIFO overflow/rxFIFO underrun or overflow
[spi-err] sun7i_spi_xfer: spi0 cpu transfer data time out
[spi-err] sun7i_spi_xfer: spi0 xfer failed

私の考えでは、SPIのDMAに問題があるようです。デバイスツリーには何も実行しておらず、arch/arm/boot/dts/ディレクトリは存在しません。また、irq 状態を確認し、irq 状態のビット 13 が 1 であることを確認しました。

Arch/arm/mach-sun7i/include/mach/spi.hから:

#define SPI_STAT_RO         (0x1 << 5)  /* rxFIFO overflow, 0: rxfifo is available;1:rxfifo has overflowed! */
#define SPI_STAT_RU         (0x1 << 6)  /* rxFIFO underrun,fectch data with no data available in FIFO */
#define SPI_STAT_TO         (0x1 << 13) /* txFIFO overflow 0:not overflow;1:overflow */
#define SPI_STAT_ERR        (SPI_STAT_TO|SPI_STAT_RU|SPI_STAT_RO) //Slave mode,no SPI_STAT_TU

この問題を解決する方法を教えてください。私はこの仕事に2週間ぶら下がりました。

ベストアンサー1

私のせい。以前のKbuildファイルにはSPI_SUNXI_NDMAがあり、SUNXIをSUN7Iに置き換え、SPI_SUN7I_NDMAではなくSUN7I_SPI_NDMAを作成する必要がありました。

おすすめ記事