国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

歷史上的今天

今天是:2025年01月25日(星期六)

2021年01月25日 | 基于ARM9的Linux代碼移植

發(fā)布者:逍遙游俠 來源: 21ic關(guān)鍵字:ARM9  Linux  代碼移植 手機看文章 掃描二維碼
隨時隨地手機看文章

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


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


O 引言


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


此研究基于Linux 2.6內(nèi)核的嵌入式Linux系統(tǒng),分析了所面臨的理論問題、關(guān)鍵技術(shù),實現(xiàn)了Linux內(nèi)核在ARM9平臺上的運行。


1 開發(fā)環(huán)境介紹


嵌入式IJnux移植是嵌入式系統(tǒng)開發(fā)的重要組成部分,它需要相應(yīng)的軟件組件支持,同時又與目標(biāo)硬件平臺關(guān)系密切。因此,在正式移植


前,首先應(yīng)明確嵌入式系統(tǒng)開發(fā)的流程與開發(fā)環(huán)境,再根據(jù)目標(biāo)硬件平臺的特點和所選擇的軟件組件,正確搭建功能完善的交叉開發(fā)環(huán)境,最后制定出合理的移植方案,從而使移植工作可以順利的進行。


1.1 ARM9硬件平臺


本次移植采用斯道ARM9開發(fā)板作為硬件平臺,其基本構(gòu)成為核心板和底板(外設(shè)板或基本板),核心板上集成了SamsungS3C2410處理器、64 M的FLASH和64M的SDRAM,為應(yīng)用研發(fā)提供了足夠的空間,基板則提供了豐富的外圍接口。其硬件平臺結(jié)構(gòu)如圖l所示。

此完整的應(yīng)用系統(tǒng)具有體積小、耗電低、處理能力強等特點,能夠裝載和運行嵌入式Linux操作系統(tǒng)。用戶可以在這個系統(tǒng)平臺上自主進行軟件開發(fā)。


1.2 Linux內(nèi)核及處理器


目前用于嵌入式Linux系統(tǒng)的內(nèi)核大多數(shù)使用2.4.x版,然而,隨著嵌入式微處理器性能的不斷增強及其應(yīng)用范圍的日趨擴大,Linux-2.6版內(nèi)核由于其針對嵌入式系統(tǒng)應(yīng)用的顯著特點,必將會越來越多的被應(yīng)用于嵌入式系統(tǒng)移植與開發(fā)Linux系統(tǒng)之中。文中采用的是Linux-2.6版內(nèi)核。


vivi是韓國mizi公司開發(fā)的bootloader,適用于ARM9處理器,支持S3C2410X嵌入式ARM-Linux移植的應(yīng)用處理器。和所有的bootloader一樣,vivi也有兩種工作模式,即啟動加載模式和下載模式。啟動加載模式指在一段時間后(這個時間可更改)自行啟動Linux內(nèi)核,它是vivi的默認模式。下載模式則是指vivi為用戶提供一個命令行接口,用戶可通過接口使用命令。


2 系統(tǒng)移植方案


在硬件方面,為支持NAND Flash引導(dǎo)模式,S3C2410A處理器在芯片內(nèi)集成了4 KB的被稱為steppingstone的SRAM。NAND Flash引導(dǎo)模式下,系統(tǒng)復(fù)位后NAND Flash中的前4位內(nèi)容首先被復(fù)制到steppingstone,接著將steppingstone映射到nGCSO,即內(nèi)存BankO起始她址為Ox00000000,隨后系統(tǒng)開始正常引導(dǎo)。


同樣,在軟件方面,bootloader程序應(yīng)被燒寫到NAND Flash最前面的部分。通常bootloader程序大于4 KB,因此,在bootloader的前4 KB程序段中,必須先完成內(nèi)存SDRAM的初始化,并將自身完全復(fù)制到SDRAM中,同時設(shè)置必要的堆棧,然后跳轉(zhuǎn)到SDRAM中去執(zhí)行這一系列工作。這樣方可完成后續(xù)的初始化系統(tǒng)資源及裝載操作系統(tǒng)內(nèi)核的任務(wù)。


