新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于ARM的嵌入式Bootloader實(shí)現(xiàn)自動(dòng)升級(jí)

        基于ARM的嵌入式Bootloader實(shí)現(xiàn)自動(dòng)升級(jí)

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

        Stage1的主要任務(wù)如下:初始化計(jì)時(shí)器,初始化網(wǎng)絡(luò),初始化Flash,裝載內(nèi)核映像和文件系統(tǒng)映像,初始化命令控制臺(tái)等。進(jìn)入stage1的匯編代碼如下:

        adr r0 , load_addr //@get stage1 entry point

        ldr r9 , [r0 , #0x0c]

        3 本實(shí)驗(yàn)基本原理

        (圖 2)


        本實(shí)驗(yàn)對(duì) 的功能進(jìn)行了擴(kuò)充,加入的功能。即:用戶(hù)需要對(duì)目標(biāo)板的內(nèi)核或文件系統(tǒng)進(jìn)行升級(jí),只需要將新的映像文件拷貝到CF存儲(chǔ)卡或移動(dòng)硬盤(pán)中,然后將CF卡或移動(dòng)硬盤(pán)插入目標(biāo)板相應(yīng)的插槽,每次重啟目標(biāo)板時(shí),先啟動(dòng),初始化硬件環(huán)境后,在應(yīng)用程序運(yùn)行前,判斷是否存在要升級(jí)的文件,如果存在則先把Flash指定的位置的內(nèi)容擦除掉,然后再把要升級(jí)的內(nèi)核或文件系統(tǒng)的映像文件寫(xiě)進(jìn)相應(yīng)的位置,寫(xiě)完后立即刪除CF存儲(chǔ)卡或移動(dòng)硬盤(pán)上的升級(jí)文件,即完成升級(jí)。如圖2

        項(xiàng)目開(kāi)發(fā)板上有一塊8M Byte的Flash和二塊32M Bit的DDR SDRAM。Flash的起始地址映射到0x00000000,其布局如下[7]:

        (Flash布局圖)

        如圖所示,在虛擬地址位置0x00030000(實(shí)際物理地址為0x46030000)擦除和重寫(xiě)內(nèi)核與文件系統(tǒng)映像文件。要對(duì)CF卡或移動(dòng)硬盤(pán)進(jìn)行文件存取,必須將CF卡或移動(dòng)硬盤(pán)格式化成某種文件系統(tǒng)。本實(shí)驗(yàn)所編寫(xiě)的主要支持3種文件系統(tǒng):FAT16,F(xiàn)AT32,EXT2。系統(tǒng)啟動(dòng)時(shí),Bootloader首先檢測(cè)CF卡或移動(dòng)硬盤(pán)的文件系統(tǒng)類(lèi)型,然后按照相應(yīng)的文件系統(tǒng)格式查詢(xún)CF 卡或移動(dòng)硬盤(pán)的所有文件。若發(fā)現(xiàn)有更新的映像文件,則讀CF卡的操作,CF卡的驅(qū)動(dòng)見(jiàn)文獻(xiàn)[3],將映像文件讀到SDRAM中,再?gòu)腟DRAM燒寫(xiě)到嵌入式開(kāi)發(fā)版的Flash中,實(shí)現(xiàn)升級(jí)。

        生成內(nèi)核和文件系統(tǒng)步驟如下:

        1)進(jìn)入linux的armutils_2.5.127.0目錄下執(zhí)行make linux-config,裁剪的配置;

        2)make linux 生成kernel-2.4.22-dtv-EM8624L-romfs.bin ,這是的內(nèi)核;

        3)make rootfs 生成rootfs-dtv-EM8624L-romfs.ext2,這是root文件系統(tǒng);

        4)make romfs 生成romfs-dtv-EM8624L-romfs.bin.gz,這是rom文件系統(tǒng)。



        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 岢岚县| 府谷县| 莎车县| 临安市| 呼伦贝尔市| 阿拉善左旗| 西宁市| 康平县| 林口县| 南京市| 崇明县| 牡丹江市| 庄河市| 台山市| 颍上县| 二连浩特市| 嘉荫县| 高雄市| 渝北区| 屏南县| 莎车县| 宁津县| 盖州市| 习水县| 榆树市| 元谋县| 大安市| 水城县| 芷江| 潢川县| 奉节县| 鄂温| 长子县| 盐城市| 卢氏县| 涟水县| 桦南县| 漾濞| 邮箱| 广河县| 班戈县|