目录
简介
1。Cortex-M3:32位 处理器内核。
a.数据路径是32位;
b.寄存器是32位;
c.存储器接口也是32位。
2。CM3采用哈佛结构。
CM3采用哈佛结构,拥有独立的指令总线和数据总线,可使取指和数据访问并行不悖。
为了实现“取指和数据访问并行不悖”这个特性,CM3内部含有好几条总线接口,每条都为自己的应用场合优化过,而且可并行工作。
但,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。
PS:
哈佛结构:将程序指令存储和数据存储分开的存储器结构。为并行体系结构。主要特点:将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器,每个存储器独立编址、独立访问。
CM3提供可选的MPU。
比较复杂的应用可能需要更多的存储系统功能,为此CM3提供一个可选的MPU,且在需要的情况下,可使用外部的cache。
另外,在CM3中,小端模式和大端模式都是支持的。
PS:
MPU: Memory Protection Unit,内存保护单元。
MPU中一个域就是一些属性值及其对应的一片内存。这些属性包括:起始地址、长度、读写权限以及缓存等。
ARM940具有不同的域来控制指令内存和数据内存。
内核可以定义8对区域,分别控制8个指令和数据内存区域。
域和域可以重叠,并且可设置不同的优先级。域的起始地址必须是其大小的整数倍。另外,域的大小可以4K到4G间任意一个2的指数,如:4K,8K,16K。。。
cache:一种后关系型数据库,能并发访问同一数据的数据库技术。
大小端模式:
大端模式:Big-endian。指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址。地址由小向大增加,而数据从高位往低位放。
小端模式:Little-endian。指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中。这种存储模式将地址和数据位权有效地结合起来,高地址部分权值高、低地址部分权值低。
寄存器组
Cortex-M3处理器拥有R0-R15的寄存器组。
R0-R12:32位通用寄存器,用于数据操作。
注意:绝大多数16位Thumb指令只能方位R0·R7;32位Thumb-2指令可以方位所有寄存器。
R13:堆栈指针SP。
SP有两个分别为主堆栈指针(MSP)和进程堆栈指针(PSP)。但任一时刻只能使用其中一个,即:Banked(adj. 堆积的)寄存器。
主堆栈指针(MSP): 复位后缺省使用的堆栈指针,用于操作系统内核以及异常处理例程(包括:中断服务例程)
进程堆栈指针(PSP):由用户的应用程序代码使用。
堆栈指针的最低两位永远是0——即:堆栈总是4字节对齐的。
异常(exception):在ARM编程领域,凡是打断程序顺序执行的事件,都被称为异常。
除了外部中断外,当有指令执行了“非法操作”,或者访问被禁的内存区间,因各种错误产生的fault,以及不可屏蔽中断发生时,都会打断程序的执行,这些情况统称为异常。程序代码可主动请求进入异常状态(常用于系统调用)。
R14:连接寄存器。
当呼叫一个子程序时,由R14寄存器返回地址。
ARM为了减少访问内存的次数,把返回地址直接存储在寄存器中。使很多只有1级子程序调用的代码无需访问内存(堆栈内存),从而提高子程序调用的效率。若多于1级,则需要把前一级的R14值压到堆栈里。
在ARM上编程时,应尽量只使用寄存器保护中间结果,迫不得已才访问内存。
溅出:在RISC处理器中,为了强调访问内存操作越过了处理器的接线,并带来了对性能的不利影响。
R15:程序计数寄存器。
指向当前的程序地址。若改变R15的值,就能改变程序的执行流。
特殊功能寄存器。
Cortex-M3在内核水平上搭载了若干特殊功能寄存器,包括:程序状态字寄存器组(PSRs)、中断屏蔽寄存器组(PRIMASK、FAULTMASK、BASEPRI)、控制寄存器(CONTROL)。
PS:
ALU:arithmetic and logic unit,算术逻辑单元,是实现多组算术运算和逻辑运算的组合逻辑电路。是CPU的执行单元,是由“AND GATE”和“OR Gate”构成的算术逻辑单元,主要功能是进行二元的算术运算,如:加减乘(不包括整数除法)。
操作模式和特权级别
Cortex-M3处理器支持2种处理器的操作模式,和支持两级特权操作。
操作模式,用于 区别 普通应用程序的代码 和 异常服务例程的代码:
1。处理者模式( handler mode)
2。线程模式(thread mode)
特权分级,提供存储器访问的保护机制:
1。特权级
2。用户级
从用户级到特权级的唯一途径——异常:
若在程序执行过程中触发了一个异常,处理器总是先切换到特权级,并在异常服务例程执行完毕退出是,返回先前的状态。
内建的嵌套向量中断控制器
嵌套向量中断控制器NVIC ( Nested Vectored Interrupt Controller),功能:
1。可嵌套中断支持
——作用范围:覆盖所有的外部中断和绝大多数系统异常。这些异常可被赋予不同的优先级,xPSR的专用字段存储当前优先级。发生异常时,硬件自动比较该异常和当前异常的优先级,若更改,中断当前的服务程序——立即抢占。
2。向量中断支持
——开始响应中断后,CM3会自动定位-张向量表,并根据中断号,从表中找出ISR(中断服务程序,Interrupt Service Routines)的入口地址,然后跳转执行。意义:中断延时时间大为缩短。
3。动态优先级调整支持
软件可在运行期间更改中断的优先级。
4。中断延迟大大缩短
新特性:自动的现场保护和恢复——用于缩短中断嵌套的ISR间延迟。
5。中断可屏蔽
既可以屏蔽优先级低于某个阈值的中断、异常(设置 BASEPRI 寄存器),
也可以全体封杀(设置PRIMASK和FAULTMASK寄存器)。
目的:让时间关键(time-critical)的任务能在死线(deadline)到来之前完成,而不被干扰。
存储器映射
Cortex-M3支持4GB存储空间。
总线接口
Cortex-M3内部有若干个总线接口,以使CM3能同时取址和访问内存:
1。指令存储区总线(2条)——负责对代码存储区的访问,I-code总线(取指)和D-Code(查表等操作)·。
2。系统总线——用于访问内存和外设,覆盖区域:SRAM、片上外设、片上RAM、片上扩展设备,以及系统级存储区的部分空间。
3。私有外设总线——主要访问调试组件,部分方位私有外设,位于系统级存储区。
存储区保护单元(MPU)
MPU为可选。配上后,可对特权级和用户级访问分别施加不同的访问限制。
指令集
Cortex-M3 只使用Thumb-2指令集。
中断和异常
CM3支持11种系统异常,外加240个外部中断输入。
此外,CM3还有1个NMI(不可屏蔽中断)输入脚,被置为有效时,NMI服务例程会无条件地执行。