没有存储管理单元(MMU)的处理器上运行,这些都进一步促进了 Linux 在嵌入
式系统中的应用。
内核高效稳定
Linux 内核的高效和稳定已经在各个领域内得到了大量事实的验证,Linux 的内核
设计非常精巧,分成进程调度、内存管理、进程间通信、虚拟文件系统和网络接口
五大部分,其独特的模块机制可以根据用户的需要,实时地将某些模块插入到内核
或从内核中移走。这些特性使得 Linux 系统内核可以裁剪得非常小巧,很适合于嵌
入式系统的需要。
开放源码,软件丰富
Linux 是开放源代码的自由操作系统,它为用户提供了最大限度的自由度,由于嵌
入式系统千差万别,往往需要针对具体的应用进行修改和优化,因而获得源代码就
变得至关重要了。Linux 的软件资源十分丰富,每一种通用程序在 Linux 上几乎都
可以找到,并且数量还在不断增加。在 Linux 上开发嵌入式应用软件一般不用从头
做起,而是可以选择一个类似的自由软件做为原型,在其上进行二次开发。
优秀的开发工具
开发嵌入式系统的关键是需要有一套完善的开发和调试工具。传统的嵌入式开发调
试工具是在线仿真器(In-Circuit Emulator,ICE),它通过取代目标板的微处理
器,给目标程序提供一个完整的仿真环境,从而使开发者能够非常清楚地了解到程
序在目标板上的工作状态,便于监视和调试程序。在线仿真器的价格非常昂贵,而
且只适合做非常底层的调试,如果使用的是嵌入式 Linux,一旦软硬件能够支持正
常的串口功能时,即使不用在线仿真器也可以很好地进行开发和调试工作,从而节
省了一笔不小的开发费用。嵌入式 Linux 为开发者提供了一套完整的工具链
(Tool Chain),它利用 GNU 的 gcc 做编译器,用 gdb、kgdb、xgdb 做调试
工具,能够很方便地实现从操作系统到应用软件各个级别的调试。
完善的网络通信和文件管理机制
Linux 至诞生之日起就与 Internet 密不可分,支持所有标准的 Internet 网络协议,
并且很容易移植到嵌入式系统当中。此外,Linux 还支持
ext2、fat16、fat32、romfs 等文件系统,这些都为开发嵌入式系统应用打下了
很好的基础。
在嵌入式系统上运行 Linux 的一个缺点是 Linux 体系提供实时性能需要添加实时软
件模块。而这些模块运行的内核空间正是操作系统实现调度策略、硬件中断异常和执行程
序的部分。由于这些实时软件模块是在内核空间运行的,因此代码错误可能会破坏操作系
统从而影响整个系统的可靠性,这对于实时应用将是一个非常严重的弱点。
另一方面,现成的 RTOS 完全是为实时性能而设计的,它通过在由用户而非系统级进程启
动时分配给某个进程以高于其它进程的优先级的方式来实现可靠性。进程在操作系统看来