文章目录

  • Cortex-M4 block diagram
  • 1、NVIC(Nested Vectored Interrupt Controller )
  • 2、FPU(Floating Point Unit)
  • 3、 MPU(Memory Protection Unit)
  • 4、FPB(Flash Patch Breakpoint)
  • 5、DWT(Data Watchpoint and Trace)
  • 6、AHB-Access Port
  • 6.1、AHB Trace Macrocell interface
  • 6.2、 Debug Port AHB-AP interface
  • 7、Bus interfaces
  • 7.1、ICode memory interface
  • 7.2、DCode memory interface
  • 7.3、System interface
  • 7.4、Pipelined instruction fetches(流水线指令获取)
  • 7.5、Private Peripheral Bus (PPB)
  • 8、ITM(Instrumentation Trace Macrocell)
  • 9、WIC(Wake-up Interrupt Controller)
  • 10、JTAG Debug (Serial-Wire or JTAG Debug Interface)
  • 11、ETM(Embedded Trace Macrocell)
  • 12、TPIU(Trace Port Interface Unit)
  • 13、ROM table


Cortex-M4 block diagram

m4项目常用架构 m4构造图_M4

1、NVIC(Nested Vectored Interrupt Controller )

— 外部中断,可配置为 1 到 240。
— 优先级位,可配置为 3 到 8。
— 中断的动态重新优先级。
— 优先分组。 这使得可以选择抢占中断级别和非抢占中断级别。
— 支持尾链和中断延迟到达。 这实现了背靠背中断处理,而无需在中断之间进行状态保存和恢复的开销。
— 处理器状态在中断进入时自动保存,并在中断退出时恢复,没有指令开销。
— 可选的唤醒中断控制器 (WIC),提供超低功耗睡眠模式支持

2、FPU(Floating Point Unit)

— 用于单精度(C 浮点)数据处理操作的 32 位指令。
— 组合乘法和累加指令以提高精度(融合 MAC)。
— 硬件支持转换、加法、减法、乘法和可选的累加,除法和平方根。
— 对非规范化和所有 IEEE 舍入模式的硬件支持。
— 32 个专用 32 位单精度寄存器,也可作为 16 个双字寄存器寻址。
— 解耦三级管道。

3、 MPU(Memory Protection Unit)

— 八个内存区域。
— 子区域禁用 (SRD),可有效使用内存区域。
— 能够启用实现默认内存映射属性的背景区域

4、FPB(Flash Patch Breakpoint)

可选的 Flash 补丁和断点 (FPB) 单元,用于实现断点和代码补丁。
Cortex-M4 处理器包含一个闪存补丁和断点 (FPB) 单元,用于实现硬件断点,并将代码和数据从代码空间补丁到系统空间。

5、DWT(Data Watchpoint and Trace)

可选的数据观察点和跟踪 (DWT) 单元,用于实施观察点、数据跟踪和系统分析。
完整的DWT 包含四个比较器,你可以将它们配置为硬件观察点、ETM 触发器、PC 采样器事件触发器或数据地址采样器事件触发器。

6、AHB-Access Port

6.1、AHB Trace Macrocell interface

AHB 跟踪宏单元 (HTM) 接口可实现 AHB 跟踪宏单元与处理器的简单连接,并为数据跟踪到 HTM 提供通道。
您的实现必须包含此接口才能使用 HTM 接口。 在启用 HTM 端口以提供跟踪数据之前,您必须在调试异常和监视器控制寄存器 (DEMCR) 中将 TRCENA 设置为 1。
参考:Arm®v7-M Architecture Reference Manual

6.2、 Debug Port AHB-AP interface

处理器包含用于调试访问的高级高性能总线访问端口 (AHB-AP) 接口。 外部调试端口 (DP) 组件访问此接口。

Cortex-M4 系统支持三种可能的 DP 实现:
1、串行线JTAG 调试端口(SWJ-DP)。 SWJ-DP 是标准 CoreSight 调试端口,它结合了 JTAG-DP 和串行线调试端口 (SW-DP)。
2、 SW-DP。 这为 AHB-AP 端口提供了一个两针接口。
3、没有DP。 如果处理器中不存在调试功能,则不需要 DP。

这两种 DP 实现为对处理器的调试访问提供了不同的机制。 您的实现必须只包含这些组件之一
注意:您的实现可能包含替代的特定于实现者的 DP,而不是 SW-DP 或 SWJDP。 有关详细信息,请咨询您的实施者。

有关 DP 组件的更多详细信息,请参阅 CoreSight™ Components Technical Reference manual.
DP 和 AP 一起称为调试访问端口 (DAP)。有关调试接口的更多详细信息,请参阅 Arm® Debug Interface v5 Architecture Specification.

7、Bus interfaces

Cortex-M4 处理器包含三个外部高级高性能总线 (AHB)-Lite 总线接口和一个高级外设总线 (APB) 接口。
除了在等待传输期间维护控制信息外,处理器与 AMBA 3 规范相匹配。 AMBA 3 AHB-Lite 协议规定,当从设备请求等待状态时,主设备不得更改传输类型,以下情况除外:
• 在 IDLE 传输中,主机可以将传输类型从 IDLE 更改为 NONSEQ。
• 在具有固定长度突发的BUSY 传输中,主机可以将传输类型从BUSY 更改为SEQ。
• 在具有未定义长度突发的BUSY 传输中,主机可以将传输类型从BUSY 更改为任何其他传输类型。

