侵权投诉
订阅
纠错
加入自媒体

剖析嵌入式操作系统Linux 2.6内核移植

2013-11-18 14:45
来源: 赛迪网

  全面系统移植Linux

  现在,Linux系统已广泛地应用于科技和商业领域。在中高端领域,Linux系统除了支持包括文件、电邮、网络服务器在内的企业架构外,还支持诸如防火墙、VPN服务器、路由器和网关等业务单元架构;在低端领域,Linux通常用于嵌入式系统中,例如进程控制系统、PDA、家用网关和机顶盒等。

  在系统启动和管理方面,Linux系统在企业中的应用与桌面应用十分类似,它们使用同样的启动机制。这一点在下文中将予以介绍。

  由于嵌入式系统需要迅速启动,因此它所启动的进程数量有限,操作的资源也有限。用于嵌入式系统的存储设备和小型硬件限制了系统的存储空间。有限的存储空间决定了嵌入式系统必须采用专门的文件系统和硬件解决方案,例如磨损持平技术(Wear-Leveling)。该系统并不适用于普通系统,只可在一些以特定存储设备为目标的文件系统中实施。这些存储设备的写入次数是特定的,因为磨损持平技术的目标就是确保所有的目标存储器的写入次数大体相同。

  嵌入式系统核心构件

  所有Linux套件都包含同样的核心构件:一个内核和一个根文件系统。后者包含着系统使用的软件和库,以及所有用来为用户提供支持架构和用户使用的应用软件。在标准的开发系统中,根文件系统中的许多应用软件都是编译软件和用于应用软件开发的相关软件(习惯上被称为工具链)。

  嵌入式Linux系统通常也包括同样的核心构件,只是它们有一些特殊之处。由于嵌入式系统的开发通常是在桌面系统环境下完成的,并且它的目标是特定的嵌入式开发主板。诸如TimeSys Linux之类的嵌入式Linux套件为嵌入式主板提供了特殊的内核、根文件系统和多套工具链。其中一套工具链集成在文件系统的内部,另一套则安装在桌面系统的文件系统中。后者被称为交叉编译程序,可以产生可以在嵌入式主板上执行的二进制命令。TimeSys Linux还包括第三套工具链,可以在Windows系统中运行,并产生运行于嵌入式主板的二进制命令。

  宿主系统和目标系统对于大多数嵌入式系统开发是十分重要的概念。交叉编译程序经常用于嵌入式系统开发的原因是嵌入式主板一般没有对应用软件进行编译和优化所需要的资源。同样,它们也没有足够的空间进行全面开发或纠错。常用的解决方案是使用诸如NFS (网络文件系统)之类的技术,获取实际上存储于桌面开发系统的文件系统。因为桌面系统可以提供交叉编译程序和用于开发的存储空间,该系统环境被称为宿主系统。由于嵌入式系统开发主板是应用程序最终的存储和运行场所,因此它又被称为目标系统。

  总之,宿主系统用来建立最终用于嵌入式系统的文件系统。对于大多数嵌入式系统来说,它包括一些压缩的、存储于内存中的文件系统,通常被称为初始RAM磁盘,以及其它存储于闪存中的压缩文件系统镜像。这些可以加载到内存中,也可直接调用。

  与嵌入式Linux套件相关的各类工具链和文件系统组件增加了嵌入式系统移植的复杂程度。例如,为了给嵌入式主板编译2.6内核,必须先升级用户使用的交叉编译程序。但是,在此之前用户也许还要先升级用来开发交叉编译程序的桌面系统编译程序。

  升级嵌入式系统

  如果用户安装了一个与TimeSys Linux 2.6一样的商业Linux套件,那么它能提供一整套已经过验证、可以共同工作的核心Linux组件。然而,即使是在这种情况下,用户在已有系统上所做的改动也无法全部自动移植给新的SDK(系统设计成套工具)。通常情况下向基于2.6内核进行系统移植包括以下过程:

  ◆升级所有强制性套装软件以适应编译程序,在与嵌入式系统相关联的任意桌面系统上建立系统环境。

  ◆升级所有强制性套装软件以适应为目标系统开发应用软件的所有交叉编译程序。

  ◆ 将已定制的内核设置移植到2.6内核下。

  ◆ 将所有硬件驱动程序修改为2.6内核下可用的驱动程序。

  ◆升级所有强制性套装软件,以便与用于现有根文件系统或初始RAM磁盘的应用软件和工具软件相适应。

  ◆ 将所有系统管理和设置变化由现有根文件系统移植到2.6内核下的新根文件系统中。

  ◆ 将已定制的应用软件由现有根文件系统移植到2.6内核下的新根文件系统中。

1  2  3  4  下一页>  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

电子工程 猎头职位 更多
文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号