色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM7嵌入式系統(tǒng)中啟動(dòng)程序的實(shí)現(xiàn)

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

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

          中生成的匹配表中包含地址映射,存儲(chǔ)頁大小(1M,64K,或4K)以及是否允許存取等信息。
          例如:目標(biāo)板上的16兆DRAM的物理地址區(qū)間為0xc000,0000~0xc07f,ffff和0xc100,0000~0xc17f,ffff;16兆R(shí)OM的虛擬地址區(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)換邏輯獲得對(duì)應(yīng)物理地址,輸出到地址總線上。
          應(yīng)注意到的是使能MMU后,程序繼續(xù)運(yùn)行,但是對(duì)于程序員來說程序計(jì)數(shù)器的指針已經(jīng)改變,指向了ROM所對(duì)應(yīng)的虛擬地址。
          ⑵目標(biāo)文件的分布裝載分析
          首先創(chuàng)建一個(gè)文本文件,稱為分布裝載描述文件。它為應(yī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)生一個(gè)分布裝載文件。
          鏈接器同時(shí)產(chǎn)生一組符號(hào),給出每個(gè)分布描述文件中命名的區(qū)間的長度,裝載地址和執(zhí)行地址。由于鏈接器和C庫都沒有將代碼從它的裝載區(qū)間拷貝到執(zhí)行區(qū)間,或創(chuàng)建一個(gè)零初始化區(qū)域的功能,所以要由應(yīng)用程序員利用這組符號(hào)產(chǎn)生的信息完成這項(xiàng)工作,這是在呼叫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)上運(yùn)行并測(cè)試通過。今后可以在這一基礎(chǔ)上添加串行通信模塊和FLASH操作模塊,開發(fā)系統(tǒng)監(jiān)控程序,從而實(shí)現(xiàn)應(yīng)用程序的在線升級(jí)。


          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

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

          關(guān)閉