近年来,计算机技术、通信技术及小型电子设备制造业均取得了飞速发展。以计算机、通信产品、消费电子为典型产品代表的这三大产业正呈现越发明显的整合趋势,即3C整合。
产品制造方面,各厂家都争相以微型化和专业化作为设计、制造产品的核心理念,这使得具备这些特点的产品(即嵌入式产品)成为产业中毫无争议的主流;产品系统软件方面,拥有开放源码、高硬件兼容性、高稳定性、高定制性等特点的嵌入式Linux系统,已让越来越多的企业和研发机构由传统商业系统转向对其的研究开发;新兴的嵌入式操作系统市场上,嵌入式Linux正呈现出惊人增长率。
针对这一热点,本文以对目前嵌入式Linux的开发过程与工具选择分析为主题,力争向读者展示一个清晰的开发框架及实际操作方法指向。
系统开发复杂度确定及成本控制
根据实际构建方法定义,嵌入式Linux是指对标准Linux经过裁剪、固化至设备存储体中,完成特定嵌入式应用的专用Linux系统。
进行系统开发需兼顾软件、硬件两方面资源,针对特定应用,软件系统功能要配合硬件资源
硬件方面,确定应用范围和性能等级是首先要考虑的,因为二者的选型决定了整个产品的功能及性能,也就大体确定了产品的硬件成本。硬件资源固定后,就可针对所选资源进行软件选型、功能裁剪需求、工具搭配等软件系统方面的分析和定夺了。图1是一般的系统开发流程:
图1一般的嵌入式Linux系统开发流程
作为一个功能完整的操作系统,Linux能提供嵌入式系统所需的基本内核和所有用户界面。具有内存管理、任务切换
和时间服务及其它分拆的微内核到完整的服务器,支持所有的文件系统和网络服务。要使其成为易用且高效的嵌入式系统,前期关键的工作分为Linux版本选择、系统功能裁剪分析、文件系统及工具搭配几步。
首先,按照选定的硬件选择合适的Linux系统版本,标准为系统要支持所选硬件且系统执行速度与硬件性能匹配较好。然后进行系统功能裁剪分析,标准为系统应在满足应用的前提下,尽可能减小尺寸,去掉不需要的模块。最后,为系统选择合适的文件系统及工具控制工程网版权所有,同样以满足应用和减小尺寸为标准。
做好以上系统开发复杂度分析控制工程网版权所有,不仅可较好规划产品开发成本,而且对后续开发过程也起到了关键的需求参照作用。
开发过程与对应开发工具选择
嵌入式Linux系统的开发过程与其对应的开发工具联系十分紧密,完成一个系统的开发,不仅需要大量的工具,而且多以平台交叉开发模式为主:
嵌入式Linux开发工具选择的基本依据
工具选择的基本依据主要有以下几点:
开源性,由于Linux系统本身的开源特性,从版权及成本两方面考虑,配套开发工具也应使用开源软件;
跨平台性,开发过程涉及宿主机与目标机,体系架构多有不同CONTROL ENGINEERING China版权所有,因此有的工具需支持多平台;
精简性,在满足功能前提下,除应尽量使用较小体积的软件外,多功能、高整合度工具的使用也是必不可少的。
Linux原型系统选择与工具准备
最终的嵌入式Linux系统来源都是完整的Linux操作系统。在开发时,对原型Linux系统的选择及前期开发工具的准备对整个开发的效率及成果都有很大影响。
选择原型系统时,首先要从体系架构及设备兼容性进行分析,先找出满足功能要求的版本及补丁,然后根据硬件实际性能及存储容量决定最终系统版本。
前期工具准备包括2类工具的选择:开发用工具和系统工具。前者只在开发过程中起作用,多为宿主机平台工具。后者则是在最终的嵌入式Linux系统中使用,多为目标平台工具。
Linux交叉开发环境建立
Linux交叉开发环境基本都是由GNU开源工具链搭建,工具链同样存在版本选择的问题。针对所开发的目标平台选择相应编译器及调试器等,同时对应原型Linux的版本、工具链版本需与其配合以保证工具可正常使用,具体版本相关性请参考kernel.org及GNU给出的说明文档。
将原型Linux及交叉开发环境都保存于宿主机上,使用串口或网口等连接设备将宿主机与目标机连接在一起CONTROL ENGINEERING China版权所有,安装好宿主机和目标机的通讯工具及服务;安装TFTP服务器,为目标机从主机上下载文件提供服务;启动Telnet服务;安装串口通讯工具minicomCONTROL ENGINEERING China版权所有,一个交叉编译环境就基本建立完成了。然后即可在宿主机上用交叉工具链对原型Linux及其他目标机用软件进行交叉编译、调试,并使用通讯工具将编译好的目标代码传至目标机运行。
内核及根文件系统开发
一个完整的嵌入式Linux系统包括两大部分:内核及根文件系统。
内核
内核开发移植完整过程包括:编写针对特定处理