本次移植使用ARM9開發(fā)板,通過跳線方式設(shè)置OM[1:0]引腳來支持NAND Flash啟動模式,因此,移植方案使用NAND Flash+SDRAM的存儲模式,bootloader放在SDRAM中,內(nèi)核和文件系統(tǒng)都放在NAND Flash中,根據(jù)選用的方案,整個系統(tǒng)移植要做的工作包括兩方面:


Bootloader:為裝載操作系統(tǒng)內(nèi)核,支持NAND Flash及網(wǎng)絡(luò)下載和串口通信,從而方便嵌人式ARM.Linux移植以開發(fā)調(diào)試。


Linux系統(tǒng):支持NAND Flash,并移植Cramfs+Yaffs混合文件系統(tǒng);支持NFS文件系統(tǒng)及網(wǎng)絡(luò)通信、串口等。


3 Linux內(nèi)核移植


在同一硬件平臺上可以嵌入不同的嵌入式操作系統(tǒng),這就好比PC既可以安裝Windows又可以安裝Linux一樣。同樣,有些操作系統(tǒng)經(jīng)過移植后即可運行在不同的硬件平臺上。通常情況下,如果一個系統(tǒng)可以在不同硬件平臺上運行,那么這個系統(tǒng)便是可移植的。將某一個平臺的代碼運行在其他平臺上的過程稱作移植。嵌入式系統(tǒng)是“硬件可裁剪”的,因此工程師們設(shè)計的硬件電路會有所不同,從而使這些代碼可能無法正確運行,因而要實現(xiàn)移植就應(yīng)結(jié)合自己的硬件電路,對已有的內(nèi)核代碼進行修改。


3.1 內(nèi)核移植難點


Linux系統(tǒng)的內(nèi)核是多層次結(jié)構(gòu)的單體內(nèi)核,其可移植性比微內(nèi)核要差一些,但是,這種內(nèi)核具有較高的效率。從操作系統(tǒng)發(fā)展的趨勢來看,微內(nèi)核作為一種先進的操作系統(tǒng)結(jié)構(gòu),是操作系統(tǒng)發(fā)展的一個潮流。但是,微內(nèi)核結(jié)構(gòu)較低的系統(tǒng)通信效率大大的降低了系統(tǒng)的性能。所以,從系統(tǒng)效率和性能的角度來考慮,Linux并沒有采用先進的微內(nèi)核結(jié)構(gòu)而是選擇了傳統(tǒng)的單體內(nèi)核機構(gòu)。


3.2 內(nèi)核移植的基本策略


在Linux2.6內(nèi)核支持下,Linux已經(jīng)在許多典型的硬件平臺上實現(xiàn)移植,其中包括:I386、ARM、MIPS、ALPHA、PowerPC、SPARC、SH等。但是對于基于特定硬件體系設(shè)計的硬件平臺,需要從頭對Linux進行移植。此外還有部分體系的硬件平臺,Linux只對其中部分的CPU或目標(biāo)板提供了支持,如果使用了Linux尚未支持的CPU或目標(biāo)板,也需要對Linux內(nèi)核進行移植工作。通??梢圆捎靡韵聝煞N方法進行Linux內(nèi)核移植工作:


(1)從頭設(shè)計。即采用“自底向上”的設(shè)計方法,從硬件的需求考慮逐步的采用分析、設(shè)計、編碼、測試。這種方法比較適合針對一種全新的硬件平臺開展移植工作。


(2)修改已有的代碼。如前所述,Linux已經(jīng)可以在多種體系結(jié)構(gòu)中運行,那么,我們可以參考相近的體系結(jié)構(gòu)的代碼,只修改與我們的目標(biāo)硬件平臺不同的部分即可。這種方法的難點在于開發(fā)人員除了要了解目標(biāo)硬件平臺外。還必須對已支持的軟硬件有一個較好的理解。本次研究的移植工作就是采用了這種開發(fā)方法。


3.3 內(nèi)核移植方法


