2011-11-03 104 views
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.htmlSPI完成回調處理程序

大部分時間傳輸成功執行,我的完成回調被調用。當我訪問消息的status時,我總是看到零(表示)。 actual_length是112(我的傳輸長度)根據需要。

但是,經過一段時間後,可能會發生與actual_length == 0的回調。所有後續調用甚至有actual_length == 224。在關閉spi設備之後,回調仍然會被調用,消息長度會迅速上升(每次調用,它會增加112),儘管我沒有再打spi_async

任何人都可以提供一個提示什麼可能會導致此行爲?

非常感謝!

回答

0

事實證明,原因是一個線程問題:我們在最後一次傳輸完成之前覆蓋了spi_message對象。

0

我不是一個專業知識,但如果你使用dma等,也許有緩存一致性問題。