第2章-CM3嵌入式系统体系结构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CM3处理器内核是ARMv7-M体系结构: 1. CPU中央处理器(32位) 2. 先进的系统外设 3. 中断控制 4. 内存保护 5. 系统调试与跟踪功能 6. 传统Thumb和新型Thumb2指令译码器 7. 特殊功能寄存器
STM32F103 系列内部框图
2.2 处理器工作模式和状态
不同的应用会有不同的模式 不同的模式解决不同的问题 模式代表解决特定的应用或某类问题的解
数据类型
Cortex-M3处理器支持以下数据类型
32位字 16位半字 8位字节
存储器格式
小端数据格式(数据高位存入高地址)
31
24 23
16 15
87
0
地址 F 的 字节 3
地址E 的 字节 2
地址 D 的 字节 1
地址C 的 字节0
地址C 的字
地址 E 的半字 1
地址 C 的半字 0
地址 B 的 字节3
CONTROL[0] CONTROL[1]
0
特权模式
主堆栈
1
用户模式
进程堆栈
功能作用:定义特权级别,选择堆栈指针
CM3工作模式、堆栈、控制寄存器关系
CM3寄存器(特殊功能寄存器)
CM3 总线接口
片上总线标准众多 ARM公司开发的AMBA总线规范成为现在的主流 AMBA总线规范包括: 1、AHB(Advanced High preformance Bus)系统总
0:结果为正数或大于
中断状态寄存器(IPSR)
中断状态寄存器(IPSR)包含当前激活的异常 的ISR编号。
IPSR的位分配
31
----
保留
9 8 -- 0 中断号
ISR NUMBER 基础级别 =0 Reset =1 NMI =2 SVCall =11
......
执行状态寄存器(EPSR)
为什么需要执行状态寄存器EPSR?
地址0 的 字节 0
地址 0 的半字 0
地址4 的字 地址0 的字
存储器格式
大端数据格式(数据高位存入低地址)
31
24 23
16 15
87
0
地址F的 字节0
Fra Baidu bibliotek
地址E的 字节1
地址D的 字节2
地址C的 字节3
地址C的字
地址E的0
地址C的半字1
地址B的 字节0
地址A的 字节1
地址9的 字节2
地址8的 字节3
13个通用寄存器:r0~r12 分组的堆栈指针r13,别名为SP_process
和SP_main 链接寄存器r14 程序计数器r15 1个程序状态寄存器xPSR
Cortex-M3的寄存器集
低寄存器 高寄存器
程序状态寄存器
r0 r1 r2 r3
r4 r5 r6 r7 r8 r9 r10 r11
EPSR的位分配
31 27
保留
26 24 25
ICI/IT T
23 16
保留
15 10
ICI/IT
9 0
保留
IT
If-Then位。它们是If-Then指令的执行状 态位。包含If-Then模块的指令数目和它 们的执行条件。
EPSR的位分配
31 27
保留
26 24 25
ICI/IT T
23 16
保留
决方案(手机有正常模式和飞行模式)。 CM3的模式用于区别: (1)普通应用程序的代码与异常 (2)中断服务例程的代码
CM3的操作模式
CM3具有存储器访问的保护机制,它使得 普通用户程序代码不能意外地或恶意地 执行涉及要害的操作。支持线程和处理 者操作模式。(程序类型)
CM3的操作模式
处理器2种操作模式: 处理模式和线程模式
线,使用于高速设备连接 2、APB(Advanced preformance Bus)外设总线,
使用于低速设备连接
CM3 总线接口
包含5个总线接口: 1、Icode存储器接口(32位AHB,可访程存空间0000 0000-1fff ffffH) 2、Dcode存储器接口(32位AHB,可访程存空间0000 0000-1fff ffffH) 3、系统接口(32位AHB,对系存空间2000 0000-dfff ffffH和e010000-ffff
地址A 的 字节 2
地址9 的 字节 1
地址8 的 字节 0
地址 8 的字
地址 A 的半字 1
地址 8 的半字 0
地址7 的 字节 3
地址6 的 字节2
地址 6 的半字 1
地址3 的 字节 3
地址 2 的 字节2
地址 2 的半字 1
地址5 的 字节1
地址 4 的 字节 0
地址 4 的半字 0
地址 1 的 字节1
也可组合访问。 使用三合一访问时的名称为xPSR或PSR。
寄存器位域名称
APSR各位定义
1、应用状态寄存器(APSR)包含条件代码标志。 2、在进入异常之前,Cortex-M3处理器将
APSR中的条件代码标志保存在堆栈内(硬件 压栈)。 3、访问APSR可以使用MSR(2)和MRS(2)指令 来。
如果出现下列情况,LDM/STM操作重新开始而不是 继续执行:
➢ LDM/STM错误 ➢ LDM/STM指令位于IT内
特殊功能寄存器1
中断屏蔽寄存器( PRIMASK )
中断屏蔽寄存器(只有1位)
PRIMASK 1
0
相当于中断总开关,
所有中断被屏蔽 中断能正常响应
为1,所有中断被屏蔽; 为0,中断能正常响应。 只有最低位有效。
试总线信号。SWJ-DP支持SW与JTAG 两种协议,而SW-DP则只支持SW) 另外,在CoreSight产品中还可使用一种JTAG-DP,它只支持JTAG协议。DAP 总线
上的地址是32的,其中高8 位用于选择访问哪一个设备,由此可见最多可以在DAP 总线上面挂256个设备。在CM3 处理器的内部,用去1个设备的地址,剩下的255 个 都可以用于连接访问端口(AP)到DAP 总线上。
地址8的字
地址A的半字0
地址8的半字1
地址7的 字节0
地址6的 字节1
程序计数器R15(PC)
CM3内部使用了三级指令流水线,读PC时返回 值是当前指令的地址+4
若向PC写入一个数据,就会引起程序分支 CM3中的指令时半字节对齐的,所以PC得最低
有效位总是读回0.
程序状态寄存器
内部分为三个子状态寄存器: 1、应用程序PSR(APSR) 2、中断状态PSR(IPSR) 3、执行状态PSR(EPSR) 通过MRS/MSR指令,这三个PSRs可单向访问,
LDM、STM和If-then指令,为多周期指令,如果在 执行以上多周期指令时发生异常,处理器会暂时停 止以上指令的操作,进入异常,这时需要保护现场。
异常
LDM指令 STEP1 STEP2 STEP3 STEP4
异常程序
执行状态寄存器PSR(EPSR)包含两个重叠的区域 :
可中断-可继续指令(ICI)区 多寄存器加载(LDM)和存储(STM)操作是可中 断的。EPSR的ICI区用来保存从产生中断的点继续 执行多寄存器加载和存储操作时所必需的信息。
APSR的位分配
31 30 29 28 27 26
----
0
NZCVQ
保留
置顶饱和标志:(sticky saturation)标志 ,
某变量值达到上限/下限时被置1
溢出标志:1:溢出
0:没有溢出
进位/借位标志: 1:进位或借位
0:没位有进位或借
零标志:1:结果为0
0:结果为非0
负数或小于标志: 1:结果为负数或小于
特权访问时使用。 进程堆栈PSP:可在线程模式使用
链接寄存器R14(LR)
LR用于在调用子程序时存储返回地址,也用于 异常返回。
PC的最低位LSB始终为0,但LR的LSB可读/写。 在这之前,由LR的第0位来指示ARM/Thumb状
态,因为有些ARM芯片同时支持ARM状态和 Thumb状态。 为方便程序移植,CM3需要允许LR的LSB位可读 /可写。
ffffH的指令、向量、数据和调试访问)
4、外部专用外设接口(32位APB,可访外设空间e004 0000-1e00 ffffH) 5、内部专用外设接口(用于访问NVIC、DWT、FPB、MPU)
CM3内部功能描述
内核采用ARMv7-M 架构—32位 CPU NVIC--嵌套向量中断控制器 总线矩阵---32位系统总线AHB、外设总线APB FPB--实现硬件断点和代码空间到系统空间的修补访问 DWT--实现数据观察断点 ITM----指令跟踪宏单元 MPU---存储器保护单元 ETM---嵌入式跟踪宏单元 TPIU---跟踪端口接口单元 SW/JTAG-DP---DP 接口模块(先把外部信号转换成一个通用的32 位调
If-then状态区 EPSR的IT区包含了If-Then指令的执行状态位。
注:ICI区和IT区是重叠的,因此,If-Then模块内的多 寄存器加载或存储操作不具有可中断-可继续功能。
EPSR的位分配
31 27
保留
26 24 25
ICI/IT T
23 16
保留
15 10
ICI/IT
9 0
保留
ICI
15 10
ICI/IT
9 0
保留
用于指示处理器当前是ARM状态还是 Thumb状态。由于ARMv7-M架构仅仅支出 Thumb指令,所以T位一直为1。操作EPSR 寄存器时必须注意,不能清零T位,否则会 引起INVSTATE异常。
EPSR访问
不能直接访问EPSR,若想修改EPSR必须发生以下两 个事件之一: ➢ 在执行LDM或STM指令时产生一 次中断 ➢ 执行If-Then指令
特殊功能寄存器2
异常关闭寄存器( FaultMASK )
异常关闭寄存器(只有1位)
FaultMASK 1
除NMI外所有异常被屏蔽
0
异常能正常响应
相当于异常总开关,为1,除NMI外所有异常被屏蔽;
为0,异常能正常响应。只有最低位有效。
特殊功能寄存器3
BASEPRI(最多有9位)定义屏蔽优先级的阀值
r12 rr1133((SSPP)) r14(LR) r15(PC) xPSR
CM3采用双堆栈结构
SP_process
SP_main
通用寄存器
低组寄存器r0-r7 高组寄存器r8-r12 堆栈指针寄存器r13 链接寄存器(LR)r14 程序计数器寄存器r15
堆栈指针R13
CM3支持2个堆栈,都指向R13 主堆栈MSP:默认堆栈指针,系统内核、异常、
BASEPRI
优先级0 优先级1
优先级2 优先级3 优先级4
….
2 中断可响应 中断被屏蔽
优先级号大于/等于阀值的中 断被屏蔽。
例如,把BASEPRI设置为2, 则2和2以上优先级的中断 都被屏蔽,只有0和1优先级 的中断不会被屏蔽。
注: BASEPRI与优先级分组有 关,stellaris系列处理器使 用高3位来配置。
可中断-可继续的指令位。如果在执行LDM或STM操作 时产生一次中断,则LDM或STM操作暂停,EPSR使用位 [15:12]来保存该操作中下一个寄存器操作数的编号。在 中断响应之后,处理器返回由[15:12]指向的寄存器并恢 复操作。如果ICI区指向的寄存器不在指令的寄存器列表 中,则处理器对列表中的下一个寄存器(如果有)继续 执行LDM/STM操作。
第2章 ARM Cortex-M3 体系结构
主讲 朱兆优
Cortex-M3 内核的主要特点
功耗低-2uw 内核的门数少,具有优异的性价比 中断延迟短 调试成本低 具有嵌套向量中断控制器(NVIC) 处理器采用ARMv7-M 架构 具有可裁减的存储器保护单元(MPU) 总线接口
2.1 ARM Cortex-M3 处理器内核
程序执行设置2种权限: 用户级和特权级。
特权级可以访问任意资源,用户级对有些资源的访问有限制或不允许访问。
操作模式状态转换
1、CM3运行主应用程序时(线程模式),可使用特权级或用户级 2、处理异常服务例程必须使用特权模式。 3、复位后,CM3默认进入线程模式,特权级访问 4、从特权模式切换到用户级,修改CONTROL寄存器即可 5、用户级切换回特权级,必须执行一条系统调用指令SVC,触发
BASEPRI与BASEPRI_MAX为同一寄存器
1、BASEPRI可任意设置新的优先级阀值 2、BASEPRI_MAX只允许新的阀值比原来的
数字更小。也就是说,修改BASEPRI_MAX 时,只能一次次地扩大屏蔽范围。
特殊功能寄存器4
控制寄存器( CONTROL) CONTROL寄存器由两个状态位组成:
SVC异常,在异常服务例程中修改CONTROL才能回到特权级
支持2种模式和2种访问
1. 工作模式与访问权限的关系
Handler
Thread
私有模式 私有模式 非私模式
特权访问和用户访问
2. 特权访问和用户访问之间的相互转换
Cortex-M3 与ARM7 的性能比较
Cortex-M3的寄存器集
相关文档
最新文档