串口触摸屏 interrupt函数不会调用问题
在做串口触摸屏移植,弄了好几天都没弄出来。。。在全志和amlogic2个平台下都是没有调用interrupt函数来接收上报数据,serio_device也注册成功了,都匹配了,也调用了connect函数。波特率设置没错,tp在Windows下用串口接收也有数据上报,但是将其接到平台上,cat /dev/ttyS0 那个tp插上的串口,有反应,但是数据没有打印,乱码都没有,都是空的,就是按下tp adb cat /dev/ttyS0 里面的光标会往后移,这里也有点怪。
现在就在想他为什么不会调用interrupt,明明串口有数据传过来,在网上找了好久,追到内核里面,interrupt函数是由tty_flip_buffer_push->flush_to_ldisc 再一步步往下调的。我在内核这2个函数里加了log,发现开完机之后这2个函数一直在无限触发?
count = receive_buf(tty, head, count); ->
disc->ops->receive_buf(tty, p, f, count);->
.receive_buf = serport_ldisc_receive,->
ret = serio->drv->interrupt(serio, data, dfl);
我想是因为他们一直在触发,导致其来不及处理其中的interrupt函数吗,感觉也不对啊,2个平台下测了下都是这样一直触发tty_flip_buffer_push->flush_to_ldisc这2个函数。问题就是为什么没有调用interrupt函数,按理说应该按一次就会调用好几次interrupt来 传对应长度的数据。代码之前在三星开发板上试过是可以的,不知道为什么换到现在这2款开发板就不行了,不同的只有内核版本,其他的都没差把。不知道该往哪里去分析了,求教了。