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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM Cortex-M3 學習筆記(5)

          ARM Cortex-M3 學習筆記(5)

          作者: 時間:2016-11-20 來源:網(wǎng)絡 收藏
          最近在學ARM Cortex-M3,找了本號稱很經(jīng)典的書“An Definitive Guide to The ARM Cortex-M3”在看。這個系列學習筆記其實就是在學習這本書的過程中做的讀書筆記。

          本文引用地址:http://www.ex-cimer.com/article/201611/318830.htm

          第五章 存儲器系統(tǒng)

          地址空間分配

          對比更早版本的ARM內(nèi)核,Cortex-M3的地址空間分配相對來說是固定的。尤其是內(nèi)部的私有外設,地址分配是固定不變的。這為軟件移植提供很大的方便。

          圖 1 Cortex-M3 地址空間分配

          片內(nèi)SRAM地址空間和片內(nèi)外設地址空間中各有1MB是所謂的位帶區(qū)。這個區(qū)數(shù)據(jù)可以按位訪問。外部SRAM和外部外設地址空間中沒有位帶區(qū)。

          RAM地址空間與外設地址空間最大的區(qū)別是RAM地址空間中的存儲的數(shù)據(jù)是可以作為程序代碼運行的,而外設地址空間中的數(shù)據(jù)卻不能運行。當然,程序最好還是放到片內(nèi)的代碼區(qū),因為對這個區(qū)域的訪問有專用的總線,因此讀取程序代碼與讀取RAM區(qū)的數(shù)據(jù)可以同時進行,效率最高。

          Bit-Band 操作

          在0x20000000和0x40000000 地址處開始的1MB空間被稱為bit-band region。這個區(qū)域內(nèi)的數(shù)據(jù)的每一位都被映射了到了一個32位寬的word的最低一位,被映射到的地址空間稱為bit-band alias address range。比如說,0x20000000對應字節(jié)第0位映射到了0x22000000的第0位。0x20000000的第1位映射到了0x22000004的第0位,其他的以此類推。這樣,讀取0x22000004 就相當于讀取0x20000000的第1位。寫0x22000004的第0位就相當于寫0x20000000的第1位。對bit-band aliasaddress range 中數(shù)據(jù)的讀寫都是原子操作。

          特別要注意的是:bit-band alias address range 中的數(shù)據(jù)支持字節(jié)和半字訪問,但是數(shù)據(jù)的訪問不能跨越4字節(jié)邊界,否則結(jié)果不確定。

          Endian Mode

          Cortex-M3內(nèi)核本身對大端和小端都支持,但是對于具體的一款基于Cortex-M3內(nèi)核的單片機來說就不一定兩種模式都支持了。常見的Cortex-M3內(nèi)核的單片機基本都是小端模式的。

          Cortex-M3內(nèi)核中對大端模式的定義和ARM7中還有些不同,具體怎么個不同我還沒搞明白,等明白了再補上。

          另外,具體使用哪種Endian Mode 是在reset時確定的,Cortex-M3不支持運行中動態(tài)切換Endian Mode。



          關鍵詞: ARMCortex-M

          評論


          相關推薦

          技術(shù)專區(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); })();