导言
Embedded 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):