STLink工具套件使用教程:从基础操作到疑难解答
stlink 项目地址: https://gitcode.com/gh_mirrors/stl/stlink
概述
STLink工具套件是一组用于STM32微控制器编程和调试的开源工具,支持ST-LINK/V1、V2和V3系列编程器。本文将详细介绍工具的使用方法、常见问题解决方案以及高级功能应用。
核心工具详解
1. st-flash:闪存编程工具
st-flash是用于读写STM32闪存的核心工具,提供以下关键功能:
主要参数说明:
--flash=<size>
:指定闪存大小(如128k或0x20000)--format=<format>
:设置文件格式(binary或ihex)--freq=<frequency>
:设置SWD/JTAG接口频率--reset
:编程后执行复位操作--opt
:优化编程速度(跳过空字节)
典型使用场景:
- 读取闪存内容:
st-flash read output.bin 0x8000000 4096
- 写入闪存内容:
st-flash write firmware.bin 0x8000000
- 擦除整个闪存:
st-flash erase
2. st-info:设备信息查询工具
用于获取连接设备的信息:
--probe
:显示编程器和目标MCU的硬件信息--version
:显示工具版本信息
3. st-util:GDB服务器
提供GDB调试接口,支持远程调试STM32设备。
高级功能应用
选项字节操作
STM32的选项字节包含关键配置信息,可通过以下命令读写:
# 读取选项字节
st-flash read option_bytes.bin 0x1FFF7800 4
# 写入选项字节
st-flash write option_bytes.bin 0x1FFF7800
校验和计算
st-flash在编程时会自动计算二进制文件的MD5和SUM校验和,与ST官方工具保持兼容。
特殊连接模式
--connect-under-reset
:在复位状态下连接设备,适用于调试特殊代码--hot-plug
:热插拔连接,不执行复位操作
常见问题解决方案
1. udev规则配置问题
在Linux系统中,需要正确配置udev规则才能访问ST-LINK设备:
- 确认设备识别:
lsusb
查看设备ID - 检查设备节点权限:
ls -l /dev/bus/usb/XXX/YYY
- 安装正确的udev规则文件
- 重新加载规则:
sudo udevadm control --reload-rules sudo udevadm trigger
2. 假冒芯片识别
市场上存在标记为STM32F103C8T6的假冒芯片(如CKS32F103C8T6),可通过以下方式识别:
- 检查芯片ID:正版应为
0x1ba01477
,假冒品可能显示0x2ba01477
- 观察芯片标记细节
- 测试基本功能(如LED闪烁示例)
3. 芯片ID未知错误
当出现unknown chip id!
警告时,可能原因包括:
- 目标芯片处于低功耗模式
- SWD接口信号线接反
- 芯片进入异常状态(尝试
--connect-under-reset
) - 编程器固件过时
- SWD引脚被配置为其他功能
解决方案:
- 短接BOOT0与VDD,执行
st-flash erase
- 检查硬件连接
- 更新编程器固件
4. 复位功能详解
复位行为差异:
- 无
--reset
选项:编程后发送一次NRST信号 - 使用
--reset
选项:发送两次NRST信号
对于缺少NRST连接的廉价编程器,可使用软件复位(通过AIRCR寄存器)。
GUI工具介绍
stlink-gui提供图形化操作界面,支持:
- 设备连接/断开
- 基本信息显示
- 二进制文件编程
- 内存导出功能
- 内存地址映射查看
注意:GUI工具需要GTK3支持,Windows系统建议使用ST官方工具。
最佳实践建议
- 始终验证设备连接状态:
st-info --probe
- 编程前备份原始固件
- 对于关键应用,使用正版ST芯片
- 保持工具和固件为最新版本
- 复杂问题优先尝试
--connect-under-reset
选项
通过掌握这些工具和技巧,开发者可以高效地进行STM32设备的编程和调试工作。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考