Linux可加载模块精确计时

时间:2017-06-12 13:17:05

标签: c linux linux-device-driver

我编写了一个可加载Linux的内核模块来处理GPIO引脚上的自定义串行协议,以便与嵌入式设备进行通信。

我使用这种方法是为了在控制GPIO转换中获得更高的优先级,从而获得更高的精度。我在linx / delay.h中使用了udelay / mdelay函数。

我已经在arduino板上实现了一个中断处理程序,通过串行调试接口打印输出GPIO转换之间的时间,并且时间似乎不如我预期的那么精确(请不要考虑延迟由调试接口引入,同样的问题是以较低的速度重现。)

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

非常感谢你! 安东尼奥

修改:

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

  1. 发射器:C.H.I.P.:CPU Arm 1GHz,OS Ubuntu 15
  2. 接收方:Arduino NANO
  3. 我也会问你,默认的UART驱动程序如何以固定/精确的时间速率传输

    再次感谢你!

1 个答案:

答案 0 :(得分:0)

我使用completion APIs找到了解决方案。

无论如何,谢谢你。