基于A(yíng)RM9的嵌入式Linux代碼移植
摘要:介紹了嵌入式Linux移植的方法和過(guò)程,給出了嵌入式開(kāi)發(fā)環(huán)境下基于硬件平臺ARM9的bootloader、Linux內核移植的實(shí)現方案,該方案可為嵌入式系統的應用研究提供操作系統層面的支持。
關(guān)鍵詞:嵌入式系統;ARM;vivi;Linux移植
O 引言
隨著(zhù)計算機技術(shù)、通信技術(shù)以及Internet的飛速發(fā)展。嵌入式系統已得到越來(lái)越廣泛的應用。與此同時(shí),嵌入式系統的復雜性也在不斷增加,嵌入式操作系統已經(jīng)成為其中最重要的組成部分。目前,市場(chǎng)上存在著(zhù)眾多的嵌入式操作系統,而在這些系統之中,兼有Linux和嵌入式優(yōu)點(diǎn)的嵌入式Linux操作系統,憑借其在結構清晰、源代碼開(kāi)放性、裁剪性好,開(kāi)發(fā)與使用均易實(shí)現等方面的優(yōu)勢,擁有巨大的市場(chǎng)前景和商業(yè)機會(huì )。當前嵌入式Linux的一個(gè)熱點(diǎn)應用就是將Linux內核移植到一些典型的微控制器和微處理器上,提供操作系統層面支持,以實(shí)現嵌入式系統用軟件的開(kāi)發(fā)。
此研究基于Linux 2.6內核的嵌入式Linux系統,分析了所面臨的理論問(wèn)題、關(guān)鍵技術(shù),實(shí)現了Linux內核在ARM9平臺上的運行。
1 開(kāi)發(fā)環(huán)境介紹
嵌入式IJnux移植是嵌入式系統開(kāi)發(fā)的重要組成部分,它需要相應的軟件組件支持,同時(shí)又與目標硬件平臺關(guān)系密切。因此,在正式移植
前,首先應明確嵌入式系統開(kāi)發(fā)的流程與開(kāi)發(fā)環(huán)境,再根據目標硬件平臺的特點(diǎn)和所選擇的軟件組件,正確搭建功能完善的交叉開(kāi)發(fā)環(huán)境,最后制定出合理的移植方案,從而使移植工作可以順利的進(jìn)行。
1.1 ARM9硬件平臺
本次移植采用斯道ARM9開(kāi)發(fā)板作為硬件平臺,其基本構成為核心板和底板(外設板或基本板),核心板上集成了SamsungS3C2410處理器、64 M的FLASH和64M的SDRAM,為應用研發(fā)提供了足夠的空間,基板則提供了豐富的外圍接口。其硬件平臺結構如圖l所示。
此完整的應用系統具有體積小、耗電低、處理能力強等特點(diǎn),能夠裝載和運行嵌入式Linux操作系統。用戶(hù)可以在這個(gè)系統平臺上自主進(jìn)行軟件開(kāi)發(fā)。
1.2 Linux內核及處理器
目前用于嵌入式Linux系統的內核大多數使用2.4.x版,然而,隨著(zhù)嵌入式微處理器性能的不斷增強及其應用范圍的日趨擴大,Linux-2.6版內核由于其針對嵌入式系統應用的顯著(zhù)特點(diǎn),必將會(huì )越來(lái)越多的被應用于嵌入式系統移植與開(kāi)發(fā)Linux系統之中。文中采用的是Linux-2.6版內核。
vivi是韓國mizi公司開(kāi)發(fā)的bootloader,適用于A(yíng)RM9處理器,支持S3C2410X嵌入式ARM-Linux移植的應用處理器。和所有的bootloader一樣,vivi也有兩種工作模式,即啟動(dòng)加載模式和下載模式。啟動(dòng)加載模式指在一段時(shí)間后(這個(gè)時(shí)間可更改)自行啟動(dòng)Linux內核,它是vivi的默認模式。下載模式則是指vivi為用戶(hù)提供一個(gè)命令行接口,用戶(hù)可通過(guò)接口使用命令。
2 系統移植方案
在硬件方面,為支持NAND Flash引導模式,S3C2410A處理器在芯片內集成了4 KB的被稱(chēng)為steppingstone的SRAM。NAND Flash引導模式下,系統復位后NAND Flash中的前4位內容首先被復制到steppingstone,接著(zhù)將steppingstone映射到nGCSO,即內存BankO起始她址為Ox00000000,隨后系統開(kāi)始正常引導。
同樣,在軟件方面,bootloader程序應被燒寫(xiě)到NAND Flash最前面的部分。通常bootloader程序大于4 KB,因此,在bootloader的前4 KB程序段中,必須先完成內存SDRAM的初始化,并將自身完全復制到SDRAM中,同時(shí)設置必要的堆棧,然后跳轉到SDRAM中去執行這一系列工作。這樣方可完成后續的初始化系統資源及裝載操作系統內核的任務(wù)。
本次移植使用ARM9開(kāi)發(fā)板,通過(guò)跳線(xiàn)方式設置OM[1:0]引腳來(lái)支持NAND Flash啟動(dòng)模式,因此,移植方案使用NAND Flash+SDRAM的存儲模式,bootloader放在SDRAM中,內核和文件系統都放在NAND Flash中,根據選用的方案,整個(gè)系統移植要做的工作包括兩方面:
Bootloader:為裝載操作系統內核,支持NAND Flash及網(wǎng)絡(luò )下載和串口通信,從而方便嵌人式ARM.Linux移植以開(kāi)發(fā)調試。
Linux系統:支持NAND Flash,并移植Cramfs+Yaffs混合文件系統;支持NFS文件系統及網(wǎng)絡(luò )通信、串口等。
3 Linux內核移植
在同一硬件平臺上可以嵌入不同的嵌入式操作系統,這就好比PC既可以安裝Windows又可以安裝Linux一樣。同樣,有些操作系統經(jīng)過(guò)移植后即可運行在不同的硬件平臺上。通常情況下,如果一個(gè)系統可以在不同硬件平臺上運行,那么這個(gè)系統便是可移植的。將某一個(gè)平臺的代碼運行在其他平臺上的過(guò)程稱(chēng)作移植。嵌入式系統是“硬件可裁剪”的,因此工程師們設計的硬件電路會(huì )有所不同,從而使這些代碼可能無(wú)法正確運行,因而要實(shí)現移植就應結合自己的硬件電路,對已有的內核代碼進(jìn)行修改。
3.1 內核移植難點(diǎn)
Linux系統的內核是多層次結構的單體內核,其可移植性比微內核要差一些,但是,這種內核具有較高的效率。從操作系統發(fā)展的趨勢來(lái)看,微內核作為一種先進(jìn)的操作系統結構,是操作系統發(fā)展的一個(gè)潮流。但是,微內核結構較低的系統通信效率大大的降低了系統的性能。所以,從系統效率和性能的角度來(lái)考慮,Linux并沒(méi)有采用先進(jìn)的微內核結構而是選擇了傳統的單體內核機構。
3.2 內核移植的基本策略
在Linux2.6內核支持下,Linux已經(jīng)在許多典型的硬件平臺上實(shí)現移植,其中包括:I386、ARM、MIPS、ALPHA、PowerPC、SPARC、SH等。但是對于基于特定硬件體系設計的硬件平臺,需要從頭對Linux進(jìn)行移植。此外還有部分體系的硬件平臺,Linux只對其中部分的CPU或目標板提供了支持,如果使用了Linux尚未支持的CPU或目標板,也需要對Linux內核進(jìn)行移植工作。通??梢圆捎靡韵聝煞N方法進(jìn)行Linux內核移植工作:
(1)從頭設計。即采用“自底向上”的設計方法,從硬件的需求考慮逐步的采用分析、設計、編碼、測試。這種方法比較適合針對一種全新的硬件平臺開(kāi)展移植工作。
評論