数码之家

 找回密码
 立即注册
搜索
查看: 5743|回复: 32

[ARM] 一些用STM32F103C8T6实现的各种Link固件

[复制链接]
发表于 2024-6-2 10:17:10 | 显示全部楼层 |阅读模式
早就听说可用STM32F103C8T6制作DAP Link、ST Link、JLink OB,最近用STM32F103C8T6核心板测试多个网上流传的固件,感觉还是基于Segger官方方案的JLink OB功能最好:稳定,可以用J-Flash烧录、读取芯片,速度远超串口烧录、读取。

用的就是这种差不多10块钱一片的小蓝板。

这种板子贴的是STM32F103C8T6,但大部分芯片可用ROM是128KB的(与STM32F103CBT6相同),如果某些芯片只有64KB,制作出来的Link可能不可用或功能受限(已知官方JLink OB固件序列号写到后64K空间)。

一、DAP Link
这个是能找到最多固件版本的,这些固件大同小异,无非是虚拟U盘升级、CDC串口,可以到立创开源广场找合适的使用,这里介绍一下技新电子制作的版本,这个版本只保留最重要的调试功能,固件不到64KB,程序看起来比较简单,很适合按需修改。DAP Link官方方案SWDIO使用2个IO(两个引脚之间接100Ω电阻,SWDO引脚作为SWDIO),他们的程序只使用1个IO。
默认IO配置(可根据需要修改源程序):
PA2--SWDIO
PA4--SWCLK
PA6--NRST

资料下载:

https://oshwhub.com/jixin002/stm32f103c8t6_cmsis-dap

使用体验:对多数芯片比较友好,但是,无法调试手上一块STM32F407VE核心板,连不上;速度据说有600K左右;几乎只能下载程序,没用读出程序的工具。


二、ST Link
流传固件最多的的是V2和V2-1版本。
ST-LINK V2和V2-1差异:
V2:支持STM32和STM8调试,不带虚拟串口。
V2-1:仅支持STM32调试,不支持SWIM(即不能调试STM8),带虚拟串口和虚拟U盘下载。


很多制作资料会推荐使用“STLinkV2.J28.M18”这个固件,但是,实测STM32F103C8T6用不了,Keil提示“ST-Link in DFU mode. Restart it or upgrade it”,升级或替换Keil的ST-Link文件为老版本都不行,也许这个固件需要STM32F103CB芯片才能用。

实测可用固件:
V2.J27.M15(不可升级,需要替换Keil的ST-Link文件为老版本,不然会提示升级)
资料下载:
https://oshwhub.com/dean/stlink_ ... 87d8fe88b8efc2d2163
下载其中的“stlink_C8.zip”,解压烧录“stlink27.bin”,然后连接USB后再用压缩包“recovery\ST-LinkUpgrade_V2.J27.M15.exe”恢复固件才能用。


STLinkV2.J16.S4
资料下载:
https://oshwhub.com/davidfeng/stlink-v2-1
下载其中的“STLinkV2.固件.bin”。

不能直接使用,可升级到最新版本,升级后可用。可从Kei、STM32 ST-LINK Utilityl升级,也可以下载ST固件升级程序升级(固件最新)。这个版本的Bootloader是会设置芯片读保护,无法读出升级后的程序。
ST固件升级程序下载(比较恶心,需要注册才能下载):
https://www.st.com/zh/development-tools/stsw-link007.html


IO配置:
PB12--SWDI(接100Ω电阻到PB14,实测直连也能用)
PB14--SWDO(SWDO引脚作为SWDIO)
PB13--SWCLK
PB0--NRST

使用体验:对ST自家芯片比较友好,但是,无法调试手上一块STM32F407VE核心板,能连上但无法下载或提示“Cannot Load Flash Programming Algorithm”,对部分非ST芯片能下载、调试;速度最高4M,比较飘忽,时高时低,可以看到最高可设置多少;只有ST家的芯片可以用STM32 ST-LINK Utility读出程序。

三、JLink OB
JLink OB的固件多来自从JLink驱动的JLinkARM.dll提取后填充Bootloader区或使用第三方Bootloader程序填充Bootloader区,无论使用哪种方法,看起来调试功能都正常,除2009版设备名称为“J-Link ARM-OB STM32”的固件可填充第三方Bootloader程序能自动升级到2012年版固件外其它都不能自动升级,新版固件的设备名称已改为“J-Link OB-STM32F103 V1”,这个名称尚未发现可以自动升级的Bootloader程序,一升级就变砖了。最好一版可从JLinkARM.dll提取JLink OB固件的JLink驱动是V7.54,这个版本的固件发布时间是2021年,新版Keil调试或使用新版JLink内的J-Flash等应用操作时会提示升级固件,虽然可以不升级,但每次提示还是很烦人,可以修改固件里的日期来解决这个问题,比如把年改为2099。
提取的固件最高速度随版本更新而降低,据说最初最高速度可到10M,2014年左右先知为4M,2017年左右限制为2.2M,现在限制为2M。
可以提取固件的最后一版JLink驱动是2021年的V7.54,之后的版本固件直接以文件形式提供,但不完整而且好像是加密的,只能通过自动升级程序来升级。截至V796j版驱动,最新版固件是2023.10.30发布的固件,经过努力,我从其它渠道提取了改版固件,初步测试调试、烧录都没问题,感兴趣的可以试用一下(提取方法比较复杂、耗时,而且我也没完全分析完,暂不公布)。
2021(网上下的别人提取的固件)、2023版固件:


