www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]基于ARM9的嵌入式Linux代碼移植

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

O 引言
    隨著計算機技術(shù)、通信技術(shù)以及Internet的飛速發(fā)展。嵌入式系統(tǒng)已得到越來越廣泛的應用。與此同時,嵌入式系統(tǒng)的復雜性也在不斷增加,嵌入式操作系統(tǒng)已經(jīng)成為其中最重要的組成部分。目前,市場上存在著眾多的嵌入式操作系統(tǒng),而在這些系統(tǒng)之中,兼有Linux和嵌入式優(yōu)點的嵌入式Linux操作系統(tǒng),憑借其在結(jié)構(gòu)清晰、源代碼開放性、裁剪性好,開發(fā)與使用均易實現(xiàn)等方面的優(yōu)勢,擁有巨大的市場前景和商業(yè)機會。當前嵌入式Linux的一個熱點應用就是將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ā)的重要組成部分,它需要相應的軟件組件支持,同時又與目標硬件平臺關(guān)系密切。因此,在正式移植
前,首先應明確嵌入式系統(tǒng)開發(fā)的流程與開發(fā)環(huán)境,再根據(jù)目標硬件平臺的特點和所選擇的軟件組件,正確搭建功能完善的交叉開發(fā)環(huán)境,最后制定出合理的移植方案,從而使移植工作可以順利的進行。
1.1 ARM9硬件平臺
    本次移植采用斯道ARM9開發(fā)板作為硬件平臺,其基本構(gòu)成為核心板和底板(外設板或基本板),核心板上集成了SamsungS3C2410處理器、64 M的FLASH和64M的SDRAM,為應用研發(fā)提供了足夠的空間,基板則提供了豐富的外圍接口。其硬件平臺結(jié)構(gòu)如圖l所示。


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

2 系統(tǒng)移植方案
    在硬件方面,為支持NAND Flash引導模式,S3C2410A處理器在芯片內(nèi)集成了4 KB的被稱為steppingstone的SRAM。NAND Flash引導模式下,系統(tǒng)復位后NAND Flash中的前4位內(nèi)容首先被復制到steppingstone,接著將steppingstone映射到nGCSO,即內(nèi)存BankO起始她址為Ox00000000,隨后系統(tǒng)開始正常引導。
    同樣,在軟件方面,bootloader程序應被燒寫到NAND Flash最前面的部分。通常bootloader程序大于4 KB,因此,在bootloader的前4 KB程序段中,必須先完成內(nèi)存SDRAM的初始化,并將自身完全復制到SDRAM中,同時設置必要的堆棧,然后跳轉(zhuǎn)到SDRAM中去執(zhí)行這一系列工作。這樣方可完成后續(xù)的初始化系統(tǒng)資源及裝載操作系統(tǒng)內(nèi)核的任務。
    本次移植使用ARM9開發(fā)板,通過跳線方式設置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)絡下載和串口通信,從而方便嵌人式ARM.Linux移植以開發(fā)調(diào)試。
    Linux系統(tǒng):支持NAND Flash,并移植Cramfs+Yaffs混合文件系統(tǒng);支持NFS文件系統(tǒng)及網(wǎng)絡通信、串口等。

