Cortex-M3
是一个
32
位处理器内核。内部的数据路径是
32
位的,寄存器是
32
位的,存储器接口也是 32
位的。
CM3
采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访
问并行不悖。如图:
ARM
处理器一直支持两种形式上相对独立的指令集,它
们分别是:
32
位的
ARM
指令集。对应处理器状态:
ARM
状态
16
位的
Thumb
指令集。对应处理器状态:
Thumb
状态
Thumb-2
是
Thumb
的超集,它支持both16
位和
32
位指令。从图中可见,Cortex-M3勇敢地拒绝了32位ARM指令集,却把自己的处理能力以身相许般地全托给Thumb-2指令集。
Cortex-M3
处理器拥有
R0-R15
的寄存器组。
R0-R12
都是
32
位通用寄存器,用于数据操作。但是注意:绝大多数
16
位
Thumb
指令只能访
问
R0-R7
,而
32
位
Thumb-2
指令可以访问所有寄存器。
Banked R13:
两个堆栈指针
Cortex-M3 拥有两个堆栈指针,然而它们是
banked
,因此任一时刻只能使用其中的一个。
主堆栈指针(
MSP
):复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包
括中断服务例程)
进程堆栈指针(
PSP
):由用户的应用程序代码使用。
堆栈指针的最低两位永远是
0
,这意味着堆栈总是
4
字节对齐的。
R14
:连接寄存器
当呼叫一个子程序时,由
R14
存储返回地址,就是子程序的断点地址
R15
:程序计数寄存器
指向当前的程序地址。如果修改它的值,就能改变程序的执行流。
特殊功能寄存器
Cortex-M3
还在内核水平上搭载了若干特殊功能寄存器,包括
程序状态字寄存器组(
PSRs
)
中断屏蔽寄存器组(
PRIMASK, FAULTMASK, BASEPRI
)
控制寄存器(
CONTROL
)
存储器映射
Cortex-M3 支持 4GB 存储空间