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

當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]U-boot在S3C44B0上的移植與分析

摘 要:Bootloader是嵌入式系統(tǒng)軟件開發(fā)的第一個(gè)環(huán)節(jié),用于初始化目標(biāo)板硬件,給嵌入式操作系統(tǒng)提供板上硬件資 源信息,并進(jìn)一步裝載、引導(dǎo)嵌入式系統(tǒng)的固件,其性能直接影響系統(tǒng)的穩(wěn)定性。為了引導(dǎo)嵌入式操作系統(tǒng),根據(jù)S3C44BO 開發(fā)板上特定的硬件信息,在不改變Bootloader架構(gòu)的前提下,對(duì)與硬件相關(guān)的代碼,特別是FLASH芯片Intel 28F320C3B 代碼進(jìn)行了添加修改,將U-bOOt成功地移植到了開發(fā)板上,并在基于μCLinux的智能機(jī)器人避障系統(tǒng)中使用良好。
關(guān)鍵詞:Bootloader;U-boot;S3C44BO;移植


O 引 言
    Bootloader是操作系統(tǒng)啟動(dòng)運(yùn)行之前執(zhí)行的一段小程序。它是基于特定硬件平臺(tái)實(shí)現(xiàn)的,通過(guò)它可以初始化硬件設(shè)備,建立內(nèi)存空間的映射表,從而建立適當(dāng)?shù)南到y(tǒng)軟硬件環(huán)境,為最終調(diào)用操作系統(tǒng)內(nèi)核作好準(zhǔn)備。嵌入式系統(tǒng)的硬件部分不可能完全一致,由于嵌入式系統(tǒng)需要硬件與軟件的配合才能正常工作,因此需要針對(duì)硬件系統(tǒng)進(jìn)行有關(guān)引導(dǎo)程序的設(shè)計(jì)。對(duì)于嵌入式系統(tǒng)來(lái)說(shuō),引導(dǎo)程序比較復(fù)雜,一般采用在基本符合硬件體系要求的現(xiàn)有引導(dǎo)程序的基礎(chǔ)上進(jìn)行修改,然后通過(guò)應(yīng)用的方法設(shè)計(jì)引導(dǎo)程序,這就是引導(dǎo)程序的移植。


1 U-boot介紹
    U—boot(Universal Boot LoadeI)源自DENX軟 件工程中心的Wolfgang Denk,基于8xxrom的源碼創(chuàng) 建的PPCBoot工程,遵循GPL條款的開放源碼項(xiàng)目,已經(jīng)可以支持PowerPC,ARM,X86,MIPS等體系結(jié)構(gòu)上的上百種開發(fā)板。U-boot提供:?jiǎn)?dòng)加載(Boot
Loading)和下載(Down Loading)兩種操作模式。并具 有大型Bootloader的全部功能。主要特性有:SCC/ FEC以太網(wǎng)支持;BOOTP/TFTP引導(dǎo)——IP,MAC 預(yù)置功能;在線讀寫FLASH,DOC,IDE,I2C,E2ROM, RTC;支持串行口kermit,S-record下載代碼;識(shí)別二進(jìn)制、ELF32,pImage格式的Image;對(duì)Linux引導(dǎo)有特別的支持;監(jiān)控(minitor)命令集;具有讀寫I/O、內(nèi)存、寄存器、外設(shè)測(cè)試等功能。
    U-boot還支持多種文件系統(tǒng),如cramfs,ext2, fat,reiserfs和jffs2等;支持多種嵌入式操作系統(tǒng)內(nèi)核,如Linux,NetBSD,VxWorks,QNX,RTEMS,ARTOS 和LynxOS等,并對(duì)Linux引導(dǎo)有特別的支持。另外, U-boot還提供單任務(wù)軟件運(yùn)行環(huán)境,可以在沒(méi)有操作系統(tǒng)的情況下動(dòng)態(tài)加載和運(yùn)行獨(dú)立的應(yīng)用程序,這些獨(dú)立的應(yīng)用程序可以利用U-boot提供控制臺(tái)的I/O函數(shù)、內(nèi)存申請(qǐng)和中斷服務(wù)等。


