嵌入式Linux可以满足200ms的时序要求吗?

时间:2012-11-02 22:22:03

标签: linux real-time communication

我正在开发一个嵌入式Linux项目,我们需要在200ms内从串口确认消息。如果我没有使用某些实时变体,那么不能保证Linux会在那段时间内响应吗?硬件将是运行Debian的200MHz ARM。当前使用的内核版本是“2.6.32#1 SMP PREEMPT”。还想知道PREEMPT在这里的确切含义。

2 个答案:

答案 0 :(得分:2)

抢占意味着具有正确优先级的arbritary任务可以随时中断在OS的调度程序中运行的任何任务。使用此功能,您可以保证具有时序约束的任务可以满足其要求。

下图说明了正在进行的调度: example of preemptive scheduling

如今,几乎所有流行的操作系统都支持用户空间中的抢占式调度。但是,在这种调度不支持内核空间(驱动程序,其他关键内核任务),因此有一些计划,如RTLinux和您的操作系统Debian SMP PREEMPT,它们试图在操作系统中支持完全抢占式调度(制作它是hard realtime system)。

所以,是的,您的内核将提供应用程序所需的时序约束。

答案 1 :(得分:1)

这意味着它是一个实时内核。抢先意味着中断或停止操作。因此,如果irq请求进入内核,内核会立即停止正在执行的操作并处理irq。因此,您可以实时响应串行总线上发生的事件或音频输入。

我在需要时使用构建实时内核(通常是音频应用程序),它是一系列补丁,可以添加到vanilla内核中以使其抢占(实时)。

我不知道如果你能在200ms内响应一个串行请求而没有测试,但这听起来肯定是可能的。

除了Debian,RedHat和其他带有抢先内核的发行版之外,还有完整的发行版专门用于实时Linux,如RTLinux,我猜他们中的大多数都会有ARM版本。