极海G32R501芯片与Jlink适配的过程解析

描述

《极海芯得》系列内容为用户使用极海系列产品的经验总结,均转载自21ic论坛极海半导体专区,全文未作任何修改,未经原文作者授权禁止转载。

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

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

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

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

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

秘钥在脚本中是这样的:

U32 Z1_CSM_Buff[4]=

{

    0xFFFFFFFF,       // DCS Zone1 CSMPSWD0

    0xFFFFFFDC,       // DCS Zone1 CSMPSWD1

    0xFFFFFFFF,       // DCS Zone1 CSMPSWD2

    0xFFFFFFFF        // DCS Zone1 CSMPSWD3

};

U32 Z2_CSM_Buff[4]=

{

    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字段来指定脚本。

          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地址可不止一条:

C-BUS接口:0x0800_0000

ITCM接口:0x0010_0000

芯片

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

 

              Loader="G32R5xx_Program_Algorithm.FLM"

              LoaderType="FLASH_ALGO_TYPE_OPEN"

              MaxSize="0x40000"/>

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

2. 最终效果

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

2.2 J-Flash测试

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

芯片

程序下载:

芯片

2.3 J-Link Commander测试

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

芯片

2.4 MDK测试

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

删除Utilities下的下载配置“. 502_key.ini”

替换Debug下的仿真配置成“device_supportg32r501commonJlink 501_dbg.ini”

芯片

下载情况:

芯片

2.5 IAR测试

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

芯片

下载情况:

芯片

3 限制条件

Jlink软件:至少要能识别“M52”内核。官方给的最低参考版本是“Version V7.94g”。如果你版本还是更早期,Jlink一看到JLINK_CORE_CORTEX_M52就懵,根本不认得。

Jlink硬件:V12及以上。老版本(比如V9)SEGGER官方并没有保证能支持M52内核。不过,这里也给出一个“权宜之计”: 如果你手头只有JlinkV9 + Version V7.94,那么可以在G32R501.xml中把内核字段改成JLINK_CORE_CORTEX_M55,它也能跑起来(算是“黑科技”小技巧吧)。

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

注:文章作者在原帖中提供了代码文件,有需要请至原文21ic论坛

原文地址:https://bbs.21ic.com/icview-3476382-1-2.html?_dsign=7211ab32

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分