2 U-boot啟動(dòng)流程
    對(duì)ARM7核處理器,U-boot.啟動(dòng)流程主要體現(xiàn)在 3個(gè)文件上,即start.s,lib arm/board.c和U-boot/common/main.c。下面詳細(xì)分析啟動(dòng)流程。
2.1 start.s文件
    start.s文件主要是CPU的初始化,用匯編語(yǔ)言編寫,其主要代碼流程如下:
    (1)定義入口。由于一個(gè)可執(zhí)行的Image必須有一個(gè)入口點(diǎn),并且只能有一個(gè)全局入口,通常這個(gè)入口放在ROM(FLASH)的Ox0地址,在start.s文件中有如下語(yǔ)句:
    .globl_start
    _start:
    因此,必須通知編譯器使其知道這個(gè)入口.該工作可通過(guò)修改連接器腳本文件U-boot.1ds來(lái)完成。
    (2)設(shè)置異常向量(Exception Vector)。異常中斷向量表是U-boot與操作系統(tǒng)內(nèi)核發(fā)生聯(lián)系的關(guān)鍵所在之一。即使操作系統(tǒng)內(nèi)核已經(jīng)得到處理器的控制權(quán)運(yùn)行,一旦發(fā)生中斷,處理器還是會(huì)自動(dòng)跳轉(zhuǎn)到從OxO地址開始的異常中斷向量表中的某個(gè)位置(依據(jù)于中斷類型)讀取指令運(yùn)行的。
    (3)設(shè)置CPU的速度、時(shí)鐘頻率及中斷控制寄存器。依次為關(guān)閉看門狗計(jì)時(shí)器,屏蔽所有中斷,配置時(shí)鐘(包括3個(gè)寄存器:PLLCON,CLKCON,LOCK-TIME)。
    (4)初始化內(nèi)存控制器。內(nèi)存控制器初始化主要通過(guò)設(shè)置13個(gè)從1c80000開始的特殊功能寄存器來(lái)完成,包括外部數(shù)據(jù)總線寬度、訪問(wèn)周期、定時(shí)的控制信號(hào)等。
    (5)將ROM中的程序復(fù)制到RAM中。首先利用PC取得BootLoader在FIASH的起始地址,再通過(guò)標(biāo)號(hào)之差計(jì)算出這個(gè)程序代碼的大小。通過(guò)寄存器(r3~r10)為復(fù)制的中間媒介將代碼復(fù)制到RAM中。
    (6)初始化堆棧。進(jìn)入各種模式設(shè)置相應(yīng)模式的堆棧。
    (7)轉(zhuǎn)到RAM中執(zhí)行。該工作可使用指令1dr pc來(lái)完成,即Idr pc,start armboot。[!--empirenews.page--]
2.2 lib_arm/board.c文件()
    U—b00t/Lib arm/board.c中的start armboot是C語(yǔ)言開始的函數(shù),也是整個(gè)啟動(dòng)代碼中C語(yǔ)言的主函數(shù),該函數(shù)主要是調(diào)用一一系列的初始化函數(shù)。進(jìn)行各種初始化設(shè)置。該函數(shù)完成的操作是:
    (1)調(diào)用一系列的初始化函數(shù),包括:cpu init(CPU相關(guān)的設(shè)置),board init(板子相關(guān)的設(shè)置),in-terrupt_init(中斷設(shè)置),env_init(環(huán)境變量設(shè)置),init_ baudrate(baud參數(shù)設(shè)置),serial init(串口初始化),console_inh_f(控制臺(tái)設(shè)置),display_banner(顯示標(biāo)題),dram init(可用內(nèi)存配置);
    (2)初始化FLAsH設(shè)備;
    (3)初始化系統(tǒng)內(nèi)存分配函數(shù);
    (4)如果目標(biāo)系統(tǒng)擁有NAND設(shè)備,則初始化NAND設(shè)備;
    (5)如果目標(biāo)系統(tǒng)有顯示設(shè)備,則初始化該類設(shè)備;
    (6)初始化相關(guān)網(wǎng)絡(luò)設(shè)備,填寫IP、MAC地址等。
