[研电赛技术支持] GD32H737ZMT6无法下载hex和bin文件问题

[复制链接]
1416|3
 楼主| Jiangxiaopi 发表于 2025-3-7 20:32 | 显示全部楼层 |阅读模式
项目场景:
在使用GD32H737ZMT6进行项目开发的时候,自己修改了sct分散加载文件,让code运行到ram中,但是遇到无法下载hex文件的问题。想要生成BIN文件试试的时候,又发现生成了一个.bin文件夹。

问题描述
问题1、修改了SCT文件后,使用Jlink驱动V7.94发现选择GD32H737ZMT6的device会无法连接芯片,只能通过选择CORTEX-M7的device才可以正常连接。但是下载HEX文件的时候发现会报错,如下图所示。

1708767ca7083b9107.png

1665867ca707d0f122.png

问题2、想要尝试生成.bin文件进行下载的时候又发现直接生成了一个bin文件夹,里面有很多个文件,如下图所示

9338767ca70779086d.png

4411667ca707106698.png

解决方案:
问题1、将jlink版本更换成jlinkV8.10就正常了,hex文件可以下载了,芯片也可以连接了。但是如果没有用分散加载文件,code运行在flash中的话jlink7.94的驱动就没有这个问题,目前还不知道为啥。
这里我还用jlinkV7.94驱动生成的工程文件对比了一下(device=GD32H737ZMT6和device=CORTEX-M7),发现其实直接把.jflash文件中ChipName改成CORTEX-M7也是可以连接的(但是hex文件还是无法下载),可能是jlinkV7.94版本太老了。如下图所示:

5782867ca70607059d.png

1862567ca7050bfc7d.png

问题2、因为看到Bin文件夹中有_at_0x30000000的提示,因此去搜索了一下工程中所有的代码,看有没有地方把代码或者变量放到了0x30000000的地址中去执行的,结果还真发现GD32自带的库文件gd32h7xx_enet.c中会把变量放到这个地址。看了一下GD32手册这个地址是外部sram的,因此可能是网络相关的库文件,把缓存变量放到外部SRAM中了。目前没用到相关功能,因此把该文件从工程中移除就正常了。后面如果需要使用该功能,那应该在sct文件中配置相关执行域吧,或者keil的RAM设置中要进行配置,不然可能就会报错。

7079967ca704b9acdb.png

1428767ca7043bef8f.png

3383167ca703e08b9b.png

2937667ca7039e2a7e.png
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_43695159/article/details/145931536

weifeng90 发表于 2025-3-7 23:12 来自手机 | 显示全部楼层
感谢分享经验,国产芯片用起来还是有些坑。
classroom 发表于 2025-3-12 10:37 | 显示全部楼层
J-Link驱动版本不兼容
laocuo1142 发表于 2025-3-12 16:00 | 显示全部楼层
Bin文件生成异常以及硬件连接或芯片问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

250

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部