新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Bootloader在AT91RM9200系統(tǒng)中的實(shí)現(xiàn)

        Bootloader在AT91RM9200系統(tǒng)中的實(shí)現(xiàn)

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

        基于ARM920T核的芯片以其豐富的內(nèi)部外設(shè),高達(dá)200MIPS的處理速度,以及它溫度范圍寬的特點(diǎn),在工業(yè)控制領(lǐng)域嵌入式開發(fā)中大有應(yīng)用的空間。Bootloader是用來(lái)引導(dǎo)操作系統(tǒng)的引導(dǎo)裝載程序,用來(lái)初始化硬件設(shè)備、確立內(nèi)存空間的映射,為最終引導(dǎo)操作系統(tǒng)內(nèi)核提供一個(gè)合適的軟硬件環(huán)境。它嚴(yán)重地依賴硬件環(huán)境,往往因使用的芯片、外部設(shè)備、操作系統(tǒng)的內(nèi)核配置而不同,它的實(shí)現(xiàn)是嵌入式開發(fā)中必不可少的環(huán)節(jié)。

        實(shí)現(xiàn)適合本系統(tǒng)的引導(dǎo)程序方法有兩種:一是自行開發(fā)的,其特點(diǎn)是可以使這個(gè)程序在滿足要求的基礎(chǔ)上占用盡量的小的空間,但是工作量較大,開發(fā)周期延長(zhǎng),除了一些特殊要求的情況,工程開發(fā)中一般不會(huì)自行編寫;二是使用已有的代碼進(jìn)行移植,特點(diǎn)是工作量小,有vivi、U- boot、Blob等很多開源的可用,這些程序支持的PowerPC,ARM,MIPS等多種平臺(tái),開發(fā)者只需做相對(duì)較少的移植工作就可以,出于工程開發(fā)角度,往往采取這種方式。

        筆者開發(fā)了基于的雷達(dá)監(jiān)控分機(jī)測(cè)試板,本文將以此嵌入式板為例,介紹用GNU工具開發(fā)ARM程序的方法,探討如何利用這種方法編寫自己的,并詳細(xì)地介紹了的移植步驟和要點(diǎn)。

        1硬件特點(diǎn)

        1.1處理器啟動(dòng)特點(diǎn)

        AT91系列處理器有片內(nèi)和片外兩種啟動(dòng)模式[1],支持地址的重映射,在ARM芯片中具有代表性。

        AT91RM9200內(nèi)部集成有16K字節(jié)的SRAM和128K字節(jié)的ROM。若是BMS引腳為低電平則從NCS0所接的外部的Flash芯片啟動(dòng)。若BMS引腳為高電平則從內(nèi)部ROM啟動(dòng),ROM中固化了FirmWare,這段固化的程序先后自動(dòng)檢測(cè)SPI連接的DataFlash,TWI連接的EEPROM的,EBI連接的8位的并行Flash芯片是否有合法的程序,如果有則放入SRAM中執(zhí)行,如果沒(méi)有檢測(cè)到,便初始化調(diào)試串口和USB的設(shè)備端口,分別支持Xmodem和DFU協(xié)議的文件下載,可以將用戶傳送的文件放入內(nèi)部SRAM中[2]。

        由于本芯片支持地址Remap(地址重映射),在下載完后將SRAM的地址由0x0020_0000重新映射到0x0000_0000,將內(nèi)部ROM地址由0x0000_0000映射到0x0010_0000,然后從地址0x0000_0000的內(nèi)部SRAM開始執(zhí)行。

        1.2 Bootloader的下載和燒寫

        很多ARM芯片同AT91系列芯片一樣,支持Remap,這就為使用串口下載程序和對(duì)Flash的燒寫提供了方便。這種芯片在使用 bootloader之前一般需要兩個(gè)前期的引導(dǎo)程序。本系統(tǒng)中使用了loader.bin和boot.bin兩個(gè)程序:其中l(wèi)oader.bin運(yùn)行于內(nèi)部RAM,用來(lái)向SDRAM下載程序并運(yùn)行;boot.bin固化在flash的起始地址下(如圖1所示)用來(lái)解壓引導(dǎo)Flash中的程序。

        設(shè)置跳線,使系統(tǒng)上電后從內(nèi)部啟動(dòng),通過(guò)串口下載loader.bin程序,該程序的大小一定要小于16K字節(jié),即內(nèi)部SRAM的容量。如上文所述,下載后會(huì)運(yùn)行它,由這個(gè)程序負(fù)責(zé)通過(guò)Xmodem協(xié)議將u-boot.bin程序下載到SDRAM中并運(yùn)行,開發(fā)者再通過(guò)的cp命令將 boot.bin和u-boot.bin的壓縮文件u-boot.gz燒寫入Flash,下次從外部啟動(dòng)時(shí)就可以直接啟動(dòng)U-boot了。其中 boot.bin,實(shí)現(xiàn)將u-boot.gz的解壓裝入SDRAM并且執(zhí)行。

        ATMEL公司提供了針對(duì)他們出的該款芯片開發(fā)板的boot和loader的代碼,可以從網(wǎng)上下載到,開發(fā)者可以對(duì)比一下參數(shù)設(shè)置,如果必要的話要對(duì)一些參數(shù)進(jìn)行修改。

        下面是這兩個(gè)程序中比較關(guān)鍵的參數(shù)。loader當(dāng)中的關(guān)鍵參數(shù)是AT91C_UBOOT_BASE_ADDRESS,用Xmodem協(xié)議接收的文件將存放在這個(gè)地址下。它的宏定義在main.h中:

        #define AT91C_UBOOT_BASE_ADDRESS 0x21F00000 。

        Boot中的關(guān)鍵的參數(shù)是:

        #define SRC 0x10010000

        /*在flash中的u-boot.gz的地址*/

        #define DST 0x21F00000

        /*uboot.gz解壓后要copy到SDRAM中的地址*/

        #define LEN 0x020000

        /*解壓后的大小(字節(jié))*/

        這些參數(shù)根據(jù)具體情況可能需要修改,特別是SRC要和U-boot中的相關(guān)設(shè)置一致,具體參數(shù)將在3中介紹。圖1是Flash存儲(chǔ)器的空間分配情況,分別列出了各個(gè)地址段的用途。


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

        關(guān)鍵詞: bootloader U-boot AT91RM9200

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 桦南县| 桃江县| 濉溪县| 玛沁县| 资源县| 固镇县| 黄浦区| 新疆| 临泉县| 吴堡县| 微山县| 开远市| 伊吾县| 靖远县| 茌平县| 潼南县| 伊宁市| 临洮县| 黄大仙区| 安庆市| 怀化市| 延津县| 建昌县| 徐汇区| 大丰市| 宁武县| 无极县| 乐业县| 淮安市| 华阴市| 叙永县| 东乡| 苍梧县| 富蕴县| 樟树市| 牟定县| 赤城县| 新巴尔虎右旗| 长岛县| 略阳县| 东丰县|