日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于ARM9的嵌入式Linux代碼移植

摘要:介紹了嵌入式Linux移植的方法和過(guò)程,給出了嵌入式開(kāi)發(fā)環(huán)境下基于硬件平臺(tái)ARM9的bootloader、Linux內(nèi)核移植的實(shí)現(xiàn)方案,該方案可為嵌入式系統(tǒng)的應(yīng)用研究提供操作系統(tǒng)層面的支持。
關(guān)鍵詞:嵌入式系統(tǒng);ARM;vivi;Linux移植

O 引言
    隨著計(jì)算機(jī)技術(shù)、通信技術(shù)以及Internet的飛速發(fā)展。嵌入式系統(tǒng)已得到越來(lái)越廣泛的應(yīng)用。與此同時(shí),嵌入式系統(tǒng)的復(fù)雜性也在不斷增加,嵌入式操作系統(tǒng)已經(jīng)成為其中最重要的組成部分。目前,市場(chǎng)上存在著眾多的嵌入式操作系統(tǒng),而在這些系統(tǒng)之中,兼有Linux和嵌入式優(yōu)點(diǎn)的嵌入式Linux操作系統(tǒng),憑借其在結(jié)構(gòu)清晰、源代碼開(kāi)放性、裁剪性好,開(kāi)發(fā)與使用均易實(shí)現(xiàn)等方面的優(yōu)勢(shì),擁有巨大的市場(chǎng)前景和商業(yè)機(jī)會(huì)。當(dāng)前嵌入式Linux的一個(gè)熱點(diǎn)應(yīng)用就是將Linux內(nèi)核移植到一些典型的微控制器和微處理器上,提供操作系統(tǒng)層面支持,以實(shí)現(xiàn)嵌入式系統(tǒng)用軟件的開(kāi)發(fā)。
    此研究基于Linux 2.6內(nèi)核的嵌入式Linux系統(tǒng),分析了所面臨的理論問(wèn)題、關(guān)鍵技術(shù),實(shí)現(xiàn)了Linux內(nèi)核在ARM9平臺(tái)上的運(yùn)行。

1 開(kāi)發(fā)環(huán)境介紹
    嵌入式IJnux移植是嵌入式系統(tǒng)開(kāi)發(fā)的重要組成部分,它需要相應(yīng)的軟件組件支持,同時(shí)又與目標(biāo)硬件平臺(tái)關(guān)系密切。因此,在正式移植
前,首先應(yīng)明確嵌入式系統(tǒng)開(kāi)發(fā)的流程與開(kāi)發(fā)環(huán)境,再根據(jù)目標(biāo)硬件平臺(tái)的特點(diǎn)和所選擇的軟件組件,正確搭建功能完善的交叉開(kāi)發(fā)環(huán)境,最后制定出合理的移植方案,從而使移植工作可以順利的進(jìn)行。
1.1 ARM9硬件平臺(tái)
    本次移植采用斯道ARM9開(kāi)發(fā)板作為硬件平臺(tái),其基本構(gòu)成為核心板和底板(外設(shè)板或基本板),核心板上集成了SamsungS3C2410處理器、64 M的FLASH和64M的SDRAM,為應(yīng)用研發(fā)提供了足夠的空間,基板則提供了豐富的外圍接口。其硬件平臺(tái)結(jié)構(gòu)如圖l所示。


    此完整的應(yīng)用系統(tǒng)具有體積小、耗電低、處理能力強(qiáng)等特點(diǎn),能夠裝載和運(yùn)行嵌入式Linux操作系統(tǒng)。用戶(hù)可以在這個(gè)系統(tǒng)平臺(tái)上自主進(jìn)行軟件開(kāi)發(fā)。
