張童菲 遼寧錦州渤海大學信息科學與技術學院
基于ARM的嵌入式Linux操作系統(tǒng)移植
張童菲 遼寧錦州渤海大學信息科學與技術學院
這些年以來,隨著計算機科技以及電子技術的突飛猛進,尤其計算機硬與電子以及通信技術的相互結合,這是社會進步以及發(fā)展的必然趨勢。目前信息產(chǎn)業(yè)的市場上最為流行的是嵌入式產(chǎn)品。本文主要是介紹了基于ARM的嵌入式Linux操作系統(tǒng)移植,同時根據(jù)實際的例子介紹了具體的實現(xiàn)流程,此外對交叉開發(fā)環(huán)境的創(chuàng)建過程進行了闡述。該課題的研究可以給開發(fā)其他的嵌入式操作系統(tǒng)提供一定的參考意義。
ARM 嵌入式 Linux
現(xiàn)今社會中,基于在嵌入式系統(tǒng)里基于ARM微核的嵌入式處理器已經(jīng)成為市場主流。隨著基于ARM的嵌入式Linux操作系統(tǒng)是目前信息市場的主流,也是該領域研究的重點問題。目前的市場上出現(xiàn)了各式各樣的嵌入式操作系統(tǒng),比如有來自微軟的Windows CE以及來自Tor-nado的VxWork。在這些嵌入式的操作系統(tǒng)中,選擇操作系均是Linux,其原因在于Linux可以將源代碼公開,其他人能夠在該代碼的基礎上,從而將其進行移植,運用到所需要的平臺系統(tǒng)中。ARM Linux所用到的處理器有ARM720T、ARM610、ARM902T、ARM710等,該處理器的特點是里面都有MMU,也就是內(nèi)存管理單元,對于那些沒有MMU的中央處理器,通常選擇的操作系統(tǒng)是μClinux。
到目前為止,嵌入式系統(tǒng)的發(fā)展經(jīng)歷了幾十年,同時嵌入式的階段具體能夠分為四個。進入九十年代以后,主要的發(fā)展技術是數(shù)字化技術,該項技術的核心是結合軟件以及計算機,該項技術在軍事,通信以及交通等眾多領域中都有涉足,同時還應用到了藝術,以及家電、社會文化等眾多的領域中,從而開創(chuàng)了數(shù)字化技術的浪潮。由于多媒體技術的飛速發(fā)展,另外將通信,消費電子以及計算機結合一起而形成的技術在現(xiàn)今社會運用很普遍,因此嵌入式技術迅速引起了人們的關注與重視。
從嵌入式技術歷程能夠發(fā)現(xiàn),第一階段存在的形式是可編程控制器形式,該形式的核心是單芯片,另外所具備的功能包括了指示設備、監(jiān)測以及伺服等。該系統(tǒng)在很多的工業(yè)方面都可以應用,有時如果沒有操作系統(tǒng),那么控制部分就直接通過使用匯編語言進行編程實現(xiàn),當結束運行后內(nèi)存就會被清空。
嵌入式系統(tǒng)第一發(fā)展階段特點是功能以及結構方面都比較單一,而且處理的效率不高,另外存儲的容量也小,用戶接口不存在。因為該系統(tǒng)成本低,而且易于使用。所以在很多的工業(yè)領域中都比較受歡迎,然而由于社會的不斷進步,工業(yè)領域不斷對存儲容量提出了更高的要求,而且已經(jīng)無法滿足新興的信息家電行業(yè)。嵌入式系統(tǒng)的第二階段存在的形式是簡單易用,該系統(tǒng)的特點是有著多種種類,同時通用性不高,開銷比較小,用戶界面體驗不好,應用的場合大部分是集中于監(jiān)控應用程序以及系統(tǒng)負載的控制方面。
第三階段的存在形式是嵌入式操作系統(tǒng)。該階段的系統(tǒng)的特點是可以運行在多種類型的微處理器中,有著很好的兼容性,同時擴展性好,系統(tǒng)效率高,有著很多的應用程序的接口,開發(fā)應用程序有著豐富的應用軟件。
第四階段嵌入式系統(tǒng)的發(fā)展目前正在如火如荼地進行?,F(xiàn)今很多的嵌入式系統(tǒng)都是獨立在因特網(wǎng)外,隨著信息技術以及因特網(wǎng)技術、工業(yè)控制技術的飛速發(fā)展,嵌入式設備結合因特網(wǎng),預示著嵌入式技術的到來。
應用比較多的ARM嵌入式系統(tǒng)硬件平臺通常情況下的組成成分具體涉及到了存儲器、外部接口以及ARM微內(nèi)核處理器。CPU是嵌入式系統(tǒng)的核心,所選擇的型號是ARMll36JF-S,這是ARMll系列的第一代產(chǎn)品,能夠兼容ARMV6體系結構。APdlV6體系結構的應用場合是網(wǎng)絡、下一代消費電子、車電子產(chǎn)品、無線等行業(yè)。APdlV6的特點是低功耗以及媒體處理能力,這些都是APdlV6應用于消費電子以及無線領域的因素,在網(wǎng)絡的應用中高數(shù)據(jù)帶寬應用比較廣泛。AF311 l開發(fā)的目標是為了達到功耗低、處理器的高性能以及成本低的目的。微處理器的體系結構中對編程模型、處理器的指令集以及內(nèi)存資源、處理器接口間的聯(lián)系進行了很好的定義。
在軟件方面,ARMll微內(nèi)核的體系結構取得了很大的進步,ARMll微內(nèi)核包含了很多的媒體處理指令從而將視頻以及音頻的應用進行加速,操作系統(tǒng)的性能得到了很大的提高,這歸功于內(nèi)存系統(tǒng)體系結構的刷新。另外還涉及到了新的指令進而將中斷響應以及實時性能提高。除此之外,自從很多應用都配置處理器,比如ARM核需要多個或者DSP系統(tǒng)。目前在與處理器實現(xiàn)數(shù)據(jù)共享方面,比較容易實現(xiàn),從非ARM處理器到應用程序的移植。ARMIl粗茶了可綜合性內(nèi)核系列的形成,使得SoC的集成更容易實現(xiàn),從而提供半定制內(nèi)核給性能高的應用。ARM公司為ARMll處理器提供了整套的IP支持,具體包含了ARM PrimeCell IP庫。
3.1 Linux交叉編譯環(huán)境的建立
在移植之前要先建立ARM的交叉編譯環(huán)境,環(huán)境建立的意義是可以在將PC機當作宿主機進行目標開發(fā)板的調(diào)試中有著重要的意義。ARM的交叉編譯環(huán)境的建立的應用場合有glibc、gcc以及binutils。而作為處理二進制文件的一種工具,binu-tils包括的內(nèi)容涉及到了輔助開發(fā)工具,比如段信息、nm列出符號表。以及objdump等。在開發(fā)嵌入式的初始階段,特別是操作系統(tǒng)的移植中都有著重要的意義。作為編譯工具的一種,gcc主要的使用場合是內(nèi)核代碼的編譯,該工具可以用于c語言以及匯編語言的編譯,從而形成ARM代碼;glibc是鏈接以及運行庫,glibc的編譯需要提供編譯器給已經(jīng)做好的ARM交叉編譯器,不然會導致所編譯出來的glibc代碼會有ARM以及x86代碼。全部的工具都能夠通過源碼的下載而完成自行編譯,最后將其安裝在宿主機中,從而完成ARM的交叉編譯環(huán)境的建立。
3.2 配置、剪裁以及內(nèi)核編譯
現(xiàn)今市場上用的Linx內(nèi)核是比較標準的,可以適用于資源龐大的嵌入式系統(tǒng)。所以在嵌入式系統(tǒng)中能夠移植入Linx內(nèi)核,這個移植的過程需要按照目標平臺的具體情況對Linux內(nèi)核完成配置以及剪裁。當這個前奏完成后,重新對內(nèi)核進行編譯,從而形成內(nèi)核映象文件。按照嵌入式系統(tǒng)的相關功能概念,當設定內(nèi)核的時候一些沒必要的功能模塊或者是選項可以刪除。還有一種方式可以代替,比如顯卡的輸出可以用串行端口代替,從而能夠避免內(nèi)核浪費42KB空間。此外,并口,這個意思也就是所謂的軟驅、即插即用設備、鼠標以及光驅等驅動程序,都能夠將這些裁減。當裁減流程進行完后,就要完成內(nèi)核的配置工作。配置內(nèi)核的命令是通過/usrs/ srcs/linux中的“make config”實現(xiàn)。需要配置的選項具體為:處理器類型的選擇、RAM disk的選擇、支持板級選擇、以及文件系統(tǒng)的支持。當完成了配置工作后,下一步工作就是編譯內(nèi)核。內(nèi)核編譯可以分為兩種方式:首先是壓縮方式,其次是非壓縮方式。運用比較多是用壓縮方式編譯,主要是由于嵌入式的需要。壓縮方式中,F(xiàn)LASH中會先存放內(nèi)核映象文件,該文件事先是編譯好的,當該文件啟動的時候,通過引導程序從而FLASH中的內(nèi)核加到RAM中進行解壓,下一步運行。壓縮方式編譯所形成的內(nèi)核映象文件不是很大,在嵌入式系統(tǒng)中運用比較多。
3.3 引導內(nèi)核啟動流程
本文介紹的嵌入系統(tǒng)里是不存在硬盤設備的,因此FLASH存儲器中存放的是根盤文件系統(tǒng)以及ARM Linux內(nèi)核,所以編寫ARM Linux中引導程序的時候一定要按照目標平臺實現(xiàn)。在目標平臺里,0x0C000000到0x0CFFFFFF是FLASH的地址。區(qū)域劃分FLASH,啟動代碼存放bootloader的空間地址是0x0B000000到0x0CFFFFFF,而0x0C100000到0x0C2FFFFF的空間地址主要是進行內(nèi)核映象文件的存放,根盤文件系統(tǒng)存儲的地址是從0x0C300000到0x0CFFFFFF之間。
結束語:基于ARM的嵌入式操作系統(tǒng)移植流程主要包括了兩個:首先是把內(nèi)核移植到ARM的平臺中,從而確保內(nèi)核能夠在工作平臺中運行起來,這個過程包括了引導代碼的啟動。其次當內(nèi)核成功運行的時候對外設驅動以及應用程序進行移植。本文重點分析了嵌入式系統(tǒng)的發(fā)展歷程,以及Linux是如何移植到ARM的嵌入式系統(tǒng)的流程進行了介紹,從而通過掌握本文介紹的移植過程對嵌入式系統(tǒng)的開發(fā)有著很重要的意義,同時能夠給其他人提供技術參考,另外還能夠在一定程度上簡單化嵌入式產(chǎn)品的開發(fā)難度以及縮短開發(fā)周期。
[1]劉名博,鄧中亮.基于ARM的嵌入式Linux操作系統(tǒng)移植的研究[J].計算機系統(tǒng)應用,2006,15(11):87-88
[2]張永強,田紫君,申利永,等.基于ARM的HMS30C7202平臺的嵌入式Linux移植[J].微計算機信息,2005,21(4):125-126
[3]Yaghmour K,Masters J,Ben- G. Building embedded linux systems, 2nd edition[M]. O'Reilly & Associates,Inc. 2015
[4]Moon S P,Kim J W,Bae K H, et al. Embedded Linux implementation on a commercial digital TV system[J]. IEEE Transactions on Consumer Electronics,2014,49(4):1402-1407
[5]Winter J. Trusted computing building blocks for embedded linux-based ARM trustzone platforms[C]// ACM Workshop on Scalable Trusted ComputingStc 2008,Alexandria, Va,Usa, October. DBLP, 2015:21-30