新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于S3C44B0X的Bootloader設計與實現

        基于S3C44B0X的Bootloader設計與實現

        作者: 時間:2012-04-16 來源:網絡 收藏

        BootLoader的stage1通常包括以下步驟(以執行的先后順序):

        1) 硬件設備初始化。

        2) 為加載BootLoader的stage2準備RAM空間。

        3) 拷貝BootLoader的stage2到RAM空間

        4) 設置堆棧

        5) 跳轉到stage2的C程序入口點

        BootLoader的stage2通常包括以下步驟(以執行的先后順序):

        1) 初始化本階段要使用到的硬件設備

        2) 檢測系統內存映射

        3) 將內核映像和根文件系統映像從Flash讀到RAM

        4) 為內核設置啟動參數

        5) 調用內核

        4.的代碼

        的Stage1初始化流程圖如圖3所示. Stage1部分主要內容及其代碼

        30.jpg

        /*中斷向量表用于處理異常情況,當發生異常情況時,首先要保存當前程序的返回地址和CPSR寄存器的值,然后進入到相應的異常向量地址。一般來說,在異常向量地址處放置無條件跳轉指令,使程序進入相應的異常處理過程。*/
        _ENTRY
        B ResetHandler ;reset vector
        B UndefinedHandler ;Undefined instruction
        B SWIHandler ;SWI
        B PrefetchHandler ;Prefetch abort
        B AbortHandler ;Data abort
        B. ;Address exception
        B IRQHandler ;IRQ
        B FIQHandler ;FIQ
        ……

        /*復位入口,切換到超級模式并禁止中斷。在整個Boot Loader的初始化過程中我們都不必響應中斷,因此首先禁止系統的中斷。*/
        MRS a1,CPSR
        BIC a1,a1,#MODE_MASK
        ORR a1,a1,#SUP_MODE
        ORR a1,a1,#LOCKOUT ;關閉IRQ、FIQ中斷
        MSR CPSR_cxsf,a1
        LDR r0,=INTCON ;設置中斷模式,非向量中斷模式
        LDR r1,=0x07 ;IRQ、FIQ中斷禁止
        STR r1,[r0]
        LDR r0,=INTMSK ;關閉所有中斷
        LDR r1,=0x07ffffff
        STR r1,[r0]
        LDR r0,=SYSCFG ;使能回寫buffer和Cache
        LDR r1,=0xE
        STR r1,[r0]
        ……
        /*當必要的硬件初始化設置完畢后,接下來為核心代碼貯備RAM空間,包括RO、RW、ZI這3個段設置相應的內存映射向量,先將ZI段請零,然后將RO段復制到RW段中。由于在我們采用的微處理器里對于FLASH和RAM地址空間是使用的統一編址的,因此我們可以直接使用一個簡單循環來完成拷貝。*/
        move_data :
        LDR a1,=Image_RW_Base ;RW段運行時的起始地址
        LDR a2,=Image_RO_Limit ;RO段運行時的存儲區域界限
        LDR a3,=Image_ZI_Base ;ZI段運行時的起始地址
        CMP a1,a3
        BEQ goto_main ;跳轉到C入口函數
        move_loop : ;將RO段復制到RW段
        LDR a4,[a2],#4
        STR a4,[a1],#4
        CMP a1,a3
        BNE move_loop

        存儲器相關文章:存儲器原理




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 屏东县| 乌审旗| 年辖:市辖区| 亳州市| 镇江市| 文化| 黄山市| 云林县| 武夷山市| 台东县| 河东区| 房山区| 青冈县| 双城市| 原阳县| 建瓯市| 台山市| 鹤壁市| 栖霞市| 凤台县| 广灵县| 汽车| 攀枝花市| 灵川县| 二连浩特市| 西和县| 鹤庆县| 临颍县| 东乌| 遂川县| 抚宁县| 高青县| 青川县| 抚远县| 那坡县| 当雄县| 岐山县| 海淀区| 铁岭县| 廊坊市| 灌云县|