低固存嵌入式系统的uClinux小型化方法 下载本文

低固存嵌入式系统的 uClinux 小型化方法

在许多嵌入式系统中,往往只有低容量的固存,比如 MCF5282 芯片内只 有 512k FLASH,而有些微处理器固存可能更低。在不外扩固存容量,降低系 统稳定性的条件下,特别是在干扰源严重的工控环境下,采用短小、精炼的嵌 入式操作系统将具有非常大的实用意义。文中以下内容将针对低固存嵌入式系 统,讨论 uClinux 的几种特殊简化方法,应用这些方法,将非常有助于开发者 开发出适合于自已的嵌入式系统。 1 内核移植

移植前首先要搭建交叉编译平台,安装交叉编译工具链,包括

GCC,Binutils,uClibc。准备就绪后即可开始进行移植操作,移植过程中最大 困难是如何减小 uClinux 系统的大小。为此文中从以下两个方面着手:内核配 置级裁剪和内核源代码级裁剪。 1.1 内核配置级裁剪

Linux 内核采用模块化的设计,即很多功能块可以独立地加上或卸下, 开发人员在设计内核时把这些内核模块作为可选的选项,可以在编译系统内核 时指定。因此一种较通用的做法是对 Linux 内核重新编译,在编译时仔细地选 择嵌入式设备所需要的功能支持模块,同时删除不需要的功能。通过对内核的 重新配置,可以使系统运行所需要的内核显著减小,从而缩减资源使用量。对 于内核中不支持的设备,可以自已编制设备驱动程序,然后添加进内核。配置 完内核,接下来需要对内核源代码文件的依赖性和完整性进行检验,并进行编 译。

1.2 内核源代码级裁剪

Linux 核心包括:进程管理模块、内存管理模块、文件系统、设备驱动

模块、网络模块。在内核中文件系统和设备驱动程序占了大比重,约 1/3 以上, 所以去除不必要的文件系统和设备驱动程序将会使内核大小有较大范围的缩减, 这已在上一步骤中实现。所以文件系统的裁剪是重中之重。考虑到制作整个根 文件系统的高昂代价,约有 700kbyte 大小,而一般嵌入式微处理器的 FLASH 一般小于 512kbyte,根本就不可能固化,所以为了缩减系统的大小必须删除根 文件系统,同时也导致内核与应用程序必须一体化。要删除根文件系统,并不 是简单删除源代码,而是一个错综复杂的宏大工程。整个系统的框架如图 1 所 示。

在本系统中删除了根文件系统,但仍保留 VFS,主要保持 VFS 向上层提 供统一接口,隐藏下层具体细节等作用,方便开发应用程序。同时针对文件规 模小、数量少的嵌入式系统 VFS 在这里要减小它的规模和简化它的功能。规模 的减小工作主要靠删除在嵌入式设备不支持的物理文件系统、设备驱动程序及 其系统调用的源码。功能的简化主要靠简化部分数据结构和系统调用,这样可 以进一步使系统规模精简。ReFS 文件系统,是根据嵌入式系统的特性开发的 一种新的文件系统。具体参见第 3 节新型文件系统(ReFS)开发。 由于根文件系统的缺失带来一些重大影响,分析如下。 tips:感谢大家的阅读,本文由我司收集整编。仅供参阅!