kai迪皮 发表于 2025-8-4 17:34

G32R501:Jlink适配的正确姿势

适配芯片至Jlink,网上已经有许许多多的博客介绍了,但今天我们的主角G32R501不太一般,要是我们按照普通的芯片适配流程,大家会发现在最终对芯片进行程序进行下载的时候无法成功,那这是为什么呢?本文给大家介绍一下G32R501芯片,在适配Jlink的正确姿势!

# 1. 适配全过程:从普通芯片“套路”到G32R501的“独门心法”

## 1.1 根源:普通脚本为啥不灵?

G32R501有一个DCS模块,它的本意是保护我们Flash在秘钥正确的情况下才能进行擦、写、读,不被有心之人直接访问我们的程序。所以我们需要写入正确的秘钥,G32R501才能对我们“毫无保留”,若是我们 强行读取,只能得到它的一片空白”全0x00内容“。

其实官方已经给了方案:“JLinkSettings.JLinkScript”给我们在MDK环境进行调用,使用方法是:将device\_support\g32r501\common\Jlink\中的JLinkSettings.JLinkScript和r501\_dbg.ini复制至“uvprojx”工程文件同级目录下,然后再选择相应的仿真配置就能进行下载了。

秘钥在脚本中是这样的:

```c
U32 Z1_CSM_Buff=
{
    0xFFFFFFFF,       // DCS Zone1 CSMPSWD0
    0xFFFFFFDC,       // DCS Zone1 CSMPSWD1
    0xFFFFFFFF,       // DCS Zone1 CSMPSWD2
    0xFFFFFFFF      // DCS Zone1 CSMPSWD3
};
U32 Z2_CSM_Buff=
{
    0xFFFFFFFF,       // DCS Zone2 CSMPSWD0
    0xFFFEDFFF,       // DCS Zone2 CSMPSWD1
    0xFFFFFFFF,       // DCS Zone2 CSMPSWD2
    0xFFFFFFFF      // DCS Zone2 CSMPSWD3
};
```

以上就是默认配好的密码。如果你的芯片烧入过“自定义Key”,也别忘记在“.JLinkScript”对应位置换成你自己的。

在使用J-Flash/J-Link Commander过程中我们可以通过软件的配置和相关的参数指令进行解锁脚本的指定。具体可有参考这里:https://kb.segger.com/J-Link\_script\_files 的“Using J-Link script files”章节。

## 1.2 如何让Jlink自动调用“.JLinkScript”文件?

我们每次都去指定一个脚本实在是这个“姿势”实在不雅,有没有一次性搞定Jlink自动检索的办法?答案就是J-Link Device Support Kit文档提到的:在.xml文件里用ChipInfo->JLinkScriptFile字段来指定脚本。

```xml
<ChipInfo Name="G32R501DVY"
          Vendor="Geehy"
          Core="JLINK_CORE_CORTEX_M52"
          WorkRAMAddr="0x20300000"
          WorkRAMSize="0x4000"
          JLinkScriptFile="Geehy_G32R501_ConnectCore0.jlinkscript"/>
```

这样做的好处是,只要Jlink加载到这个ChipInfo,就会自动去运行Geehy\_G32R501\_ConnectCore0.jlinkscript,无需在MDK、IAR或Commander里再去勾来勾去。真正达成“一次性解决、全家同乐”的目标。

## 1.3 还需注意:G32R501内存访问花样多

爱折腾的同学可能早发现,G32R501的Flash地址可不止一条:

1. C-BUS接口:0x0800\_0000
2. ITCM接口:0x0010\_0000

!(data/attachment/forum/202508/04/172431a9e4xgvgk8e4zvxd.png "image-20250804171130111.png")

这两者看似不同,但实际上指向同一片物理Flash。为了让“烧录工具”都能正常访问,.xml里我们往往需要写出双路地址的FlashBankInfo。示例如下:

```xml
<FlashBankInfo Name="Flash_ITCM" BaseAddr="0x00100000" AlwaysPresent="0">
<LoaderInfo Name="Flash"
            Loader="G32R5xx_Program_Algorithm.FLM"
            LoaderType="FLASH_ALGO_TYPE_OPEN"
            MaxSize="0x40000"/>
</FlashBankInfo>

<FlashBankInfo Name="Flash_CBUS" BaseAddr="0x08000000" AlwaysPresent="1">
<LoaderInfo Name="Flash"
            Loader="G32R5xx_Program_Algorithm.FLM"
            LoaderType="FLASH_ALGO_TYPE_OPEN"
            MaxSize="0x40000"/>
</FlashBankInfo>
```

大多数情况下,我们会以0x0800\_0000作为主地址来执行下载算法。若有特殊需求,也能访问ITCM空间。反正这套“双卡双待”的机制就是为灵活而生。

# 2. 最终效果

