ARN cortexM3 编程模型理解

1.架构简介

  cortex-M3属于ARM V7架构,32bit,功耗低,多用于微控制器处,比如STM32单片机。对于 运算量不高的ASIC,也会使用M系类处理器构成简单SOC,比如通信,雷达。

2.编程模型

  通用编程模型:指令,数据,取指令,对数据进行运算操作,结果保存,运算标志有NZCV。指令数据都来自MEM,指令由译码单元解析,控制ALU完成运算,数据通常由寄存器参与运算或保存结果,速率更快。(待补充图片)

  

 2.1寄存器:

  M3有15个普通寄存器R0-R15。其中R0-R12为通用目的寄存器,R13为SP(存放当前栈地址,满递减),R14为LR(链接寄存器,保存返回地址或者异常返回状态),R15为PC(程序计数器,指向下一条指令)。

  psr程序状态寄存器保存指令运行之后的状态。

  特殊寄存器:中断,异常优先级设置。

 2.2指令集

  M3为32bit thumb指令集,通用汇编指令:LDR,STR,PUSH,POP,BX。

 2.3存储器映射

  SOC就是一张MEM_MAP表格,各个外设和MEM的分配空间大小,访问不同的区间,控制不同的IP。

 2.4中断异常

  NVIC嵌套向量中断:向量,由中断表格实现,连续的一段内存空间。嵌套:低优先级的中断可以被更高优先级的打断。

  异常通常指core内部错误,包括MEM错误,BUS错误,除零错误等等。1-15为系统异常。

  中断通常指外设产生的中断请求。16-255为外部中断。

  除了RST和NMI,HD_FAULT,其他异常和中断的优先级是可配的。

  发生中断的时候,会自动压栈:R0-R3,R12,LR,PC,PSR。8个寄存器是一个栈帧。

 2.5调试

  KEIL,ARM-DS5。

 2.6启动流程

  上电->取栈指针到SP,取RST异常处理入口地址到PC->初始化堆栈->进入MAIN,执行C语言->业务

posted on 2021-02-28 21:42  老九哥  阅读(306)  评论(1)    收藏  举报