Cortex-M3硬fault学习与异常处理

需积分: 31 3 下载量 168 浏览量 更新于2024-08-24 收藏 8.26MB PPT 举报
"硬fault-Cortex-M3学习小结" Cortex-M3是ARM公司推出的基于ARMv7-M架构的一种微控制器核心,广泛应用于LPC1768、STM32等嵌入式芯片中。本资源主要围绕Cortex-M3的学习进行总结,包括其关键特性、异常处理和中断系统。 在Cortex-M3中,硬fault是一种高级别的故障,它是其他类型的fault(如总线fault、存储器管理fault和用法fault)未能正确处理时的最终结果。当这些较低级别的fault无法被服务例程妥善解决时,它们会升级为硬fault。此外,如果在尝试读取异常向量表时发生总线fault,也会直接被视为硬fault。硬fault的处理涉及NVIC(Nested Vectored Interrupt Controller)中的硬fault状态寄存器(HFSR),它记录导致硬fault的原因。在处理硬fault时,开发者通常需要检查其他fault状态寄存器以确定故障源头。 Cortex-M3的操作模式和特权级别是其核心特性之一。处理器有两种主要模式:线程模式和处理器模式。线程模式分为用户级和特权级,而处理器模式始终是特权级的,常用于异常处理。在复位后,处理器默认进入线程模式的特权级。 寄存器组是Cortex-M3的重要组成部分,包括16个通用寄存器R0-R15和若干特殊功能寄存器。R0-R12为通用目的,其中R0-R7是16位指令常用的低组寄存器,而Thumb-2指令可以访问所有通用寄存器。R13作为堆栈指针,分为主堆栈指针(MSP)和进程堆栈指针(PSP),分别服务于不同场景。R14是连接寄存器(LR),用于存储子程序返回地址。R15是程序计数器(PC),指示下一条待执行指令的地址,由于指令流水线的存在,读取时会返回当前指令地址加4。 Cortex-M3还采用了AMBA(Advanced Microcontroller Bus Architecture)总线协议,包括AHB(Advanced High-performance Bus)和APB(Advanced Peripheral Bus),分别用于高速核心组件和低速外围设备的通信。 此外,流水线技术提高了Cortex-M3的处理效率,允许在单个时钟周期内执行多个操作。异常和中断系统则是实时系统的关键,能够快速响应外部事件。Cortex-M3的异常处理包括复位、未定义指令、软件中断、数据访问故障、预取数据故障、总线故障、用法故障和硬fault,每种异常都有相应的向量地址,用于跳转到处理程序。 最后,Cortex-M3与ARM7的比较主要体现在功耗、性能和内存保护机制等方面。Cortex-M3设计更注重能效,具有硬件浮点单元支持(取决于具体实现),并提供了更强大的内存保护单元(MPU)。 Cortex-M3的学习涵盖了微控制器的基础知识,包括指令集、总线架构、处理器模式、异常处理和中断,以及寄存器的使用,这些都是理解和应用Cortex-M3芯片进行嵌入式开发的基础。