• 正文
  • 相关推荐
申请入驻 产业图谱

G32R501 双核仿真调试攻略:MDK/IAR/Eclipse 一键搞定

04/27 10:00
781
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

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 通用)

  1. 建两个工程:CPU0 工程、CPU1 工程
  2. Flash 分区固定(官方标准)
    • CPU0:0x08000000 ~ 0x0804FFFF
    • CPU1:0x08050000 ~ 0x0809FFFF
  3. 链接文件
    • CPU0:g32r501dxy_cpu0_cbus_flash.sct/icf
    • CPU1:g32r501dxy_cpu1_cbus_flash.sct/icf
  4. 下载方式
    • CPU0:正常下载
    • CPU1:编译成 bin,由 CPU0 通过.incbin嵌入并烧录
  5. 启动顺序
    • 先运行 CPU0,由 CPU0 唤醒 CPU1
    • 再连接 CPU1 进行调试

4. Keil MDK 双核调试步骤(最常用)

  1. 安装Geehy.G32R5xx_DFP.pack
  2. CPU0 工程配置
    • Device 选择带CPU0的 G32R501 型号
    • 链接文件选cpu0对应的.sct
    • 调试器选:CMSIS‑DAP ARMv8‑M
    • 加载调试脚本:r501_dbg.ini
    • Flash 下载配置正常
  3. CPU1 工程配置
    • Device 选择带CPU1的型号
    • 链接文件选cpu1对应的.sct
    • 调试配置相同,但Download 不烧录
  4. CPU1 生成 bin
    • User 选项添加:
      fromelf.exe --bincombined --output=..\cpu0\cpu1_image.bin !L
      
  5. CPU0 工程嵌入 CPU1 代码
    __attribute__((section("cpu1_code")))
    void incbin_cpu1(void){
        __asm(".incbin \"cpu1_image.bin\"");
    }
    
  6. 开始调试
    • 先启动 CPU0 调试,运行到APP_bootCPU1之后
    • 再启动 CPU1 调试,attach 进入

5. IAR EWARM 双核调试步骤

  1. 安装 G32R5xx_AddOn 插件
  2. 新建 CPU0/CPU1 工程,均选择G32R501
  3. 链接文件
    • CPU0:cpu0对应的.icf
    • CPU1:cpu1对应的.icf
  4. 调试器配置
    • 选择CMSIS‑DAP
    • CPU0 指定 AP 端口:CM52_0
    • CPU1 指定 AP 端口:CM52_1
    • CPU1 设置连接时不复位
  5. CPU0 工程加载 cpu1_image.bin
  6. 调试
    • 先运行 CPU0,唤醒 CPU1
    • 再连接 CPU1 调试

6. Eclipse + pyOCD 双核调试

  1. 配置 pyocd.yaml,开启多核调试
    session:
      enable_multicore_debug: true
    
  2. 启动 gdbserver
    pyocd gdbserver
    
  3. 新建调试配置
    • CPU0 端口:3333
    • CPU1 端口:3334
  4. CPU0 启动后,在bootCPU1位置断点
  5. 再启动 CPU1 调试,加载符号、设置 PC

7. 双核调试关键点(官方重点强调)

  1. CPU1 必须由CPU0 唤醒,调试器无法直接启动
  2. 两个核的Flash 区域不能重叠
  3. 调试脚本r501_dbg.ini必须加载,否则无法正常初始化
  4. CPU1 工程只加载符号,不下载程序
  5. 仿真器选择CM52_0 / CM52_1对应 CPU0/CPU1
  6. 调试时两个 IDE 窗口独立,可各自打断点、单步运行

AN1128 是 G32R501 双核调试最权威官方手册,理清了双核启动、分区、下载、仿真的全套逻辑。无论你用 MDK、IAR 还是 Eclipse,都遵循:双工程 → 分区链接 → CPU1 打包 bin → CPU0 启动 → 双 IDE 仿真。按照这套流程,可稳定实现双核在线调试,大幅缩短开发周期。

相关推荐