最近在做一个项目,需要用到串口通信,而且对通信的实时性要求比较严格,要求在接收到对方数据后5ms之内要给出回应。目前程序已经编写完毕,但是发现一个比较纠结的问题。
现在用串口接收数据发现存在一定的时延,重新编译了一下内核,在串口驱动上加了一个接收时间戳。上层应用程序使用select函数判断串口是否存在数据,如果存在则接收数据并获取当前时间戳。现在发现这两个时间戳之间就存在一定的时间差,小的时候有1ms,大的时候竟然有十几ms。
板子cpu用的是ATMEL 9260,操作系统为LINUX。
不知道大家之前有没有碰到过这种问题,有什么方式可以减小从驱动和应用程序之间的接收时延吗?
|