




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ARMCortex M0处理器体系结构第一部分 单元大纲 ARM体系和处理器什么是ARM架构ARM处理器系列ARMCortex M架构系列Cortex M0处理器ARM处理器Vs ARM体系ARMCortex M0处理器Cortex M0处理器概述Cortex M0框图Cortex M0寄存器Cortex M0内存映射Cortex M0异常处理 ARM体系和ARM处理器 什么是ARM架构 ARM架构是一种基于RISC技术的处理器架构因其低功耗而出名 因此广泛应用在移动设备中 诸如手机和平板中都有由ARM公司设计并授权一个很大的生态圈来生产ARM控股设计基于ARM的处理器的公司 并不生产 但是授权其他半导体合作厂商使用其设计来制造和销售产品给他们的客户 同时还提供其他设计 比如物理IP 图形核和开发工具 ARM处理器系列 Cortex A系列 应用 用于开放操作系统的高性能处理器 应用产品包括手机 数字电视 电子书和家庭网关等 Cortex R系列 实时 对于实时应用有杰出的性能 应用产品包括汽车刹车系统 动力传动系统等 Cortex M系列 单片机 用于特定的单片机应用的顾忌成本的解决方案 应用产品包括单片机 混合信号设备 智能传感器 车体电路和气囊等 SecurCore系列高安全性的应用 早期的经典处理器包括ARM7 ARM9 ARM11系列 Cortex A Cortex A57Cortex A53Cortex A15Cortex A9Cortex A8Cortex A7Cortex A5Cortex R7Cortex R5Cortex R4Cortex M4Cortex M3Cortex M1Cortex M0 Cortex M0SC000SC100SC300ARM11ARM9ARM7 Cortex R Cortex M SecurCore Classic AsofSept2013 设计一个基于ARM的SoC 从ARM或其他第三方IP厂家获得一组IP核 把这些IP核集成进单个芯片的设计中 把设计交给半导体厂家来做芯片生产 ROM ARM处理器 RAM 系统总线 外围部件 外部接口 SoC SoC设计 芯片制造 可授权的IP IP库 Cortex A9 Cortex R5 Cortex M0 ARM7 ARM9 ARM11 AXI总线 AHB总线 APB总线 GPIO I O块 定时器 DRAM控制 FLASH控制 SRAM控制 ARMCortex M架构系列 Cortex M系列 Cortex M0 M0 M1 M3 M4 低功耗更低的能耗 更长的电池寿命更小的代码更低的硅片成本易于使用更快的软件开发和重用嵌入式应用智能仪表 人机接口设备 汽车和工业控制系统 白色商品 消费产品和医疗仪器 AsofSept2013 ARMCortex M架构系列 Cortex M0处理器 最小的ARM处理器极小的硅片面积极少的门数量 最低配置大约1 2万个门 代码密度高以16位Thumb指令为基础加上一些强大的32位指令低功耗16 W MHz 90LP工艺 最小配置 简单性只有56条指令对C语言友好更确定的响应时间使用ARMv6 M架构 ARM处理器Vs ARM架构 ARM架构定义了指令集的细节 程序的模型 异常模型和内存映射 相关文档在ArchitectureReferenceManual 架构参考手册 中 ARM处理器是用一种ARM架构开发出来的 更多的实现细节 比如时序数据以及和实现相关的数据 相关文档在处理器的TechnicalReferenceManual 技术参考手册 中 ARMv4 V4t架构 ARMv5 v4E架构 ARMv6架构 ARMv7架构 ARMv6 M如 Cortex M0 M1 如ARM7TDMI 如ARM9926EJ S 如ARM1136 ARMv8架构 ARMv7 A如Cortex A9 ARMv7 R如Cortex R4 ARMv7 M如Cortex M3 ARMv8 A如Cortex A53Cortex A57 ARMv8 R 2013年9月的数据 ARM处理器Vs ARM架构 Cortex M0 v6 MARMv6架构的Thumb指令集 ARMv7 M架构的内存映射 异常模型和Thumb 2系统 低功耗优化的设计 ARMv6 M架构 ARMv6架构 ARMv7 M架构 Thumb指令集 内存映射异常模型Thumb 2系统 低功耗优化的设计 ARMCortex M0处理器概述 Cortex M0概述 32位精简指令集计算 RISC 处理器冯 诺伊曼架构数据和指令共享单个总线接口 指令集56条指令 是Thumb 1 16位 和Thumb 2 16 32位 的子集 支持的中断1个不可屏蔽中断 NMI 1到32个物理中断支持睡眠模式 Cortex M0框图 内部总线系统 AHBLITE总线接口 唤醒中断控制器 WIC 处理器核心 嵌套向量化中断控制器 NVIC 调试子系统 中断请求和NMI ARMCortex M0微处理器 内存与外围部件 JTAG 串行线调试接口 Wire 电源管理接口 Cortex M0框图 处理器核心包括内部寄存器 ALU 数据通路和一些控制逻辑 三级流水线 取指 译码和执行 寄存器包括16个32位寄存器 都可以用做通用和特殊用途 嵌套向量化中断控制器 NVIC 最多32个中断请求信号和一个不可屏蔽中断 NMI 自动处理嵌套的中断 比如比较中断请求和当前正在处理的中断的优先级 取指 译码 执行 取指 译码 执行 取指 译码 执行 指令1 指令2 指令3 取指 译码 执行 指令4 Time Cortex M0框图 总线系统包括内部总线系统 处理器核心中的数据通路和AHBLITE接口单元 全部都是32位宽度 AHBLITE是许多ARM处理器所采用的片上总线协议 在IC设计业内得到广泛使用 调试子系统处理调试控制 程序断点和数据观察点 watchpoint 当调试事件发生的时候 它可以把处理器核心置于停止状态 让开发人员可以分析处理器此刻的状态 比如查看寄存器和标志的值 唤醒中断控制器 WIC 可选 对于低功耗应用 单片机可以关闭大多数部件进入睡眠模式 当检测到一个中断请求的时候 WIC可以通知电源管理单元来给系统供电 ARMCortex M0处理器的寄存器 Cortex M0寄存器 处理器寄存器内部的寄存器是用来存储和处理处理器核心内的临时数据的 所有的寄存器都在处理器核心内 因此能更快地被读写 load store架构要处理内存中的数据 就必须把数据从内存装载到寄存器中 在处理器中处理 需要的话 再写回到内存中 Cortex M0寄存器寄存器组 bank 16个32位寄存器 13个是通用的 特殊寄存器 Cortex M0寄存器 R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 分组 R14 R15 xPSR 堆栈指针 SP 链接寄存器 LR 程序计数器 PC PRIMASK CONTROL ProgramStatusRegisters PSR Interruptmaskregister Stackdefinition 特殊寄存器 寄存器组 MSP PSP 主堆栈指针 进程堆栈指针 APSR EPSR IPSR 应用程序PSR 执行PSR 终端PSR 低段寄存器 高段寄存器 通用寄存器 Cortex M0寄存器 R0 R12 通用寄存器低段寄存器 R0 R7 可以由任何指令读写 高段寄存器 R8 R12 有时候不能被某些Thumb指令读写 R13 堆栈指针 SP 记录堆栈当前的地址 在任务之间切换的时候 用来保存程序的上下文 Cortex M0有两个SP 一个是主SP MSP 用在需要特权访问的程序中 比如OS内核及异常处理程序 另一个是进程SP PSP 用在普通的应用程序中 不跑异常处理程序的时候 程序计数器 PC 记录当前指令代码的地址 每个取值操作自动递增4 对于32位指令码而言 除非是遇到了跳转指令 像函数调用这样的跳转指令 会把PC变到一个特定的地址 同时把当前的PC保存在链接寄存器 LR 中 数据 数据 PC SP 地址 低 高 压栈 退栈 堆栈 代码 堆 Cortex M0寄存器 R14 链接寄存器 LR LR用来保存子程序或函数调用时的返回地址 函数结束的时候 程序计数器 PC 装入LR中的值 PC LR 主程序代码 子程序 当前PC 把LR里的地址装入PC 从而返回到主程序中 当前LR 从子程序返回主程序 PC LR 主程序代码 子程序 当前PC 1 把当前的PC保存到LR中 2 把子程序的起始地址装入PC 调用子程序 代码区 代码区 Cortex M0寄存器 xPSR 混合的程序状态寄存器提供程序运行的信息及ALU标志 应用PSR APSR 中断PSR IPSR 执行PSR EPSR N Z C V ISR编号 保留 保留 保留 T 保留 T N Z C V ISR编号 APSR IPSR EPSR xPSR 第0位 第8位 第16位 第24位 第31位 Cortex M0寄存器 APSRN 负标志如果ALU的结果是负数就置为1 Z 零标志如果ALU的结果是0就置为1 C 进位标志如果无符号数发生了溢出就置为1 V 溢出标志如果有符号数发生了溢出就置为1 IPSRISR编号当前正在执行的中断服务程序的编号EPSRT Thumb状态因为Cortex M0只支持Thumb状态 所以始终为1 Cortex M0Registers PRIMASK 中断屏蔽特殊寄存器1位的PRIMASK置该位为1就阻塞了不可屏蔽中断 NMI 和硬失效异常以外的所有中断 CONTROL 特殊寄存器1位的堆栈定义置为1 使用进程堆栈指针 PSP 清为0 使用主堆栈指针 MSP 保留 保留 PRIMASK PRIMASK CONTROL bit8 bit16 bit24 bit31 堆栈定义 ARMCortex M0处理器内存映射 Cortex M0内存映射 Cortex M0处理器有4GB的内存地址空间这4GB的内存空间从架构上被定义成了几块区域每块区域有建议的用途 这样便于软件程序员在不同的芯片之间移植软件不过 尽管有默认的内存映射 内存的实际使用是可以由用户灵活定义的 例外的是一些固定的内存地址 如内部私有外设总线 Cortex M0内存映射 私有外设 如NVIC SCS 主要用作外部外设 如SDcard 主要用做外部存储器 如外部DDR FLASH LCD 主要用做片上外设 如AHB APB外围部件 主要用做数据存储器 如片上的SRAM SDRAM 主要用做程序代码 如片上FLASH 保留 外部器件 外部RAM 外围部件 SRAM 代码 0 xFFFFFFFF 0 xE0000000 私有外设总线 0 xDFFFFFFF 0 xA0000000 0 x9FFFFFFF 0 x60000000 0 x5FFFFFFF 0 x40000000 0 x3FFFFFFF 0 x1FFFFFFF 0 x20000000 0 x00000000 512MB 512MB 512MB 1GB 1GB 512MB 0 xE00FFFFF 0 xE0100000 保留做其他用途 ROM表 保留 系统控制区 SCS 保留 断点单元 数据观察指针单元 保留 调试控制 嵌套的向量中断控制器 NVIC 保留 SysTick定时器 保留 系统控制块 SCB Cortex M0内存映射 代码区主要用于存储程序代码 也可以用来做数据存储 片上的存储器 比如片上的FLASH SRAM区主要用来存储数据 比如堆和堆栈 也可以用来存储程序代码 片上存储器 尽管名字可能叫做 SRAM 实际的器件可能是SRAM SDRAM或其他类型的存储器 外设区主要用做外设 比如先进高性能总线 AHB 或先进外设总线 APB 上的外围部件 片上外设 Cortex M0内存映射 外部RAM区主要用于保存大的数据块 或用作内存cache 片外存储器 比片上SRAM区慢 外部器件区主要用来映射外部器件 片外器件 如SD卡 内部私有外设总线 PPB 在处理器中用于处理器的内部控制 在PPB中 有一块特殊的内存空间是定义做系统控制空间 SystemControlSpace SCS 的 嵌套的向量化中断控制器 NVIC 是SCS的一部分 Cortex M0内存映射的例子 AHBbus 外部SRAM FLASH 外部LCD SD卡 Cortex M0 PPB SCS NVIC DebugCtrl 片上FLASH 代码区 片上SRAM SRAM区 外设区 外部存储器接口 外部RAM区 外部器件接口 外部器件区 定时器 UART GPIO 芯片硅片 Cortex M0程序映像 Cortex M0里的程序映像包括向量表 包括异常的起始地址 向量 和主堆栈指针 MSP 的值 C的启动代码 程序代码 应用程序代码和数据 C的库代码 C库函数的程序代码 0 x00000000 初始的MSP值 代码区 启动代码和程序代码和C库代码 向量表 程序映像 Reset 启动 向量 NMI向量 硬失效向量 保留 SVC向量 保留 PendSV向量 SysTick向量 中断向量 0 x00000000 0 x00000004 0 x00000008 0 x0000000C 0 x0000002C 0 x00000038 0 x00000040 0 x0000003C Cortex M0程序映像 在启动后 首先读入初始MSP值 然后读入第一个启动向量 跳转到程序执行的初始地址 启动处理程序 依次执行程序指令 Cortex M0大小端 大小端指的是内存中字节存储的顺序小端 低位在前 一个字的数据中最低的字节保存在位0到位7大端 高位在前 一个字的数据中最低的字节保存在位24到31Cortex M0既支持小端也支持大端不过 大小端只是硬件层面上的事情 ARMCortex M0处理器异常 Cortex M0异常处理 异常是一种事件 它导致程序流退出当前的程序线程 转而执行与这个事件相关的一段代码事件可以是内部的也可以是外部的外部的事件也叫做中断 IRQ 线程模式 异常模式 内部或外部事件 执行异常处理程序 执行正常代码序列 完成处理 现场保护 现场恢复 Cortex M0异常处理 异常处理程序一小段执行在异常模式的软件代码 如果一个中断请求 IRQ 导致了这个异常 那么也可以被叫做中断处理程序 或中断服务程序 ISR 上下文切换上下文保存 现场保护 在进入异常模式之前 当前程序的上下文 比如寄存器当前的值要推入堆栈 上下文恢复 现场恢复 在处理程序完成后 之前保存的上下文要从堆栈中弹出到寄存器里去 线程模式 异常模式 内部或外部事件 执行异常处理程序 执行正常代码序列 完成处理 现场保护 现场恢复 Cortex M0异常处理 异常优先级异常 或中断 一般要划分成几个层次或优先级 更高优先级的异常可以在较低优先级异常处理期间触发并得到服务 常被称作是嵌套的异常 异常可以由软件开启或禁止 Cortex M0中断控制器支持多达32个IRQ输入 和一个不可屏蔽中断 NMI 输入 NMI和IRQ类似 但是不能被禁止 而且具有最高的优先级 在诸如工业控制或汽车这样的安全性很关键的系统中很有用 ARMv7 M的向量表 第一项是初始主SP其他所有的都是异常处理程序的地址最低位必须 1 因为是Thumb 这个表最多可以有496个外部中断有具体实现来决定表的大小最大可以2048个字节这个表可以被重定位使用VectorTableOffset 向量表偏移 寄存器启动的时候仍然需要在0 x0的地方有起码的表项每个异常有一个向量编号在中断控制和状态 InterruptControlandState 寄存器中用来标识当
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版推土机租赁与工程进度保证协议
- 2025年大宗货物运输集装箱清洗与消毒服务合同
- 2025版网约车司机信用保证合同实施细则
- 2025版绿色环保瓦工班组工程承包协议
- 2025年度水暖工程设计与施工一体化服务合同范本
- 2025版冷链送餐配送合同书
- 2025年工业互联网在新能源行业安全生产中的应用报告
- 2025房地产项目财务顾问与项目后期运营协议
- 2025版教育培训商标使用权转让协议
- 文物数字化展示与传播策略在文化遗产数字化展示中的虚拟现实技术应用报告
- 微生物发酵中药研究进展
- 《矿业权评估指南》
- 机动车维修竣工出厂合格证样式
- 广东省地质灾害危险性评估报告
- 整套教学课件《现代心理与教育统计学》研究生
- 手机拍照技巧大全课件
- RBA(原EICC)ERT应急准备与响应培训课件
- 工业建筑钢筋工程监理实施细则
- 河西走廊课件
- 2023版北京协和医院重症医学科诊疗常规
- 人工膝关节置换术护理查房
评论
0/150
提交评论