前言
项目开发要用到Jlink调试代码,每次连接都有用Jlink 的Jtag连接板子的SWD接口,又恰逢开发板升级,然后想着能否把Jlink集成在下一代的开发板上。
看了下手中的Jlink好像比较小
检查之后发现这个好好像叫Jlink-OB,OB好像是On Board的缩写,
打开外壳查看
。。。。这也太简洁了吧,外部晶振都没有,直接用的内部的晶振。。
而且还是用的STM32F072C8T6 做主控,手头也没有F072的板子,只有F103C8T6,
如果原理相同的话应该是可以平替的,然后就试着找官方的资料
一、官方渠道找的Jlink OB 资料
Segger官方的Jlink OB 介绍:What is the J-Link OB? Segger官网关于JlinkOB的手册:JLinkOBSTM32F103.pdf
还真有F103做的Jlink-OB,原理图如下:
图片来源:JLinkOBSTM32F103.pdf
我用的是SWD模式,因此只要找到3.3V----GND----RESET—SWDIO—SWCLK—SWO 这六根线就行
但是原理图中是JTAG的端口,查到JTAG与SWD接口的对应关系:
简单来说就是:
TDO-----------SWO
TCLK----------SWCLK
TMS-----------SWDIO
RESET-------RESET
结合原理图得出:
PA10---------TDO-----------SWO
PA5----------TCLK----------SWCLK
PA7-----------TMS-----------SWDIO
但是Reset没法确定,因为有两个引脚:RESET and TRSTS
查看下文:
RESET
Abbreviation of System Reset. The electronic signal which causes the target system other than the TAP controller to be reset. This signal is also known as “nSRST” “nSYSRST”, “nRST”, or “nRESET” in some other manuals. See also nTRST.
nTRST
Abbreviation of TAP Reset. The electronic signal that causes the target system TAP controller to be reset. This signal is known as nICERST in some other manuals. See also nSRST.
翻译一下:
RESET
系统重置的缩写。导致TAP控制器以外的目标系统复位的电子信号。在其他一些手册中,此信号也称为“nSRST”、“nSYSRST”或“nRESET”。另请参见 nTRST。
nTRST
TAP 复位的缩写。导致目标系统TAP控制器复位的电子信号。该信号在其他一些手册中称为nICERST。另请参见 nSRST。
而这来两个分别连接两个引脚:
RESET----PA1
nTRST-----PA0
而且“TAP”像是个简称 但是搜索了这个文档没找到其他地方有全称。。。
然后尝试找下非官方资料
二、立创开源硬件平台上找了Jlink OB的帖子
原项目链接:JLink-OB_32f103
好像也没有看明白应该用哪个做RESET。。。
但是好像有固件源码!!!!
评论区留了.bin文件转.hex的工具:
下载了.bin源码 与 Bin转Hex工具:你自己用这个工具转吧,记得初始地址设置为:0x8000000,
链接:https://pan.baidu.com/s/13v4A1jt-ohrjbC3bicFDCQ
提取码:kw6h
转换出 OB-STM32_V754_Change date to to 30-02-02.hex
(直接下载:转换好的.hex文件和JLink_Windows_V764c_x86)
正好手头有个某宝买的STM32F103C8T6的核心板
不知道哪个引脚还不能烧录一个一个引脚试试吗?(万能穷举法【手动狗头】)
三、烧录固件到STM32F103C8T6方法
1. 安装好JLink_Windows_V764c_x86----选择J-Flash
2、选择“Create new project”
3.将下载好的Hex文件拖到软件内并连接好Jlink与F103C8T6
4.显示成功之后
按“F5”或上图点击“Program”
如果出现上图:“
ERROR: Programming failed @ address 0x08000000 (program error) - End of flash programming - ERROR: Program failed”
按“F7” 会得到如下弹窗,证明烧写完毕。
烧录成功!
5.MicroUSB 线连接制作好的第二个Jlink OB
插上电脑 设备管理器中—通用串行总线控制器—J-link driver
成功!
四、尝试用自制的Jlink OB 烧录到 新的 STM32F103中
找到一个之前做的项目
双击.uvprojx文件 在Keil中打开
Options for Target----Dubug—下拉选择J-LINK—settings–Port—SW
此时识别到SWDIO IDcode and Device Name
连接目标的SWD接口
PA7(TMS-SWDIO)-----目标EVB的SWDIO
PA5(TCLK-SWCLK)—目标EVB的SWCLK
点击 Download
Full Chip Erase Done.
Programming Done.
Verify OK.
JLink Info: Reset: Halt core after reset via DEMCR.VC_CORERESET.
JLink Info: Reset: Reset device via AIRCR.SYSRESETREQ.
Application running …
Flash Load finished at 21:49:18"
自制Jlink OB 成功!!!
五、RESET最终是PA1
连接了一个有RESET 的32位开发板
试了一下,看Segger的原理图上用了RESET是接到STM32Jlink-OB上NRST上 测试了一下—不行
又发现https://lceda.cn/editor#id=8c606087ff85467aba48fa8b07c9a353 这个帖子中nRESET连接的是Jlink OB的PA1
测试一下成功!
测试结果:
F103C8T6版Jlink OB引脚--------------------目标EVB
PA10(TDO)-----------------------目标EVB的SWO
PA7(TMS-SWDIO)--------------目标EVB的SWDIO
PA5(TCLK-SWCLK)------------目标EVB的SWCLK
PA1 (nRESET)-------------------目标EVB的Reset
最后按照原理图JLinkOBSTM32F103.pdf 连接好其他部分
自制Jlink OB 原理图如下:
随后有机会原理图开源
六、改Jlink OB序列号 SN码
/****** 20220927更新 修改序列号 ******/
最近生产上,设备比较多,
想用5个设备同时烧录,尝试烧录PCB上安装5个Jlink-OB
查了一下可能跟序列号有关
想用之前做的两个Jlink做测试
发现两个Jlink OB 序列号都是:4294967295
阿莫电子论坛: 请教Jlink达人如何修改序列号SN
用HEX查看之后 4294967295 HEX为FFFF FFFF
用Hex editor打开固件搜索字节序列 实在最后4行内,
全部都是FFFF FFFF 没法确定哪个是序列号
想着应该可以改序列号 网上搜索关键词 Jlink OB 改序列号
CSDN:自制带串口的J-Link OB 072
看了上述的帖子之后可以尝试用J-FLASH commder更改命令
用电脑上的J-flash-V7.64c发现无法使用 exec setsn=88880001命令,
查了原来项目的链接:
原项目链接:JLink-OB_32f103
看到可以使用低版本的J-Flash应该可以设置
下载了
J-flash-V6.46 下载地址 之后 返回O.K.
打开Keil发现还是原来的序列号,
之后重新插入发现序列号已经改过来了
/****** 20230218更新 添加序列号到 license ******/
七、Jlink OB 添加序列号到 license
在用做好的Jlink ob给新的设备烧录时 Jflash弹出窗口:
Could not read unit serial number!
这是需要将自制的Jlink ob写入序列号
之后再将Jlink 注册
注册方法
1、下载工具 Jlink_ob注册神器_2019(CSDN 博主:_WindChimes )
2、打开 :license Manager(一定要低版本)
“Add licence"
3、打开 神器
1、将自己定义的序列号填入
2、点击 Generate
3、将底下这四串 复制到上图中的框中
4、填入字符串
这样你的Jlink OB就注册完毕了!
参考:ERROR: Could not read unit serial number!
—CSDN: _WindChimes 帖子
参考链接:
Segger官方的Jlink OB 介绍:What is the J-Link OB? Segger官网关于JlinkOB的手册:JLinkOBSTM32F103.pdf 立创开源硬件平台: JLink-OB_32f103