我找到了tsc2007驅動程序,並根據我們的需要進行了修改。我們公司正在生產自己的TI DM365板。在這個電路板中,我們使用了TSC2007,並將PENIRQ引腳連接到DM365的GPIO0。在駕駛員身上看起來不錯。當我觸摸到觸摸屏光標移動,但同時我得到如何解決「BUG:調度while atomic:swapper/0x00000103/0,CPU#0」?在TSC2007驅動程序?
BUG: scheduling while atomic: swapper /0x00000103/0, CPU#0
警告和嵌入式Linux正在崩潰。有2個文件,我修改並上傳到http://www.muhendislikhizmeti.com/touchscreen.zip一個是與計時器另一個不是。無論如何它都會給出這個錯誤。
我在網上找到了一個解決方案,我需要使用工作隊列和使用schedule_work()API調用。但現在它們對我來說很模糊。有沒有人有任何想法如何解決這個問題,並可以給我一些建議,在哪裏開始使用工作隊列。
不夠準確:正如caf所說,鎖定不能睡覺。只有spinlock符合這個條件。無法使用互斥鎖(我不確定?),因爲當互斥鎖開始等待時,可以將CPU調度到其他處理器(因爲mutex_lock()內部是一個「might_sleep()」函數調用,這可能會導致重新計劃 - 因爲cond_resched()被調用,即使您將搶佔標誌設置爲off(這可能會導致另一個錯誤?),因爲自動計劃在搶佔標誌打開時完成?讓我們來討論。 – 2014-05-19 23:48:56