<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è) > 嵌入式系統 > 設計應用 > 基于PxA255的U-B00t啟動(dòng)分析及移植

基于PxA255的U-B00t啟動(dòng)分析及移植

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

stage1代碼執行完以后,就為stage2的運行建立起了基本的硬件環(huán)境,此時(shí)的U-Boot的存儲器SDRAM映射圖如圖3所示。

本文引用地址:http://dyxdggzs.com/article/152485.htm

2.2.2 stage2部分
接下來(lái)進(jìn)入到U-Boot stage2,即C語(yǔ)言代碼部分,入口是start_arml300t,位于lib_arm/board.c中。startarmboot是C語(yǔ)言開(kāi)始的函數,也是整個(gè)代碼中C語(yǔ)言的主函數,同時(shí)還是整個(gè)U-Boot的主函數,該函數主要完成的操作為:初始化本階段要使用到的硬件設備;檢測系統內存映射;將內核映像和根文件系統映像從FLASH拷貝到SDRAM中;為內核設置參數;調用內核。
在stage2部分,首先初始化全局數據表;然后順序執行函數指針數組init_sequence中的初始化函數;接下來(lái)調用FLAsH_init()函數初始化CFI FLAsH(針對NOR FLASH);接著(zhù)調用env_relocate()函數初始化環(huán)境變量;然后獲取目標板的網(wǎng)絡(luò )地址,包括IP地址和MAC地址;接著(zhù)調用commend/console.c中定義的函數console_init_r()初始化串口控制臺;最后進(jìn)入main_loop循環(huán),以接收用戶(hù)命令。至此Bootloader的任務(wù)已經(jīng)完成:初始化硬件,為內核傳遞參數,加載內核。


3 U-Boot的
3.1 的目標與主要工作
之前,需要清楚移植的目標是什么。為了達到這個(gè)目標,需要做哪些工作。一般的開(kāi)發(fā)板上U-Boot所需的最小功能,包括:串口、FLASH和網(wǎng)卡,由此可得移植目標是:
(1)將U-Boot移植到目標板FLASH上;
(2)U-Boot能夠在目標板上運行起來(lái);
(3)U-Boot能夠讀寫(xiě)目標板上FLAsH等存儲設備;
(4)U-Boot能夠使網(wǎng)卡正常工作,能通過(guò)網(wǎng)卡下載數據。
根據以上的移植目標,所做的主要工作應該包括:
移植U-Boot與目標CPU相應的代碼;移植U-Boot的FLASH驅動(dòng);移植U-Boot,的網(wǎng)卡驅動(dòng)。
3.2 參考板的選取
U-Boot本身已經(jīng)支持多種開(kāi)發(fā)板,所以在移植的過(guò)程中一般不需要從零開(kāi)始,可以選擇一個(gè)與自己目標板最接近的參考板,在參考板的基礎上進(jìn)行修改。所以選擇適當的參考板是十分重要的,選擇參考板的原則是參考板和目標板具有相同的處理器,至少類(lèi)似的處理器;參考板和開(kāi)發(fā)板具有相同的外圍接口電路,至少基本接口相同??傊M量重用已成熟的代碼。
這里目標板的CPU為PXA255,在board目錄里選擇lubbock開(kāi)發(fā)板作為參考板。對于相應的FLASH設備由于Intel FLAsH支持CFI(Common FLAsHInterface),選擇drivers/cfi_FLAsH.c作為FLASH設備驅動(dòng)。由于目標板使用LAN91C96網(wǎng)卡,所以選擇drivers/lan91c96.c作為網(wǎng)卡驅動(dòng)。
3.3 建立目標板支持文件
選擇好參考板后,就可以依據參考板按照下面的步驟建立起目標板的支持文件:
在board目錄下,通過(guò)“cp-rlubbock xsbase255”建立起目標板的支持目錄,將lubbock.c改名為xsbase255.c,在Makefile里把lubbock.o改名為xsbase255.o。
在inclLlde/configs目錄里.通過(guò)“cp 1ubbock.h xs-base255.h”命令建立起目標板的配置文件,這個(gè)文件需要經(jīng)常修改。
在U-Boot根目錄里的MakefiIe中加入如下的命令以創(chuàng )建目標板的編譯環(huán)境:
xsbase2 5 5 config:unconfig
@$(MKCONFIG)$(@:_config=)arm pxa xsbase255
注意在@$(MKCONFIG)$(@:_config=)arm
pxa xsbase255前面的空白處是由Tab鍵生成的,千萬(wàn)不能以空格代替。至此,U-Boot已經(jīng)為目標板配置好了支持文件。
3.4 修改相關(guān)代碼
從移植U-Boot最小要求U-Boot能正常的角度出發(fā),主要修改如下文件:
incIude/configs/xsbase255.h文件,大多數的寄存器參數都是在這一文件中設置完成的。通過(guò)宏定義,用于對平臺無(wú)關(guān)的代碼進(jìn)行平臺相關(guān)的定制,包括U-Boot命令、缺省的環(huán)境變量等。
board/xsbase255/xsbase255.c文件,只需進(jìn)行基本的配置,包括設置math-type,啟動(dòng)參數首地址,獲取系統的RAM信息等。
board/xsbase255/config.mk文件,設置TEXT-BASE,即設置U-Boot:自己?jiǎn)?dòng)時(shí)將自己復制到RAM中的起始地址。
驅動(dòng)程序文件,主要包括網(wǎng)卡驅動(dòng)和FLASH驅動(dòng)程序。



評論


相關(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>