王暾
摘要
在網(wǎng)絡(luò)化技術(shù)、智能化技術(shù)及信息化技術(shù)進步過程中,極大的發(fā)展了嵌入式技術(shù),并于各個領(lǐng)域中廣泛的應(yīng)用。Linux系統(tǒng)具有良好的穩(wěn)定性、較高的可靠性等優(yōu)點,屬于嵌入式領(lǐng)域中的新興力量,市場潛力與商業(yè)價值均非常巨大?,F(xiàn)階段,嵌入式處理器中應(yīng)用最廣泛的為ARM,32位,性能高、功耗低,已成為Linux嵌入系統(tǒng)移植的重點之一。因此,本文探討了ARM嵌入式Linux系統(tǒng)的研究與實現(xiàn)。
【關(guān)鍵詞】ARM Linux系統(tǒng) 研究 實現(xiàn)
隨著嵌入式操作系統(tǒng)的使用,極大的提高了其可靠性及穩(wěn)定性,也明顯的增強了系統(tǒng)多任務(wù)處理能力?,F(xiàn)階段,具有多種多樣的嵌入式操作系統(tǒng)類型,其中,開發(fā)首選為Linux系統(tǒng),具有源碼開放、軟件資源豐富、內(nèi)核功能強大、多任務(wù)處理、支持多種體系結(jié)構(gòu)等優(yōu)點,而當Linux系統(tǒng)應(yīng)用于復雜系統(tǒng)中時,有必要研究出特定的硬件平臺與實際應(yīng)用移植操作系統(tǒng),以使其功能良好的實現(xiàn)。
1硬件平臺
本文在進行系統(tǒng)硬件單元開發(fā)時,以三星ARM920T處理器S3C2410X為平臺。S3C2410X微控制器中,內(nèi)核為ARM920T,16/32bits,單獨16K指令及數(shù)據(jù)cache內(nèi)置其中,支持多種操作系統(tǒng),如Linux、Wince,利用AMBA作為總線結(jié)構(gòu),運行時,頻率能夠達到230MHz,性能良好,功耗低,在中高檔手持終端應(yīng)用開發(fā)中較為適合。
2ARM嵌入式Linux系統(tǒng)的研究與實現(xiàn)
2.1建立交叉編譯環(huán)境
開發(fā)嵌入式系統(tǒng)時,與之配套的開發(fā)環(huán)境是必須要建立的,通常,編譯環(huán)境、調(diào)試環(huán)境、操作系統(tǒng)配置工具、下載工具均包含在開發(fā)環(huán)境中。最初開發(fā)嵌入式系統(tǒng)過程中,尚未建立目標系統(tǒng)平臺,因而交叉編譯在主機上進行,將需求的啟動引導代碼、操作系統(tǒng)核心生成;隨后,經(jīng)串口或網(wǎng)絡(luò),主機系統(tǒng)與目標系統(tǒng)間的通信連接有效建立,相互協(xié)作下,開發(fā)嵌入式系統(tǒng)的工作共同完成。因此,對于嵌入式系統(tǒng)開發(fā)來說,組成有兩部分,一部分為主機系統(tǒng),一部分為目標系統(tǒng)。一般,嵌入式系統(tǒng)不存在軟件開發(fā)環(huán)境,需運行軟件的開發(fā)工作在主機上進行,但開發(fā)主機并不兼容目標系統(tǒng)的二進制執(zhí)行級別,此時,交叉編譯工具即需要使用。開發(fā)ARM嵌入式Linux系統(tǒng)過程中,以arm-linux交叉工具鏈作為交叉工具。
2.2Bootloader的研究與移植
PC體系結(jié)構(gòu)中,系統(tǒng)的引導加載程序包含兩部分,一部分為BIOS,另一部分為系統(tǒng)引導程序(位于硬盤MBR中)。但對于嵌入式系統(tǒng),BIOS固件程序并不存在,較少應(yīng)用硬盤作為存儲介質(zhì),系統(tǒng)存儲時,主要以Flash作為媒質(zhì),此種結(jié)構(gòu)下,通過引導程序Bootloader來完成系統(tǒng)的啟動加載。實現(xiàn)Bootloader時,對硬件嚴重依賴,在嵌入式系統(tǒng)中,通過Bootloader的建立基本無法實現(xiàn),通常,以特定體系結(jié)構(gòu)CPU為依據(jù),實現(xiàn)Bootloader。另外,Bootloader還會對嵌入式板級設(shè)備配置形成依賴,即盡管電路板設(shè)計時按照統(tǒng)一處理器進行,但Bootloader若想同時運行在兩塊板子上,源程序也要做出適當修改,之后再移植?;诖耍度胧絃inux系統(tǒng)開發(fā)時,前提工作之一即為特定Bootloader的移植或開發(fā)。VIVI是一種Bootloader,具有強大的功能,支持的微處理器包含SA-1110、S3C2410兩種。本文在移植Bootloader時,以smdk2410為基礎(chǔ),經(jīng)修改后實現(xiàn),修改過程中,硬件常數(shù)、Flash分區(qū)信息等均是需修改的參數(shù)。
2.3ARM Linux內(nèi)核的移植
Linux包含穩(wěn)定版與開發(fā)板兩種內(nèi)核,穩(wěn)定版內(nèi)核強度為工業(yè)級,應(yīng)用與部署可廣泛開展,對于新發(fā)布的,通常只對Bug做出修正,或?qū)⑿略O(shè)備驅(qū)動程序加入其中;而開發(fā)版內(nèi)核中,多數(shù)東西都會較快的變化,加入的新特性所處的階通常為測試、試驗,穩(wěn)定性較差,應(yīng)用級操作系統(tǒng)并不適合采用。Linux內(nèi)核移植時,穩(wěn)定版內(nèi)核優(yōu)先選擇,本文使用2.4.18。移植ARM Linux內(nèi)核時,應(yīng)首先啟動內(nèi)核,啟動過程中,引導任務(wù)由引導程序完成后,CPU控制權(quán)被Linux接管,之后Linux核心映像代碼由CPU執(zhí)行,Linux啟動過程開始,運行init后,終端建立;隨后修改移植時需求的代碼,makefile文件的修改為內(nèi)核啟動部分主要修改的內(nèi)容,同時,還需要將NAND Flash支持加上,并填寫mtd分區(qū)表;接著進行內(nèi)核配置,Linux內(nèi)核對模塊化良好的支持,配置Linux內(nèi)核時,make config、make oldconfig、made menuconfig、make xconfig為常用的方法;最后,實施內(nèi)核編譯,內(nèi)核依賴關(guān)系建立后,將內(nèi)核映像、內(nèi)核組建創(chuàng)建出來,完成編譯。
2.4系統(tǒng)燒寫
VIVI燒寫時,利用JTAG,JTAG線的一端連接計算機并口,另一端連接核心板右下角引出針,連接過程中,要對方向格外注意,保證其白色標記上下對應(yīng)核心板插針上的白色標記。VIVI燒寫之后,啟動引導可正常進行,但系統(tǒng)此時并非真正可用,內(nèi)核及根文件系統(tǒng)燒寫工作完成之后才能真正的使用。內(nèi)核與根文件系統(tǒng)燒寫時,采用Xmodem協(xié)議,經(jīng)串口進行,通過串口,連接主機與目標板,minicom-s輸入Linux終端中,設(shè)置minicon。串口配置時采用Serial port setup,奇偶校驗位、流量控制均不需要,默認值狀態(tài)保存設(shè)置。另外,VIVI啟動后,重新劃分NAND Flash區(qū)域,接著即可進行引導程序、內(nèi)核、根文件系統(tǒng)的燒寫。完成所有燒寫工作后,板子重啟,稍等等信息出現(xiàn)后,表明系統(tǒng)己經(jīng)正常進入,成功的完成移植。
3結(jié)論
本文以ARM處理器為基礎(chǔ),成功的進行了Linux系統(tǒng)的構(gòu)建,實現(xiàn)了嵌入式系統(tǒng)開發(fā)中有效移植引導程序的目的,具有較高的實用價值,但由于本文研究能力有限,還需要進行更為深入的研究,促進Linux系統(tǒng)的良好發(fā)展。
參考文獻
[1]張成法,李楠.基于ARM9的嵌入式Linux系統(tǒng)的設(shè)計與實現(xiàn)[J].商,2016(10):220.
[2]謝輝.嵌入式Linux系統(tǒng)在ARM處理器中關(guān)鍵技術(shù)分析[J].電大理工,2015(01):endprint