1.2 Linux內(nèi)核及處理器
    目前用于嵌入式Linux系統(tǒng)的內(nèi)核大多數(shù)使用2.4.x版,然而,隨著嵌入式微處理器性能的不斷增強(qiáng)及其應(yīng)用范圍的日趨擴(kuò)大,Linux-2.6版內(nèi)核由于其針對(duì)嵌入式系統(tǒng)應(yīng)用的顯著特點(diǎn),必將會(huì)越來(lái)越多的被應(yīng)用于嵌入式系統(tǒng)移植與開(kāi)發(fā)Linux系統(tǒng)之中。文中采用的是Linux-2.6版內(nèi)核。
    vivi是韓國(guó)mizi公司開(kāi)發(fā)的bootloader,適用于ARM9處理器,支持S3C2410X嵌入式ARM-Linux移植的應(yīng)用處理器。和所有的bootloader一樣,vivi也有兩種工作模式,即啟動(dòng)加載模式和下載模式。啟動(dòng)加載模式指在一段時(shí)間后(這個(gè)時(shí)間可更改)自行啟動(dòng)Linux內(nèi)核,它是vivi的默認(rèn)模式。下載模式則是指vivi為用戶(hù)提供一個(gè)命令行接口,用戶(hù)可通過(guò)接口使用命令。

2 系統(tǒng)移植方案
    在硬件方面,為支持NAND Flash引導(dǎo)模式,S3C2410A處理器在芯片內(nèi)集成了4 KB的被稱(chēng)為steppingstone的SRAM。NAND Flash引導(dǎo)模式下,系統(tǒng)復(fù)位后NAND Flash中的前4位內(nèi)容首先被復(fù)制到steppingstone,接著將steppingstone映射到nGCSO,即內(nèi)存BankO起始她址為Ox00000000,隨后系統(tǒng)開(kāi)始正常引導(dǎo)。
    同樣,在軟件方面,bootloader程序應(yīng)被燒寫(xiě)到NAND Flash最前面的部分。通常bootloader程序大于4 KB,因此,在bootloader的前4 KB程序段中,必須先完成內(nèi)存SDRAM的初始化,并將自身完全復(fù)制到SDRAM中,同時(shí)設(shè)置必要的堆棧,然后跳轉(zhuǎn)到SDRAM中去執(zhí)行這一系列工作。這樣方可完成后續(xù)的初始化系統(tǒng)資源及裝載操作系統(tǒng)內(nèi)核的任務(wù)。
    本次移植使用ARM9開(kāi)發(fā)板,通過(guò)跳線(xiàn)方式設(shè)置OM[1:0]引腳來(lái)支持NAND Flash啟動(dòng)模式,因此,移植方案使用NAND Flash+SDRAM的存儲(chǔ)模式,bootloader放在SDRAM中,內(nèi)核和文件系統(tǒng)都放在NAND Flash中,根據(jù)選用的方案,整個(gè)系統(tǒng)移植要做的工作包括兩方面:
    Bootloader:為裝載操作系統(tǒng)內(nèi)核,支持NAND Flash及網(wǎng)絡(luò)下載和串口通信,從而方便嵌人式ARM.Linux移植以開(kāi)發(fā)調(diào)試。
    Linux系統(tǒng):支持NAND Flash,并移植Cramfs+Yaffs混合文件系統(tǒng);支持NFS文件系統(tǒng)及網(wǎng)絡(luò)通信、串口等。

3 Linux內(nèi)核移植
    在同一硬件平臺(tái)上可以嵌入不同的嵌入式操作系統(tǒng),這就好比PC既可以安裝Windows又可以安裝Linux一樣。同樣,有些操作系統(tǒng)經(jīng)過(guò)移植后即可運(yùn)行在不同的硬件平臺(tái)上。通常情況下,如果一個(gè)系統(tǒng)可以在不同硬件平臺(tái)上運(yùn)行,那么這個(gè)系統(tǒng)便是可移植的。將某一個(gè)平臺(tái)的代碼運(yùn)行在其他平臺(tái)上的過(guò)程稱(chēng)作移植。嵌入式系統(tǒng)是“硬件可裁剪”的,因此工程師們?cè)O(shè)計(jì)的硬件電路會(huì)有所不同,從而使這些代碼可能無(wú)法正確運(yùn)行,因而要實(shí)現(xiàn)移植就應(yīng)結(jié)合自己的硬件電路,對(duì)已有的內(nèi)核代碼進(jìn)行修改。
