1

我正在开发一个嵌入式 Linux 项目,我们需要在 200 毫秒内从串行端口确认消息。如果我不使用一些实时变体,那么是否不可能保证 Linux 会在该时限内响应?硬件将是运行 Debian 的 200MHz ARM。当前使用的内核版本是“2.6.32 #1 SMP PREEMPT”。还想知道这里的 PREEMPT 到底是什么意思。

4

2 回答 2

2

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

下图准确地说明了调度的作用: 抢占式调度示例

如今,几乎所有流行的操作系统都支持用户空间中的抢占式调度。但是,在内核空间(驱动程序,其他关键内核任务)中,这种调度不支持,因此有一些举措,如 RTLinux 以及您的操作系统,Debian SMP PREEMPT试图支持操作系统中的完全抢占式调度(使其成为硬实时系统)。

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

于 2012-11-02T22:35:18.063 回答
1

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

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

如果不进行测试,我不知道您是否可以在 200 毫秒内响应串行请求,但这听起来绝对可行。

除了 Debian、RedHat 和其他具有抢占式内核的发行版之外,还有专门针对实时 Linux 的完整发行版,例如 RTLinux,我猜它们中的大多数都会有 ARM 版本。

于 2012-11-02T22:36:14.113 回答