项目场景:
在使用GD32H737ZMT6进行项目开发的时候,自己修改了sct分散加载文件,让code运行到ram中,但是遇到无法下载hex文件的问题。想要生成BIN文件试试的时候,又发现生成了一个.bin文件夹。
问题描述
问题1、修改了SCT文件后,使用Jlink驱动V7.94发现选择GD32H737ZMT6的device会无法连接芯片,只能通过选择CORTEX-M7的device才可以正常连接。但是下载HEX文件的时候发现会报错,如下图所示。
问题2、想要尝试生成.bin文件进行下载的时候又发现直接生成了一个bin文件夹,里面有很多个文件,如下图所示
解决方案:
问题1、将jlink版本更换成jlinkV8.10就正常了,hex文件可以下载了,芯片也可以连接了。但是如果没有用分散加载文件,code运行在flash中的话jlink7.94的驱动就没有这个问题,目前还不知道为啥。
这里我还用jlinkV7.94驱动生成的工程文件对比了一下(device=GD32H737ZMT6和device=CORTEX-M7),发现其实直接把.jflash文件中ChipName改成CORTEX-M7也是可以连接的(但是hex文件还是无法下载),可能是jlinkV7.94版本太老了。如下图所示:
问题2、因为看到Bin文件夹中有_at_0x30000000的提示,因此去搜索了一下工程中所有的代码,看有没有地方把代码或者变量放到了0x30000000的地址中去执行的,结果还真发现GD32自带的库文件gd32h7xx_enet.c中会把变量放到这个地址。看了一下GD32手册这个地址是外部sram的,因此可能是网络相关的库文件,把缓存变量放到外部SRAM中了。目前没用到相关功能,因此把该文件从工程中移除就正常了。后面如果需要使用该功能,那应该在sct文件中配置相关执行域吧,或者keil的RAM设置中要进行配置,不然可能就会报错。
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_43695159/article/details/145931536
|