色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于PxA255的U-B00t啟動分析及移植

          基于PxA255的U-B00t啟動分析及移植

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

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

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

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


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



          關(guān)鍵詞: 分析 移植 啟動 U-B00t PxA255 基于

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