《Cortex-M3权威指南》笔记——chpt02 Cortex-M3概览

目录

简介

1。Cortex-M3:32位 处理器内核。

a.数据路径是32位;
b.寄存器是32位;
c.存储器接口也是32位。

2。CM3采用哈佛结构。

CM3采用哈佛结构,拥有独立的指令总线和数据总线,可使取指和数据访问并行不悖
为了实现“取指和数据访问并行不悖”这个特性,CM3内部含有好几条总线接口,每条都为自己的应用场合优化过,而且可并行工作
但,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。
PS:
《Cortex-M3权威指南》笔记——chpt02 Cortex-M3概览

哈佛结构:将程序指令存储和数据存储分开的存储器结构。为并行体系结构。主要特点:将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个独立的存储器每个存储器独立编址、独立访问

《Cortex-M3权威指南》笔记——chpt02 Cortex-M3概览

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权威指南》笔记——chpt02 Cortex-M3概览

寄存器组

Cortex-M3处理器拥有R0-R15的寄存器组

《Cortex-M3权威指南》笔记——chpt02 Cortex-M3概览

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)。

《Cortex-M3权威指南》笔记——chpt02 Cortex-M3概览

《Cortex-M3权威指南》笔记——chpt02 Cortex-M3概览

PS:
ALU:arithmetic and logic unit,算术逻辑单元,是实现多组算术运算和逻辑运算的组合逻辑电路。是CPU的执行单元,是由“AND GATE”和“OR Gate”构成的算术逻辑单元,主要功能是进行二元的算术运算,如:加减乘(不包括整数除法)。

操作模式和特权级别

Cortex-M3处理器支持2种处理器的操作模式,和支持两级特权操作

操作模式,用于 区别 普通应用程序的代码异常服务例程的代码
1。处理者模式( handler mode)
2。线程模式(thread mode)

特权分级,提供存储器访问的保护机制
1。特权级
2。用户级

《Cortex-M3权威指南》笔记——chpt02 Cortex-M3概览

从用户级到特权级的唯一途径——异常:
若在程序执行过程中触发了一个异常,处理器总是先切换到特权级,并在异常服务例程执行完毕退出是,返回先前的状态。

《Cortex-M3权威指南》笔记——chpt02 Cortex-M3概览

内建的嵌套向量中断控制器

嵌套向量中断控制器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权威指南》笔记——chpt02 Cortex-M3概览

总线接口

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服务例程会无条件地执行。
《Cortex-M3权威指南》笔记——chpt02 Cortex-M3概览
《Cortex-M3权威指南》笔记——chpt02 Cortex-M3概览

调试支持