Linux可加载模块精确定时

我已经写了一个linux可加载的内核模块来处理通过GPIO引脚的自定义串行协议来与embedded式设备进行通信。

为了获得更多的优先级,我使用了这种方法,以及更精确的控制GPIO转换。 我已经使用了linx / delay.h中的udelay / mdelay函数。

我在一个arduino板上实现了一个中断处理程序,通过串口debugging接口,打印输出GPIO转换之间的时间,而且时序似乎不像我预期的那么精确(请不要考虑由debugging接口,同样的问题是在较低的速度下可重现)。

你能指点我如何发现为什么它发生,或者如何获得一个更好的方式,在Linux模块内,以精确的时间间隔激活/停用GPIO线?

非常感谢! 安东尼奥

编辑:

我会提供一些额外的信息。 这些设备是:

  1. 发射器: 芯片 :CPU胳膊1GHz,OS Ubuntu 15
  2. 接收器:Arduino NANO

我也会问你, 默认的UART驱动程序如何以固定/精确的时间速率传输

再次感谢你!

我已经找到了使用完成API的解决方案。

不管怎样,谢谢你。