stm32h747-overview

1 CPU资源:
包含一个Cortex‑M7:最高 480 MHz
包含一个Cortex‑M4:最高 240 MHz
2 片上 SRAM 资源:
- 系统 SRAM:864 KB
- 数据 TCM RAM:128 KB
- 指令 TCM RAM:64 KB
- backup SRAM:4 KB
2.1 864K 系统 SRAM 分布在三个电源域的五个块中:
D1 域:AXI SRAM
- 地址:0x2400 0000,512K
- 通过 D1 域 AXI 总线矩阵访问,所有系统主设备都可访问(除了 BDMA)。
- 用途:存放应用数据,或图形对象(如帧缓冲)。
D2 域:AHB SRAM
- SRAM1:地址 0x3000 0000,128K。所有主设备可访问(除了 BDMA)。可作为 D2 域中外设输入/输出数据的 DMA 缓冲区,或 Cortex‑M4 的代码存放区(当 D1 域掉电时仍可运行)。
- SRAM2:地址 0x3002 0000,128K。所有主设备可访问(除了 BDMA)。可 D2 域中外设输入/输出数据的 DMA 缓冲区,或 M4 应用的读写段。
- SRAM3:地址 0x3004 0000。32K。所有主设备可访问(除了 BDMA)。可以用作缓冲区来存储以太网和USB的外围输入/输出数据,或者用作两个核心之间的共享内存。
D3 域:AHB SRAM
- SRAM4:地址 0x3800 0000,64K。大多数主设备可访问。可用作
BDMA缓冲区用于在D3域中存储外围输入/输出数据。或在 D1/D2 域进入待机模式时保留代码/数据,或作为双核共享内存。
别名映射:为了保持 Cortex‑M4 的 Harvard 架构(MCU 在地址空间里为同一块 SRAM 提供了 指令别名映射,让 M4 内核的指令总线和数据总线可以同时访问这块内存。),D2 域的 SRAM1/2/3 还映射到低地址空间:
- SRAM1 → 0x1000 0000
- SRAM2 → 0x1002 0000
- SRAM3 → 0x1004 0000
访问特性
AHB SRAM:支持字节、半字 (16 bit)、字 (32 bit) 访问。
AXI SRAM:支持字节、半字、字、双字 (64 bit) 访问。
这些存储器可在系统最高频率下无等待周期访问。
AHB 主设备可与 Ethernet MAC/USB OTG HS 并发访问不同的 SRAM 区域(例如 MAC 用 SRAM2,CPU 用 SRAM1)。
2.2 TCM SRAM(仅 M7)
DTCM RAM:
- 地址 0x2000 0000,128K。仅 M7 和 MDMA 可访问。
- 用途:关键实时数据(堆栈、堆)。
ITCM RAM:
- 地址 0x0000 0000,64K。仅 M7 和 MDMA 可访问。
- 用途:关键实时代码(中断处理程序),保证确定性执行。
2.3 backup SRAM
地址:0x3880 0000,4KB,大多数主设备可访问。
在 VBAT 供电下保持数据,在低功耗模式(Standby/VBAT)下仍能保留
3 片上 FLASH 资源:
两个独立的 1MB Flash Bank。
- bank1:0x08000000 - 0x080FFFFF
- bank2:0x08100000 - 0x081FFFFF
总线接口:
- 提供两个 64bit AXI 从接口,用于代码和数据访问。
- 提供一个 32bit AHB 从接口,用于访问配置寄存器。
- 每个 Bank 在任意时刻只能执行一个读或写操作(不可并发读写同一个 Bank)。
应用程序可以通过两个 AXI 接口同时发起读写请求。
主要特性:
读取支持多种数据宽度:支持 64bit、32bit、16bit 和 8bit 的读取操作。
写入粒度:每次写入为 256bit(32 字节)。
擦除方式:
- 支持 128KB 扇区擦除。
- 支持整 Bank 擦除。
- 支持双 Bank 同时擦除(mass erase)。
双 Bank 架构优势:
- 支持并行操作:两个 Bank 可同时进行读/写/擦除。
- 支持 Bank 地址映射交换(Bank Swapping):可动态切换两个 Bank 的地址映射和相关寄存器。(使用同样的链接脚本设置编译程序,镜像能放到不同的物理地址上)
ECC(错误校正码):
- 每个 256bit Flash 字使用 10bit ECC。
- 支持 1 位错误自动纠正,2 位错误检测。
CRC 模块:内建硬件 CRC 校验模块。
用户可配置的非易失性选项字节。
增强型安全保护机制(通过选项字节启用):
- 读保护 RDP:防止非法读取 Flash 内容,保护敏感代码。
- 写保护 WRPS:按 Bank 的 128KB 扇区进行写保护。
- PCROP(专有代码保护区):每个 Bank 可配置一个执行专用区(不可读)。
命令队列机制:内建读写命令队列,提高 Flash 操作效率。
4 Boot configuration
4.1 双核启动顺序 (Boot Order)
芯片有两个核心:Cortex‑M7 和 Cortex‑M4。
启动顺序由 选项字节 (Option Bytes) 中的 BCM7 / BCM4 位决定:
| BCM7 | BCM4 | 启动情况 |
|---|---|---|
| 0 | 0 | M7 启动,M4 时钟关闭 |
| 0 | 1 | M4 启动,M7 时钟关闭 |
| 1 | 0 | M7 启动,M4 时钟关闭 |
| 1 | 1 | M7 和 M4 同时启动 |
4.2 Boot 地址选择 (Boot Modes)
每个核心都有两个可选的 Boot 区域,通过 BOOT 引脚和 选项字节来决定:
Boot = 0:
- Cortex‑M7:BCM7_ADD0[15:0] 为启动地址MSB,默认启动地址为 bank1 0x0800_0000
- cortex‑M4:BCM4_ADD0[15:0] 为启动地址MSB,默认启动地址为 bank2 0x0810_0000
Boot = 1:
- Cortex‑M7:BCM7_ADD1[15:0] 为启动地址MSB,默认启动地址为ITCM 0x000 0000
- cortex‑M4:BCM4_ADD1[15:0] 为启动地址MSB,默认启动地址为 SRAM1 0x1000 0000
M7 默认从主 Flash Bank1 启动。
M4 默认从主 Flash Bank2 启动。
也可以通过选项字节修改 Boot 地址,甚至让它们从 RAM 启动。
参考
[1] STM32H7xx Reference Manual, RM0399