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

當前位置:首頁 > 嵌入式 > 嵌入式軟件
[導讀]基于PxA255的U-B00t啟動分析及移植

摘要:Bootloader在嵌入式系統(tǒng)中是必不可少的重要組成部分,這里使用U-Boot 1.3.O在基于PXA255的嵌入式系統(tǒng)上,構建引導加載程序。在對目標板的硬件資源進行簡要說明之后,詳細分析了U-Boot的啟動流程;接著從參考板的選擇、目標板支持文件的建立和相關代碼的修改,闡述移植的全過程;最后給出了編譯和調試的方法。結果表明,U-Boot能穩(wěn)定地運行。將U-Boot移植到自制的以PXA255為處理器的目標板上,并能成功引導Linux內核,該目標板已經應用于無線傳感器網絡的匯聚節(jié)點,取得了良好的效果。
關鍵詞:U-Boot;PXA255;Bootloader;嵌入式系統(tǒng);軟件移植


0 引 言
    Bootloader是操作系統(tǒng)運行之前執(zhí)行的一小段程序,用來初始化硬件設備,建立一個系統(tǒng)空間映射圖和一個適當?shù)南到y(tǒng)軟硬件環(huán)境。最終Bootloader把操作系統(tǒng)內核映像加載到RAM中。并將系統(tǒng)控制權交給內核。
    U-Boot被認為是功能最多,最具彈性以及開發(fā)最積極的開放源碼Bootloader。U-Boot已經能夠支持PowerPC,ARM,X86和MIPS體系結構的上百種開發(fā)板,U-Boot還具有通過TFTP,從IDE或SCSI磁盤以及DOc啟動的能力,還提供了JFFS2的只讀功能。正是由于U-Boot較高的可靠性和穩(wěn)定性;高度靈活的功能設置;豐富的設備驅動程序和豐富的開發(fā)和調試文檔,因此選擇U-Boot作為目標板的Boot-loader。
    對于嵌入式系統(tǒng),Bootloader是基于特定的硬件來實現(xiàn)的,因此建立一個通用的。Bootloader是不可能的,要使Bootloader能在目標板上運行,必須做出相應的修改。


l 目標板
    目標板采用Intel PXA255處理器,頻率最高可達400 MHz,配置了32 MB的FLASH(Intel StrataFLASH)和64 MB的SDRAM(Samsung),網卡采用LAN91C96。板上有JTAG口、串口和網口,可分別完成程序的下載和調試工作。目標板的主要硬件資源如圖1所示。

2 U-Boot啟動過程分析
    充分理解代碼的啟動流程,對于準確地判斷出移植過程中出錯的原因和出錯的位置具有重要的作用。
2.1 U-Boot啟動的入口點
    一個可執(zhí)行的Image必須有一個入口點,并且只能有一個全局入口??蓤?zhí)行Image的入口一般通過鏈接腳本文件來實現(xiàn),鏈接腳本主要用于規(guī)定如何把文件內的section放入輸出映像文件內,并控制輸出文件內各個部分在程序地址空間內的分布。鏈接腳本文件位于board目錄下的各個開發(fā)板目錄。
    以U-Boot支持的開發(fā)板1ubbock為例,查看鏈接腳本board/lubbock/u-boot.lds,就可以知道各個部分的鏈接順序。這個連接腳本決定了U-Boot的第一階段的代碼是從0xO開始的,入口由_start符號指定(ENTRY(_start)),第一個鏈接的文件是cup/pxa/start.o,那么U-Boot的入口指令一定位于這個程序中。
2.2 U-Boot的啟動步驟
    U—Boot的啟動一般分為stagel和stage2兩個部分。依賴于CPU體系結構的代碼,通常用匯編語言實現(xiàn),放在stagel;而stage2則通常用C語言來實現(xiàn),這樣可以實現(xiàn)復雜的功能,而且有更好的可讀性和移植性。
    根據對鏈接腳本文件和源代碼的分析,U-Boot的啟動過程中函數(shù)調用的順序如圖2所示。