JLink OB还有兼容ST-Link I/O的固件,这种固件来源:先烧入ST-Link固件,再通过ST Link Reflash切换为JLink OB固件。这种固件无法使用J-Flash烧录、读取芯片。

如果固件中没用内置序列号(Keil显示序列号为4294967295,十进制,十六进制就是FFFFFFFF),如果要使用J-Flash,需要用老版本的JLink驱动里的JLink.exe写入序列号,最后一版可写序列号的JLink驱动是V634h。只有序列号显示为-1才可以写入。

写入序列号后,还有添加license,license用网上流传的Jlink注册机生成,J-Link栏填写入的序列号,依次复制、粘贴到J-Flash授权管理器。


J-Flash:Help--Licenses--Add license(可以添加多个序列号对应的授权,一次可以粘贴多行)


IO配置:
PBA7--SWDIO
PA5--SWCLK
PA1--NRST

使用体验:对我手上的所有ARM芯片都很友好,上述两种Link都无法调试的那块STM32F407VE核心板也能正常调试,只是速度需设置慢一些,速度最高4M(旧版固件)~2M(新版固件);可用J-Flash读写芯片。

固件烧录:如果已经有一个仿真器,建议使用SWD接口烧录固件(速度快),如果没有仿真器,可以通过串口烧录程序:BOOT0接高电平、BOOT1接低电平,用FlyMcu之类的软件烧录程序,波特率可以设置高些,但感觉也快不了多少,烧录完成BOOT0恢复为接低电平才能使用。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 3家元 +120 收起 理由
springvirus + 30
拿糖糖换媳妇 + 30 謝謝分享
家睦 + 60

查看全部打赏

发表于 2024-6-2 10:39:35 | 显示全部楼层
看不懂,纯帮顶...

---------------------------------
回复 支持 反对

使用道具 举报

发表于 2024-6-2 14:36:12 | 显示全部楼层
本帖最后由 inthsunshine 于 2024-6-2 14:43 编辑

后缀S4的固件,我找到的最高版本是V2.J24.S4,也是我stlinkv2目前使用的固件,最初是V2.J16.S4后面一路升级上来,中间还有个V2.J20.S4,不能刷其它后缀的固件,试过连不上差点连恢复都不行,后来就一直没敢刷非S4固件

我的stlinkv2是立创买的,相对10元的,做工好多了,usb和swd都有esd保护, 芯片是64脚
回复 支持 反对

使用道具 举报

发表于 2024-6-2 17:55:50 | 显示全部楼层
不错,经验值得借鉴。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-6-2 19:17:37 | 显示全部楼层
inthsunshine 发表于 2024-6-2 14:36
后缀S4的固件,我找到的最高版本是V2.J24.S4,也是我stlinkv2目前使用的固件,最初是V2.J16.S4后面一路升级 ...

V2.J16.S4可以用STSW-LINK007固件升级程序升级到V2.J45.S7看起来功能是相同的,测试能用。
如果升级变砖了就没法用恢复固件的方法修复了,只能用其它工具重新烧录固件了。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2024-6-2 19:58:53 | 显示全部楼层
我试过别的固件,固件是刷成功了但结果连接不上,差点想联系厂家,忘记了后来如何刷回S4固件,此后再也不敢乱刷


V2J16S4速度只有1.8M, 现在有4M也行了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

发表于 2024-6-2 21:00:55 | 显示全部楼层
daplink不错可以调试加串口
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-6-2 21:19:09 | 显示全部楼层
inthsunshine 发表于 2024-6-2 19:58
我试过别的固件,固件是刷成功了但结果连接不上,差点想联系厂家,忘记了后来如何刷回S4固件,此后再也不敢 ...

好像和目标板芯片有关,测试发现连接STM32F103最高速度可选4M,连接STM32F407最高速度可选1.8M(实际可能要设置更低速才能用,否则报“Cannot Load Flash Programming Algorithm”之类的错误)。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-6-2 21:20:23 | 显示全部楼层
soma 发表于 2024-6-2 21:00
daplink不错可以调试加串口

ST-Link、JLink OB也有带CDC串口的固件,不过,没用过这个功能。
回复 支持 反对

使用道具 举报

