我需要使用MIPS平台(这不是i386)开发一个生成方波的Linux驱动程序,周期约为1ms。
我尝试了一些方法,但这些方法都没有成功:
udelay
函数 - >它需要太多的CPU资源 - >性能是不可接受的谢谢。
答案 0 :(得分:2)
Unix方式根本不会这样做。也许在单一任务机器的旧时代,你会这样做,但是现在 - 如果你没有硬件电路给出适当的频率,你可能永远不会成功,因为硬件定时器没有必要的分辨率,并且可能总是会发生更重要的任务会占用您的CPU时间。
答案 1 :(得分:1)
正如FrankH所说,最好的解决方案是依靠硬件。您应该检查处理器的参考手册,看看它是否有计时器。
我要补充一点:如果它碰巧有一个输出比较或PWM子系统(我不熟悉MIPS,但它在嵌入式设备中并不常见)你可以只写一些寄存器来设置它up,然后你不需要更多的处理器时间。
答案 2 :(得分:0)
这可能是可能的,但要从Linux中获取,硬件必须具有某些特性:
如果是这种情况,那么您的特殊定时器设备驱动程序可以从其高prio中断处理程序中切换线并创建方波。由于它既是中断驱动的,也是与普通定时器中断源/消费者分开的(即不共享 - 没有延迟,因为每个中断可能会调度多个定时器事件),你有更好的准确性。
由于所有这些(可单独编程的定时器设备的存在)是特定于硬件的,因此您需要从CPU / SoC /板的规格开始,并找出是否有多个独立定时器可用