2.3 U—boot/common/main.c文件
    完成上述初始化后,進(jìn)入命令循環(huán)(即整個(gè)boot的工作循環(huán)),代碼為:
    for(;;)
    {
    main_loop();

   }


3 移植過(guò)程
    在此使用的是創(chuàng)維特公司的EB44BO開發(fā)板,系統(tǒng)相關(guān)配置如下:
    處理器:SamslJng S3C4BOX,工作頻率60 MHz;

   
    2個(gè)串口。4個(gè)可編程的LED以及14針JTAG接口。
    為了降低移植的難度,在移植過(guò)程中,一般都是選擇與目標(biāo)處理器以及目標(biāo)板最接近的一個(gè)版本進(jìn)行移植。因此選擇B2進(jìn)行移植。從U—bo()t的官方網(wǎng)站上下載最新版的源代碼,目前最高版本為1.3.3。移植主要修改的文件有:cptl/s3c44b0/start.s,board/dave/b2/lowlevel init.s,board/dave/b2/b2.c,board/dave/corn。mon/FLASH.c,include/configs/b2.h,board/dave/b2/config.mk。
3.1 cpu/s3c44b0/start.s文件
    start.s是匯編語(yǔ)言編寫的U-boot:程序入口代碼,主要包括處理器內(nèi)部各個(gè)寄存器的初始化以及代碼的搬移。主要完成設(shè)置處理器狀態(tài)、初始化中斷、堆棧、內(nèi)存控制器等,并確定是否需要對(duì)整個(gè)U-boot代碼重定位,最終從FLASH中跳轉(zhuǎn)到定位好的內(nèi)存位置執(zhí)行。下面對(duì)其中一些代碼進(jìn)行針對(duì)性的分析。
    (1)設(shè)置WTCON=0x0,禁止看門狗定時(shí)器,避免處理器強(qiáng)行復(fù)位;
    (2)設(shè)置INTMSK=Ox7ffffff,禁止所有中斷,Bootloader的執(zhí)行過(guò)程中不必要響應(yīng)任何中斷;
    (3)根據(jù)嵌入式微處理器工作主頻,修改宏CON-FIG 83C4480 CLCICK SPEED=60 MHz,使處理器能夠正常工作;
    (4)設(shè)置PLLCON=0x34031,PLLCON鎖相環(huán)控制寄存器中儲(chǔ)存有計(jì)算系統(tǒng)時(shí)鐘的相關(guān)參數(shù),為了產(chǎn)生正確的系統(tǒng)時(shí)鐘,必須根據(jù)外接晶振頻率和處理器工作主頻確定各個(gè)倍頻系數(shù)。
3.2 board/dave/b2/lowlevel init.S文件
    該文件由匯編代碼完成,主要包括SDRAM工作參數(shù)的設(shè)置,以及處理器內(nèi)存控制器的初始化,參數(shù)需要根據(jù)SDRAM芯片資料進(jìn)行設(shè)置。
3.3 board/dave/b2/b2.c文件
    該文件中的代碼主要是SDRAM的驅(qū)動(dòng)程序,并完成了處理器各個(gè)I/O 口的初始化,根據(jù)具體的目標(biāo)板進(jìn)行適當(dāng)?shù)男薷募纯伞?br />3.4 board/dave/common/FLASH.C
    這個(gè)文件是FLASH的驅(qū)動(dòng)程序。FLASH存儲(chǔ)器的燒寫與擦除一般不具有通用性,根據(jù)不同型號(hào)的存儲(chǔ)器做出相應(yīng)的修改。EB4480開發(fā)板采用的是Intel28F320C3B,總共71個(gè)塊,1~8每塊大小是8 KB,9~71每塊大小是64 KB,它的特殊性決定了需要對(duì)

