中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM7嵌入式系統(tǒng)中啟動程序的實現(xiàn)

        ARM7嵌入式系統(tǒng)中啟動程序的實現(xiàn)

        作者: 時間:2013-12-05 來源:網(wǎng)絡 收藏

        中生成的匹配表中包含地址映射,存儲頁大小(1M,64K,或4K)以及是否允許存取等信息。
        例如:目標板上的16兆DRAM的物理地址區(qū)間為0xc000,0000~0xc07f,ffff和0xc100,0000~0xc17f,ffff;16兆ROM的虛擬地址區(qū)間為:0x0000,0000~0x00ff,ffff。匹配表配置如下:

        0x0000,00000xc000,0000r/w
        0x0010,00000xc010,0000…
        0x0020,00000xc020,0000…
        …………
        0x0070,00000xc070,0000r/w
        0x0080,00000xc100,0000…
        …………
        0x00f0,00000xc170,0000…
        0x0100,00000x0000,0000ro
        0x0110,00000x0010,0000
        0x01f0,00000x00f0,0000
        0x0200,00000x0200,0000inaccessable
        ……………
        可以看到左邊是連續(xù)的虛擬地址空間,右邊是不連續(xù)的物理地址空間,而且將DRAM映射到了0地址區(qū)間。MMU通過虛擬地址和頁面表位置信息,按照轉(zhuǎn)換邏輯獲得對應物理地址,輸出到地址總線上。
        應注意到的是使能MMU后,程序繼續(xù)運行,但是對于程序員來說程序計數(shù)器的指針已經(jīng)改變,指向了ROM所對應的虛擬地址。
        ⑵目標文件的分布裝載分析
        首先創(chuàng)建一個文本文件,稱為分布裝載描述文件。它為應用程序的各部分指定裝載區(qū)間和執(zhí)行區(qū)間。
        舉例如下:
        FLASH0x010000000x011fffff;2MFLASH
        {
        FLASH0x01000000
        {
        boot.o(BOOT,+First)
        *(+RO)
        }
        DRAM0x00000000

        {
        vector.0(VECTOR,+First)
        int_handler.o(+RO)
        *(+RW,+ZI)
        }
        }
        在arm鏈接器的命令行里加入”-scovdescription-file-scf”或”-scatterdescription-file”,編譯鏈接后,將產(chǎn)生一個分布裝載文件。
        鏈接器同時產(chǎn)生一組符號,給出每個分布描述文件中命名的區(qū)間的長度,裝載地址和執(zhí)行地址。由于鏈接器和C庫都沒有將代碼從它的裝載區(qū)間拷貝到執(zhí)行區(qū)間,或創(chuàng)建一個零初始化區(qū)域的功能,所以要由應用程序員利用這組符號產(chǎn)生的信息完成這項工作,這是在呼叫C程序之前必須完成的,舉例如下:
        LDRr0,=|Load$$DRAM$$Base|
        LDRr1,=|Image$$DRAM$$Base|
        CMPr0,r1檢查裝載地址和執(zhí)行地址是否相同
        BEQdo_zi_init相同,則不拷貝該區(qū)間,初始化零數(shù)據(jù)區(qū)
        MOVr2,r1;不相同,將裝載區(qū)拷貝到執(zhí)行區(qū)
        LDRr4,=|Image$$DRAM$$length|
        ADDr2,r2,r4
        BLcopy
        do_zi_init
        LDRr1,=|Image$$DRAM$$ZI$$Base|
        MOVr2,r1
        LDRr4,=|Image$$DRAM$$ZI$$length|
        ADDr2,r2,r4
        MOVr3,#0
        BLzi_init調(diào)用零初始化子程序

        結(jié)語:
        本文介紹的已經(jīng)在以CirrusLogic公司的EP7211和Ateml公司的AT91M40400開發(fā)的系統(tǒng)上運行并測試通過。今后可以在這一基礎上添加串行通信模塊和FLASH操作模塊,開發(fā)系統(tǒng)監(jiān)控程序,從而實現(xiàn)應用程序的在線升級。


        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

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

        關(guān)閉