Embedded Linux 技术与概念解析
引言
本文引用地址:https://www.eepw.com.cn/article/201609/305175.htmEmbedded Linux技术基于开放源码的资源,并且已经是当今最重要的嵌入式应用技术之一。Embedded Linux是烧录在目标装置上的系统,1个Embedded Linux系统包含Linux kernel与 root filesystem 2大部分,Embedded Linux系统到底包含哪些组成要素构成,本文将由概念的层面进行解析。
本文
由于目前的目标装置,都必须嵌入极为复杂的功能,所以嵌入式操作系统(Embedded system)成为嵌入式系统不可或缺的要素。由于嵌入式系统是功能导向的系统,因此必须设计、选择或购买正确(或适合)的目标装置,才能开始实作并嵌入嵌入式系统。因此,嵌入式系统技术是以功能、与目标装置为分类的1种技术。
例如,与PDA相关的目标装置(即硬件)、与MP3播放器相关的目标装置、与3G手机相关的目标装置...等等;使用这些目标装置所开发的特定功能系统,便是PDA的嵌入式系统、MP3音乐播放的嵌入式系统、3G手机的嵌入式系统。
Embedded Linux其实并不是1个操作系统,而是代表应用Linux系统于Embedded system的名词。Embedded Linux的技术核心主轴是在研究如何将Linux系统嵌入至嵌入式目标装置里。
Embedded Linux是基于Linux系统的特殊应用,当然也要符合众多标准才行。LSB与FHS标准是重要的2大标准,跟随标准不但可以提供系统间的兼容性,也可以提供我们1个Linux系统的建构依据。
GNU/Linux的2个标准
由FSG (Free Standards Group) 所主持的 LSB (Linux Standard Base) 项目即是在制定 GNU/Linux 标准。根据LSB标准所发展的GNU/Linux系统,才能提供应用程序最小的可执行环境,并且可在依循LSB标准的Linux distributions上执行无误。例如,我们可以在符合LSB标准的Red Hat Linux上发展应用程序,只要自行发展的Embedded Linux系统符合LSB标准所订定的规范,应用程序就可以顺利移植到Embedded Linux上执行。
LSB标准提供我们发展Embedded Linux的依据,虽然Embedded Linux系统是最小化的Linux,但因为Embedded Linux是嵌入式系统的软件平台,所以我们不能任意精简Linux系统,在精简的过程中仍要保留最基本的操作系统环境,而LSB的标准正是在制定这些基本的需求。
FHS全名为Filesystem Hierarchy Standard,是定义档案与目录标准的文件,FHS的标准,定义了目录与档案的摆放位置,而UNIX-like的系统则是根据这个标准,管理整个档案结构。因此,不管是系统厂商、Linux/UNIX distribution发展者、应用程序作者、套件管理者、系统维护人员都应该要依照FHS的标准来管理UNIX系统的目录与档案。
Embedded Linux的特色是大量使用自由软件、与开放源码软件(FOSS- Free Open Source Softwar)资源,任何你想要的软件,几乎都能在网络上找到自由软件已经成为Embedded Linux技术的重要支柱。自由软件资源包山包海,举凡应用程序、系统工具、网络工具、链接库、图形接口、小型浏览器、程序发展工具...等等都能找得到。
Busybox
Busybox是重要的Embedded Linux工具箱,这个工具箱提供基本的UNIX指令、系统程序(daemon)与开机程序(init process)。Busybox用来建造1个基本、最小化且可开机的Linux系统,由于Busybox里的指令与工具都经过最小化处理,因此已经是目前主要应用在Embedded Linux实作上的开放源码项目了。
Embedded Linux的组成

图 Embedded Linux整体架构
Embedded Linux平台除了Linux kernel外,还包含共享链接库(shared library)。shared libraries是Linux kernel的重要支持,并且也是Linux架构里独立的1层。在应用程序方面,许多现存的开放源码项目都可以直接移植到ARM9平台。但这里所指的移植是对原始码进行跨平台编译(cross compile),并不是BSP(board support package)的移植。
跨平台编译
因为开放源码开发工具的特性,在应用程序级别的移植工具上,可以有1套比较系统化的方法,也有相关的工具与环境可以使用,目前最热门的跨平台编译环境为OpenEmbedded。开放源码软件采用GNU Autoconf与GNU Automake来撰写编译法则(Makefile),因此实务上,要将应用程序移植到ARM9平台,大部分案例只需要做跨平台编译即可。要了解如何将原始码移植到ARM9平台,需要学会GNU Autoconf以及GNU Automake的使用。
GNU Autoconf
Autoconf是m4宏的扩充套件,可以用来自动设定软件套件的原始码。Autoconf会产生1个协助程序编译的设定文稿执行档(configuration script),以方便编译原始码前进行系统检查与设定,使用GNU Autoconf时,必须安装GNU m4套件。
GNU Automake
Automake是自动产生Makefile.in的工具,需配合Autoconf使用,以产生可以让GNU Make自动编译原始码的”Makefile”档案。
GNU Make
GNU Make会根据“Makefile”来自动编译程序,而编译完成的程序为执行文件。GNU Make的重要特点,是没有特定程序语言限制,甚至可以应用在非程序语言编译的环境中,例如:系统维护工作与套件安装,因此GNU Make可以说是系统自动化的好工具。
GNU Make根据“Makefile”档案里所定义的规则,执行Unix命令,简单的Makefile规格,可以利用编辑器手动撰写,但较复杂且与针对不同平台的设定,则建议采用GNU Autoconf/GNU Automake来产生“Makefile”。当我们能够产生使用cross toolchain的Makefile时,就可以将套件编译成ARM9的执行档。
ARM 平台的选择与支持
嵌入式装置的硬件选择当然没有所谓的标准,但若是谈论到嵌入式Linux的应用,在平台的选择上就会有一些考虑。最重要的考虑因素,当然就是处理器对于操作系统的支持,如此一来,没有MMU(内存管理单元)的ARM7平台,就不在主要的选择范围内。以下列出几个目前普遍使用的ARM9应用程序处理器(application processor):
评论