搜索
bottom↓
回复: 31

STLink + DAPLink 双剑合一

  [复制链接]

出0入0汤圆

发表于 2016-6-24 09:01:07 | 显示全部楼层 |阅读模式
本帖最后由 useronce 于 2016-6-24 10:44 编辑

今年打算弄一个基于 stm32 的 arduino 功能板,所以看到了 daplink 。毕竟先前弄的 stlink 2.1 放这上面不太尊重知识产权。
所以移植了 daplink 到 stlink v2.1 的硬件上。就有了下面这个设备。



硬件没啥奇特,固件也都是现有的。这里跟大家分享一下两个固件切换的思路。

用 msc 作为 bootloader,里面包含两个固件的指示文件(而不是固件本身)。在 Bootloader 下,删除一个文件后,就启动保留文件对应的固件。



在固件应用执行后,如何进 btl 呢? 注意一图的 BTL-JMP 和 GND 短接后,连到 PC 就可以强制进入了。软的方法是,
STLink 下,用 ST-LinkUpgrade.exe 切;DAPLink 下,放一个 DAPLink 应用的固件文件切。

这样的好处是,固件不用反复下载,几个操作就能切换到另一个 swd 仿真固件上。比如 stlink v2.1 的虚拟串口在 pn532 的通讯上有问题,
切到 daplink 的虚拟串口上就好了。daplink 的 swo 速度没有 stlink 的快,切回 stlink 就行了。非常适合折腾。

欢迎拍砖。

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2016-6-24 09:06:25 | 显示全部楼层
这个方法,也可以搞一个 JLinkOB + DAPLink  的复合设备。思路一样,固件都是现成的。

出0入0汤圆

发表于 2016-6-24 09:48:34 | 显示全部楼层
本帖最后由 Vmao 于 2016-6-24 09:55 编辑

前提是BL+两个固件的大小不能超过芯片的容量? OR外置存储?
有琢磨了一下,其实本质就是弄了一个BL 可以引导烧写两个固件

出0入0汤圆

发表于 2016-6-24 09:54:49 来自手机 | 显示全部楼层
不太理解这两个固件需要改源码吗?不改源码的话那些中断向量什么会有冲突吧。还是bootloader修改固件的跳转地址什么的。

出0入0汤圆

 楼主| 发表于 2016-6-24 10:31:54 | 显示全部楼层
本帖最后由 useronce 于 2016-6-24 10:37 编辑

BTL 除了固件升级功能外,就是选择加载默认的 *link 固件,和修改默认加载项。
BTL 和 STLink, DAPLink 是一个 hex 直接下载到 STM32F103Cx 芯片上跑的。

STLink v2.1 固件没法改。但是 DAPLink 是开源的,可以修改执行的地址:

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2016-6-24 10:46:44 来自手机 | 显示全部楼层
楼主能否细说下切换固件

出100入85汤圆

发表于 2016-6-24 11:24:09 | 显示全部楼层
可以说说怎么改吗?

出0入0汤圆

发表于 2016-6-24 11:35:19 | 显示全部楼层
既然有跳帽,是不是可以做成插上跳帽就是DAPLINK,拔掉就是STLINK

出0入0汤圆

发表于 2016-6-24 11:38:43 | 显示全部楼层
useronce 发表于 2016-6-24 10:31
BTL 除了固件升级功能外,就是选择加载默认的 *link 固件,和修改默认加载项。
BTL 和 STLink, DAPLink 是 ...

那 STLink 的固件可以不从 0x80000000 开始的吗?
这个Bbootloader 占用了最低的地址,如果 STLink 的固件编译时候就
使用 0x80000000 然后又没法改那不就玩不了?

出0入0汤圆

 楼主| 发表于 2016-6-24 12:38:31 | 显示全部楼层
本帖最后由 useronce 于 2016-6-24 12:46 编辑

@huangqi412 切换固件,就是进入 btl 后,通过删除 DAPLink.txt 或者 STLink.txt 实现,执行删除操作的时候,就更新加载配置,而不需要动 flash 里面的 *link 固件程序。

@whatcanitbe 就把 daplink 链接的时候,放到 64k 后面就可以了。

@irobot07  你的这个做法,不太合理。比如目标板需要 *link 供电,那个地线就不好接了。而且,
这个设备,里面还可以 swim 的电路(与 btl-jmp, uart-dtr 复用),下载一个 stlink v2 的固件进去,还可以调 stm8 。

@helislayer STLink 的官方的硬件,固件都是由 bootloader 加载的,地址不在 0x0800 0000 上。

出0入0汤圆

发表于 2016-6-24 13:06:17 | 显示全部楼层
stlink 2.1 bootload 固件可否共享一下?

出0入0汤圆

发表于 2016-6-24 13:29:44 | 显示全部楼层
useronce 发表于 2016-6-24 12:38
@huangqi412 切换固件,就是进入 btl 后,通过删除 DAPLink.txt 或者 STLink.txt 实现,执行删除操作的时候 ...

哦多谢解释,那 BTL 应该是利用了这一点。这个就解答我的疑惑了。

出0入0汤圆

发表于 2016-6-24 13:36:39 | 显示全部楼层
同问:stlink 2.1 bootload 固件可否共享一下?
或者私下发一份

出0入0汤圆

发表于 2016-6-24 13:50:55 | 显示全部楼层
这个牛叉,什么都能结合

