我们可以安排程序每5毫秒或10毫秒等执行一次吗? 我需要通过串口产生1 khz和15 khz的脉冲。 但程序只应切换串口中的引脚,因此频率必须由调度程序产生。这是否可以在Linux中使用rt补丁?
答案 0 :(得分:1)
我认为更好的解决方案是将“生成脉冲”函数放在循环中,例如:
for (;;) {
generate_pulse(); /* generate a pulse */
sleep(5ms); /* or 10ms */
}
答案 1 :(得分:1)
is this possible in linux with a rt patch?
如果时机关键,我建议选择RT补丁。
Xenomai是我在几天前在2.6内核上使用的RT补丁。
这是一个每1秒运行一次的例子。 http://www.xenomai.org/documentation/trunk/html/api/trivial-periodic_8c-example.html
答案 2 :(得分:1)
PPS project现在是mainline linux kernel的一部分(至少是2.6分支的一部分,但在最新的3.x内核分支中看起来有完全集成){{3 }}
还明确提到将此PPS实现与链接的txt文件中的串行端口一起使用
PPS源可以连接到串口(通常连接到数据 载波检测引脚)或并行端口(ACK引脚)或特殊引脚 CPU的GPIO(这是嵌入式系统中的常见情况)但在每个中都是如此 当新脉冲到达时,系统必须向其应用时间戳 并将其记录在用户地区。
显然很好的示例/教程/指南,甚至不是that hard to find,我确信在使用搜索引擎时你会找到很多好的资源。
API的标头通常位于/usr/include/linux/pps.h
。
答案 3 :(得分:0)
我终于找到了完成它的方法。 最好的方法是首先创建一个具有所需时间的计时器。然后在每次定时器溢出时调用任务(这是脉冲生成程序)。计时器的程序可以在后台运行。可以分别使用timer_create()和timer_settime()创建和设置定时器。可以使用fork()和execl()从一个程序调用另一个程序。该程序可以使用守护进程()在后台运行。 通过使用所有这些东西,我们可以创建自己的调度程序。