2.2.1 stagel部分
    U-Boot的stagel代碼從人口函數(shù)start.S開始,它用匯編語言寫成,主要完成的工作為:設置異常向量;設置CPu的速度、時鐘頻率及中斷控制寄存器;初始化內存控制器;將ROM中的程序復制到RAM中;初始化堆棧;轉到RAM中執(zhí)行。[!--empirenews.page--]
    stage1代碼執(zhí)行完以后,就為stage2的運行建立起了基本的硬件環(huán)境,此時的U-Boot的存儲器SDRAM映射圖如圖3所示。

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


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

    除了上述表格列舉的以外,還有一些其他的參數(shù)需要修改,例如控制臺串口缺省的通信波特率,缺省的環(huán)境變量設置(包括本地IP地址、以太網接口的掩碼和MAC地址、服務器IP地址、傳遞給內核的命令行參數(shù)等),啟動參數(shù)列表配置等。頭文件的修改需要對目標板的硬件資源有相當?shù)牧私?,主要參考處理器和目標板的開發(fā)文檔。
3.4.2 目標板支持文件的修改
    目標板支持文件board/xsbase255/xsbase255.c也需要修改,此文件中的重點是board_init()函數(shù),這個函數(shù)里包含與開發(fā)板密切相關的設備的初始化。bi_arch_number為系統(tǒng)啟動時傳遞給內核的MACH號,如果這個參數(shù)與內核配置的不相同,則內核啟動解壓縮完成后將出現(xiàn)“Error:a”錯誤,提示用戶這個是體系結構參數(shù)傳遞不正確。bi_boot_params為啟動參數(shù)的地址,一般放在RAM起始的16 Kb處,在此設置為Oxa0000100。
3.4.3 驅動的移植
    在這一部分主要包括閃存和網卡驅動程序的移植。
    (1)FLASH驅動。這里所使用的目標板采用2片NOR型閃存,單片容量16 MB,數(shù)據線寬度為16 b,2片并作1個32 MB的數(shù)據寬度為32 b的。BANK。U-Boot本身支持CFI接口規(guī)范的閃存(CFI是針對NOR型FLASH提出的一種獲取閃存和結構參數(shù)的操作規(guī)程和標準),涉及到的文件主要包括drivers/cfi-FLASH.c,comrhand/cmd_FLASH.c。要使U-Boot,支持CFI驅動,只需在include/configs/xsbase255.h中添加:
    #define CFG_FLASH_CFI
    #defineCFG_FLASH_CFl_DRIVER 1
    (2)網卡驅動。這里使用的目標板上采用的網卡是LAN91C96,U-Boot自帶的驅動程序drivers/lan91c96.c恰好支持這個網卡,因此只需在include/Configs/xsbase255.h中添加相應的配置即可:
    #define CONFIG_DRIVER_IAN91C96
    #define CONFIG_LAN91C96_BASE 0x0C000300
    CONFIG_LAN91C96_BASE定義的值,應當由網卡的片選地址和I/O基址決定。如果U-Boot固有的驅動程序沒有對目標板的支持,就需要自行在board/xsbase255目錄下添加驅動程序,然后將其添加到本目錄的Makefile中進行編譯和鏈接。


4 U-Boot的編譯和下載調試
    在U-Boot根目錄里輸入命令:
    make xsbase255_config
    該命令通過./mkconfig腳本生成include/config.mk的配置文件,然后運行make命令,完成編譯。如果在編譯過程中出現(xiàn)錯誤,可根據錯誤的提示逐一排查。完成了錯誤的修改,在重新編譯前,先運行make distclean命令,對先前編譯生成的文件進行徹底的清除。
    成功編譯后,會生成3種不同的映像格式,分別是:u-boot:.bin(二進制格式),u-boot(ELF格式)和u-boot.srec(S—Record格式),根據加載器的不同,選擇合適的格式燒寫到FLASH中進行運行調試。在此選擇u-boot.bin,直接按照二進制格式下載。
    最有效的調試方法是下載映像到FLASH,使用硬件仿真器進行跟蹤調試。但是由于硬件仿真器價格高等客觀因素,采用軟件跟蹤的方法,利用目標板上的LED燈做出判斷。一旦可以打印串口信息,就可以利用串口,將調試信息輸出到屏幕上。


