<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM處理器系統(tǒng)初始化編程注意事項

          ARM處理器系統(tǒng)初始化編程注意事項

          作者: 時間:2016-11-09 來源:網(wǎng)絡 收藏
          在上述系統(tǒng)初始化過程中有以下兩點需要注意,如果處理不好就可能出現(xiàn)程序跑飛的情況。
          1)如果需要將程序從flash搬移到DRAM中運行
          在現(xiàn)代嵌入式系統(tǒng)中,由于DRAM的速度比flash的速度快很多,所以除了極少數(shù)對性能要求不高但對成本要求很高的系統(tǒng)把程序放在flash中并一直在flash中運行外,大部分嵌入式系統(tǒng)都是將程序從flash芯片搬到DRAM芯片中運行,這樣就會存在一個問題,因為我們編譯鏈接程序都是將程序鏈接到程序最后運行的場所DRAM中的地址上,但是系統(tǒng)啟動時只能從flash中讀取指令,所以從系統(tǒng)啟動讀取的第一條指令到進入到DRAM運行前的程序代碼是與地址無關的,如果要跳轉(zhuǎn)到某個標號處運行,必須是基于pc的,不能是絕對跳轉(zhuǎn)指令,因為此時程序存放的位置與其所鏈接到的位置不同,如果使用跳轉(zhuǎn)指令,程序?qū)⑴茱w。
          2)如果要求程序在MMU使能狀態(tài)下運行,即系統(tǒng)工作在虛擬地址模式
          MMU使得系統(tǒng)能夠更好地管理內(nèi)存,因為MMU可以將同一段物理內(nèi)存映射到多段虛擬地址空間上,而且可以將物理上不連續(xù)的內(nèi)存映射到連續(xù)的虛擬內(nèi)存空間(減少內(nèi)存碎片),另外MMU還可以控制虛擬內(nèi)存區(qū)段的緩沖特性和訪問權(quán)限,所以MMU可以提高內(nèi)存的使用效率,使程序仿佛能夠使用比實際物理內(nèi)存容量多得多的內(nèi)存空間,提高系統(tǒng)性能,同時也增加了系統(tǒng)的安全性,所以在帶有MMU功能的處理器系統(tǒng)中,一般都應該使能MMU,充分利用其功能。這樣一來也會導致一個和上面相同的問題,因為在使用MMU的系統(tǒng)中,各種物理存儲空間的實際物理地址與對應的虛擬地址設置得各不相同,包括flash和DRAM的物理地址與虛擬地址。系統(tǒng)啟動時MMU被禁止,系統(tǒng)運行在實模式即物理地址模式,但程序卻被編譯鏈接到了虛擬地址上,這樣在使能MMU之前,存放在flash或DRAM中的程序的實際地址(物理地址)與其鏈接到的地址是不相同的,所以從系統(tǒng)啟動到MMU使能之間的程序代碼也應該是與地址無關的,如果要跳轉(zhuǎn)到某個標號處運行,必須是基于pc的,不能是絕對跳轉(zhuǎn)指令,否則程序也將跑飛。


          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();