打印
[开发工具]

【JLink】JLink7.70c更高版本驱动添加自定义设备方法

[复制链接]
3873|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cx1524|  楼主 | 2023-3-19 16:56 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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 BankFlash 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,显示如下
  
  双击后进入以下界面
  
  现在,我们自定义的新设备就添加完成了,实际项目中根据项目设备的信息对其修改即可。

参考
[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添加新器件方法

使用特权

评论回复
沙发
tpgf| | 2023-4-11 12:18 | 只看该作者
主要是对jlink能不能支持新设备的原理不是很清楚

使用特权

评论回复
板凳
aoyi| | 2023-4-11 13:32 | 只看该作者
手动添加这种新的器件 是不是还得手动添加这种新器件的一些特性参数呢

使用特权

评论回复
地板
qcliu| | 2023-4-11 13:53 | 只看该作者
需要对芯片本身的一些参数 比如地址 存储等非常了解才可以手动添加吧

使用特权

评论回复
5
磨砂| | 2023-4-11 14:33 | 只看该作者
楼主这是使用的什么工具啊 是免费的吗

使用特权

评论回复
6
晓伍| | 2023-4-11 14:51 | 只看该作者
是不是只有正版的新版jlink才可以手动添加呢

使用特权

评论回复
7
八层楼| | 2023-4-11 15:41 | 只看该作者
晓伍 发表于 2023-4-11 14:51
是不是只有正版的新版jlink才可以手动添加呢

看着题目是说只有最新版本的才有这个功能的

使用特权

评论回复
8
chenjun89| | 2023-4-11 20:10 | 只看该作者
太实用了,谢谢分享。

使用特权

评论回复
9
hudi008| | 2023-4-15 19:48 | 只看该作者
怎么增加新芯片?              

使用特权

评论回复
10
jackcat| | 2023-4-15 20:07 | 只看该作者
安装Jlink最新的驱动V7.84版本

使用特权

评论回复
11
loutin| | 2023-4-15 22:27 | 只看该作者
Jlink包括了MM32的芯片了吗?

使用特权

评论回复
12
tabmone| | 2023-4-16 22:10 | 只看该作者
JLink在 V770d 版本上不再沿用之前的添加新设备的方式支持新设备下载,而是使用了一种新的方式。

使用特权

评论回复
13
eefas| | 2023-4-16 22:20 | 只看该作者
使用新方式添加新设备有个好处就是后面即使更新了驱动,也不会删除已经添加的设备。

使用特权

评论回复
14
robertesth| | 2023-4-16 22:42 | 只看该作者
这个是单片机的问题吧。              

使用特权

评论回复
15
uytyu| | 2023-4-16 22:50 | 只看该作者
下载 JLink_V770d 之前的版本。

使用特权

评论回复
16
qiufengsd| | 2023-4-16 22:59 | 只看该作者
市场上的新芯片层出不穷,JLink的官方支持不可能完全跟得上

使用特权

评论回复
17
yeates333| | 2023-4-16 23:05 | 只看该作者
jlink的设备吗?              

使用特权

评论回复
18
eefas| | 2023-4-17 17:59 | 只看该作者
新版本的 JLink 驱动中已经没有 Devices 目录和 JLinkDevices.xml 文件了,即旧的方法已经不能在新的驱动中使用了。

使用特权

评论回复
19
albertaabbot| | 2023-4-18 10:53 | 只看该作者
参考J-Link 指导手册。              

使用特权

评论回复
20
macpherson| | 2023-4-18 11:18 | 只看该作者
Link如何手动添加MM32 MCU?

使用特权

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

本版积分规则

7

主题

9

帖子

0

粉丝