3.1 內(nèi)核移植難點(diǎn)
    Linux系統(tǒng)的內(nèi)核是多層次結(jié)構(gòu)的單體內(nèi)核,其可移植性比微內(nèi)核要差一些,但是,這種內(nèi)核具有較高的效率。從操作系統(tǒng)發(fā)展的趨勢(shì)來(lái)看,微內(nèi)核作為一種先進(jìn)的操作系統(tǒng)結(jié)構(gòu),是操作系統(tǒng)發(fā)展的一個(gè)潮流。但是,微內(nèi)核結(jié)構(gòu)較低的系統(tǒng)通信效率大大的降低了系統(tǒng)的性能。所以,從系統(tǒng)效率和性能的角度來(lái)考慮,Linux并沒(méi)有采用先進(jìn)的微內(nèi)核結(jié)構(gòu)而是選擇了傳統(tǒng)的單體內(nèi)核機(jī)構(gòu)。
3.2 內(nèi)核移植的基本策略
    在Linux2.6內(nèi)核支持下,Linux已經(jīng)在許多典型的硬件平臺(tái)上實(shí)現(xiàn)移植,其中包括:I386、ARM、MIPS、ALPHA、PowerPC、SPARC、SH等。但是對(duì)于基于特定硬件體系設(shè)計(jì)的硬件平臺(tái),需要從頭對(duì)Linux進(jìn)行移植。此外還有部分體系的硬件平臺(tái),Linux只對(duì)其中部分的CPU或目標(biāo)板提供了支持,如果使用了Linux尚未支持的CPU或目標(biāo)板,也需要對(duì)Linux內(nèi)核進(jìn)行移植工作。通??梢圆捎靡韵聝煞N方法進(jìn)行Linux內(nèi)核移植工作:
    (1)從頭設(shè)計(jì)。即采用“自底向上”的設(shè)計(jì)方法,從硬件的需求考慮逐步的采用分析、設(shè)計(jì)、編碼、測(cè)試。這種方法比較適合針對(duì)一種全新的硬件平臺(tái)開(kāi)展移植工作。[!--empirenews.page--]
    (2)修改已有的代碼。如前所述,Linux已經(jīng)可以在多種體系結(jié)構(gòu)中運(yùn)行,那么,我們可以參考相近的體系結(jié)構(gòu)的代碼,只修改與我們的目標(biāo)硬件平臺(tái)不同的部分即可。這種方法的難點(diǎn)在于開(kāi)發(fā)人員除了要了解目標(biāo)硬件平臺(tái)外。還必須對(duì)已支持的軟硬件有一個(gè)較好的理解。本次研究的移植工作就是采用了這種開(kāi)發(fā)方法。
3.3 內(nèi)核移植方法
    對(duì)于系統(tǒng)移植而言,Linux實(shí)際上是由兩個(gè)比較獨(dú)立的部分所構(gòu)成,即內(nèi)核部分和系統(tǒng)部分。通常啟動(dòng)一個(gè)Linux系統(tǒng)的過(guò)程為:一個(gè)不隸屬于任何操作系統(tǒng)的加載程序?qū)inux部分內(nèi)核調(diào)入內(nèi)存,并將控制權(quán)交給內(nèi)存中Linux內(nèi)核的第一行代碼,這樣就完成了加載程序的工作。此后Linux要將自己的剩余部分全部加載到內(nèi)存,初始化所有的設(shè)備,在內(nèi)存中建立好所需的數(shù)據(jù)構(gòu)(有關(guān)進(jìn)程、設(shè)備、內(nèi)存等)。此時(shí),內(nèi)核已經(jīng)可以控制所有硬件設(shè)備。而后轉(zhuǎn)入系統(tǒng)部分,操作并使用這些硬件設(shè)備。接下來(lái)內(nèi)核加載根設(shè)備并啟動(dòng)init守護(hù)進(jìn)程,init守護(hù)進(jìn)程會(huì)根據(jù)配置文件加載文件系統(tǒng)、配置網(wǎng)絡(luò)、服務(wù)進(jìn)程及終端等。一旦終端初始化完畢,我們就會(huì)看到系統(tǒng)的歡迎界面了。概括說(shuō)來(lái),一部分內(nèi)核初始化和控制絕大部分硬件設(shè)備,為內(nèi)存管理、進(jìn)程管理、設(shè)備讀寫(xiě)等做好一切準(zhǔn)備工作;另一部分系統(tǒng)加載必需的設(shè)備,配置各種環(huán)境以便用戶(hù)可以使用整個(gè)系統(tǒng)。


    圖2所示為L(zhǎng)inux內(nèi)核硬件相關(guān)結(jié)構(gòu)。可以看出,Linux內(nèi)核中與具體硬件平臺(tái)相關(guān)的結(jié)構(gòu)主要分為兩個(gè)部分:與具體的處理器結(jié)構(gòu)相關(guān)的部分,包括中斷處理、內(nèi)存操作以及進(jìn)程控制等;與具體外設(shè)關(guān)系密切的部分,包括硬件驅(qū)動(dòng)與I/O設(shè)備。
    內(nèi)核移植由五個(gè)功能部分組成:進(jìn)程管理(包括調(diào)度和通信)、內(nèi)存管理、設(shè)備驅(qū)動(dòng)、虛擬文件系統(tǒng)與網(wǎng)絡(luò),它們之間存在復(fù)雜的調(diào)用關(guān)