出0入0汤圆

发表于 2016-6-24 13:53:47 | 显示全部楼层
请告诉我stlink的起始地址,谢谢。

出0入0汤圆

 楼主| 发表于 2016-6-24 14:38:42 | 显示全部楼层
@mowin 0x08004000

出0入0汤圆

发表于 2016-6-24 17:19:37 | 显示全部楼层
GEILI给力啊,这个不错的选择

出0入0汤圆

发表于 2016-6-24 17:44:15 | 显示全部楼层
上电进BOOT,删除一个文件选择进哪个调试器固件这个明白,删除文件是假删除,只是为了做选择。
STLink 下,用 ST-LinkUpgrade.exe 切;DAPLink 下,放一个 DAPLink 应用的固件文件切。    这个没懂,STLINK固件下,用ST升级软件会进ST的BOOT对么,ST的BOOT不是从8000000开始?如果是的话,此时ST的BOOT已经被你的BOOT覆盖了。假设不是,进了ST的BOOT如何能切到DAP固件。  在DAP固件下,放一个应用的固件文件切什么意思,此时还有U盘,拖个文件到U盘?
上电如果没有短接跳线帽就直接进其中一个调试器固件(这个默认调试器你是选的哪个),如果短接跳线帽就在BOOT人工选择调试器对吧。

出0入0汤圆

 楼主| 发表于 2016-6-24 18:30:01 | 显示全部楼层
通过 BTL-JMP 跳线帽,就是强制进 我的 BTL,然后出现一个虚拟盘符。

ST-LinkUpgrade.exe 会执行一个跳转,进入到 ST.BTL 的内部,进行重新枚举,下载新的 stlink 固件。
在我的 BTL 里面,保留了相同功能,也是重新枚举,从而实现以软的方式进入 我的 BTL。

mbed 的 DAPLink 是 CDC + MSC + SWD 的复合设备,所以,往 MSC 虚拟磁盘里,拖放一个目标芯片
的 hex/bin 就可以更新目标芯片的固件;而拖放一个 DAPLink 的固件文件,就可以跳转到我的 BTL 里
面,执行重新枚举,从而实现以软的方式进入 我的 BTL。此时(在我的 BTL 里,再把这个 DAPLink
固件文件拖放到 BTL 的虚拟磁盘里,就可以更新 DAPLink 的固件了。当然,做 STLink 的固件更新,
这个模式下,也能以相同方式实现而无需借助于 PC 端的工具)


出0入0汤圆

发表于 2016-10-8 08:13:13 | 显示全部楼层
useronce 发表于 2016-6-24 18:30
通过 BTL-JMP 跳线帽,就是强制进 我的 BTL,然后出现一个虚拟盘符。

ST-LinkUpgrade.exe 会执行一个跳转 ...

>>在我的 BTL 里面,保留了相同功能,也是重新枚举,从而实现以软的方式进入 我的 BTL。
是不是意味着你写了一个和STLINK兼容的BTL?

出0入0汤圆

发表于 2016-10-8 08:40:03 | 显示全部楼层
不错,不错,谢谢分享

出0入0汤圆

发表于 2016-10-8 08:50:16 | 显示全部楼层
牛逼

出0入0汤圆

 楼主| 发表于 2016-10-14 13:40:37 | 显示全部楼层
这是自己写的一个固件: Bootloader + STLink + DAPLink for Arducleo。

硬件图和 Nucleo 的 STLink 的基本一致,感兴趣的网友可以看看 >> 这个 <<

使用上,将固件下载到 F103xB 芯片上,就可以了。也可以弄来拯救变砖的 Nucleo 板。^)^





本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2016-10-14 14:02:30 | 显示全部楼层






本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2016-10-14 14:36:52 | 显示全部楼层
jiespring 发表于 2016-6-24 13:36
同问:stlink 2.1 bootload 固件可否共享一下?
或者私下发一份

STM32: 关于ST-LINK/V2-1 BOOTLOADER

https://www.brobwind.com/archives/1136#comment-178

出0入0汤圆

发表于 2016-10-15 00:45:24 | 显示全部楼层
mark,好贴。回头把我的stlink刷成这个。

出0入0汤圆

发表于 2017-6-13 17:03:48 | 显示全部楼层
试了把楼主的固件烧到STLINK里,stlink, daplink分别通过stlink utility跟openocd都可以烧录程序,VCP也好使,不过拷贝程序到虚拟盘了,都无法烧录程序
在BOOTLOADER模式下,也无法更新STLink的程序,我试着把一个文件名为STLinkV2.bin的程序放到虚拟盘,等了好久都没有反应,重插也是原来的固件
不知道是不是因为的山寨STLINK是使用STM32F101CB芯片的缘故

出0入13汤圆

发表于 2017-6-14 07:04:55 来自手机 | 显示全部楼层
谢谢分享,这个不错,直接支持两个仿真器

出0入0汤圆

发表于 2017-6-14 11:33:03 | 显示全部楼层
学习了。。。

出0入0汤圆

发表于 2017-7-8 22:50:27 | 显示全部楼层
谢谢分享,不错,支持两个仿真器

出0入0汤圆

发表于 2018-7-4 11:44:34 | 显示全部楼层
感谢楼主的分享

出0入0汤圆

发表于 2018-12-11 20:33:57 | 显示全部楼层
不错,谢谢分享
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 16:43

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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