发表于 2024-6-2 21:23:57 | 显示全部楼层
本帖最后由 inthsunshine 于 2024-6-2 21:29 编辑
mmxx2015 发表于 2024-6-2 21:19
好像和目标板芯片有关,测试发现连接STM32F103最高速度可选4M,连接STM32F407最高速度可选1.8M(实际可能 ...

.S4的不会啊,我都是设到最高速度都可以用,F,0,F1,F3,F4都试过,都能到4MHz不会报错, stlinkv2我用的一直很稳定,没出错过,中间还有个小插曲,有1次连接目标板但没调试,正负极接反了,当时不知道,一直插了半小时,后来发现整个stlinkv2烫的要命,我想这下挂了,等冷却后联机,一切正常,一直用到现在

回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-6-3 01:03:19 | 显示全部楼层
inthsunshine 发表于 2024-6-2 21:23
.S4的不会啊,我都是设到最高速度都可以用,F,0,F1,F3,F4都试过,都能到4MHz不会报错, stlinkv2我用的一直 ...

可能和芯片关系不大,我另一块雅特力AT32F435RMT7的板子没问题,速度最高可以选4M,STM32F407VET6那块核心板看原理图也没什么特殊的,就是SWCLK接10K下拉电阻,有空拆了再试试。
V2.J24.S4固件可通过MDK517、MDK518这两个版本安装目录下ARM\STLink\ST-LinkUpgrade.exe升级固件得到,不一定要安装,可以用解压缩软件打开安装包直接部分解压。如果升级了其它版本觉得不好用,可以通过这种方式恢复。

回复 支持 反对

使用道具 举报

发表于 2024-6-3 09:59:03 | 显示全部楼层
几年前买了几片 air32f103cbt6 换4-5块钱买的 stm32f103c6t6 板子上的芯片,然后刷 stlink 用
话说这玩意还有其他玩的么 比如 lattice 下载器
回复 支持 反对

使用道具 举报

发表于 2024-6-3 21:19:20 | 显示全部楼层
本帖最后由 inthsunshine 于 2024-6-3 21:50 编辑

查资料可知

V2.Jxx.Sx    --STLINK v2固件, S4->S6-S7
V2.Jxx.Mxx  --STLINK v2.1固件

其中

J  --支持STM32调试接口的版本(JTAG和SWD协议)
S  --支持STM8调试接口的版本(SWIM协议)
M  --用于大容量存储和虚拟COM端口接口的版本
B   --桥接界面版本



回复 支持 反对

使用道具 举报

发表于 2024-6-3 21:38:00 | 显示全部楼层
最好用的是DAP LINK,代码完全开源,就是keil的安装目录之下,找个高主频的芯片移植过去,速度可以非常快。
我就移植到了STM32H750VB上,使用WinUSB接口,烧录速度非常快。
回复 支持 反对

使用道具 举报

发表于 2024-6-3 21:52:40 | 显示全部楼层
595953427@qq 发表于 2024-6-3 21:38
最好用的是DAP LINK,代码完全开源,就是keil的安装目录之下,找个高主频的芯片移植过去,速度可以非常快。 ...

常见的U盘大小的盗版stlink v2,一般用48Pin或64Pin的STM32, H750 100Pin装不下
回复 支持 反对

使用道具 举报

发表于 2024-6-3 22:55:03 来自手机浏览器 | 显示全部楼层
inthsunshine 发表于 2024-6-3 21:52
常见的U盘大小的盗版stlink v2,一般用48Pin或64Pin的STM32, H750 100Pin装不下

不装壳子不行吗?
回复 支持 反对

使用道具 举报

发表于 2024-6-3 23:36:03 | 显示全部楼层
几年前论坛里流行撸1块钱包邮的POS时,就有大神折腾给机器里STM32重刷固件后当编程器来用。
话说我现在后上还有五六台当时撸的手刷小POS
回复 支持 反对

使用道具 举报

发表于 2024-6-4 22:46:17 来自手机浏览器 | 显示全部楼层
自制过几种link,现在用stlink v2.1多些,自带串口玩stm32不错的选择,然后就是jlink ob了,支持的mcu很多,daplink用过几次就不用了。stlink v2没有虚拟串口,虽然可以调试stm8s,但是现在stm8s没有性价比呀,各种32太便宜了。
回复 支持 反对

使用道具 举报

发表于 2024-6-5 09:31:32 | 显示全部楼层
msvcp60 发表于 2024-6-4 22:46
自制过几种link,现在用stlink v2.1多些,自带串口玩stm32不错的选择,然后就是jlink ob了,支持的mcu很多 ...

daplink用过几次就不用了

有什么问题吗?
回复 支持 反对

使用道具 举报

发表于 2024-6-5 10:14:01 来自手机浏览器 | 显示全部楼层
inthsunshine 发表于 2024-6-5 09:31
daplink用过几次就不用了

有什么问题吗?

不接rst,keil里下载程序后不能自动运行,很少用了,不知道什么问题。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-2 00:29 , Processed in 0.171600 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表