系。前三部分按從前到后的順序,越靠前代表它們與硬件設(shè)備的相關(guān)程度越高,后面的虛擬文件系統(tǒng)和網(wǎng)絡(luò)則幾乎與平臺(tái)無(wú)關(guān),它們由設(shè)備管理中所支持的驅(qū)動(dòng)程序來(lái)提供底層支持。因此,在做內(nèi)核移植的時(shí)候,需要改動(dòng)的就是進(jìn)程管理、內(nèi)存管理和設(shè)備管理中被獨(dú)立出來(lái)的那部分即硬件相關(guān)部分的代碼。在Linux內(nèi)核源代碼樹(shù)中,這部分代碼全部在areh目錄下,主要是被內(nèi)核直接調(diào)用的底層支持部分。這些代碼重寫(xiě)了內(nèi)核所需調(diào)用的所有函數(shù),因?yàn)榻涌诤瘮?shù)是固定的,所以這里更像是為硬件平臺(tái)編寫(xiě)API。
3.4 內(nèi)核移植過(guò)程
    首先在通用計(jì)算機(jī)上編寫(xiě)程序,然后通過(guò)交叉編譯生成可在目標(biāo)平臺(tái)上運(yùn)行的二進(jìn)制代碼格式,最后再下載到目標(biāo)平臺(tái)計(jì)算機(jī)的特定位置上運(yùn)行。Linux內(nèi)核移植過(guò)程如下:
    (1)建立移植所必須的交叉開(kāi)發(fā)環(huán)境。需準(zhǔn)備兩臺(tái)計(jì)算機(jī),一臺(tái)用作修改編譯Linux內(nèi)核,另一臺(tái)用作移植Linux內(nèi)核。
    (2)編寫(xiě)和修改Linux內(nèi)核。在通用計(jì)算機(jī)上修改和編寫(xiě)新的內(nèi)核代碼,編譯出新的Linux內(nèi)核。
    (3)調(diào)試新的Linux內(nèi)核。將編譯后生成的新Linux內(nèi)核加載到目標(biāo)計(jì)算機(jī)上進(jìn)行運(yùn)行和調(diào)試,這個(gè)調(diào)試的過(guò)程就是交叉調(diào)試。
    調(diào)試器是一個(gè)單獨(dú)運(yùn)行著的進(jìn)程,它通過(guò)操作系統(tǒng)提供的調(diào)試接口來(lái)控制被調(diào)試的進(jìn)程。在Linux內(nèi)核移植過(guò)程中,調(diào)試時(shí)采用的是在宿主機(jī)和目標(biāo)機(jī)之間進(jìn)行的交叉調(diào)試。交叉調(diào)試有多種方法,它有一些典型特點(diǎn):
    ◇調(diào)試器和被調(diào)試進(jìn)程通常運(yùn)行在不同的機(jī)器上(注:Linux內(nèi)核作為操作系統(tǒng)內(nèi)核,不同于普通進(jìn)程,但在交叉調(diào)試中作為被調(diào)試對(duì)象,與普通進(jìn)程沒(méi)有區(qū)別),一般調(diào)試器運(yùn)行在PC或者工作站主機(jī)(宿主機(jī))上,而被調(diào)試的進(jìn)程則運(yùn)行在各種專(zhuān)業(yè)調(diào)試板(目標(biāo)機(jī))上。調(diào)試器通過(guò)某種通信方式與被調(diào)試進(jìn)程建立聯(lián)系,如串口、并口、網(wǎng)絡(luò)、DBM或者專(zhuān)用的通信方式。本次移植采用了串口和JTAG兩種方式與目標(biāo)機(jī)進(jìn)行通信。
    ◇在目標(biāo)機(jī)上一般會(huì)具備某種形式的調(diào)試代理,它負(fù)責(zé)與調(diào)試器共同配合完成對(duì)目標(biāo)機(jī)上運(yùn)行著的進(jìn)程的調(diào)試。這種調(diào)試代理可能是某些支持調(diào)試功能的硬件設(shè)備(如 DBI2000),也可能是某些專(zhuān)門(mén)的調(diào)試軟件(如 gdbserver)。本次移植使用的是GDB—Stub。
    ◇如果目標(biāo)機(jī)是某種形式的系統(tǒng)仿真器,通過(guò)在宿主機(jī)上運(yùn)行目標(biāo)機(jī)的仿真軟件,整個(gè)調(diào)試過(guò)程可以在一臺(tái)計(jì)算機(jī)上運(yùn)行。雖然此時(shí)物理上只有一臺(tái)計(jì)算機(jī),但邏輯上仍然存在著宿主機(jī)和目標(biāo)機(jī)的區(qū)別。本次移植沒(méi)有使用系統(tǒng)仿真器。調(diào)試時(shí),作為調(diào)試器的GDB運(yùn)行在宿主機(jī)上,相應(yīng)的GDB—Stub運(yùn)行在目標(biāo)機(jī)上。GDB通過(guò)串口或者網(wǎng)絡(luò)與GDB—Stub進(jìn)行通信,發(fā)出指令控制、訪(fǎng)問(wèn)運(yùn)行在目標(biāo)硬件平臺(tái)上的新的Linux內(nèi)核,讀取Linux內(nèi)核的當(dāng)前狀態(tài),并能夠改變Linux內(nèi)核的運(yùn)行狀態(tài)。
    經(jīng)過(guò)多次移植測(cè)試后,就在基于ARM920T核的53C24lO處理器為核心處理器的ARM9平臺(tái)上成功移植了Linux操作系統(tǒng)。

4 結(jié)束語(yǔ)
    文中闡述了在基于ARM920T核的53C2410處理器為核心的ARM9平臺(tái)上移植Linux操作系統(tǒng)的環(huán)境、方案和過(guò)程,對(duì)移植的難點(diǎn)進(jìn)行了重點(diǎn)分
析,這對(duì)ARM9平臺(tái)上的嵌入式Linux移植具有較好的實(shí)用價(jià)值和參考價(jià)值,同時(shí)對(duì)于其它平臺(tái)上的嵌入式Linux移植的方法也具有一定的借鑒意義。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

美國(guó)紐約州阿蒙克2022年10月20日 /美通社/ -- IBM(NYSE: IBM)發(fā)布 2022 年第三季度業(yè)績(jī)報(bào)告。 IBM 董事長(zhǎng)兼首席執(zhí)行官 Arvind Kri...

關(guān)鍵字: IBM 軟件 BSP 云平臺(tái)

