Semaphore.h without RTOS

Semaphore.h without RTOS

本文关键字:RTOS without Semaphore      更新时间:2023-10-16

我想知道我是否可以使用API Smahaphore中的C 编程的Linux OS使用信号量和静音。H。

我尚未处于代码开发/写作阶段,但目标是在接收器上进行读数,该接收器以115,200的波特率发送异步二进制数据。然后,必须尽可能快地将此数据传输到调制解调器中。

我正在考虑使用RTO,但我对启动加载程序以及如何在芯片或嵌入式环境上获取Linux或任何其他操作系统都不知道。

可以在由信号和管道互连的单独线程中写下这些读写功能,并添加信号量的?

当我必须以另一种格式格式化收到的数据,仅解析所需的字符串或必须数学上修改它们时,可能需要信号量。在发送它们之前。

使用非RTO时是否可以收到信号量的好处?我只看到与RTOS合作应用的。

POSIX信号量与多线程Linux应用程序中的同步相比,与嵌入式应用程序中的RTOS符号相比。

考虑一下115200的波特rate含义 - 这是每秒11520个字符(假设8N1)或每个字符约86.8 USEC。现在,Linux操作系统是实时的善变的事情,但是我们肯定会在大约1毫秒的粒度上遇到麻烦,假设我们有1000Hz核心(只要您设置调度程序),这是大约11.5倍的核心。此外 - 从某种意义上说,这是最坏的情况延迟 - 批处理字符的写作将几乎具有完美的字符与字符潜伏期,假设您可以保持外向的缓冲区的填充。

现在回答以下问题:您的应用程序可以容忍什么?根据答案,您必须考虑不同的事物 - 从Linux的实时补丁到混合Xenomai/rtai到像RTEM这样的完整RTOS。有了我目前对您的情况的理解,我会说使用1000Hz内核可能足够了。

Linux串行备案记录器可以同时在不同的线程中写入和阅读,而没有任何问题。您可以将这些任务与不同的线程分开,或者使用非块IO来换取无关紧要的延迟,只要您的处理很轻 - 这可以避免上下文开关,这很好,因为它们很慢。换句话说,如果使用线程或非块模式,您不需要引入信号。

最后 - 信号量实际上是所有OS的