本帖最后由 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名 | BaseAddr | Flash Bank的起始位置 | AlwaysPresent | 指定Flash Bank是否始终存在 ,如果为“1”,该Flash Bank会受“erase”命令影响 |
FlashBankInfo还有一个子元素<Loader>,该元素用于描述该Flash Bank的Flash Loader信息,其具体元素如下:
属性 | 说明 | Name | Flash Loader名 | MaxSize | Flash烧录范围的大小 | Sectorization | 用于代替FLM/ELF文件中的Sectorization(非必要) | Loader | FLM/ELF文件的路径 | LoaderType | Flash 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,显示如下
双击后进入以下界面
现在,我们自定义的新设备就添加完成了,实际项目中根据项目设备的信息对其修改即可。
参考
[1] https://blog.csdn.net/u013517122/article/details/127985574 JLink添加新设备用于下载/调试固件
[2] https://blog.csdn.net/weixin_42078116/article/details/121120530 手动添加JLink不支持的芯片
[3] https://blog.csdn.net/m0_37685403/article/details/126758628 Jlink新版驱动安装目录无JLinkDevices.xml添加新器件方法 |