![Rank: 8](images/default/star_level3.gif) ![Rank: 8](images/default/star_level3.gif)
- UID
- 872238
|
![](http://images.eccn.com/silabs/silicon_chip_980x60_202203.jpg)
近年来,随着微计算机软、硬件技术的不断进步,嵌入式系统的开发研究已成为工程界应用研究的热点。
国内外越来越多的厂家青睐以uClinux为代表的功能强大且完全免费的Linux操作系统为开发平台,快速开发出成本低廉、性能优异的各类产品。uClinux是一种Linux的嵌入式系统版本,最大的特征就是可以不需要硬件的MMU支持,很适合那些没有MMU的处理器。同时uCLinux可移植性强,可移植到68k,Power PC,arm 等多种微控制器。内核可以定制,经过修改、重编译后以适合特定的嵌入式应用场合。经过代码重新、紧缩和裁减后的uClinux内核,同标准Linux内核相比非常小,但是它仍然保持了Linux操作系统的主要优点,如稳定性、强大的网络功能和出色的文件系统支持等,因此uCLinux在嵌入式领域中得到广泛应用。
在许多嵌入式系统中,往往只有低容量的固存,比如MCF5282芯片内只有512k FLASH,而有些微处理器固存可能更低。在不外扩固存容量,降低系统稳定性的条件下,特别是在干扰源严重的工控环境下,采用短小、精炼的嵌入式操作系统将具有非常大的实用意义。文中以下内容将针对低固存嵌入式系统,讨论uClinux的几种特殊简化方法,应用这些方法,将非常有助于开发者开发出适合于自已的嵌入式系统。
1 内核移植
移植前首先要搭建交叉编译平台,安装交叉编译工具链,包括GCC,Binutils,uClibc。准备就绪后即可开始进行移植操作,移植过程中最大困难是如何减小uClinux系统的大小。为此文中从以下两个方面着手:内核配置级裁剪和内核源代码级裁剪。
1.1 内核配置级裁剪
Linux内核采用模块化的设计,即很多功能块可以独立地加上或卸下,开发人员在设计内核时把这些内核模块作为可选的选项,可以在编译系统内核时指定。因此一种较通用的做法是对Linux内核重新编译,在编译时仔细地选择嵌入式设备所需要的功能支持模块,同时删除不需要的功能。通过对内核的重新配置,可以使系统运行所需要的内核显著减小,从而缩减资源使用量。对于内核中不支持的设备,可以自已编制设备驱动程序,然后添加进内核。配置完内核,接下来需要对内核源代码文件的依赖性和完整性进行检验,并进行编译。
1.2 内核源代码级裁剪
Linux核心包括:进程管理模块、内存管理模块、文件系统、设备驱动模块、网络模块。在内核中文件系统和设备驱动程序占了大比重,约1/3以上,所以去除不必要的文件系统和设备驱动程序将会使内核大小有较大范围的缩减,这已在上一步骤中实现。所以文件系统的裁剪是重中之重。考虑到制作整个根文件系统的高昂代价,约有700kbyte大小,而一般嵌入式微处理器的FLASH一般小于512kbyte,根本就不可能固化,所以为了缩减系统的大小必须删除根文件系统,同时也导致内核与应用程序必须一体化。要删除根文件系统,并不是简单删除源代码,而是一个错综复杂的宏大工程。整个系统的框架如图1所示。
![](http://embed.chinaitlab.com/UploadFiles_4615/201106/2011060420293326.png)
|
|