對于系統(tǒng)移植而言,Linux實際上是由兩個比較獨立的部分所構(gòu)成,即內(nèi)核部分和系統(tǒng)部分。通常啟動一個Linux系統(tǒng)的過程為:一個不隸屬于任何操作系統(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)進程、設(shè)備、內(nèi)存等)。此時,內(nèi)核已經(jīng)可以控制所有硬件設(shè)備。而后轉(zhuǎn)入系統(tǒng)部分,操作并使用這些硬件設(shè)備。接下來內(nèi)核加載根設(shè)備并啟動init守護進程,init守護進程會根據(jù)配置文件加載文件系統(tǒng)、配置網(wǎng)絡(luò)、服務(wù)進程及終端等。一旦終端初始化完畢,我們就會看到系統(tǒng)的歡迎界面了。概括說來,一部分內(nèi)核初始化和控制絕大部分硬件設(shè)備,為內(nèi)存管理、進程管理、設(shè)備讀寫等做好一切準備工作;另一部分系統(tǒng)加載必需的設(shè)備,配置各種環(huán)境以便用戶可以使用整個系統(tǒng)。

圖2所示為Linux內(nèi)核硬件相關(guān)結(jié)構(gòu)??梢钥闯觯琇inux內(nèi)核中與具體硬件平臺相關(guān)的結(jié)構(gòu)主要分為兩個部分:與具體的處理器結(jié)構(gòu)相關(guān)的部分,包括中斷處理、內(nèi)存操作以及進程控制等;與具體外設(shè)關(guān)系密切的部分,包括硬件驅(qū)動與I/O設(shè)備。


內(nèi)核移植由五個功能部分組成:進程管理(包括調(diào)度和通信)、內(nèi)存管理、設(shè)備驅(qū)動、虛擬文件系統(tǒng)與網(wǎng)絡(luò),它們之間存在復(fù)雜的調(diào)用關(guān)


系。前三部分按從前到后的順序,越靠前代表它們與硬件設(shè)備的相關(guān)程度越高,后面的虛擬文件系統(tǒng)和網(wǎng)絡(luò)則幾乎與平臺無關(guān),它們由設(shè)備管理中所支持的驅(qū)動程序來提供底層支持。因此,在做內(nèi)核移植的時候,需要改動的就是進程管理、內(nèi)存管理和設(shè)備管理中被獨立出來的那部分即硬件相關(guān)部分的代碼。在Linux內(nèi)核源代碼樹中,這部分代碼全部在areh目錄下,主要是被內(nèi)核直接調(diào)用的底層支持部分。這些代碼重寫了內(nèi)核所需調(diào)用的所有函數(shù),因為接口函數(shù)是固定的,所以這里更像是為硬件平臺編寫API。


3.4 內(nèi)核移植過程


首先在通用計算機上編寫程序,然后通過交叉編譯生成可在目標(biāo)平臺上運行的二進制代碼格式,最后再下載到目標(biāo)平臺計算機的特定位置上運行。Linux內(nèi)核移植過程如下:


(1)建立移植所必須的交叉開發(fā)環(huán)境。需準備兩臺計算機,一臺用作修改編譯Linux內(nèi)核,另一臺用作移植Linux內(nèi)核。


(2)編寫和修改Linux內(nèi)核。在通用計算機上修改和編寫新的內(nèi)核代碼,編譯出新的Linux內(nèi)核。


(3)調(diào)試新的Linux內(nèi)核。將編譯后生成的新Linux內(nèi)核加載到目標(biāo)計算機上進行運行和調(diào)試,這個調(diào)試的過程就是交叉調(diào)試。


調(diào)試器是一個單獨運行著的進程,它通過操作系統(tǒng)提供的調(diào)試接口來控制被調(diào)試的進程。在Linux內(nèi)核移植過程中,調(diào)試時采用的是在宿主機和目標(biāo)機之間進行的交叉調(diào)試。交叉調(diào)試有多種方法,它有一些典型特點:


◇調(diào)試器和被調(diào)試進程通常運行在不同的機器上(注:Linux內(nèi)核作為操作系統(tǒng)內(nèi)核,不同于普通進程,但在交叉調(diào)試中作為被調(diào)試對象,與普通進程沒有區(qū)別),一般調(diào)試器運行在PC或者工作站主機(宿主機)上,而被調(diào)試的進程則運行在各種專業(yè)調(diào)試板(目標(biāo)機)上。調(diào)試器通過某種通信方式與被調(diào)試進程建立聯(lián)系,如串口、并口、網(wǎng)絡(luò)、DBM或者專用的通信方式。本次移植采用了串口和JTAG兩種方式與目標(biāo)機進行通信。


