iT邦幫忙

2021 iThome 鐵人賽

DAY 9
0
Arm Platforms

30天從0開始探索嵌入式世界系列 第 9

Day.9 進入 ARM 世界: ARM Cortex-M 暫存器介紹

ARM Cortex Overview

ARM Architecture 從第七代開始,分為三種配置(Profile)

  • Application:AXI,VMSA(MMU)
  • Real-time:AXI,PMSA(MPU),TCM(Cache),多核
  • Micocontroller:AHB(-Lite),APB,NIVC,Thumb Only,單核 補充:新架構有支援Variant PMSA(M4,M7,M23),Variant TCM(M7,M55)

Ref:ARM Cortex-M wiki

ARM Cortex-M3 架構介紹

  • Cortex-M3 只支援 Thumb-1 和 Thumb-2 指令,而 32-bit ARM 指令則不支援
    • Thumb 是由:16 bits 或是 16+16=32bit組成
  • 下圖為Cortex-M 的架構圖,M系列有一個很特別的特就是Nested Vectored Interrupt Controller (NVIC)

暫存器介紹

圖片來自 Definitive Guide To the ARM Cortex-M3

  • R0-12 為通用暫存器,16-bit Thumb instruction 只能 assess R0-R7(low registers)
  • 有兩個Stack Pointer:MSP PSP (使用哪個取決於在哪個模式底下)
    • Main Stack Pointer (MSP):默認的 Stack Pointer,通常是OS Kernel 和 Exception handlers 使用
    • Process Stack Pointer (PSP):User Application code 使用
  • R14 Link Register:存放副函式返回位址
  • R15 Program Cunter:存放下一行要執行的指令
  • xPSR : 狀態暫存器 負責儲存目前Program的狀態,由三個register組成
    • Application Program Status register (APSR)
    • Interrupt Program Status register (IPSR)
    • Execution Program Status register (EPSR)

在讀取這些 register 使用 MRS instruction,APSR 可更改, EPSR and IPSR read-only

MRS r0, APSR ; Read Flag state into R0
MRS r0, IPSR ; Read Exception/Interrupt state
MRS r0, EPSR ; Read Execution state
MSR APSR, r0 ; Write Flag state
  • PRIMASK,FAULTMASK,BASEPRI : 處理 Interrupt Mask,在這個特權等級下才可以讀取。
  • CONTROL : 模式切換暫存器,在Thread mode 無法更改 CONTROL 這個暫存器

Operation Modes

圖片來自 Definitive Guide To the ARM Cortex-M3

  • User (non-privileged) mode
    • 不能夠直接access 某些特殊暫存器,也不能access 全部的Memory和system timer, NVIC, or system control block
  • Privileged mode
    • 可以access 全部的資源
  • Thread mode
    • 在跑 Main Program 時的 mode,可為Privileged Mode 和 User (non-privileged) mode
  • Handler mode
    • 只有在發生 exception發生時進入,且必為Privileged

參考資料

The Definitive Guide to the ARM Cortex M3
手機裡的 ARM 處理器: 隱藏的精靈 Cortex-M


上一篇
Day.8 Cache 的基本原理
下一篇
Day.10 進入 ARM 世界: ARM Cortex-M Exception 介紹
系列文
30天從0開始探索嵌入式世界15

尚未有邦友留言

立即登入留言