开放源代码和GNU公共授权(GPL)软件正继续将优秀的免费软件带入到信息产业的大多数领域里,其中包括嵌入式系统。最近Wind River和Green Hills软件公司公布了一步到位的免版税工具包,这昭示了开放源代码的模式如何改变传统的嵌入式工具制造商开展业务的方式。
在过去的几年中,我接触过各式各样的开放源代码软件。一开始是开发人员用普通的工具和编辑器,然后是交叉编译器和库,最后是整个操作系统,诸如嵌入式Linux和eCOS。
在我使用开放源代码软件的经历中,大部分都是正面的;可靠的免费软件,特别是还有整个社区知识丰富的开发人员为其提供无法比拟的技术支持。如果你偏好更加传统的方法,那么诸如Red Hat和MontaVista会提供打包的开放源代码软件以及有偿的技术支持。
下面是一些顶级开放源代码项目的不完全清单,这些项目都和嵌入式系统的开发人员相关。绝大多数项目都是根据主流的软件项目而改写的,而且在用于包括ARM、MIPS、PowerPC、SuperH和x86架构在内的32位或者16位的处理器时会表现出最好的性能。
GCC
GNU编译器集合(GCC)包括了一个C/C++编译器、汇编程序、连接器和库管理程序。它是作为一个内置的编译器向Linux和Windows/DOS提供的,而且能够作为一个交叉编译器(cross-compiler)用于大多数主流的32位(以及某些16位的)嵌入式架构。你的商用编译器也许事实上就是披了不同外衣的GCC。
GDB
GDB是同GCC编译器工具相配套的一个源代码层的调试器。通过实现一个小型的同GDB调试器(运行在工作站上)进行通讯的ROM监视程序(或者说是stub),你可以将GDB集成到一个嵌入式环境里。GDB在本质上是一个命令行驱动的程序,但是它可以带有各种图形前端,包括DDD和Insight。
嵌入式Linux
嵌入式Linux是一个标准的Linux操作系统代码库,它重新定位于一个嵌入式环境,通常是通过去掉不必要的特性和添加对某些特性的专门支持,例如闪存文件系统和改良的优先行为,而实现的。
嵌入式Linux是某些嵌入式设备的理想解决方案,但是由于其尺寸太大,而且其实时性能也是不确定的,因此它对于很多嵌入式设计来说是不合适的。
eCos
如果说嵌入式Linux太庞大了,那么eCos可能就能够满足要求。它是一个针对16位、32位和64位处理器的可移植开放源代码的嵌入式RTOS。和嵌入式Linux不同,它是由专门设计嵌入式系统的工作组设计的。ECOS具有相当丰富的特性和一个配置工具,后者能够让你选取你所需要的特性。
Newlib
Newlib是一个开放源代码的C语言库,其目标是嵌入式系统。它很小巧,速度快,能够移植到很多CPU架构上。Newlib不会去假设你正在使用哪种操作系统(如果有的话),因此你可以将它装进几乎所有的嵌入式环境——如果你有足够的剩余内存的话。
uClibc
如果你正在运行嵌入式的Linux,那么你就可能要碰到uClibc。它是用在标准Linux发行版里的大型glibc C语言库的迷你版,这让它更适合于只有有限内存的嵌入式环境。