G32R501 采用Cortex‑M52 双核架构,在伺服控制、电源、逆变器等领域优势明显,但双核调试需要一套专用流程。AN1128 官方手册专门讲解 G32R501 双核仿真方法,覆盖MDK、IAR、Eclipse三大 IDE,搭配 Geehy‑Link 仿真器,实现 CPU0 与 CPU1 同时在线调试、独立断点、自由切换。本文把官方步骤完全工程化,照着做就能稳定双核仿真。
资料获取:AN1128_G32R501 双核仿真指导手册
1. G32R501 双核调试基本原理
G32R501 为非对称双核:
- CPU0(主核):上电自动运行,负责系统启动、初始化、唤醒 CPU1
- CPU1(从核):默认 hold 状态,由 CPU0 启动、指定入口地址
- 调试结构:1 个 Debug DP + 4 个 AP
- AHB‑AP0:访问 CPU0
- AHB‑AP1:访问 CPU1
- AHB‑AP2:访问总线矩阵
- APB‑AP3:访问调试外设
- 仿真器只需1 路 SWD/JTAG,即可同时控制两个核
2. 调试环境要求(必须满足)
- IDE 版本
- Keil MDK:v5.40 及以上
- IAR:9.60.2 及以上
- Eclipse:4.35 及以上 + pyOCD
- 仿真器:Geehy‑Link(CMSIS‑DAP)
- 必须安装:G32R5xx DFP 芯片支持包
3. 通用双核开发规则(所有 IDE 通用)
- 建两个工程:CPU0 工程、CPU1 工程
- Flash 分区固定(官方标准)
- CPU0:0x08000000 ~ 0x0804FFFF
- CPU1:0x08050000 ~ 0x0809FFFF
- 链接文件
- CPU0:
g32r501dxy_cpu0_cbus_flash.sct/icf - CPU1:
g32r501dxy_cpu1_cbus_flash.sct/icf
- CPU0:
- 下载方式
- CPU0:正常下载
- CPU1:编译成 bin,由 CPU0 通过
.incbin嵌入并烧录
- 启动顺序
- 先运行 CPU0,由 CPU0 唤醒 CPU1
- 再连接 CPU1 进行调试
4. Keil MDK 双核调试步骤(最常用)
- 安装Geehy.G32R5xx_DFP.pack
- CPU0 工程配置
- Device 选择带CPU0的 G32R501 型号
- 链接文件选
cpu0对应的.sct - 调试器选:CMSIS‑DAP ARMv8‑M
- 加载调试脚本:
r501_dbg.ini - Flash 下载配置正常
- CPU1 工程配置
- Device 选择带CPU1的型号
- 链接文件选
cpu1对应的.sct - 调试配置相同,但Download 不烧录
- CPU1 生成 bin
- User 选项添加:
fromelf.exe --bincombined --output=..\cpu0\cpu1_image.bin !L
- User 选项添加:
- CPU0 工程嵌入 CPU1 代码
__attribute__((section("cpu1_code"))) void incbin_cpu1(void){ __asm(".incbin \"cpu1_image.bin\""); } - 开始调试
- 先启动 CPU0 调试,运行到
APP_bootCPU1之后 - 再启动 CPU1 调试,attach 进入
- 先启动 CPU0 调试,运行到
5. IAR EWARM 双核调试步骤
- 安装 G32R5xx_AddOn 插件
- 新建 CPU0/CPU1 工程,均选择G32R501
- 链接文件
- CPU0:
cpu0对应的.icf - CPU1:
cpu1对应的.icf
- CPU0:
- 调试器配置
- 选择CMSIS‑DAP
- CPU0 指定 AP 端口:CM52_0
- CPU1 指定 AP 端口:CM52_1
- CPU1 设置连接时不复位
- CPU0 工程加载 cpu1_image.bin
- 调试
- 先运行 CPU0,唤醒 CPU1
- 再连接 CPU1 调试
6. Eclipse + pyOCD 双核调试
- 配置 pyocd.yaml,开启多核调试
session: enable_multicore_debug: true - 启动 gdbserver
pyocd gdbserver - 新建调试配置
- CPU0 端口:3333
- CPU1 端口:3334
- CPU0 启动后,在
bootCPU1位置断点 - 再启动 CPU1 调试,加载符号、设置 PC
7. 双核调试关键点(官方重点强调)
- CPU1 必须由CPU0 唤醒,调试器无法直接启动
- 两个核的Flash 区域不能重叠
- 调试脚本
r501_dbg.ini必须加载,否则无法正常初始化 - CPU1 工程只加载符号,不下载程序
- 仿真器选择CM52_0 / CM52_1对应 CPU0/CPU1
- 调试时两个 IDE 窗口独立,可各自打断点、单步运行
AN1128 是 G32R501 双核调试最权威官方手册,理清了双核启动、分区、下载、仿真的全套逻辑。无论你用 MDK、IAR 还是 Eclipse,都遵循:双工程 → 分区链接 → CPU1 打包 bin → CPU0 启动 → 双 IDE 仿真。按照这套流程,可稳定实现双核在线调试,大幅缩短开发周期。
阅读全文
781