[开发工具] ST-Link下载程序的协议,有米有开方?

[复制链接]
1116|12
 楼主| 封存into 发表于 2025-3-2 09:00 | 显示全部楼层 |阅读模式
很好奇stlink是如何将HEX文件下载到目标芯片里的?
只是将pc的usb转为ttl信号,写入目标芯片中?
该有个通信协议之类的?
公羊子丹 发表于 2025-3-3 07:47 | 显示全部楼层
ST-Link 确实有自己的通信协议,不过 ST 官方没有完全公开,它通过 SWD 或 JTAG 和 MCU 交互来写入程序。
周半梅 发表于 2025-3-3 07:48 | 显示全部楼层
你可以看看 OpenOCD 里对 ST-Link 的支持,虽然 ST 没有开源协议,但 OpenOCD 逆向了一些基本功能,可以作为参考。
帛灿灿 发表于 2025-3-3 07:50 | 显示全部楼层
ST-Link 不是简单的 USB 转 TTL,而是 USB 转 SWD/JTAG,它通过 SWD 直接访问 MCU 的 Flash 存储器来写入 HEX 文件。
童雨竹 发表于 2025-3-3 07:51 | 显示全部楼层
你可以抓取 ST-Link 和 STM32 之间的 SWD 信号,看看具体的通信过程,有些人用 Saleae 逻辑分析仪解析过这些信号。
万图 发表于 2025-3-3 07:53 | 显示全部楼层
如果你想自己实现一个 ST-Link 兼容工具,可以看看 DAPLink,这是 ARM 开源的调试协议,支持 SWD 和 JTAG。
Wordsworth 发表于 2025-3-3 07:54 | 显示全部楼层
ST 官方有提供 ST-Link USB 协议文档,不过是受限的,只有签 NDA(保密协议)才能获取完整的技术细节。
Bblythe 发表于 2025-3-3 07:56 | 显示全部楼层
除了 STCubeProgrammer,还有一些第三方工具,比如 PyOCD 也支持 ST-Link,可以研究它们是如何实现的。
Pulitzer 发表于 2025-3-3 07:57 | 显示全部楼层
ST-Link 其实支持多种 Flash 编程方式,比如通过 Bootloader 直接写入 Flash,或者用 Debug 模式写入。
Uriah 发表于 2025-3-3 07:59 | 显示全部楼层
你可以用 Wireshark + USBPcap 抓取 PC 和 ST-Link 之间的 USB 通信数据,看看它们是如何交互的。
Clyde011 发表于 2025-3-3 08:00 | 显示全部楼层
有人做过基于 STM32 的开源 ST-Link 替代方案,比如 Black Magic Probe,它的固件是开源的,可以参考一下它的实现方式。
 楼主| 封存into 发表于 2025-3-3 19:58 | 显示全部楼层
周半梅 发表于 2025-3-3 07:48
你可以看看 OpenOCD 里对 ST-Link 的支持,虽然 ST 没有开源协议,但 OpenOCD 逆向了一些基本功能,可以作 ...

也就是说openocd也没 版权
白马过平川 发表于 2025-3-18 01:16 | 显示全部楼层
ST-Link是一种用于 STM32 微控制器的调试和编程工具,它通过 USB 接口与 PC 通信,并通过 SWDJTAG 接口与目标芯片通信

失物招領 发表于 2025-3-18 02:25 | 显示全部楼层
ST-Link不仅仅是简单的USBTTL信号转换器,它实际上是一个复杂的调试和编程工具,具有自己的固件和通信协议

她已醉 发表于 2025-3-18 03:35 | 显示全部楼层
PC 通过 USB 接口与 ST-Link 通信,发送调试和编程命令。ST-Link 的固件解析这些命令,并将其转换为 SWD JTAG 协议

春日负喧 发表于 2025-3-18 04:29 | 显示全部楼层
其实ST-Link 通过 SWD JTAG 接口与目标芯片通信。SWD 是一种两线制的调试接口,包括 SWDIO(数据线)和 SWCLK(时钟线)。JTAG 是一种四线制的调试接口,包括 TMSTCKTDI TDO

将爱藏于深海 发表于 2025-3-18 05:21 | 显示全部楼层
一般是这样,ST-Link HEX 文件解析为二进制数据,并通过 SWD JTAG 接口将数据写入目标芯片的 Flash 存储器中

温室雏菊 发表于 2025-3-18 06:36 | 显示全部楼层
PC ST-Link 之间的通信使用 USB 协议,ST-Link 的固件会解析这些 USB 数据包

故意相遇 发表于 2025-3-18 07:35 | 显示全部楼层
我知道的是ST-Link 与目标芯片之间的通信使用 SWD JTAG 协议,这些协议定义了如何读取和写入目标芯片的寄存器和存储器

捧一束彼岸花 发表于 2025-3-18 08:29 | 显示全部楼层
ST-Link 初始化目标芯片的调试接口。检查目标芯片的 ID 和状态。ST-Link 会先擦除目标芯片的 Flash 存储器。ST-Link HEX 文件中的数据逐块写入目标芯片的 Flash 存储器。写入完成后,ST-Link 会读取 Flash 存储器中的数据,并与原始 HEX 文件进行比对,确保数据正确写入

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

本版积分规则

68

主题

126

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部