我目前正在为自定义协议开发一个基于 gpio 的内核模块。根据协议的要求,我必须通过 gpio 将数据、时钟和使能信号发送到输出设备。该数据是 16 位的。为了发送任何新数据,使能信号首先变高。然后,在时钟的每个下降沿(从高到低)发送数据 1 个 1 位。发送完所有 16 位后,时钟信号停止,使能信号变为低电平。
我已经用 FriendlyARM mini2440 成功开发了这个协议。那时我已经使用了一个计时器并设置了它的 irq。在其服务程序中,我已将数据 1 逐位发送。
我目前在 Raspberry pi 中做同样的事情。我已经阅读了 BCM2825 的数据表,上面说它有 4 个系统定时器。但是,通过 Rpi 论坛搜索,我发现 Rpi 使用系统计时器 0、2 和 3。因此,我想使用的只有一个系统计时器 1。我不知道如何在 Rpi 上设置系统计时器。有人在内核模块中使用过它吗?那么请帮忙。
而不是编写内核模块,如果我用 xenomai 补丁来修补 linux 内核,那么设置一个周期性定时器并通过它的定时器中断例程发送数据会很容易吗?
有什么建议么?提前致谢。