RTOS和嵌入式Linux有什么区别?

时间:2014-09-16 14:32:54

标签: embedded embedded-linux rtos

RTOS和嵌入式Linux用于嵌入式系统编程。嵌入式Linux本身是RTOS吗?有人可以列出比较或差异吗?

1 个答案:

答案 0 :(得分:67)

Linux是一种通用操作系统(GPOS);它在嵌入式系统中的应用通常取决于设备支持,文件系统,网络连接和UI支持的可用性。所有这些都可以在RTOS中使用,但通常支持较少,或者需要额外的成本或集成工作。

许多RTOS在Linux的意义上并不是完整的操作系统,因为它们包含一个静态链接库,只提供任务调度,IPC,同步定时和中断服务等等 - 本质上只是调度内核。这样的库与您的应用程序代码链接,以生成系统直接引导(或通过引导加载程序)的单个可执行文件。大多数RTOS不直接支持从文件系统动态加载和卸载代码,就像使用Linux一样 - 它在启动时就一直存在并运行直到断电。

至关重要的Linux并非实时能力。 RTOS提供调度保证,以确保确定性行为和及时响应事件和中断。在大多数情况下,这是通过基于优先级的先发制人调度算法,其中准备运行的最高优先级任务始终运行 - 立即 - 抢占任何较低优先级的任务,而没有特定的收益或放弃CPU,或完成一个时间-slice。

Linux有许多调度选项,包括一个实时调度程序,但这最好是" soft"实时 - 一个我不喜欢的术语,因为它是不明确的,并且基本上是指实时的,大部分时间,但有时不是。如果您的应用程序不需要" hard"实时,这很好,但实时Linux中的典型延迟将在几十或几百微秒的数量级,而典型的RTOS实时内核可以从零到几微秒的延迟实现。

嵌入式Linux的另一个问题是它需要大量的CPU资源,可能需要> 200MIPS,32位处理器,理想情况下使用MMU,4Mb ROM和16MB RAM才能启动(可能需要几秒钟)。另一方面,RTOS可以在8毫秒以上的微控制器上以毫秒为单位运行,运行时间小于10Kb。这可能会对批量生产的系统成本产生重大影响,尽管表面上是免费的#34;

有更大的RTOS产品展示了GPOS的一些功能,例如动态加载,文件系统,网络,GUI(例如,在QNX中),并且许多RTOS提供POSIX API(通常是其本机实现的辅助)时间API)例如VxWorks和QNX,因此可以相对容易地移植为Linux和Unix开发的大量代码。这些更大更全面的RTOS产品仍然可扩展,因此不包括不需要的功能。相比之下,Linux的可扩展性有限得多。