![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
cortex-m3
文章平均质量分 83
参考《Cortex-M3权威指南(中文)》和《ARM Cotrex-M3权威指南(英文)》
jiang_2018
这个作者很懒,什么都没留下…
展开
-
cortex-m3/m4栈回溯
目的更好分析hardfault等问题,需要理解m3、m4的栈是怎样的,更快的定位问题。预备知识内核有如下寄存器:R0~R12,SP(R13),LR(R14),PC(R15),xPSR,在进入异常时内核会自动保存R0 ~ R3,R12,LR,PC,xPSR,对于m4,如果在进入异常前使用了浮点计算还会保存S0 ~ S15,FPSCR寄存器,栈帧如下SP(R13):cortex有2个栈指针,复位后默认使用msp主栈指针,中断中使用的是msp;psp线程栈,rtos中各个任务中就是使用psp。LR原创 2022-04-09 16:36:34 · 2433 阅读 · 0 评论 -
Cortex-M3中断具体行为
文章目录中断响应顺序入栈取向量更新寄存器异常返回EXC_RETURN中断响应顺序入栈:把8个寄存器的值压入栈取向量:从向量表中找出对应的服务程序入口地址更新堆栈指针sp,链接寄存器lr,程序指针pc入栈响应异常的第一个行动,就是自动保存现场的必要部分:依次把xPSR, PC, LR, R12以及R3‐R0由硬件自动压入适当的堆栈中:如果当响应异常时,当前的代码正在使用PSP,则压入...原创 2020-03-22 21:50:23 · 1007 阅读 · 0 评论 -
Cortex-M3中断
文章目录使能与除能寄存器悬起与解悬寄存器优先级寄存器优先级定义优先级活动状态寄存器使能与除能寄存器CM3有240对使能/除能位,每个中断拥有一对。这 240 个对子分布在 8 对 32 位寄存器中(最后一对没有用完)。欲使能一个中断,你需要写 1 到对应 SETENA 的位中;欲除能一个中断,你需要写 1 到对应的 CLRENA 位中;如果往它们中写 0,不会有任何效果。悬起与解悬寄存器...原创 2020-03-22 20:48:40 · 1004 阅读 · 0 评论 -
Cortex-M3基础
概述Cortex-M3是一个32位处理器内核,采用哈佛接口,拥有独立的指令总线和数据总线。寄存器组R0-R12 通用寄存器R0-R12 都是32位的通用寄存器,绝大多数16位Thumb指令只能方位R0-R7,而32位Thumb-2指令能访问所有寄存器Banked R13 堆栈指针SPR13 是堆栈指针。在 CM3 处理器内核中共有两个堆栈指针,于是也就支持两个堆栈。当引用 R13(或...原创 2020-03-22 16:24:29 · 1087 阅读 · 0 评论