关注作者了解更多
我的其他CSDN专栏
关注作者了解更多
资料来源于网络,如有侵权请联系编者
目录
Cortex-M4系统架构(上)
ARM 架构的背景
• Cortex-M4体系架构概述,基本框图
• Cortex-M4与其他内核比较
• Cortex-M4的流水线,内部总线
• Cortex-M4通用寄存器表,特殊寄存器介绍
• Cortex-M4存储模型
• Cortex-M4异常和可嵌套中断向量系统
ARM系列的发展过程
ARM处理器的分类
ARM架构指令集演化
ARMv7
ARMv7定义了3种不同的处理器配置(processor profiles):
- Profile A是面向复杂、基于虚拟内存的OS和应用的
- Profile R是针对实时系统的
- Profile M是针对低成本应用的优化的微控制器的
• 所有ARMv7 profile实现Thumb-2技术
• ARMv7版本开始,型号命名改为cortex-A/R/M
M4处理器特性
ARMv7M架构
- Thumb-2 技术
- SIMD和DSP
- 单周期乘加指令 (支持32 x 32 + 64 -> )
- 可选配的单精度浮点运算单元
- 集成可配置的可嵌套矢量中断控制器NVIC
- 兼容Cortex-M3
微内核结构
- 带分支预测的三级流水线
- 3套AHB-Lite总线接口
可配置超低功耗
深度睡眠模式,中断可唤醒
- 浮点运算单元可单独关闭电源
灵活配置
可配置中断控制器( 1~240个中断源可配置,优先级可配置)
- 可选配的内存保护单元 - MPU(Memory Protection Unit)
- 可选配的调试和跟踪模块
M4为扩展MCU应用范围而生
M4内核模块框图
核心及核心外设
• 核心处理器CORE
• 单精度浮点运算单元FPU
- Float Point Unit
• 嵌套向量中断控制器NVIC
- Nested Vectored Interrupt Controller
• 存储保护单元MPU
- Memory Protection Unit
• 系统控制模块SCB
- System control block
• 系统定时器
- Sysick
调试跟踪接口
闪存修补和断点(FPB)
• 仪表跟踪(ITM)
• 数据观察点与跟踪(DWT)
• 跟踪点接口单元(TPIU)
• 指令跟踪(ETM)
• JTAG调试接口(SWJ-DP) SW-DP调试接口(SW-DP)
总线接口
AHB(Advanced High performance Bus)系统总线
• 指令总线(Instruction Bus)
• 数据总线(Data Bus)
• 系统总线(System Bus)
• APB(Advanced Peripheral Bus)外围总线
• PPB(Private Peripheral Bus)私有外设总线
• 总线矩阵(BusMatrix)
M4内核
核心处理器:中央内核(包含DSP),
- 1.25DMIPS/MHz
- Thumb-2,单周期乘法累加(MAC)单元- 带可选配的单精度浮点运算单元
MIPS: Million Instructions executed Per Second,每秒百万条指令,用来计算同一秒内系统的处理能力,即每秒执行了多少百万条指令。D是Dhrystone的缩写,表示了在Dhrystone这样一种测试方法下的MIPS,Dhrystone是一种整数运算测试程序。。
M4内核外设
FPU
- 支持IEEE 754标准
- 集成了乘法和累加指令集- 乘除、累加和开放运算都有硬件支持- 三级流水线结构
• NVIC嵌套向量中断控制器–可配置的中断控制器
- 中断的具体路数由芯片厂商定义
- 采用向量中断的机制,自动取出对应的服务例程入口地
址,无需软件判定
- 支持中断嵌套- 1:255优先级- NMI & SysTick
内存保护单元MPU
- 选配模块
- 把内存分割成8个区域并进行保护- 非法访问将产生异常中断错误
• SCB系统控制模块
- 编程模型与处理器之间的接口
- 提供系统实现的信息和系统控制,包括异常的配置、控
制和报告
• SysTick定时器
- 倒计时定时器,用于在每隔一定的时间产生一个中断- 系统睡眠模式下也可工作
- OS系统心跳定时
M4调试跟踪接口
SW-DP/SWJ-DP串行调试口和支持JTAG的串行调试口
- 与AHB访问端口(AHB-AP)协同工作,将SW-DP的外部调
试器命令转换成内部总线命令
- 处理器核心没有JTAG扫描链,多数调试功能通过AHB访问
来实现的
- SWJ-DP同时支持串行线协议和JTAG协议,而SW-DP只支持
串行协议
Flash硬件断点控制FPB
- FPB提供flash地址重载和断点功能
- 映射Flash上的指令地址, 当内核访问该指令时, 自动 跳转到FPB指定的指令(通常为SRAM上的地址),实现硬
件断点
仪器跟踪宏单元ITM
- 软件可以直接把控制台消息写到 ITM stimulus 端
口,从而把它们输出成跟踪数据。
- DWT 可以产生硬件跟踪数据包,并通过ITM 把它们
输出。
- ITM 可以产生时间戳数据包并插入到跟踪数据流中,
用于帮助调试器求出各事件的 发生时间。
因为ITM 要使用跟踪端口来输出数据,所以芯片上必须有TPIU 单元,否则无法输出
数据观察跟踪单元DWT
- 可以设置数据观察点
- 当数据地址或数据的值匹配了观察点时,产生了一次匹
配命中事件
- 匹配命中事件用于产生一个观察点事件,激活调试器以 产生数据跟踪信息,或与ETM联动
内嵌跟踪宏单元ETM
- ETM与内核紧密耦合,可实现指令执行的历史记录跟踪。
- ETM 并不会一直精确地输出处理器当前正在执行的地址。
通常它只输出有关程序执行流的信息,并且只有在需要时才输出完整的地址(例如,当一个跳转发生时)。因为调试主机也有一份二进制映像的拷贝,它可以使用此拷贝来重建指令的执行序列。
- ETM 也与其它的调试组件互相交互。例如,它与DWT 的 比较器就有关系:DWT 的比较
- 器可用于产生ETM 的触发信号,或者控制跟踪的启动与
停止。
跟踪端口的接口单元TPIU
- 用于和外部的跟踪硬件(如跟踪端口分析仪)交互
CoreSight ROM表
- 查找表,提供了系统包含哪些系统设备,调试组件,及
寄存器的地址
- 方便芯片厂商根据自己的配置自定义添加模块
- 调试软件根据这些模块来自适应不同的芯片调试资源
- CoreSight(内核景象)调试架构是ARM在推出Cortex之 后推出来的,旨在丰富ARM产品的调试功能
总线互联矩阵BusMatrix
- AHB互连的网络
- 让数据在不同的总线之间并行传送 - 两个总线主机不访
问同一块内存区域
- 可支持bitbanding,实现按位操作一定的区域
• AHB to APB桥接器
- 从AHB总线转换到APB总线的桥接模块
- APB总线用于访问系统上的私有慢速总线外设设备,通常
为私有的调试模块
- 芯片厂商可附加其他的外设设备
AHB-AP桥接
- 用于桥接SW-DP/SWJ-DP到AHB总线互联矩阵,从而发起 AHB访问
调试模式
- 第一种称为“halt”(停机模式),在进入此模式时,
处理器完全停止程序的执行。
- 第二种则称为“debug monitor exception”(调试监视 器模式),此时处理器执行相应的调试监视器异常服务 例程,由它来执行调试任务,此时依然允许更高优先级 的异常抢占它。
I-Code总线和D-Code总线
- 分别用于执行代码空间的指令和数据
System Bus
- 用于访问SRAM和其他外设
PPB
- 内部PPB用于访问ITM、DWT、FPB、MPU和NVIC
- 外部PPB用于访问TPIU、ETM和ROM表
Code是否搬运到RAM中,主要看两点:
1、flash的速度是否满足CPU要求,当前flash使用单双地址、预取等技术,可达到200M左右,当CPU速度小于200M时一般不需要搬运;
2、代码是对flash本身操作的,则必须搬运到RAM运行。
搬运过程如下:1、启动时,代码都存储在flash中,代码包含两
部分,一部分是可以直接在flash中运行的。一部分是必须在RAM中运行的CODE1(比如flash的擦写程序),此外flash中还包含一部分数据data,这部分数据有初始值;
2、启动后,在运行程序之前,需要将CODE1\DATA stack搬运到RAM中,同时在RAM中还要初始化一段区域DATA1,是初始化为0的数据区;
代码数据全部搬运,主要用于CPU频率到200M以上的情况