【JLink】JLink7.70c更高版本驱动添加自定义设备方法
本帖最后由 cx1524 于 2023-9-27 16:47 编辑引言
最近研究了下新版本JLink添加不支持设备的方法,对资料进行整理后写下这篇笔记用于记录。
参考资料为UM08001_JLink文档的Open Flashloader章节(文件可在JLink_V780b内找到,之后版本都换成了链接文件)和SEGGER Wiki上的J-Link Device SupportKit(https://wiki.segger.com/J-Link_Device_Support_Kit)章节添加方法。
添加设备的方法为——向JLink指定路径下的JLinkDevices目录中添加XML文件。
JLinkDevices路径
JLinkDevices在不同系统中的路径如下:
如果JLinkDevices目录不存在,则需要自行创建。
JLinkDevices目录结构
官方推荐的JLinkDevices目录结构如下:
其中Vendor代表厂商,DevFamily代表设备系列,Devices代表详细设备。
由于JLink会将JLinkDevices目录下的所有XML文件视为JLinkDevices.xml,所以也可以像旧版本一样用一个JLinkDevices.xml文件进行设备的管理。
XML文件
要添加设备就需要对XML文件进行编辑,XML共有4个元素:
[*]<Database>为XML文件的根元素,一个XML文件只能有一个<Database>;
[*]<Device>用于描述新设备,该元素无属性;
[*]<ChipInfo>为<Device>子元素,用于描述设备的基础信息;
[*]<FlashBankInfo>为<Device>子元素,用于描述设备的Flash Bank信息;
XML文件大致格式如下:
<Database> <Device> <ChipInfo Vendor="My Vendor" Name="My Device1524" WorkRAMAddr="0x20000000" WorkRAMSize="0x10000" Core="JLINK_CORE_CORTEX_M0"/> <FlashBankInfo Name="My Flash Bank1" BaseAddr="0x08000000" AlwaysPresent="1"> <LoaderInfo Name="My Flash loader" MaxSize="0x30000" Loader="Device_128.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN"/> </FlashBankInfo> </Device></Database>
ChipInfo
ChipInfo用于描述设备的基础信息,如厂商名、设备名等,具体属性如下:
属性说明
Vendor 厂商名
Name 设备名
WorkRAMAddr RAM的起始位置
WorkRAMSize RAM的大小
Core 内核型号
JLinkScriptFile JLink脚本文件的路径(非必要)
其中Core属性需要输入JLink指定范围内的参数,常用参数如下:
[*]JLINK_CORE_CORTEX_M1
[*] JLINK_CORE_CORTEX_M3
[*] JLINK_CORE_CORTEX_M0
[*] JLINK_CORE_CORTEX_M4
[*] JLINK_CORE_CORTEX_M7
[*] JLINK_CORE_CORTEX_M23
FlashBankInfo
FlashBankInfo用于描述设备的Flash Bank信息,其具体属性如下:
属性说明
Name设备Flash Bank名
BaseAddrFlash Bank的起始位置
AlwaysPresent指定Flash Bank是否始终存在 ,如果为“1”,该Flash Bank会受“erase”命令影响
FlashBankInfo还有一个子元素<Loader>,该元素用于描述该Flash Bank的Flash Loader信息,其具体元素如下:
属性说明
NameFlash Loader名
MaxSizeFlash烧录范围的大小
Sectorization用于代替FLM/ELF文件中的Sectorization(非必要)
Loader FLM/ELF文件的路径
LoaderTypeFlash Loader的类型,填“FLASH_ALGO_TYPE_OPEN”
添加演示
接下来进行一次”My Device”的新设备添加演示。
首先向/AppData/Roaming/SEGGER/JLinkDevices中准备新设备的目录,并向其中加入FLM下载文件和XML文件
向XML中添加一下设备的描述
<Database> <Device> <ChipInfo Vendor="My Vendor" Name="My Device1524" WorkRAMAddr="0x20000000" WorkRAMSize="0x10000"
Core="JLINK_CORE_CORTEX_M0"/> <FlashBankInfo Name="My Flash Bank1" BaseAddr="0x08000000" AlwaysPresent="1"> <LoaderInfo Name="My Flash loader" MaxSize="0x10000" Loader="Device_128.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN"/> </FlashBankInfo> <FlashBankInfo Name="My Flash Bank2" BaseAddr="0x08010000" AlwaysPresent="1"> <LoaderInfo Name="My Flash loader" MaxSize="0x10000" Loader="Device_128.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN"/> </FlashBankInfo> <FlashBankInfo Name="My Flash Bank3" BaseAddr="0x08020000" AlwaysPresent="1"> <LoaderInfo Name="My Flash loader" MaxSize="0x10000" Loader="Device_128.FLM" LoaderType="FLASH_ALGO_TYPE_OPEN"/> </FlashBankInfo> </Device></Database>
打开JFlash.exe -> Create newproject -> Start J-Flash -> ...,在设备列表中查找My Device,显示如下
双击后进入以下界面
现在,我们自定义的新设备就添加完成了,实际项目中根据项目设备的信息对其修改即可。
参考
https://blog.csdn.net/u013517122/article/details/127985574 JLink添加新设备用于下载/调试固件
https://blog.csdn.net/weixin_42078116/article/details/121120530 手动添加JLink不支持的芯片
https://blog.csdn.net/m0_37685403/article/details/126758628 Jlink新版驱动安装目录无JLinkDevices.xml添加新器件方法 主要是对jlink能不能支持新设备的原理不是很清楚 手动添加这种新的器件 是不是还得手动添加这种新器件的一些特性参数呢 需要对芯片本身的一些参数 比如地址 存储等非常了解才可以手动添加吧 楼主这是使用的什么工具啊 是免费的吗 是不是只有正版的新版jlink才可以手动添加呢 晓伍 发表于 2023-4-11 14:51
是不是只有正版的新版jlink才可以手动添加呢
看着题目是说只有最新版本的才有这个功能的 太实用了,谢谢分享。 怎么增加新芯片? 安装Jlink最新的驱动V7.84版本 Jlink包括了MM32的芯片了吗? JLink在 V770d 版本上不再沿用之前的添加新设备的方式支持新设备下载,而是使用了一种新的方式。 使用新方式添加新设备有个好处就是后面即使更新了驱动,也不会删除已经添加的设备。 这个是单片机的问题吧。 下载 JLink_V770d 之前的版本。 市场上的新芯片层出不穷,JLink的官方支持不可能完全跟得上 jlink的设备吗? 新版本的 JLink 驱动中已经没有 Devices 目录和 JLinkDevices.xml 文件了,即旧的方法已经不能在新的驱动中使用了。 参考J-Link 指导手册。 Link如何手动添加MM32 MCU?
页:
[1]
2