学习笔记(一)ARM Cortex-M3的内核架构
ARM Cortex-M3的内核架构
1、 Cortex-M3 CPU:核心中的核心
在CPU的学习中,涉及到的知识是:管道、编程模型、CPU运行模式、Thumb-2指令集、非对齐存储接口。
管道
三级管道技术
编程模型
①基于“载入-存储”式的架构。
为了执行数据处理指令,操作数必须装载进一系列的中央寄存器,数据操作必需在这些寄存器中进行,而数据运算的结果会被存储到存储区中。
②CPU寄存器组
所有程序活动都在CPU寄存器组里面进行,包含了16个32位寄存器。
寄存器R0-R12可以用来保存程序变量,
寄存器R13(banked寄存器):保存堆栈指针(也是blanked的含义)
寄存器R14(链接寄存器):在执行跳转指令时保存程序返回地址(实现CPU快速的进出调用程序(如果程序中存在几级嵌套调用,则R14的值会被自动压栈)
寄存器R15(程序计数器(PC)):中央寄存器的一员,可以像对其他寄存器一样对R15进行读/写操作。
③PSR(Program Status Register,程序状态寄存器)
最高五位是代状态码标志位,一般称为应用程序寄存器(Application Program States Register,APSR)
④EPSR(Execution Program Status Register,程序执行状态寄存器)
EPSR在PSR中的位置为6-28位,包含三个分区
1、“if then”分区
假设条件为真,置位并且通知CPU处理后续4条指令;反之,4条指令会被当成NOP指令通过管道。
2、“中断可持续指令区”
当一个多周期指令过早的被打断时,中断可持续指令区会将下一步将要装载或存储的多周期指令的存储器编号保存。
3“Thumb指令区”
表示当前内容是ARM指令集还是Thumb指令集,而M3中这一位永远都是1,因为M3只支持Thumb-2指令集。
Cortex-M3 CPU的运行模式
线程(Thread)模式和处理(Handler)模式
运行模式 | 状态 | 堆栈 |
---|---|---|
Handler (一个异常正在处理) | 私有模式全控制开放 | OS和异常使用主堆栈 |
Thread (无异常、执行正常代码) | 私有/非私有模式 | 主/进程堆栈 |
系统在复位后,会以最开放的模式运行。无论是线程(Thread)模式和处理(Han
dler)模式,都会在私有模式下进行。
如果使用RTOS,为保证在代码崩溃的时候不危及系统,
可以使Cortex-M3进入一个高级模式,在这种模式里,RTOS或异常处理在Handler
模式下使用私有模式,并且使用主堆栈;而代码使用线程(Thread)模式并且使用
进程堆栈。
Thumb-2指令集
32位指令可以提高运行速度;16位指令可以提高代码密度
非对齐存取接口
ARM7和9的指令集支持使用字节(8位)、半字(16位)、字(32位)和各种有符号(signed)、无符号(unsigned)变量。
Cortex-M3处理器的“位带”技术允许程序标志位写入字或半字变量内部,而不是每个标志位都占用1字节的空间。