[!--empirenews.page--]
3.5 include/configs/b2.h文件
    該文件中包含了B2目標(biāo)板的一些配置的宏定義,主要有系統(tǒng)工作頻率、環(huán)境變量緩沖區(qū)長(zhǎng)度、串口波特率、FLASH起始地址及容量、DRAM起始地址及容量、環(huán)境變量保存位置、FLASH讀/寫命令字、網(wǎng)絡(luò)芯片的基地址、目標(biāo)板IP地址、硬件地址MAC、主機(jī)IP地址、內(nèi)核裝載地址、交互操作命令等。
3.6 board/dave/b2/config.mk文件
    U-boot將其代碼從FLASH復(fù)制到SDRAM的位置在0x0c700000處,修改TEXT_BASE=0x0c700000。
    U-boot是在Linux環(huán)境下開發(fā)的,因此需要在Linux下進(jìn)行編譯,使用的操作系統(tǒng)為Fedora core 7,從http://opensrc.see.samsung.corn/download/arm-elf-tools-20040427.sh下載arm-elf=tools=20040427.sh,使用的編譯器為arm-elf-gcc,在U-boot根目錄下對(duì)其中的makefile文件進(jìn)行相應(yīng)的修改,然后在命令行中運(yùn)行以下指令:

   
    編譯連接后生成U_boot,U_boot.bin,U_boot.
srec,其中的U_boot.bin是二進(jìn)制bin文件,純粹的U_boot二進(jìn)制執(zhí)行代碼,不保存ELF格式和調(diào)試信息,這個(gè)文件用于燒寫到用戶的開發(fā)板中。通過(guò)創(chuàng)維特集成開發(fā)環(huán)境自帶的FLASH燒寫工具載人到SDRAM中運(yùn)行,從超級(jí)終端顯示U-boot的啟動(dòng)信息,分別試驗(yàn)erase,cp,printenv,saveenv等命令,并檢測(cè)對(duì)FLASH的操作;使用tftp命令,以檢測(cè)網(wǎng)口下載功能,然后裝載操作系統(tǒng)內(nèi)核,完成以上任務(wù)則移植成功。經(jīng)過(guò)以上步驟移植的U-boot已經(jīng)在自己開發(fā)的ARM板上順利地引導(dǎo)了μClinux操作系統(tǒng)。


4 結(jié) 語(yǔ)
    Bootloader是連接系統(tǒng)硬件和操作系統(tǒng)的橋梁,這里根據(jù)U-boot的運(yùn)行機(jī)制,在硬件資源固定,不改變Bootloader框架的前提下,對(duì)與目標(biāo)板硬件相關(guān)的代碼,特別是FLASH芯片Intel 28F320C3B的代碼進(jìn)行修改,成功移植到EB4480開發(fā)板上,并且結(jié)合U-boot和μClinux的啟動(dòng)流程與運(yùn)行機(jī)制,成功設(shè)計(jì)并實(shí)現(xiàn)了在基于S3C44BOX目標(biāo)板上引導(dǎo)嵌入式操作系統(tǒng)。在移植過(guò)程中,要熟悉U-boot的組織結(jié)構(gòu)和工作流程,對(duì)相關(guān)的硬件資源有一定的了解,根據(jù)實(shí)際情況進(jìn)行裁減,靈活選用功能模塊。目前,移植后的U-boot能夠穩(wěn)定地運(yùn)行在嵌入式目標(biāo)板上,并能順利地引導(dǎo)嵌入式μCinux系統(tǒng),已成功應(yīng)用在智能機(jī)器人的避障系統(tǒng)中。

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

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

關(guān)鍵字: 溫度 BSP 東風(fēng) 大眾

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

關(guān)鍵字: 溫度 BSP 智能化 進(jìn)程

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

關(guān)鍵字: 電子 安集科技 BSP EPS

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

關(guān)鍵字: BSP ARMA COM 代碼

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

關(guān)鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心

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

關(guān)鍵字: 數(shù)字化 BSP 供應(yīng)鏈 控制

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

關(guān)鍵字: 溫控 精密儀器 半導(dǎo)體制造 BSP

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

關(guān)鍵字: 中國(guó)智造 BSP 手機(jī) CAN

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

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

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

關(guān)鍵字: LINK AI BSP 智能家電

嵌入式教程

6897 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