ARM Cortex-M3 學(xué)習(xí)筆記(2)
第二章 Cortex-M3 概述
Cortex M3 內(nèi)核的組成可以用一張簡(jiǎn)圖來表示:
內(nèi)核寄存器組包括R0-R15,R0-R12是通用寄存器,部分Thumb指令只能訪問R0-R7。
R13是堆棧指針,實(shí)際上有兩個(gè),一個(gè)是主堆棧指針(MSP)另一個(gè)是進(jìn)程堆棧指針(PSP),堆棧要求4字節(jié)對(duì)齊。
R14存放程序的返回地址。
R15是PC,記錄程序當(dāng)前的執(zhí)行地址。
特殊功能寄存器包括:
程序狀態(tài)字寄存器組(PSRs)
中斷屏蔽寄存器組(PRIMASK, FAULTMASK, BASEPRI)
控制寄存器(CONTROL)
運(yùn)行模式和特權(quán)級(jí)別
兩種運(yùn)行模式:handler mode和thread mode。
兩種特權(quán)級(jí)別:特權(quán)級(jí)和用戶級(jí)
中斷例程工作在特權(quán)級(jí),普通程序代碼既可以工作在特權(quán)級(jí)也可以在用戶級(jí)。
相互間的轉(zhuǎn)換用下圖來描述:
圖 4 操作模式轉(zhuǎn)換圖
嵌套向量中斷控制器NVIC(Nested Vectored Interrupt Controller)
? 可嵌套中斷支持
? 向量中斷支持
? 動(dòng)態(tài)優(yōu)先級(jí)調(diào)整支持
后面有一章會(huì)對(duì)NVIC進(jìn)行詳細(xì)的介紹。
地址空間分配
與以前的ARM 內(nèi)核不同,Cortex-M3對(duì)地址空間的分配有個(gè)大的框架。向NVIC寄存器等的地址也都被固定了下來,這就方便了在程序的移植。具體的地址分配可以用下圖來簡(jiǎn)單的描述:
圖 5 地址分配
總線
Cortex-M3內(nèi)部有若干個(gè)總線接口,以使Cortex-M3能同時(shí)讀取程序代碼和訪問內(nèi)存,它們是:
指令存儲(chǔ)區(qū)總線(兩條)
系統(tǒng)總線
私有外設(shè)總線
中斷和異常
Cortex-M3支持11個(gè)內(nèi)部異常和240個(gè)外部中斷。當(dāng)然,對(duì)具體的芯片,可以支持的外部中斷數(shù)量肯定就要少的多了。
調(diào)試支持
在支持傳統(tǒng)的JTAG基礎(chǔ)上,還支持更新更好的串行線調(diào)試接口。
基于CoreSight調(diào)試解決方案,使得處理器哪怕是在運(yùn)行時(shí),也能訪問處理器狀態(tài)和存儲(chǔ)器內(nèi)容。
內(nèi)建了對(duì)多達(dá)6個(gè)斷點(diǎn)和4個(gè)數(shù)據(jù)觀察點(diǎn)的支持。
評(píng)論