ARM CORETEX M0简介
1. M0处理器简单框图
处理器内核:逻辑控制与运算
内部总线系统:单总线将处理器与外部的存储器和外部连接,进行数据交互(冯诺依曼架构,数据与指令一起)
NVIC:嵌套向量中断控制器,帮助cpu处理外部的中断请求,max32个中断,4级中断优先级
异常:由cpu自己产生,reset,hardfault,SVcall,pendsv,systick
中断:由系统其他外设产生(32个)
WIC:唤醒中断控制器,系统进入低功耗模式后,将cpu唤醒的控制器
调试子系统单元:用于调试整个子系统
2. M0处理器简单框图
工作模式
线程模式(thread mode):芯片复位后,即进入线程模式,执行用户程序
处理模式(handler mode):当处理器发生了异常或者中断,则进入处理模式进行处理,处理完成后返回线程模式
区别:两个模式操作的寄存器不同
工作状态
thumb状态:正常工作时,处理器的状态
调试状态:调试程序时处理器的状态
寄存器
13个通用寄存器以及多个特殊寄存器
R0R12:所有工作模式都可以操作,R0R7:低端寄存器,可以作为16位或32位指令操作数,R8~R12为高端寄存器,只能用作32位操作数
R13:堆栈指针SP,M0不同的物理位置上存在两个栈指针,主栈指针MSP,进程栈指针PSP。在处理模式上,只能使用MSP,在线程模式下,通过CONTROL寄存器控制使用哪种指针,系统上电默认MSP;
R14:链接寄存器(LR),用于存储子程序或者函数调用的返回地址
R15:程序计数器(PC),存储下一条将要执行的指令的地址
指令集
(EPSR)寄存器的T标志位负责指令集的切换,m0只支持thumb指令
- arm指令集
a. 32位精简指令集
b. 指令长度固定
c. 降低编码数量产生的耗费,减轻解码和流水线的负担 - thumb指令集
a. 是arm指令集的一个子集
b. 指令宽度16位
c. 与32位指令集相比,大大节省了系统的存储空间
d. thumb指令集不完整,所以必须配合ARM指令集一同使用
note:rhumb指令与arm相比,代码体积小了30%,但是性能也低了20%;故存在thumb-2,即兼容thumb 16位指令集,又兼容部分32位指令集;
【注】:个人学习笔记,如有错误,望不吝赐教,这厢有礼了~~~