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