◇在目標(biāo)機上一般會具備某種形式的調(diào)試代理,它負責(zé)與調(diào)試器共同配合完成對目標(biāo)機上運行著的進程的調(diào)試。這種調(diào)試代理可能是某些支持調(diào)試功能的硬件設(shè)備(如 DBI2000),也可能是某些專門的調(diào)試軟件(如 gdbserver)。本次移植使用的是GDB—Stub。


◇如果目標(biāo)機是某種形式的系統(tǒng)仿真器,通過在宿主機上運行目標(biāo)機的仿真軟件,整個調(diào)試過程可以在一臺計算機上運行。雖然此時物理上只有一臺計算機,但邏輯上仍然存在著宿主機和目標(biāo)機的區(qū)別。本次移植沒有使用系統(tǒng)仿真器。調(diào)試時,作為調(diào)試器的GDB運行在宿主機上,相應(yīng)的GDB—Stub運行在目標(biāo)機上。GDB通過串口或者網(wǎng)絡(luò)與GDB—Stub進行通信,發(fā)出指令控制、訪問運行在目標(biāo)硬件平臺上的新的Linux內(nèi)核,讀取Linux內(nèi)核的當(dāng)前狀態(tài),并能夠改變Linux內(nèi)核的運行狀態(tài)。


經(jīng)過多次移植測試后,就在基于ARM920T核的53C24lO處理器為核心處理器的ARM9平臺上成功移植了Linux操作系統(tǒng)。


4 結(jié)束語


文中闡述了在基于ARM920T核的53C2410處理器為核心的ARM9平臺上移植Linux操作系統(tǒng)的環(huán)境、方案和過程,對移植的難點進行了重點分


析,這對ARM9平臺上的嵌入式Linux移植具有較好的實用價值和參考價值,同時對于其它平臺上的嵌入式Linux移植的方法也具有一定的借鑒意義。


關(guān)鍵字:ARM9  Linux  代碼移植 引用地址:基于ARM9的Linux代碼移植

上一篇:以ARM和DSP嵌入式系統(tǒng)為核心的實時仿真平臺的開發(fā)
下一篇:基于LPC2131嵌入式系統(tǒng)的CAN模塊設(shè)計與實現(xiàn)

推薦閱讀

? ? iPhone X的銷量一直沒有達到預(yù)期,先是從供應(yīng)鏈里傳來消息,說蘋果要大幅縮減iPhone X在18年的訂單量。隨后,又有消息稱,iPhone X將在秋季停產(chǎn),或?qū)⒊蔀樽疃堂膇Phone。  最近,臺灣分析師郭明池又提供了廉價版iPhone X的消息,在現(xiàn)版本的基礎(chǔ)上,保留了iPhone X的特點和主要功能,放棄了一些不必要的配件和功能以控制成本,從而大幅度...
酒店經(jīng)營層原本是希望借由機器人來提高工作效率,并省下高昂的員工成本。但是他們沒有預(yù)料到的是機器人頻頻發(fā)生故障狀況。例如負責(zé)接待的機器人三不五時就失靈,最后還是得靠人類員工來辦理客人入住。又如每個房間配有機器人助理Churi回答客人詢問的問題,結(jié)果連附近景點的營業(yè)時間都答不出來。另外,酒店有100多個房間,但負責(zé)運送行李的機器人只能處理24...
臨近新春的西藏,沒有和風(fēng)細雨,沒有游客喧鬧。車行駛在高山與平原間,冰封的雪山、圣潔的湖泊在湛藍天空的映襯下熠熠生輝。春節(jié)前,記者行進在阿里與藏中電網(wǎng)聯(lián)網(wǎng)工程的施工沿線,記錄這條“光明線”“幸福線”上建設(shè)者們的點點滴滴。 風(fēng)雪中鏖戰(zhàn)吉隆 吉隆,為藏語“舒適村”之意。然而這里的冬天卻不那么“舒適”。上午風(fēng)和日麗,一到下午卻狂風(fēng)呼...
作為國家戰(zhàn)略性新興產(chǎn)業(yè),IGBT在軌道交通、智能電網(wǎng)、電動汽車與新能源裝備等領(lǐng)域應(yīng)用廣泛,尤其被認為是新能源汽車的核心技術(shù)所在。但目前國內(nèi)市場中高端IGBT產(chǎn)能不足,長期依賴進口。目前,國內(nèi)僅有三家廠商具備汽車用功率半導(dǎo)體模塊的研發(fā)、制造能力,國內(nèi)電動汽車用功率半導(dǎo)體模塊近80%的市場份額被英飛凌、法雷奧、三菱電機等歐美日企業(yè)壟斷。中國工...

史海拾趣

問答坊 | AI 解惑

請教高手一個問題

在一次拷貝PCB資料的時候,拷了一個PCB文件后,我直接打開,但是提示有l(wèi)icense錯誤,最終的結(jié)果是此PCB不能保存,可以進行修改等基本操作,就是不能保存!此后我電腦上的所有PCB文件都有這個問題,真是哭死!但是從我同事那里傳過來的PCB文件我又可 ...…

查看全部問答∨

網(wǎng)絡(luò)變壓器HR漢仁

壞尐孩 中山市漢仁電子有限公司(HanRun)成立于1999年, 2001年通過ISO9001:2000國際質(zhì)量體系認證,2006年通過ISO14001:2004環(huán)境體系認證,2008年成功通過中山市科技局、中山市發(fā)改局和中山市經(jīng)貿(mào)局的評審,并被批準組建中山市工程技術(shù)研究開發(fā)中 ...…

查看全部問答∨

嵌入式學(xué)習(xí)推薦書籍

Linux基礎(chǔ) 1、《Linux與Unix Shell 編程指南》 【 51CTO推薦在線觀看:《Linux標(biāo)準教程》 】 C語言基礎(chǔ) 1、《C Primer Plus,5th Edition》【美】Stephen Prata著 2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan Da ...…

查看全部問答∨

vs 2005 WinCE 仿真環(huán)境建立問題

我安裝了WinCE 4.2 EVC,ActiveSync 在這個環(huán)境下,是可以進行WinCE仿真調(diào)試的。       程序是EVC自己傳到仿真環(huán)境里的 后來又安裝了VS 2005,在VS 2005中,建立了WinCE簡單的演示程序, 但是在運行時,沒有WinCE的模擬器可 ...…

查看全部問答∨

請教ARM7 lpc2378和uda1341實現(xiàn)錄音的問題

買的是周立功的開發(fā)板,用的codec是uda1341ts,可以正常放音,但是不能錄音,我是用mic通過uda1341的通道1輸入,但是在uda1341的輸出端18腳,一直檢測不到信號,不知道問題出在哪了。 下面是uda1341初始化的設(shè)置,請高手幫我看看,分析下原因,謝 ...…

查看全部問答∨

程序大小超出片內(nèi)ram,如何做?

我用的6713,片內(nèi)ram192k,我的程序超出這個范圍.試圖將程序放在片外4m的ram上,編譯成功,load .out文件也沒錯,只是出現(xiàn)不能設(shè)置斷點,斷點管理出錯,程序也不能正常執(zhí)行,請大俠們講解!謝謝…

查看全部問答∨

關(guān)于FPGA的數(shù)字信號處理

本人在學(xué)習(xí)FPGA的數(shù)字信號處理 ,想找些相關(guān)的資料,比如,復(fù)數(shù)乘法器的實現(xiàn)、蝶形運算單元的實現(xiàn)、數(shù)據(jù)存儲單元RAM的實現(xiàn)、旋轉(zhuǎn)因子ROM的實現(xiàn)、控制單元的設(shè)計等。還有怎么設(shè)計FFT、FIR、IIR,具體的實現(xiàn)流程是什么樣的,就是怎樣在quartus ii中操 ...…

查看全部問答∨

從0開始學(xué)習(xí)TI--M3……2

GPIO部分: 811的GPIO能夠承受5V的電平,可以與5V供電的方面的交流。其中特別需要注意的是在1000以下的系列中,PB7\\PC0\\PC1\\PC2\\PC3與JTAG復(fù)用,對于811需要特別注意一旦鎖死意味著芯片報廢,對于1000以上的系列用到這些IO需要先進行解鎖操作。 ...…

查看全部問答∨

一個單電源轉(zhuǎn)換正負電源電路

一般音響電器工作時,需要提供正負電源。但在汽車、輪船、火車等運載工具上只能用蓄電池供電,這里介紹一款電源電路,希望對大家有所幫助。該電源電路由震蕩器、反相器、推動器和整流及濾波器等部分組成,電路工作原理如圖所示 震蕩器   &nb ...…

查看全部問答∨
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved