我对嵌入式世界还很陌生。我在为基于 ARM M0+ 的飞思卡尔微处理器编写固件方面有一点经验。我目前正在使用 CML-5282 开发板 (M5282LITE) 开发一个新项目,它带有 RTXC Quadros RTOS。我想知道 RTOS 和只在 codewarrior IDE 中编码有什么区别。它们是否共存并且 RTOS 只是简化了调度?或者您可以将 IDE 全部替换为 RTOS 吗?我不知道 RTOS 是什么,请给我任何见解,我将不胜感激。
3 回答
主要区别在于执行多任务的能力:并行运行更多任务。这是由调度程序完成的,它是操作系统的核心。由于它是一个实时操作系统(RTOS),任务可以根据一些实时调度算法进行调度。最流行的是固定优先级(即,任务具有静态优先级,调度程序总是以最高优先级运行任务)。
实时操作系统的优点:
- 您可以将应用程序拆分为多个同时运行的任务
- 一些驱动程序已经可用并可通过标准 API 访问
RTOS 的缺点:
- 由于上下文切换导致的一些开销
- 更复杂的调试(由于任务之间共享资源的竞争条件)
不同的 RTOS 的大小和功能各不相同,但从根本上说,RTOS 提供了任务或线程、同步机制、计时器和进程间通信的调度(通常是基于优先级的抢占式调度)。
典型的 RTOS 以静态链接库的形式提供,您可以像任何其他库一样链接到您的应用程序。IDE 完全不同,尽管在某些情况下,您可以通过运行时调试工具和(不太常见的)线程级调试将 RTOS 与 IDE 进行一些集成。
您可以查看 Jack Ganssle 的实时操作系统基础课程。它在示例中使用了 uC/OS-II,但相当通用且适用原则。
RTOS 是一个代码库,您将与您的应用程序代码链接。RTOS 提供了帮助您制作多任务应用程序的例程。这包括调度程序和任务间通信功能,例如信号量、队列和邮箱。
RTOS 不会取代您的 IDE。您仍然需要用于编辑、编译、链接和调试应用程序的工具,而这正是 IDE 提供的。有时 IDE 是“RTOS 感知的”,这意味着调试器在调试多任务应用程序时提供了额外的帮助。例如,它可以以易于阅读的方式显示任务和信号量等 RTOS 数据类型。或者它可能支持特定于任务的断点。