我找到了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