数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 8310|回复: 35

[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

打赏

参与人数 4家元 +150 收起 理由
飞向狙沙 + 30 謝謝分享
springvirus + 30
拿糖糖换媳妇 + 30 謝謝分享
家睦 + 60

查看全部打赏

 楼主| 发表于 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 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-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-7-10 21:12:47 | 显示全部楼层
swsh007 发表于 2024-7-10 17:40
原版固件添加minux_Bootloader和无Bootloader这个咋分辨?
还是随便刷都行,谢。

任意一个都能用,minux_Bootloader已经无法匹配现在的线升级功能了,网上其它版本宣称带Bootloader基本上都是这个。有无minux_Bootloader功能上看不出什么区别。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-11 18:25:34 来自手机浏览器 | 显示全部楼层
ahyu99 发表于 2024-8-11 15:56
搭车问下:JLink OB 与我们普通的那个JLink有什么区别?可以通用吗?
普通的JLink现在基本上都是无法使用了 ...

你说的应该是D版的jlink plus吧,ob速度最高4MHz,plus最高10MHz左右,plus可以使用jscope,虽然采样率比较低。D版plus最高可用7.56d版本驱动。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-22 14:04:15 | 显示全部楼层
本帖最后由 mmxx2015 于 2025-6-22 14:25 编辑

JLink_OB_STM32F103_V20250401
提取自驱动程序“JLink_Windows_V844a_i386”,无bootloader程序,不可自动升级。




本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-6-22 14:21:32 | 显示全部楼层
yffbit 发表于 2025-6-18 14:10
两版JLink OB固件支不支持Cortex-M33

不支持。
各版本支持列表:
https://www.segger.cn/products/d ... dels/j-link-ob/#faq
回复 支持 反对

使用道具 举报

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

本版积分规则

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

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-9-25 05:34 , Processed in 0.483601 second(s), 15 queries , Gzip On, Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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