新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM的嵌入式Bootloader實現自動升級

        基于ARM的嵌入式Bootloader實現自動升級

        作者: 時間:2012-03-23 來源:網絡 收藏

        Stage1的主要任務如下:初始化計時器,初始化網絡,初始化Flash,裝載內核映像和文件系統映像,初始化命令控制臺等。進入stage1的匯編代碼如下:

        adr r0 , load_addr //@get stage1 entry point

        ldr r9 , [r0 , #0x0c]

        3 本實驗基本原理

        (圖 2)


        本實驗對 的功能進行了擴充,加入的功能。即:用戶需要對目標板的內核或文件系統進行升級,只需要將新的映像文件拷貝到CF存儲卡或移動硬盤中,然后將CF卡或移動硬盤插入目標板相應的插槽,每次重啟目標板時,先啟動,初始化硬件環境后,在應用程序運行前,判斷是否存在要升級的文件,如果存在則先把Flash指定的位置的內容擦除掉,然后再把要升級的內核或文件系統的映像文件寫進相應的位置,寫完后立即刪除CF存儲卡或移動硬盤上的升級文件,即完成升級。如圖2

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

        (Flash布局圖)

        如圖所示,在虛擬地址位置0x00030000(實際物理地址為0x46030000)擦除和重寫內核與文件系統映像文件。要對CF卡或移動硬盤進行文件存取,必須將CF卡或移動硬盤格式化成某種文件系統。本實驗所編寫的主要支持3種文件系統:FAT16,FAT32,EXT2。系統啟動時,Bootloader首先檢測CF卡或移動硬盤的文件系統類型,然后按照相應的文件系統格式查詢CF 卡或移動硬盤的所有文件。若發現有更新的映像文件,則讀CF卡的操作,CF卡的驅動見文獻[3],將映像文件讀到SDRAM中,再從SDRAM燒寫到嵌入式開發版的Flash中,實現升級。

        生成內核和文件系統步驟如下:

        1)進入linux的armutils_2.5.127.0目錄下執行make linux-config,裁剪的配置;

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

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

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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 邢台市| 福建省| 太湖县| 文成县| 鄂托克旗| 平塘县| 始兴县| 昭平县| 乌鲁木齐县| 丰镇市| 南陵县| 六安市| 广东省| 桑日县| 康马县| 丹凤县| 长治县| 二连浩特市| 剑阁县| 蒲江县| 英德市| 舞钢市| 宁城县| 赫章县| 屏山县| 平湖市| 玉屏| 南平市| 陵川县| 平远县| 关岭| 四会市| 昆山市| 泾源县| 黄浦区| 纳雍县| 永清县| 延津县| 富源县| 万山特区| 屏东市|