《第2章cortex-m3体系结构》由会员分享,可在线阅读,更多相关《第2章cortex-m3体系结构(81页珍藏版)》请在金锄头文库上搜索。
1、 第2章Cortex M3体系结构Cortex M3Systemstructure 第2章Cotex M3体系结构 主要内容CM3微处理器核结构处理器的工作模式和状态寄存器 总线接口存储器的组织与映射指令集 流水线 异常和中断存储器保护单元STM32微控制器概述 2 1CM3微处理器核结构 CM3微处理器核结构CM3微处理器特点 2 1 1CM3内核微控制器结构 CM3核 调试模块 外设 存储器 时钟和复位 I O 内部总线 CM3CPU 2 1 2CM3微处理器结构 CM3内核 2 1 3CM3微处理器内核结构 2 1 4CM3微处理器的特点 哈弗结构支持低功耗模式分组堆栈支持非对齐数据访问
2、统一的存储器映射位绑定操作32位硬件除法和乘法器中断响应快速且支持多级中断嵌套支持串行调试swd 2 1 4CM3微处理器的特点 指令方面 ARMv7 M Thumb 2ISA子集 包含所有基本的16位和32位Thumb 2指令 只有SP是分组的 寄存器集比ARM7简单 硬件除法指令 SDIV和UDIV Thumb 2指令 处理模式 handlermode 和线程模式 threadmode Thumb状态和调试状态可中断 可继续的LDM STM PUSH POP指令 实现低中断延迟 中断时自动保存和恢复处理器状态支持8位 16位和32位等非对齐访问 外部中断可配置为1 240个优先级位可配置为
3、1 8位中断优先级可动态地重新配置 优先级分组 分为占先中断等级和非占先中断等级 支持末尾连锁 tail chaining 和迟来 latearrival 中断 减少了进出栈时间 处理器状态在进入中断时自动保存 中断退出时自动恢复 不需要多余的指令 2 1 4CM3微处理器的特点 中断方面 8个存储器区 子区禁止功能 SRD 实现对存储器区的有效使用 可使能背景区 执行默认的存储器映射属性 MPU 存储器保护单元 可裁剪 2 1 4CM3微处理器的特点 存储器保护方面 AHB标准的ICode DCode和系统总线接口APB专用外设总线 PPB 接口Bitband支持 bit band的原子写和
4、读访问 存储器访问对齐写缓冲区 用于缓冲写数据 2 1 4CM3微处理器的特点 总线方面 当内核正在运行 被中止 或处于复位状态时 能对系统中包括Cortex M3寄存器组在内的所有存储器和寄存器进行调试访问 两种调试端口 2线串行 SW DP 口或JTAG JTAG DP 口 Flash地址重载和断点单元 FPB 实现断点和代码修补 数据观察点 DWT 程序指令跟踪宏单元 ITM 支持printf类型的调试可选的嵌入式跟踪宏单元 ETM 实现指令跟踪 跟踪端口单元 TPIU 连接跟踪端口分析仪 2 1 4CM3微处理器的特点 调试方面 2 1 4CM3微处理器的特点 与ARM7TDMI比较
5、2 2CM3的工作模式及状态 访问级别 特权级和用户级出于安全考虑 防止意外 恶意访问破坏重要数据 工作模式 处理模式和线程模式分别用于处理异常和普通程序工作状态 Thumb状态和调试状态Thumb状态 16位和32位 半字对齐 的Thumb和Thumb 2指令的执行状态 调试状态 处理器停止并进行调试的状态 特权 级 访问和用户 级 访问 处理模式 线程模式 特权访问 用户访问 始终特权访问 特权执行可以访问所有资源 非特权对有些资源的访问受到限制或不允许访问 如部分指令 设置FAULTMASK和PRIMASK的CPS指令 对系统控制空间 SCS 的大部分寄存器的访问 特权访问和用户访问 非
6、特权访问 的区别 1 线程模式 CM3处理器支持两种工作模式 线程模式和处理模式 2 处理模式 在复位时处理器进入线程模式 异常返回时处理器进入线程模式 在线程模式下 所有代码可由特权级和用户级访问 出现异常时处理器进入处理模式 在处理模式中 所有代码只能由特权级访问 CM3操作模式的转换 线程模式特权访问 复位 处理模式特权访问 异常 线程模式用户访问 异常 异常退出 CONTROL 0 1 CONTROL 0 0 MSR指令置位CONTROL 0 2 3CM3的寄存器 通用寄存器 R0 R7 R8 R12 堆栈指针 R13 链接寄存器 R14 程序计数器 R15 程序状态寄存器 APSR
7、IPSR EPSR 异常中断寄存器 PRIMASK FAULTMASK BASEPRI 控制寄存器 CONTROL 1 32位通用寄存器 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 SP R14 LR R15 PC XPSR r0 r12 为13个通用寄存器 低寄存器 r0 r7可以被指定通用寄存器的所有指令访问 高寄存器 r8 r12可以被指定通用寄存器的所有32位指令访问 不能被16位指令访问 SP process SP main 2 分组的堆栈指针 R13 SP R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R
8、12 R13 SP R14 LR R15 PC XPSR SP main SP process 处理模式 线程模式 可用MSP 始终使用MSP 也可用PSP 进程堆栈指针 主堆栈指针 通过MSR指令修改CONTROL 1 进行堆栈切换 线程模式主堆栈 线程模式进程堆栈 CONTROL 1 1 0 控制寄存器的第1位 一般通过中断返回进行堆栈切换 MSR指令切换用的极少 3 链接寄存器 LR R14 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 SP R14 LR R15 PC XPSR 链接寄存器 LR 在执行分支 branch 和链接 BL 指令
9、或带有交换的分支和链接指令 BLX 时 LR用于保存PC的返回地址 主要用于保存子程序的返回地址 LR也用于异常返回 4 程序计数器R15 PC R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 SP R14 LR R15 PC XPSR 程序计数器 PC 程序计数器总是指向正在取指的指令 程序状态寄存器 XPSR 用于指示程序的运行状态 5 XPSR 程序状态寄存器 执行状态寄存器 EPSR 应用状态寄存器 APSR 中断状态寄存器 IPSR APSR的位分配 负数或小于标志 1 结果为负数或小于0 结果为正数或大于 零标志 1 结果为00 结果为非
10、0 溢出标志 1 溢出0 没有溢出 进位 借位标志 1 进位或借位0 没有进位或借位 饱和 stickysaturation 标志 程序状态寄存器 应用状态寄存器 APSR 程序状态寄存器 中断状态寄存器 IPSR IPSR为当前被响应的异常的ISR编号 IPSR的位分配 ISRNUMBER基础级别 0Reset 1NMI 2SVCall 11 程序状态寄存器 执行状态寄存器 EPSR 为什么需要执行状态寄存器EPSR LDM STM和If then指令 为多周期指令 如果在执行以上多周期指令时发生异常 处理器会暂时停止以上指令的操作 进入异常 这时需要保护现场 LDM指令 STEP1 STE
11、P2 STEP3 STEP4 异常 异常程序 EPSR使用的是 26 24 和 15 10 位 6 异常中断寄存器 6 1中断屏蔽寄存器 PRIMASK 相当于中断总开关 为1 所有中断被屏蔽 为0 中断能正常响应 PRIMASK 屏蔽所有中断 响应中断 1 0 只有最低位有效 6 2中断屏蔽寄存器BASEPRI 可屏蔽等于和低于某个优先级的中断 例如 把BASEPRI设置为0X40 即2 5 则2和2以上优先级的中断被屏蔽 只有0和1优先级的中断不被屏蔽 注 BASEPRI与优先级分组有关 stellaris系列处理器使用高3位来配置 7 控制寄存器CONTROL CONTROL 1 0 由
12、两个状态位组成 寄存器总结 2 4CM3的总线接口 主要内容ARM的总线标准CM3的总线结构 2 4 1ARM总线标准 ARM微控制器使用的是AMBA总线体系结构AMBA AdvancedMicrocontrollerBusArchitecture 是ARM公司公布的总线标准 先进的AMBA规范定义了2种总线 AHB总线 AdvancedHigh performanceBus 用于连接高性能系统模块 它支持突发数据传输 不间断的连续传输 方式及单个数据传输方式 所有时序参考同一个时钟沿 APB总线 AdvancePeripheralBus 是一个简单接口支持低性能的外围接口 2 4 2CM3总
13、线结构 1 ICode 传送指令指令存储区总线 0 x0 0 x1fffffff AHB 2 DCode 传送数据 调试数据指令存储区总线 0 x0 0 x1fffffff AHB 3 系统总线 AHB 访问存储区 片上设备 片外设备访问区域 系统存储0 x20000000 0 xdfffffff 0 xe0100000 0 xffffffff4 内部专用外设总线 0 xe0000000 0 xe003ffff AHB 访问CM3内部组件 NVIC DWT FPB MPU5 外部专用外设总线 0 xe0040000 0 xe00fffff APB 访问CM3外部组件 ETM TPIU ROM表
14、 Cortex M3模块的内部方框图 2 5 1数据类型与存储器格式 Cortex M3既可使用大端格式也可使用小端格式访问存储器 Cortex M3处理器有一个可配置引脚BIGEND 用来选择小端格式或大端格式 通常是以小端格式访问代码 小端格式是ARM处理器的默认存储器格式 2 5存储器的组织与映射 小端数据格式 高字节在高地址 低字节在低地址 大端数据格式 字低节在高地址 高字节在低地址 1 RAM 1 静态RAM cache 2 动态RAM 内存2 ROM 只读3 Flash 1 NANDFlash 区块读写 大容量 2 NORFlash 随机读写 容量小 可运行装载在其中的代码 2
15、5 2存储器层次结构 2 5 3存储组织 Cortex M3处理器的存储系统采用统一编址方式 程序存储器 数据存储器 寄存器以及输入输出端口被组织在同一个4GB的线性地址空间内 小端方式存放 Cortex M3系列处理器将可访问的存储器空间被分成8个主块 2 5 4STM32存储器映射 1系统总线构架 四个主动单元 Cortex M3内核的ICode总线 I bus DCode总线 D bus System总线 S bus 和通用DMA GP DMA 四个被动单元 内部SRAM 内部Flash存储器 FSMC AHB到APB的桥 AHB2APBx 连接所有的APB设备 总线结构中各单元的功能
16、ICode总线 将Flash存储器指令接口与Cortex M3内核的指令总线相连接 用于指令预取 DCode总线 将Flash存储器的数据接口与Cortex M3内核的DCode总线相连接 用于常量加载和调试访问 System总线 将Cortex M3内核的System总线 外设总线 连接到总线矩阵 DMA总线 将DMA的AHB主控接口与总线矩阵相连 总线矩阵 用于连接三个主动单元部件和三个被动单元 负责协调和仲裁Cortex M3内核和DMA对SRAM的访问 仲裁采用轮换算法 AHB APB桥 两个AHB APB桥在AHB和2个APB总线之间提供完全同步连接 2STM32存储器映射 STM32系列处理器将可访问的存储器空间被分成8个主块 每个块为512MB 见图2 13外设地址见表2 9 表2 10 表2 11 2 5 5位带操作 支持了位带操作后可以使用普通的指令来对单一的比特进行读写 在CM3中 有两个区中实现了位带操作 其中一个是SRAM区的最低1MB范围 第二个则是片内外设区的最低1MB范围 这两个区中的地址除了可以像普通的RAM一样使用外 它们还都有自己的 位带别名区 位带