1. Cortex-M4的內核設備
- NVIC, Nested vectored interrupt controller
- SCB, System control block
- SysTick, The system timer
- MPU, Memory protection unit
- FPU, Floating-point unit
2. 程序員模型
2.1 處理器模式
- Thread mode, 用於執行軟件程序(可由CONTROL寄存器控制是否享有特權),復位后自動進入。
- Handler mode: 用於處理異常,此處的程序總是享有特權,處理完成后返回Thread 模式。
2.2 軟件執行的特權等級
- Unprivileged,沒有特權的:
- 限制訪問MSR、MRS指令,不能使用CPS指令
- 不能訪問SysTick, NVIC, SCB
- 可能訪問內存、外設受限
- 必須使用SVC指令來調用管理程序將控制權轉移到特權軟件
- Privileged
2.3 堆棧
處理器使用一個完全遞減的堆棧,並裝配兩個:main stack 和 process stack, 具有main stack指針的獨立副本。
在Thread 模式下,由CONTROL控制使用哪一個堆棧;在Handler模式下,一直使用main堆棧。
2.4 內核寄存器
- R0~R12, 32位通用寄存器,用於數據操作
- R13, SP, 堆棧指針,由CONTROL[1]控制: 0為MSP, 1為PSP
- R14, LR,Link Register: 它保存着副程序、函數及異常的返回信息
- R15, PC, Program Counter: 包含着當前代碼的地址,復位時會自動裝載在地址0x00000004的復位向量的值。
- PSR, 程序狀態寄存器,包含着應用程序狀態寄存器(APSR)、中斷程序狀態寄存器(IPSR)、執行程序狀態寄存器(EPSR)
APSR, IPSR, EPSR這3個寄存器接合在PSR中,可以單獨訪問,也可以組合訪問,比如: