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

          新聞中心

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

          ARM Cortex-M3 學習筆記(2)

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

          第二章 Cortex-M3 概述
          Cortex M3 內(nèi)核的組成可以用一張簡圖來表示:

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

          圖 3 Cortex-M3內(nèi)核簡圖

          內(nèi)核寄存器組包括R0-R15,R0-R12是通用寄存器,部分Thumb指令只能訪問R0-R7。
          R13是堆棧指針,實際上有兩個,一個是主堆棧指針(MSP)另一個是進程堆棧指針(PSP),堆棧要求4字節(jié)對齊。
          R14存放程序的返回地址。
          R15是PC,記錄程序當前的執(zhí)行地址。

          特殊功能寄存器包括:
          程序狀態(tài)字寄存器組(PSRs)
          中斷屏蔽寄存器組(PRIMASK, FAULTMASK, BASEPRI)
          控制寄存器(CONTROL)

          運行模式和特權級別
          兩種運行模式:handler mode和thread mode。
          兩種特權級別:特權級和用戶級

          中斷例程工作在特權級,普通程序代碼既可以工作在特權級也可以在用戶級。
          相互間的轉(zhuǎn)換用下圖來描述:

          圖 4 操作模式轉(zhuǎn)換圖
          嵌套向量中斷控制器NVIC(Nested Vectored Interrupt Controller)
          ? 可嵌套中斷支持
          ? 向量中斷支持
          ? 動態(tài)優(yōu)先級調(diào)整支持
          后面有一章會對NVIC進行詳細的介紹。

          地址空間分配
          與以前的ARM 內(nèi)核不同,Cortex-M3對地址空間的分配有個大的框架。向NVIC寄存器等的地址也都被固定了下來,這就方便了在程序的移植。具體的地址分配可以用下圖來簡單的描述:

          圖 5 地址分配

          總線
          Cortex-M3內(nèi)部有若干個總線接口,以使Cortex-M3能同時讀取程序代碼和訪問內(nèi)存,它們是:
          指令存儲區(qū)總線(兩條)
          系統(tǒng)總線
          私有外設總線

          中斷和異常
          Cortex-M3支持11個內(nèi)部異常和240個外部中斷。當然,對具體的芯片,可以支持的外部中斷數(shù)量肯定就要少的多了。

          調(diào)試支持
          在支持傳統(tǒng)的JTAG基礎上,還支持更新更好的串行線調(diào)試接口。
          基于CoreSight調(diào)試解決方案,使得處理器哪怕是在運行時,也能訪問處理器狀態(tài)和存儲器內(nèi)容。
          內(nèi)建了對多達6個斷點和4個數(shù)據(jù)觀察點的支持。



          關鍵詞: ARMCortex-M

          評論


          相關推薦

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