5 結 語
    U-Boot是一個功能強大的:Bootloader開發(fā)軟件,對多種開發(fā)板的支持使得它可以方便地移植到目標板上。首先詳細分析U-Boot啟動流程,然后詳細介紹U-Boot在PXA255目標板上移植的全過程。目前U-Boot已經在目標板上穩(wěn)定的運行,為Linux內核的移植打下了堅實的基礎。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

成都2022年10月19日 /美通社/ -- 近期,平安養(yǎng)老險積極籌備個人養(yǎng)老金的產品設計和系統(tǒng)開發(fā)工作,發(fā)展多樣化的養(yǎng)老金融產品,推動商業(yè)養(yǎng)老保險、個人養(yǎng)老金、專屬商業(yè)養(yǎng)老保險等產品供給。 搭養(yǎng)老政策東風 ...

關鍵字: 溫度 BSP 東風 大眾

廣東佛山2022年10月19日 /美通社/ -- 空間是人居生活的基礎單元,承載著生存與活動的最基本功能。而對于理想空間的解構意義卻在物理性容器之外,體現(xiàn)出人們對于空間和生活深層關系的思考,同時也塑造著人與空間的新型連接...

關鍵字: 溫度 BSP 智能化 進程

上海2022年10月19日 /美通社/ -- 10月17日晚間,安集科技披露業(yè)績預告。今年前三季度,公司預計實現(xiàn)營業(yè)收入7.54億元至8.33億元,同比增長60.24%至77.03%;歸母凈利潤預計為1.73億...

關鍵字: 電子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市經濟和信息化局發(fā)布2022年度第一批北京市市級企業(yè)技術中心創(chuàng)建名單的通知,諾誠健華正式獲得"北京市企業(yè)技術中心"認定。 北京市企業(yè)技...

關鍵字: BSP ARMA COM 代碼

北京2022年10月18日 /美通社/ -- 10月14日,國際數(shù)據公司(IDC)發(fā)布《2022Q2中國軟件定義存儲及超融合市場研究報告》,報告顯示:2022年上半年浪潮超融合銷售額同比增長59.4%,近5倍于...

關鍵字: IDC BSP 數(shù)字化 數(shù)據中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都銀行集團成立60周年的紀念日。趁著首都銀行集團成立60周年與首都銀行(中國)在華深耕經營12年的“大日子”,圍繞作為外資金融機構對在華戰(zhàn)略的構想和業(yè)...

關鍵字: 數(shù)字化 BSP 供應鏈 控制

東京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式會社(NIPPON EXPRESS HOLDINGS, INC.)旗下集團公司上海通運國際物流有限公司(Nipp...

關鍵字: 溫控 精密儀器 半導體制造 BSP

廣州2022年10月18日 /美通社/ -- 10月15日,第 132 屆中國進出口商品交易會("廣交會")于"云端"開幕。本屆廣交會上高新技術企業(yè)云集,展出的智能產品超過140,...

關鍵字: 中國智造 BSP 手機 CAN

要問機器人公司哪家強,波士頓動力絕對是其中的佼佼者。近來年該公司在機器人研發(fā)方面獲得的一些成果令人印象深刻,比如其開發(fā)的機器人會后空翻,自主爬樓梯等。這不,波士頓動力又發(fā)布了其機器人組團跳男團舞的新視頻,表演的機器人包括...

關鍵字: 機器人 BSP 工業(yè)機器人 現(xiàn)代汽車

南京2022年10月17日 /美通社/ -- 日前《2022第三屆中國高端家電品牌G50峰會》于浙江寧波落幕,來自兩百余名行業(yè)大咖、專家學者共同探討了在形勢依然嚴峻的當下,如何以科技創(chuàng)新、高端化轉型等手段,幫助...

關鍵字: LINK AI BSP 智能家電

嵌入式軟件

15715 篇文章

關注

發(fā)布文章

編輯精選

技術子站

關閉