bus 总线具有以下特性。
— 三个高级高性能 Bus-Lite (AHB-Lite) 接口:ICode、DCode 和系统总线接口。
— 基于高级外设总线 (APB) 接口的专用外设总线 (PPB)。
— 位带支持,包括原子位带写入和读取操作。
— 内存访问对齐。
— 用于缓冲写入数据的写入缓冲区。
— 多处理器系统的独占访问传输。

7.1、ICode memory interface

从代码存储空间 0x00000000 到 0x1FFFFFFC 的指令提取通过 32 位 AHB-Lite 总线执行。
调试器无法访问此接口。 所有提取都是word-wide的。 每个字提取的指令数取决于运行的代码和内存中代码的对齐方式。

7.2、DCode memory interface

对代码存储空间 0x00000000 到 0x1FFFFFFF 的数据和调试访问是通过 32 位 AHB-Lite 总线执行的。
可用的代码存储空间取决于实现。 内核数据访问的优先级高于此总线上的调试访问。 这意味着当内核和调试同时访问该总线时,调试访问将一直等待,直到内核访问完成。
此接口中的控制逻辑将未对齐的数据和调试访问转换为两个或三个对齐的访问,具体取决于未对齐访问的大小和对齐方式。 这会暂停任何后续数据或调试访问,直到未对齐访问完成。

注意 Arm 强烈建议 ICode 和 DCode AHB 总线接口之间的任何外部仲裁确保 DCode 具有比 ICode 更高的优先级。

7.3、System interface

对地址范围 0x20000000 到 0xDFFFFFFF 和 0xE0100000 到 0xFFFFFFFF 的取指令和数据以及调试访问是通过 32 位 AHB-Lite 总线执行的。

对于同时访问 32 位 AHB-Lite 总线,优先级递减的仲裁顺序为:
• 数据访问。
• 指令和向量提取。
• 调试。

系统总线接口包含处理未对齐访问、FPB 重映射访问、位带访问和流水线指令获取的控制逻辑

7.4、Pipelined instruction fetches(流水线指令获取)

为了在系统总线上提供一个干净的时序接口,对该总线的指令和向量获取请求被注册。
这会导致额外的延迟周期,因为从系统总线获取的指令需要两个周期。
这也意味着无法从系统总线上进行背靠背的指令提取。

注意:
对 ICode 总线的取指令请求未注册。 性能关键代码必须从 ICode 接口运行。

7.5、Private Peripheral Bus (PPB)

对外部 PPB 空间 0xE0040000 到 0xE00FFFFF 的数据和调试访问是通过 32 位高级外设总线 (APB) 总线执行的。跟踪端口接口单元 (TPIU) 和特定于供应商的外围设备在此总线上。
内核数据访问的优先级高于调试访问,因此当内核和调试访问同时发生时,调试访问将等待内核访问完成。只有此接口支持解码外部 PPB 空间所需的地址位。
外部 PPB (EPPB) 空间,从 0xE0040000 到 0xE0100000,用于与 CoreSight 兼容的调试和跟踪组件,并且具有许多不规则限制,使其对常规系统外围设备的用处不大。 Arm 建议将系统外设放置在系统总线地址空间的合适设备类型区域中,并为基于 APB 的设备使用 AHB2APB 协议转换器。
EPPB 空间的限制是:
• 只能在特权模式下访问。
• 无论处理器的数据字节序设置如何,都以小字节序方式访问它。
• 访问表现为强有序。
• 未对齐的访问具有不可预测的结果。
• 仅支持 32 位数据访问。
• 它可以从调试端口和本地处理器访问,但不能从任何其他处理器访问。
系统。

8、ITM(Instrumentation Trace Macrocell)

可选的仪器跟踪宏单元 (ITM) 以支持 printf() 风格的调试。

9、WIC(Wake-up Interrupt Controller)

包含在NVIC中。

10、JTAG Debug (Serial-Wire or JTAG Debug Interface)

主要用做Debug 使用,包含AHB port 、CoreSight、ROM table、SWJ-DP、SW-DP 等部分。

11、ETM(Embedded Trace Macrocell)

ETM 接口可实现 ETM-M4 与处理器的简单连接,并提供通道用于指令跟踪到 E TM
参考: Arm® Embedded Trace Macrocell Architecture Specification

12、TPIU(Trace Port Interface Unit)

可选的跟踪端口接口单元 (TPIU),用于桥接到跟踪端口分析仪 (TPA),包括单线输出 (SWO) 模式。

13、ROM table

ROM表显示了用于调试器检测的标识寄存器和值。 这些值允许调试器识别处理器及其调试功能。 外设 ID 寄存器的值将其标识为 Cortex-M4 处理器的通用 ROM 表。 您的实现可能会使用这些寄存器来识别设备的制造商和部件号。