




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2 ARMCortex M3体系结构 1 2 ARMCortex M3体系结构 2 1 CM3微处理器核结构2 2处理器工作模式及状态2 3 寄存器2 4总线接口2 5存储器的组织与映射2 6 指令集2 7 流水线2 8 异常与中断2 9存储器保护单元MPU2 10STM32微控制器概述 2 2 1CM3微处理器核结构 集成了内核和高级系统外设的分级处理器Cortex M3内核哈佛体系结构拥有分支预测功能的三级流水线Thumb 2指令集和传统的Thumb指令集带有硬件除法和单周期乘法的ALUCortex M3处理器Cortex M3内核可配置的中断控制器总线矩阵先进的调试组件可选择的MPU 存储器保护单元 ETM 嵌入式跟踪宏单元 3 2 ARMCortex M3体系结构 2 1 CM3微处理器核结构2 2处理器工作模式及状态2 3 寄存器2 4总线接口2 5存储器的组织与映射2 6 指令集2 7 流水线2 8 异常与中断2 9存储器保护单元MPU2 10STM32微控制器概述 4 工作模式和特权级别 处理模式 线程模式 特权级 用户级 始终特权级 2 2处理器工作模式及状态 工作模式用于区别普通应用程序的代码和异常服务例程的代码 包括中断服务例程的代码 特权级别可以提供一种存储器访问的保护机制 使得普通的用户程序代码不能意外地 甚至是恶意地执行涉及到要害的操作 5 特权执行可以访问所有资源 非特权执行时对有些资源的访问受到限制或不允许访问 特权访问和用户访问 非特权访问 的区别 用户访问 特权访问 6 2 2处理器工作模式及状态 线程模式 Cortex M3处理器支持两种工作模式 线程模式和处理模式 处理模式 在复位时处理器进入线程模式 异常返回时处理器进入线程模式 特权和用户 非特权 代码能够在线程模式下运行 出现异常时处理器进入处理模式 在处理模式中 所有代码都是特权访问的 7 2 2处理器工作模式及状态 线程模式特权访问 复位 处理模式特权访问 异常 线程模式用户访问 异常 异常退出 CONTROL 0 1 CONTROL 0 0 MSR指令置位CONTROL 0 8 CONTROL 0 1 0 特权访问和用户访问的切换 控制寄存器的第0位 在处理模式下 通过MSR指令清零CONTROL 0 退出处理模式进入线程模式时切换到特权访问 MOVR0 0X00MSRCONTROLR0 在处理模式下 通过MSR指令置位CONTROL 0 退出处理模式进入线程模式时切换到用户访问 在线程模式特权访问下 通过MSR指令置位CONTROL 0 即可由特权访问进入用户访问 MRSR0CONTROLORRR0 R0 0 x01MSRCONTROLR0 9 2 ARMCortex M3体系结构 2 1 CM3微处理器核结构2 2处理器工作模式及状态2 3 寄存器2 4总线接口2 5存储器的组织与映射2 6 指令集2 7 流水线2 8 异常与中断2 9存储器保护单元MPU2 10STM32微控制器概述 10 32位CM3寄存器 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 SP R14 LR R15 PC r0 r12 为13个通用目的寄存器 低组寄存器 r0 r7可以被指定通用寄存器的所有指令访问 高组寄存器 r8 r12可以被指定通用寄存器的所有32位指令访问 16位Thumb指令不能访问它们 32位的Thumb 2指令则不受限制 SP process SP main 11 分组的堆栈指针 SP R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 SP R14 LR R15 PC XPSR SP main SP process 处理模式 线程模式 可用MSP 始终使用主堆栈指针 MSP 也可用进程堆栈指针 PSP 特权级使用 用户级使用 12 主堆栈和进程堆栈 Cortex M3内核有两个堆栈指针 MSP和PSP 结束复位后 所有代码都使用主堆栈 所有异常都使用主堆栈 异常处理程序 例如SVC 可以通过改变其在退出时使用的EXC RETURN值来改变线程模式使用的堆栈 在线程模式中 使用MSR指令对CONTROL 1 执行写操作也可以从主堆栈切换到进程堆栈 堆栈指针r13是分组寄存器 在SP main和SP process之间切换 在任何时候 进程堆栈和主堆栈中只有一个是可见的 由r13指示 13 堆栈与微处理器模式的对应关系 通过异常进行堆栈切换 线程模式主堆栈 复位 处理模式主堆栈 产生异常 线程模式进程堆栈 产生异常 异常退出 EXC RETURN 3 0 0b1101 EXC RETURN 3 0 0b1001 14 堆栈与微处理器模式的对应关系 通过MSR指令修改CONTROL 1 进行堆栈切换 线程模式主堆栈 线程模式进程堆栈 CONTROL 1 1 0 控制寄存器的第1位 一般通过中断返回进行堆栈切换 MSR指令切换用的极少 15 链接寄存器 LR R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 SP R14 LR R15 PC 链接寄存器 LR 在执行分支 branch 和链接 BL 指令或带有交换的分支和链接指令 BLX 时 LR用于保存PC的返回地址 主要用于保存子程序的返回地址 LR也用于异常返回 16 链接寄存器 LR R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 SP R14 LR R15 PC intmain delay SetLED1 voiddelay BLdelay delay BXLR 0X20F0 0X20F4 地址 R14 LR 0X20F4 0X10F4 0X10F4 执行BL指令 LR的值同时更新 17 寄存器 PC R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 SP R14 LR R15 PC XPSR 程序计数器 PC 程序计数器总是指向正在取指的指令 该寄存器的位0始终为0 因此 指令始终与字或半字边界对齐 程序状态寄存器 XPSR 用于指示程序的运行状态 18 CM3的状态寄存器 应用程序PSR APSR 中断号PSR IPSR 执行PSR EPSR 19 异常中断寄存器 20 控制寄存器 CONTROL 21 2 ARMCortex M3体系结构 2 1 CM3微处理器核结构2 2处理器工作模式及状态2 3 寄存器2 4总线接口2 5存储器的组织与映射2 6 指令集2 7 流水线2 8 异常与中断2 9存储器保护单元MPU2 10STM32微控制器概述 22 2 4总线接口 总线定义总线是CPU与存储器和设备通信的机制 是计算机各部件之间传送数据 地址和控制信息的公共通道 片内总线或内部总线 连接CPU内部各主要功能部件 片外总线 CPU与存储器 RAM和ROM 和I O接口之间进行信息交换的通道 数据总线Dbus 地址总线Abus 控制总线Cbus 按相对于CPU位置划分 按功能和信号类型 总线分类 23 原因 数据宽度 高速总线通常提供较宽的数据连接 成本 高速总线通常采用更昂贵的电路和连接器 桥允许总线独立操作 这样在I O操作中可提供某些并行性 一个微处理器系统可能含有多条总线 高速总线 低速总线 高速设备 低速设备 桥 总线互联的电路 2 4总线接口 总线定义总线是CPU与存储器和设备通信的机制 是计算机各部件之间传送数据 地址和控制信息的公共通道 24 AMBA总线 片上总线标准种类繁多 而由ARM公司推出的AMBA AdvancedMicrocontrollerBusArchitecture 片上总线受到了广大IP开发商和SoC系统集成者的青睐 已成为一种流行的工业标准片上结构 AMBA规范主要包括了AHB AdvancedHighperformanceBus 系统总线和APB AdvancedPeripheralBus 外设总线 二者分别适用于高速与相对低速设备的连接 25 Cortex M3模块的内部方框图 I Code总线负责在0 x0000 0000 0 x1FFF FFFF之间的取指操作 D Code总线负责在0 x0000 0000 0 x1FFF FFFF之间的数据访问操作 系统总线负责在0 x2000 0000 0 xDFFF FFFF和0 xE010 0000 0 xFFFF FFFF之间的所有数据传送 取指和数据 外部专用外设总线负责0 xE004 0000 0 xE00F FFFF之间的私有外设访问 内部专用外设总线负责0 xE000 0000 0 xE003 FFFF之间的私有外设访问 26 2 ARMCortex M3体系结构 2 1 CM3微处理器核结构2 2处理器工作模式及状态2 3 寄存器2 4总线接口2 5存储器的组织与映射2 6 指令集2 7 流水线2 8 异常与中断2 9存储器保护单元MPU2 10STM32微控制器概述 27 存储器格式 存储器层次结构 RAM静态RAM和动态RAMROMPROM EPORM EEPROMFLASHNORFLASH NANDFLASH 28 存储器格式 小端存储器系统 在小端格式中 数据的高字节存放在高地址中 大端存储器系统 在大端格式中 数据的高字节存放在低地址中 0 x120 x340 x560 x78 0 x780 x560 x340 x12 29 CM3存储器映射 30 主系统由以下部分构成 四个驱动单元 Cortex M3内核ICode总线 I bus DCode总线 D bus 和系统总线 S bus GP DMA 通用DMA 四个被动单元 内部SRAM 内部闪存存储器 FSMC AHB到APB的桥 AHB2APBx 它连接所有的APB设备 1 STM32总线结构 2 5 4STM32存储器映射 31 可访问的存储器空间被分成8个主要块 每个块为512MB 其他所有没有分配给片上存储器和外设的存储器空间都是保留的地址空间 右图中的阴影部分 片外Flash的起始地址 0 x08000000 片内SRAM的起始地址 0 x20000000 2STM32存储器映射 32 KEIL MDK中的配置 512K 128K 按芯片实际容量填写 通常MDK会自动配置完成 33 2 5 5位绑定操作 Cortex M3存储器空间中包括两个位段区 SRAM区的最低1MB空间和外设存储区的最低1MB空间 这两个位段区分别与两个32M的位段别名区对应 位段区中的每一位映射到位段别名区中的一个字 通过对别名区中某个字的读写操作可以实现对位段区中某一位的读写操作 34 35 位段别名区中的字与位段区的位映射公式 bit word addr bit band base byte offsetx32 bit number 4例如 SRAM位段区中地址为0 x20000300的字节中的位2被映射到别名区中的地址为 0 x22006008 0 x22000000 0 x300 32 2 4 的字 36 对别名区中某个字进行写操作 该字的第0位将影响位段区中对应的位 对别名区中某个字进行读操作 若位段区中对应的位为0则读的结果为0 x00 若位段区中对应的位为1则读的结果为0 x01 对别名区的读写可以实现对位段区中每一位的原子操作 而且仅只需要一条指令即可实现 37 2 ARMCortex M3体系结构 2 1 CM3微处理器核结构2 2处理器工作模式及状态2 3 寄存器2 4总线接口2 5存储器的组织与映射2 6 指令集2 7 流水线2 8 异常与中断2 9存储器保护单元MPU2 10STM32微控制器概述 38 2 6指令集 39 2 6 1指令集 在过去 做ARM开发必须处理好两个状态 这两个状态是井水不犯河水的 它们是 32位的ARM状态和16位的Thumb状态 当处理器在ARM状态下时 所有的指令均是32位的 哪怕只是个 NOP 指令 此时性能相当高 而在Thumb状态下 所有的指令均是16位的 代码密度提高了一倍 不过 thumb状态下的指令功能只是ARM下的一个子集 结果可能需要更多条的指令去完成相同的工作 导致处理性能下降 伴随着Thumb 2指令集的横空出世 终于可以在单一的操作模式下搞定所有处理了 再也没有来回切换的事来烦你了 事实上 Cortex M3内核干脆都不支持ARM指令 中断也在Thumb态下处理 以前的ARM总是在ARM状态下处理所有的中断和异常 这可不是小便宜 它使CM3在好几个方面都比传统的ARM处理器更先进 消灭了状态切换的额外开销 节省了执行时间和指令空间 不再需要把源代码文件分成按ARM编译的和Thumb编译的 软件开发管理大大减负 无需再反复地求证和测试 究竟该在何时何地切换到何种状态下 我的程序才最有效率 开发软件容易多了 40 40 2 ARMCortex M3体系结构 2 1 CM3微处理器核结构2 2处理器工作模式及状态2 3 寄存器2 4总线接口2 5存储器的组织与映射2 6 指令集2 7 流水线2 8 异常与中断2 9存储器保护单元MPU2 10STM32微控制器概述 41 带分支预测的3级流水线 Cortex M3的流水线分为3级 分别为 取指 译码 执行 在译码时进行分支预测 遇跳转指令也不会打断流水线 PC值总是指向正在取指的指令 42 三级流水线结构的指令执行顺序 周期2 周期1 周期3 周期4 处理器执行一条指令的三个阶段 43 三级流水线结构的指令执行顺序 周期2 周期1 周期3 周期4 处理器执行一条指令的三个阶段 44 三级流水线结构的指令执行顺序 周期2 周期1 周期3 周期4 处理器执行一条指令的三个阶段 45 三级流水线结构的指令执行顺序 周期2 周期1 周期3 周期4 处理器执行一条指令的三个阶段 46 2 ARMCortex M3体系结构 2 1 CM3微处理器核结构2 2处理器工作模式及状态2 3 寄存器2 4总线接口2 5存储器的组织与映射2 6 指令集2 7 流水线2 8 异常与中断2 9存储器保护单元MPU2 10STM32微控制器概述 47 2 8异常与中断 中断 请求信号来自于CM3内核外面 来自片上外设或外扩的外设 异常 是由于CM3内核的活动而产生的 P52 只要正常的程序被暂时中止 处理器就进入异常模式 异常包括复位 系统故障 外设中断等事件 Cortex M3处理器中存在多种异常类型 系统复位 NMI 不可屏蔽中断 硬件故障 存储器管理 总线故障 使用故障 SVCall 软件中断 调试监控和IRQ中断等 IRQ中断也分为CortexM3内自带的PendSV 系统服务请求 SysTick 系统节拍定时器 和与芯片外设相关的外部中断 1异常与中断概念 48 异常类型表 49 异常类型表 上表其实也是一张完整向量表 当异常产生后 处理器根据中断号从在向量表中取出异常处理函数入口 函数指针 50 3中断 异常过程 从向量表中读SP 更新PC 加载流水线 更新LR 读向量表 硬件压栈 从向量表中读SP 更新PC 加载流水线 更新LR 读向量表 硬件压栈 利用向量表读出的位置更新PC 直到第一条指令开始执行时 才能处理迟来异常 从向量表指向的位置加载指令 它与寄存器压栈操作同时执行 LR设置为EXC RETURN 以便从异常中退出 在复位时 将SP更新为向量表中第1个字的值 读存储器中的向量表 地址为向量表基址 异常号 4 中断函数入口 在所选的堆栈上将xPSR PC LR R12 R3 R2 R1 R0压栈 注意 LR的值并非进入异常程序的地址 注 以上步骤由硬件自动完成 仅需12个时钟周期 51 4占先 用户程序 中断1 中断2 优先级3 优先级2 中断1 中断2 压栈 压栈 出栈 出栈 在异常处理程序中 一个新的异常比当前的异常优先级更高 处理器打断当前的流程 响应优先级更高的异常 此时产生中断嵌套 52 5末尾连锁 用户程序 中断1 中断2 优先级3 优先级2 中断1 中断2 如果此时中断1已经完成 不出栈也不压栈 直接跳至中断2程序 压栈 出栈 中断1结束 末尾连锁是处理器用来加速中断响应的一种机制 在结束ISR时 如果存在一个挂起中断 其优先级高于正在返回的ISR或线程 那么就会跳过出栈操作 转而将控制权让给新的ISR 53 不用未尾连锁的情况 用户程序 中断1 中断2 优先级3 优先级2 中断1 压栈1 出栈1 压栈2 出栈2 中断2 此时压栈2与出栈1的内容完全相同 所以末尾连锁时可省去 在中断1完成后 紧跟着发生中断2 54 迟来是处理器用来加速占先的一种机制 如果在保存前一个占先的状态时出现一个优先级更高的中断 则处理器转去处理优先级更高的中断 开始该中断的取向量操作 状态保存不会受到迟来的影响 因为被保存的状态对于两个中断都是一样的 状态保存继续执行不会被打断 处理器对迟来中断进行管理 直到ISR的第一条指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专业分包施工管理办法
- 肉鸽育雏期管理办法
- 考核评定及管理办法
- 规划设计监理管理办法
- 询价管理办法及流程
- 中学外籍教师管理办法
- 业务超市开发管理办法
- 《审计现场管理办法》
- oa督办平台管理办法
- 西藏旅游景区管理办法
- 小学二年级下安全课件
- T-CSEA 25-2022 批量热浸镀锌行业含锌固废资源化利用技术规范
- 继发性肥胖症的临床特征
- DB21∕T 3149-2019 玉米秸秆还田机械化作业技术规程
- 报价函(工程项目招标文件资料)
- 2024年中级通信专业实务(终端与业务)考试题库大全(含答案)
- 中小学幼儿园食堂食品安全培训课件
- 《国际商务单证》课件
- 电力增容项目施工组织设计
- 2022版ISO27001信息安全管理体系基础培训课件
- 论高校思政教育宏大叙事的有效性建构
评论
0/150
提交评论