Embedded Linux 技术与概念解析
发布时间:2008/8/19 0:00:00 访问次数:425
由于目前的目标装置,都必须嵌入极为复杂的功能,所以嵌入式操作系统(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
由于目前的目标装置,都必须嵌入极为复杂的功能,所以嵌入式操作系统(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