1

我正在为 linux 编写一个 SPI 驱动程序。一些相关文档是http://www.mjmwired.net/kernel/Documentation/spi/spi-summaryhttp://ww2.cs.fsu.edu/~rosentha/linux/2.6.26.5/docs/DocBook/kernel -api/ch25.html

大多数情况下,传输都成功执行,并且调用了我的完成回调。当我访问消息时,status我总是看到零(指示)。根据actual_length需要是 112(我的传输长度)。

但是,一段时间后,我可能会收到一个回调actual_length == 0。所有后续调用甚至都有actual_length == 224. 关闭 spi 设备后,回调仍然被调用,消息长度迅速增加(每次调用,它增加了 112),尽管我不再调用spi_async了。

任何人都可以提供可能导致这种行为的提示吗?

非常感谢!

4

2 回答 2

0

我不是专业人士,但如果您使用 dma 等,则可能存在缓存一致性问题。

于 2011-11-03T10:44:33.537 回答
0

原来原因是线程问题:我们在最后一次传输完成之前覆盖了 spi_message 对象。

于 2011-11-03T15:31:57.623 回答