打印
[开发工具]

J-Link 添加Geehy APM32系列MCU

[复制链接]
1806|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 kai迪皮 于 2022-5-19 19:50 编辑

#申请原创# 申请原创 @21小跑堂
前言

最近调试Geehy的APM32芯片想着替换STM32,发现在使用Keil+J-Link的调试过程中总是发现J-Link会在初次下载的时候提示



虽然说我们可以选择相应芯片内核即可下载。



但是如此多此一举,还是让人有点累。我就计划鼓捣去除掉这个提示窗口。

使用环境:

* Windows 11
* J-Link V9(v7.62)
* APM32F407ZG芯片
* Keil MDK 5.36

1 基础学习

从提示窗口看出,是J-Link未能识别我们的目标芯片是啥子,那我们只需要知道如何使得J-Link支持的芯片列表里面有我们的目标型号即可。

通过翻找J-Link安装目录(我的是C:\Program Files\SEGGER\JLink\Doc\Manuals),我发现了它的用户手册:



通过阅读,我在UM08001_JLink.pdf内容中了解到了如何添加设备给J-Link。

1.1 JLinkDevices.xml

在J-Link的4.5.26章节,它提醒到这个文件可以存放一些尚未公开的新设备。所以我们只需要将我们需要添加的新设备进去,就可以使得J-Link支持我们的芯片了。



我们也可以打开安装目录下的JLinkDevices.xml,看看它的庐山真面目。
<!--                   -->
<!-- Altera -->
<!--                   -->
<Device>
<ChipInfo Vendor="Altera" Name="Cyclone V" Core="JLINK_CORE_CORTEX_A9" WorkRAMAddr="0xFFFF0000" WorkRAMSize="0x00010000" />
   <FlashBankInfo Name="QSPI Flash" BaseAddr="0x00000000" MaxSize="0x02000000" Loader="Devices/Altera/Cyclone_V/Altera_Cyclone_V_QSPI.elf" LoaderType="FLASH_ALGO_TYPE_OPEN" />
</Device>
通过手册我们可以知道在给J-Link添加新设备时,我们需要关注两个标签,<ChipInfo> 和<FlashBankInfo>。它们里面的一些内容是必须我们去提供的,

1.2 ChipInfo

在<ChipInfo> 里面,我们分别需要提供芯片的厂商(Vendor)、芯片名称(Name)、芯片内核(Core)、芯片RAM基地址(WorkRAMAddr)和芯片RAM大小(WorkRAMSize)。了解完这些,我们可以看到该手册中还给我们举了个例子说明:





1.3 FlashBankInfo

同样的,我们可以了解到<FlashBankInfo>里面我们需要填写的内容。





值得注意的是,在Loader内容说明中,J-Link提及到了下载算法是相对个文件"JLinkDevices.xml"的路径,这意味着我们的下载算法需要拷贝到J-Link的安装目录下面。

2 下载算法

在学习完基础知识后,我们得知添加芯片的一些内容是非常容易就可以获取得到的,比如说芯片厂商、名称、内核、RAM信息、Flash信息这些。唯一的难点就是下载算法我们要怎么搞?

我们回忆一下,Keil是可以正常给APM32系列的MCU进行正常下载的,那Geehy是提供了下载算法的。那它在哪里呢?我们能不能使用它?

好了这里不卖关子了,Keil使用的下载算法是基于CMSIS标准的FLM文件,这个算法J-Link也是支持的,大家可能没有留意到在 FlashBankInfo标签内容在下载算法一栏有着说明。



这个下载算法就在我们Keil的Pack安装目录下面。可以点击Keil的Pack管理窗口看到。



在Pack安装目录下面我们去寻找Geehy提供的算法。



我们就得到了APM32F4编程Flash的APM32F4xx_512.FLM和APM32F4xx_1024.FLM。

3 编辑JLinkDevices.xml

获取了下载下载算法我们就可以编辑JLinkDevices.xml文件以支持新设备了。下面举个例子:
<Device>
<ChipInfo Vendor="Geehy" Name="APM32F417IG" Core="JLINK_CORE_CORTEX_M4" WorkRAMAddr="0x20000000" WorkRAMSize="0x00020000" />
<FlashBankInfo Name="IROM1" BaseAddr="0x08000000" MaxSize="0x00100000" Loader="Devices/Geehy/APM32F4/APM32F4xx_1024.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN" AlwaysPresent="1"/>
</Device>

注意JLinkDevices.xml文件需要管理员权限进行编辑。

4 添加全部APM32型号

我这边也抽空完成了所有有下载算法的的APM32型号的文件制作,



完成支持分两步走

1.将给大家的“Devices”复制至J-Link的安装目录,注意是安装目录!不是J-Link下的“Devices”目录。

2.将JLinkDevices_Geehy.xml里面的内容复制至J-Link安装目录下的JLinkDevices.xml中,注意复制粘贴区域在<DataBase></DataBase>中间。如:




接下来我们验证一下添加芯片的效果,在所有应用中打开“J-Link GDB Server”,



在弹出的设置窗口选择设备。



在设备窗口的厂商一栏选择Geehy。



我们就可以看到我们刚刚添加的芯片了。



此时我们如果打开新的工程,就不会再提醒我们未知设备了。


至此,J-Link添加Geehy芯片到此结束,由于本人为初学者,难免有些许问题,请各位指出。如果该帖子对您有一点点帮助请给我点个赞~




J-Link 添加Geehy APM32系列MCU.zip

46.33 KB

使用特权

评论回复
沙发
flampard| | 2022-5-17 17:36 | 只看该作者
这分享很有用

使用特权

评论回复
板凳
james03| | 2022-5-18 13:34 | 只看该作者
不错不错,后续其他芯片以此类推

使用特权

评论回复
评论
kai迪皮 2022-5-19 19:44 回复TA
是的,是的 
地板
Fanexs168| | 2022-5-25 16:45 | 只看该作者
太干了

使用特权

评论回复
5
LevinKai| | 2022-10-4 21:00 | 只看该作者
感谢楼主的整理,最近正在调试apm的mcu,有这份文件方便多了。

使用特权

评论回复
评论
kai迪皮 2022-10-8 22:24 回复TA
不客气,有空常交流 
6
onlycook| | 2022-10-8 11:33 | 只看该作者
极海的英文名和那个吉利汽车的名字真像啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

196

帖子

11

粉丝