mod_timer的定时器调用spi函数崩溃,为啥?
正在写一个触摸屏驱动,该芯片通过spi与cpu相连。按下触摸屏时产生gpio中断,我在该gpio中断里面先禁止本中断,然后调用mod_timer()启动10ms的定时查询,通过spi读取坐标值。参考的是ADS7846,但是崩溃了。
spi读写是通过spi_sync()函数,这个是死等操作,估计是定时器软件中断中也是死等操作,这样就原子操作出错,所以崩溃。
我现在改成spi_async(),进入几次定时器函数后也崩溃了,发现死在spi驱动里面,为啥? 我记得有记录说过死等操作有点什么问题....
具体的你查一下 ....讲block操作的.
这种编程最好不要用延时.......状态机, 事件触发... 搞定了,用schedule_delay那种调用方式。
页:
[1]