等完成以上关键步骤(脚本绑定+FlashBankInfo设置)后,Jlink和G32R501就可以在一起愉快的“生活”啦。我们不必在使用到Jlink的环境下再多余配置.jlinkscript文件。

## 2.2 J-Flash测试

SEGGER官方烧录器J-Flash,可在设备列表中出现你“定制”的G32R501信息,一键烧写或擦除,Status中再也不是一堆神秘报错。

!(data/attachment/forum/202508/04/172453lj022backkry5n5m.png "image-20250804171227791.png")

**程序下载:**

!(data/attachment/forum/202508/04/172525yvnlbavib3iooonv.png "image-20250804171438060.png")

## 2.3 J-Link Commander测试

对命令行爱好者,可以在命令行下启动JLink.exe。

!(data/attachment/forum/202508/04/172542uh71tm884henw5xo.png "image-20250804171747322.png")

## 2.4 MDK测试

对于默认KEY的芯片,我们再也不用单独复制.jlinkscript到我们的工作目录啦,后续再按官方要求:

1. 删除Utilities下的下载配置“.\r502\_key.ini”
2. **替换Debug下的仿真配置成“device\_support\g32r501\common\Jlink\r501\_dbg.ini”**

!(data/attachment/forum/202508/04/172618aqb700kx0ozkop00.png "image-20250804171831228.png")

**下载情况:**

!(data/attachment/forum/202508/04/172631dp4q9luw4qjwu8am.png "image-20250804171909904.png")

## 2.5 IAR测试

IAR的Debugger设置中\*\*去除“Use flash loader(s)”\*\*勾选。使用我们精心准备的Jlink那一套脚本/下载算法算法。

!(data/attachment/forum/202508/04/172757u3w876t8tqkxd3t7.png "image-20250804171949171.png")

**下载情况:**

!(data/attachment/forum/202508/04/172808i0k0b14j0jgjj5fb.png "image-20250804172052759.png")

# 3 限制条件

1. Jlink软件:至少要能识别“M52”内核。官方给的最低参考版本是“Version V7.94g”。如果你版本还是更早期,Jlink一看到JLINK\_CORE\_CORTEX\_M52就懵,根本不认得。
2. Jlink硬件:V12及以上。老版本(比如V9)SEGGER官方并没有保证能支持M52内核。不过,这里也给出一个“权宜之计”: 如果你手头只有JlinkV9 + Version V7.94,那么可以在G32R501.xml中把内核字段改成JLINK\_CORE\_CORTEX\_M55,它也能跑起来(算是“黑科技”小技巧吧)。

这里是“正确姿势”[!(/source/plugin/zhanmishu_markdown/template/editor/images/upload.svg) 附件:J-Link_V8.36_G32R501_2025-8-4 172850.zip](forum.php?mod=attachment&aid=2431454 "attachment"),请复制压缩包中的内容至“C:\Users\<你的用户名>\AppData\Roaming\SEGGER\JLinkDevices\Geehy\G32R501\”(没有就新建目录)。

!(data/attachment/forum/202508/04/173238xjppunnuypjn44wx.png "image-20250804173218459.png")


欢迎各位在评论区分享使用Jlink编程、仿真G32R501的心得哦:victory: ~

kai迪皮 发表于 2025-8-4 17:35

#申请原创# @21小跑堂

CloudKiss 发表于 2025-8-4 19:02

jflash的这个配置文件的方式太实用了,以后,我的软件开发也使用这个思路。

唉,今天segger提示我的jlink涉嫌clone了

丙丁先生 发表于 2025-8-6 04:50

没有Jlink,一直daplink,感觉性价比不高,

kai迪皮 发表于 2025-8-6 10:39

丙丁先生 发表于 2025-8-6 04:50
没有Jlink,一直daplink,感觉性价比不高,

J-link的生态(软件上位机这些)比较丰富,DAPLink比较优惠,各有所长

丙丁先生 发表于 2025-8-7 06:21

kai迪皮 发表于 2025-8-6 10:39
J-link的生态(软件上位机这些)比较丰富,DAPLink比较优惠,各有所长

Jlink好多引脚是相同的比如GND、VCC,我会用PW2-LINK跳线烧录,可是Ti和六岳微的不行,开发板有了,买不起烧录器,只能搁置。

kai迪皮 发表于 2025-8-7 14:42

丙丁先生 发表于 2025-8-7 06:21
Jlink好多引脚是相同的比如GND、VCC,我会用PW2-LINK跳线烧录,可是Ti和六岳微的不行,开发板有了,买不起 ...

Jlink和daplink走的是SWD/JTAG协议,对外端口基本一致的,DSP芯片一般使用的是cjtag协议所以不一样。不过绿色的Jlinkv12在马云家有,价格也还好
页: [1]
查看完整版本: G32R501:Jlink适配的正确姿势