Question Bank
按知识、方向与难度筛选;每道题都有分层回答和工程追问。
CPU 是执行指令的处理核心;MPU 常指需外接较完整存储和外设系统的微处理器产品;MCU 将 CPU、片上存储和常用外设集成,面向控制;SoC 是更广义的系统级集成,可包含多核、GPU、加速器和复杂互连。
启用浮点上下文后,异常入口可先保留延迟压栈状态,仅当 Handler 真正执行浮点指令时才保存更多寄存器,降低多数中断开销。但一旦触发会增加当前中断延迟和栈占用,RTOS 还需正确管理任务浮点上下文。
SysTick 常提供周期时基并触发调度判断,PendSV 设为很低优先级执行上下文切换,SVC 用于从 Thread Mode 请求特权内核服务或启动首任务。分工让切换延后到高优先级中断完成后。
CONTROL 寄存器控制 Thread Mode 的特权级和所用栈指针;Handler Mode 始终使用特权执行。非特权线程不能直接自行恢复特权,通常通过 SVC 进入异常,由受信任处理代码检查请求后完成操作。
ABI 和异常模型可能要求异常入口保持 8 字节栈对齐;若被打断时 SP 未对齐,硬件可在栈帧中加入填充并用 xPSR 标记。手工解析或汇编上下文切换若忽略该位,会错认寄存器和返回位置。
异常进入后 LR 可保存特殊 EXC_RETURN 编码,它告诉处理器返回 Thread 还是 Handler Mode、使用 MSP 还是 PSP,以及栈帧是否含浮点上下文。执行异常返回序列时硬件据此自动出栈,而不是跳到该数值地址。
PRIMASK 屏蔽可配置优先级异常;BASEPRI 只屏蔽达到某一优先级阈值及更低紧急度的异常;FAULTMASK 屏蔽范围更强,只留下 NMI。不同 Cortex-M 型号支持情况不同,修改后必须按原值恢复。