3 Linux內(nèi)核移植
    在同一硬件平臺上可以嵌入不同的嵌入式操作系統(tǒng),這就好比PC既可以安裝Windows又可以安裝Linux一樣。同樣,有些操作系統(tǒng)經(jīng)過移植后即可運行在不同的硬件平臺上。通常情況下,如果一個系統(tǒng)可以在不同硬件平臺上運行,那么這個系統(tǒng)便是可移植的。將某一個平臺的代碼運行在其他平臺上的過程稱作移植。嵌入式系統(tǒng)是“硬件可裁剪”的,因此工程師們設計的硬件電路會有所不同,從而使這些代碼可能無法正確運行,因而要實現(xiàn)移植就應結(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等。但是對于基于特定硬件體系設計的硬件平臺,需要從頭對Linux進行移植。此外還有部分體系的硬件平臺,Linux只對其中部分的CPU或目標板提供了支持,如果使用了Linux尚未支持的CPU或目標板,也需要對Linux內(nèi)核進行移植工作。通??梢圆捎靡韵聝煞N方法進行Linux內(nèi)核移植工作:
    (1)從頭設計。即采用“自底向上”的設計方法,從硬件的需求考慮逐步的采用分析、設計、編碼、測試。這種方法比較適合針對一種全新的硬件平臺開展移植工作。[!--empirenews.page--]
    (2)修改已有的代碼。如前所述,Linux已經(jīng)可以在多種體系結(jié)構(gòu)中運行,那么,我們可以參考相近的體系結(jié)構(gòu)的代碼,只修改與我們的目標硬件平臺不同的部分即可。這種方法的難點在于開發(fā)人員除了要了解目標硬件平臺外。還必須對已支持的軟硬件有一個較好的理解。本次研究的移植工作就是采用了這種開發(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)存,初始化所有的設備,在內(nèi)存中建立好所需的數(shù)據(jù)構(gòu)(有關(guān)進程、設備、內(nèi)存等)。此時,內(nèi)核已經(jīng)可以控制所有硬件設備。而后轉(zhuǎn)入系統(tǒng)部分,操作并使用這些硬件設備。接下來內(nèi)核加載根設備并啟動init守護進程,init守護進程會根據(jù)配置文件加載文件系統(tǒng)、配置網(wǎng)絡、服務進程及終端等。一旦終端初始化完畢,我們就會看到系統(tǒng)的歡迎界面了。概括說來,一部分內(nèi)核初始化和控制絕大部分硬件設備,為內(nèi)存管理、進程管理、設備讀寫等做好一切準備工作;另一部分系統(tǒng)加載必需的設備,配置各種環(huán)境以便用戶可以使用整個系統(tǒng)。


    圖2所示為Linux內(nèi)核硬件相關(guān)結(jié)構(gòu)??梢钥闯?,Linux內(nèi)核中與具體硬件平臺相關(guān)的結(jié)構(gòu)主要分為兩個部分:與具體的處理器結(jié)構(gòu)相關(guān)的部分,包括中斷處理、內(nèi)存操作以及進程控制等;與具體外設關(guān)系密切的部分,包括硬件驅(qū)動與I/O設備。
    內(nèi)核移植由五個功能部分組成:進程管理(包括調(diào)度和通信)、內(nèi)存管理、設備驅(qū)動、虛擬文件系統(tǒng)與網(wǎng)絡,它們之間存在復雜的調(diào)用關(guān)
系。前三部分按從前到后的順序,越靠前代表它們與硬件設備的相關(guān)程度越高,后面的虛擬文件系統(tǒng)和網(wǎng)絡則幾乎與平臺無關(guān),它們由設備管理中所支持的驅(qū)動程序來提供底層支持。因此,在做內(nèi)核移植的時候,需要改動的就是進程管理、內(nèi)存管理和設備管理中被獨立出來的那部分即硬件相關(guān)部分的代碼。在Linux內(nèi)核源代碼樹中,這部分代碼全部在areh目錄下,主要是被內(nèi)核直接調(diào)用的底層支持部分。這些代碼重寫了內(nèi)核所需調(diào)用的所有函數(shù),因為接口函數(shù)是固定的,所以這里更像是為硬件平臺編寫API。
3.4 內(nèi)核移植過程
    首先在通用計算機上編寫程序,然后通過交叉編譯生成可在目標平臺上運行的二進制代碼格式,最后再下載到目標平臺計算機的特定位置上運行。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)核加載到目標計算機上進行運行和調(diào)試,這個調(diào)試的過程就是交叉調(diào)試。
    調(diào)試器是一個單獨運行著的進程,它通過操作系統(tǒng)提供的調(diào)試接口來控制被調(diào)試的進程。在Linux內(nèi)核移植過程中,調(dià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)試板(目標機)上。調(diào)試器通過某種通信方式與被調(diào)試進程建立聯(lián)系,如串口、并口、網(wǎng)絡、DBM或者專用的通信方式。本次移植采用了串口和JTAG兩種方式與目標機進行通信。
    ◇在目標機上一般會具備某種形式的調(diào)試代理,它負責與調(diào)試器共同配合完成對目標機上運行著的進程的調(diào)試。這種調(diào)試代理可能是某些支持調(diào)試功能的硬件設備(如 DBI2000),也可能是某些專門的調(diào)試軟件(如 gdbserver)。本次移植使用的是GDB—Stub。
    ◇如果目標機是某種形式的系統(tǒng)仿真器,通過在宿主機上運行目標機的仿真軟件,整個調(diào)試過程可以在一臺計算機上運行。雖然此時物理上只有一臺計算機,但邏輯上仍然存在著宿主機和目標機的區(qū)別。本次移植沒有使用系統(tǒng)仿真器。調(diào)試時,作為調(diào)試器的GDB運行在宿主機上,相應的GDB—Stub運行在目標機上。GDB通過串口或者網(wǎng)絡與GDB—Stub進行通信,發(fā)出指令控制、訪問運行在目標硬件平臺上的新的Linux內(nèi)核,讀取Linux內(nèi)核的當前狀態(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)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