Embedded Linux 技術(shù)與概念解析
引言
本文引用地址:http://www.ex-cimer.com/article/201609/305175.htmEmbedded Linux技術(shù)基于開放源碼的資源,并且已經(jīng)是當(dāng)今最重要的嵌入式應(yīng)用技術(shù)之一。Embedded Linux是燒錄在目標裝置上的系統(tǒng),1個Embedded Linux系統(tǒng)包含Linux kernel與 root filesystem 2大部分,Embedded Linux系統(tǒng)到底包含哪些組成要素構(gòu)成,本文將由概念的層面進行解析。
本文
由于目前的目標裝置,都必須嵌入極為復(fù)雜的功能,所以嵌入式操作系統(tǒng)(Embedded system)成為嵌入式系統(tǒng)不可或缺的要素。由于嵌入式系統(tǒng)是功能導(dǎo)向的系統(tǒng),因此必須設(shè)計、選擇或購買正確(或適合)的目標裝置,才能開始實作并嵌入嵌入式系統(tǒng)。因此,嵌入式系統(tǒng)技術(shù)是以功能、與目標裝置為分類的1種技術(shù)。
例如,與PDA相關(guān)的目標裝置(即硬件)、與MP3播放器相關(guān)的目標裝置、與3G手機相關(guān)的目標裝置...等等;使用這些目標裝置所開發(fā)的特定功能系統(tǒng),便是PDA的嵌入式系統(tǒng)、MP3音樂播放的嵌入式系統(tǒng)、3G手機的嵌入式系統(tǒng)。
Embedded Linux其實并不是1個操作系統(tǒng),而是代表應(yīng)用Linux系統(tǒng)于Embedded system的名詞。Embedded Linux的技術(shù)核心主軸是在研究如何將Linux系統(tǒng)嵌入至嵌入式目標裝置里。
Embedded Linux是基于Linux系統(tǒng)的特殊應(yīng)用,當(dāng)然也要符合眾多標準才行。LSB與FHS標準是重要的2大標準,跟隨標準不但可以提供系統(tǒng)間的兼容性,也可以提供我們1個Linux系統(tǒng)的建構(gòu)依據(jù)。
GNU/Linux的2個標準
由FSG (Free Standards Group) 所主持的 LSB (Linux Standard Base) 項目即是在制定 GNU/Linux 標準。根據(jù)LSB標準所發(fā)展的GNU/Linux系統(tǒng),才能提供應(yīng)用程序最小的可執(zhí)行環(huán)境,并且可在依循LSB標準的Linux distributions上執(zhí)行無誤。例如,我們可以在符合LSB標準的Red Hat Linux上發(fā)展應(yīng)用程序,只要自行發(fā)展的Embedded Linux系統(tǒng)符合LSB標準所訂定的規(guī)范,應(yīng)用程序就可以順利移植到Embedded Linux上執(zhí)行。
LSB標準提供我們發(fā)展Embedded Linux的依據(jù),雖然Embedded Linux系統(tǒng)是最小化的Linux,但因為Embedded Linux是嵌入式系統(tǒng)的軟件平臺,所以我們不能任意精簡Linux系統(tǒng),在精簡的過程中仍要保留最基本的操作系統(tǒng)環(huán)境,而LSB的標準正是在制定這些基本的需求。
FHS全名為Filesystem Hierarchy Standard,是定義檔案與目錄標準的文件,F(xiàn)HS的標準,定義了目錄與檔案的擺放位置,而UNIX-like的系統(tǒng)則是根據(jù)這個標準,管理整個檔案結(jié)構(gòu)。因此,不管是系統(tǒng)廠商、Linux/UNIX distribution發(fā)展者、應(yīng)用程序作者、套件管理者、系統(tǒng)維護人員都應(yīng)該要依照FHS的標準來管理UNIX系統(tǒng)的目錄與檔案。
Embedded Linux的特色是大量使用自由軟件、與開放源碼軟件(FOSS- Free Open Source Softwar)資源,任何你想要的軟件,幾乎都能在網(wǎng)絡(luò)上找到自由軟件已經(jīng)成為Embedded Linux技術(shù)的重要支柱。自由軟件資源包山包海,舉凡應(yīng)用程序、系統(tǒng)工具、網(wǎng)絡(luò)工具、鏈接庫、圖形接口、小型瀏覽器、程序發(fā)展工具...等等都能找得到。
Busybox
Busybox是重要的Embedded Linux工具箱,這個工具箱提供基本的UNIX指令、系統(tǒng)程序(daemon)與開機程序(init process)。Busybox用來建造1個基本、最小化且可開機的Linux系統(tǒng),由于Busybox里的指令與工具都經(jīng)過最小化處理,因此已經(jīng)是目前主要應(yīng)用在Embedded Linux實作上的開放源碼項目了。
Embedded Linux的組成
圖 Embedded Linux整體架構(gòu)
Embedded Linux平臺除了Linux kernel外,還包含共享鏈接庫(shared library)。shared libraries是Linux kernel的重要支持,并且也是Linux架構(gòu)里獨立的1層。在應(yīng)用程序方面,許多現(xiàn)存的開放源碼項目都可以直接移植到ARM9平臺。但這里所指的移植是對原始碼進行跨平臺編譯(cross compile),并不是BSP(board support package)的移植。
跨平臺編譯
因為開放源碼開發(fā)工具的特性,在應(yīng)用程序級別的移植工具上,可以有1套比較系統(tǒng)化的方法,也有相關(guān)的工具與環(huán)境可以使用,目前最熱門的跨平臺編譯環(huán)境為OpenEmbedded。開放源碼軟件采用GNU Autoconf與GNU Automake來撰寫編譯法則(Makefile),因此實務(wù)上,要將應(yīng)用程序移植到ARM9平臺,大部分案例只需要做跨平臺編譯即可。要了解如何將原始碼移植到ARM9平臺,需要學(xué)會GNU Autoconf以及GNU Automake的使用。
GNU Autoconf
Autoconf是m4宏的擴充套件,可以用來自動設(shè)定軟件套件的原始碼。Autoconf會產(chǎn)生1個協(xié)助程序編譯的設(shè)定文稿執(zhí)行檔(configuration script),以方便編譯原始碼前進行系統(tǒng)檢查與設(shè)定,使用GNU Autoconf時,必須安裝GNU m4套件。
GNU Automake
Automake是自動產(chǎn)生Makefile.in的工具,需配合Autoconf使用,以產(chǎn)生可以讓GNU Make自動編譯原始碼的”Makefile”檔案。
GNU Make
GNU Make會根據(jù)“Makefile”來自動編譯程序,而編譯完成的程序為執(zhí)行文件。GNU Make的重要特點,是沒有特定程序語言限制,甚至可以應(yīng)用在非程序語言編譯的環(huán)境中,例如:系統(tǒng)維護工作與套件安裝,因此GNU Make可以說是系統(tǒng)自動化的好工具。
GNU Make根據(jù)“Makefile”檔案里所定義的規(guī)則,執(zhí)行Unix命令,簡單的Makefile規(guī)格,可以利用編輯器手動撰寫,但較復(fù)雜且與針對不同平臺的設(shè)定,則建議采用GNU Autoconf/GNU Automake來產(chǎn)生“Makefile”。當(dāng)我們能夠產(chǎn)生使用cross toolchain的Makefile時,就可以將套件編譯成ARM9的執(zhí)行檔。
ARM 平臺的選擇與支持
嵌入式裝置的硬件選擇當(dāng)然沒有所謂的標準,但若是談?wù)摰角度胧絃inux的應(yīng)用,在平臺的選擇上就會有一些考慮。最重要的考慮因素,當(dāng)然就是處理器對于操作系統(tǒng)的支持,如此一來,沒有MMU(內(nèi)存管理單元)的ARM7平臺,就不在主要的選擇范圍內(nèi)。以下列出幾個目前普遍使用的ARM9應(yīng)用程序處理器(application processor):
評論