成都2022年10月19日 /美通社/ -- 近期,平安養(yǎng)老險(xiǎn)積極籌備個(gè)人養(yǎng)老金的產(chǎn)品設(shè)計(jì)和系統(tǒng)開(kāi)發(fā)工作,發(fā)展多樣化的養(yǎng)老金融產(chǎn)品,推動(dòng)商業(yè)養(yǎng)老保險(xiǎn)、個(gè)人養(yǎng)老金、專(zhuān)屬商業(yè)養(yǎng)老保險(xiǎn)等產(chǎn)品供給。 搭養(yǎng)老政策東風(fēng) ...

關(guān)鍵字: 溫度 BSP 東風(fēng) 大眾

廣東佛山2022年10月19日 /美通社/ -- 空間是人居生活的基礎(chǔ)單元,承載著生存與活動(dòng)的最基本功能。而對(duì)于理想空間的解構(gòu)意義卻在物理性容器之外,體現(xiàn)出人們對(duì)于空間和生活深層關(guān)系的思考,同時(shí)也塑造著人與空間的新型連接...

關(guān)鍵字: 溫度 BSP 智能化 進(jìn)程

上海2022年10月19日 /美通社/ -- 10月17日晚間,安集科技披露業(yè)績(jī)預(yù)告。今年前三季度,公司預(yù)計(jì)實(shí)現(xiàn)營(yíng)業(yè)收入7.54億元至8.33億元,同比增長(zhǎng)60.24%至77.03%;歸母凈利潤(rùn)預(yù)計(jì)為1.73億...

關(guān)鍵字: 電子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市經(jīng)濟(jì)和信息化局發(fā)布2022年度第一批北京市市級(jí)企業(yè)技術(shù)中心創(chuàng)建名單的通知,諾誠(chéng)健華正式獲得"北京市企業(yè)技術(shù)中心"認(rèn)定。 北京市企業(yè)技...

關(guān)鍵字: BSP ARMA COM 代碼

北京2022年10月18日 /美通社/ -- 10月14日,國(guó)際數(shù)據(jù)公司(IDC)發(fā)布《2022Q2中國(guó)軟件定義存儲(chǔ)及超融合市場(chǎng)研究報(bào)告》,報(bào)告顯示:2022年上半年浪潮超融合銷(xiāo)售額同比增長(zhǎng)59.4%,近5倍于...

關(guān)鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都銀行集團(tuán)成立60周年的紀(jì)念日。趁著首都銀行集團(tuán)成立60周年與首都銀行(中國(guó))在華深耕經(jīng)營(yíng)12年的“大日子”,圍繞作為外資金融機(jī)構(gòu)對(duì)在華戰(zhàn)略的構(gòu)想和業(yè)...

關(guān)鍵字: 數(shù)字化 BSP 供應(yīng)鏈 控制

東京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式會(huì)社(NIPPON EXPRESS HOLDINGS, INC.)旗下集團(tuán)公司上海通運(yùn)國(guó)際物流有限公司(Nipp...

關(guān)鍵字: 溫控 精密儀器 半導(dǎo)體制造 BSP

廣州2022年10月18日 /美通社/ -- 10月15日,第 132 屆中國(guó)進(jìn)出口商品交易會(huì)("廣交會(huì)")于"云端"開(kāi)幕。本屆廣交會(huì)上高新技術(shù)企業(yè)云集,展出的智能產(chǎn)品超過(guò)140,...

關(guān)鍵字: 中國(guó)智造 BSP 手機(jī) CAN

要問(wèn)機(jī)器人公司哪家強(qiáng),波士頓動(dòng)力絕對(duì)是其中的佼佼者。近來(lái)年該公司在機(jī)器人研發(fā)方面獲得的一些成果令人印象深刻,比如其開(kāi)發(fā)的機(jī)器人會(huì)后空翻,自主爬樓梯等。這不,波士頓動(dòng)力又發(fā)布了其機(jī)器人組團(tuán)跳男團(tuán)舞的新視頻,表演的機(jī)器人包括...

關(guān)鍵字: 機(jī)器人 BSP 工業(yè)機(jī)器人 現(xiàn)代汽車(chē)

嵌入式軟件

15715 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