<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > U-Boot在S3C44B0上的移植方法

U-Boot在S3C44B0上的移植方法

作者: 時(shí)間:2012-04-19 來(lái)源:網(wǎng)絡(luò ) 收藏

給嵌入式操作系統提供板上硬件資源信息,并進(jìn)一步加載、引導嵌入式操作系統。由于 的功能直接與CPU和微處理器系統相關(guān),所以不同的CPU體系將需要不同的Bootload-er。除了依賴(lài)于CPU的體系結構外, 實(shí)際上也依賴(lài)于具體的嵌入式板級設備的配置。也就是說(shuō),對于兩塊不同的嵌入式板,即使它們使用同一種CPU 構建,要想讓運行在其中一塊上的Bootloader程序也能運行在另一板子上,通常也都需要修改Bootloader 的源程序。

本文作者使用基于A(yíng)RM7TDMI 核的微處理器構建的嵌入式開(kāi)發(fā)板,附有嵌入式開(kāi)發(fā)必須的一些板上硬件資源,針對性地提供了Bootloader的移植方法,可以應用在基于A(yíng)RM7 系列處理器的嵌入式系統應用開(kāi)發(fā)中。

運行及移植條件分析

嵌入式系統的硬件部分不可能是完全一致的,由于嵌入式系統需要硬件與軟件的配合才能正常工作,因此,需要針對硬件系統進(jìn)行有關(guān)引導程序的設計。對于嵌入式系統來(lái)說(shuō),引導程序比較復雜,一般采用對基本符合硬件體系要求的現有引導程序進(jìn)行修改,然后加以應用的方法設計引導程序,這就是引導程序的移植。

在移植操作前,需要完成兩個(gè)工作,一個(gè)是尋找一個(gè)比較適合的引導程序,另一個(gè)就是對所要移植的軟件進(jìn)行分析,結合已有硬件系統,找出移植的條件。本文選擇 作為引導程序,移植工作就是使原有的 能夠在本文給定的硬件系統中運行。

U- Boot是德國DENX小組開(kāi)發(fā)的用于多種嵌入式CPU的Bootloader引導程序,支持PowPC、ARM、MIPS、m68 K 等多種處理器平臺,易于裁剪和調試。U-Boot 遵循GPL (通用公共許可) 公約,完全開(kāi)放源代碼。U-Boot 主要特性如表1所列。



U-Boot 運行分析

U-Boot 的啟動(dòng)過(guò)程主要分為兩個(gè)階段,即stage1 和stage2。
stage1用匯編語(yǔ)言編寫(xiě),通常是與CPU的體系結構有關(guān),如設備初始化代碼等,在start.S中實(shí)現。
stage2為C 語(yǔ)言程序,用來(lái)加載操作系統內核,具有可讀性和可移植性,是由board.c中的start-armboot() 函數來(lái)實(shí)現。U-Boot的stage1如圖1 所示。



圖1  U-Boot stage1 初始化過(guò)程

stage2 包括以下步驟;①初始化本階段要使用到的硬件設備; ②檢測系統內存映射; ③將kernel映像和根文件系統映像從FLASH上讀到RAM空間中; ④為內核設置啟動(dòng)參數; ⑤調用內核。在調試階段,操作系統內核是通過(guò)U-Boot下載到SDRAM中,調試完畢可以將內核燒寫(xiě)到FLASH中。本文選用的內核是u Clinux,在FLASH 中的分布如圖2 所示,這些地址可以通過(guò)修改include/ con2figs/ smdk4110.h 文件進(jìn)行配置。內核運行時(shí)的RAM地址必須與u Clinux配置的運行地址相一致。由于FLASH的存儲空間有限,存放在FLASH中的u Clinux核心是經(jīng)過(guò)壓縮的。U-Boot將壓縮的u2Clinux kernel加載到SDRAM 地址0x0C300000如圖3所示,如果選擇啟動(dòng)u Clinux,則壓縮的u Clin2ux核將自解壓到0x0C008000,然后再跳轉到該處并開(kāi)始運行。

圖 3中0x0C100000是U-Boot將自身的stage2的代碼復制到SDRAM的起始地址,0x0C700000是默認的Load地址空間,用于 U-Boot的升級與調試,在需要升級或修改U-Boot時(shí),將更新的U-Boot映像加載到這里,然后通過(guò)原有的U-Boot從SDRAM燒寫(xiě)到 FLASH覆蓋原來(lái)的U-Boot,這樣可以減少燒寫(xiě)FLASH 的次數。

移植條件分析

移植操作的目的,是為了在嵌入式開(kāi)發(fā)板上用于引導嵌入式操作系統u Clinux 及其應用。

根據Bootloader 運行的分析結果,把Bootloader可移植條件分為如下兩種情況。

(1) 硬件資源完全支持條件。在完全不改變U-Boot程序源代碼的條件下,選用U-Boot程序完全支持的嵌入式微處理器,并且選用U-Boot完全支持的主板配置資源?;疽浦矖l件即是通過(guò)分析U-Boot下的board目錄和cpu目錄,訂制開(kāi)發(fā)板,使開(kāi)發(fā)板的配置與之相適應,但是這種情況與實(shí)際開(kāi)發(fā)不太吻合。


上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: Bootloader U-Boot S3C44B0

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>