8.0 KiB
8.0 KiB
ST-LINK 驱动安装
-
连接 ST-LINK (STv2) 和开发板
STv2 上有一个示意图标有各个 Pin 的含义, Pin 周围有一个缺口, 缺口对应的一排 Pin 对应与示意图外侧的一列, STv2 和开发板接口连接对应关系如下表所示.
STv2 接口 开发板接口 3.3v 3v3 SWDIO DIO SWCLK CLK GND GND -
安装 STv2 驱动
ST-LINK 的驱动源码地址为 https://github.com/stlink-org/stlink
安装编译依赖
- ubuntu sudo apt install clang build-essential cmake libusb-1.0-0 libusb-1.0-0-dev - archlinux sudo pacman -S cmake libusb clang
下载源码并编译, 注意 st-link 默认分支是 develop, 这个分支上的功能是不稳定的
git clone https://github.com/stlink-org/stlink cd stlink git checkout v1.6.1
安装到 $HOME/.usr/stlink 目录中
make release cd build/Release && make install DESTDIR=$HOME/.usr/stlink
安装后 $HOME/.usr/stlink 结构如下
➜ Release git:(develop) tree ~/.usr/stlink/ /home/m9/.usr/stlink/ ├── etc │ └── modprobe.d │ └── stlink_v1.conf ├── lib │ └── udev │ └── rules.d │ ├── 49-stlinkv1.rules │ ├── 49-stlinkv2-1.rules │ ├── 49-stlinkv2.rules │ └── 49-stlinkv3.rules └── usr └── local ├── bin │ ├── st-flash │ ├── st-info │ └── st-util ├── include │ └── stlink │ ├── backend.h │ ├── chipid.h │ ├── commands.h │ ├── flash_loader.h │ ├── libusb_settings.h │ ├── logging.h │ ├── md5.h │ ├── reg.h │ ├── sg.h │ ├── stlink.h │ ├── stm32.h │ ├── usb.h │ └── version.h ├── lib │ ├── libstlink.a │ ├── libstlink.so -> libstlink.so.1 │ ├── libstlink.so.1 -> libstlink.so.1.6.1 │ └── libstlink.so.1.6.1 └── share └── man └── man1 ├── st-flash.1 ├── st-info.1 └── st-util.1
现在需要通过 udev 设置 USB 访问权限, 进入到 stlink 源码根目录执行如下操作
sudo cp -a config/udev/rules.d/* /etc/udev/rules.d/ sudo udevadm control --reload-rules sudo udevadm trigger
现在给电脑插上电路板, 使用 lsusb 查看 USB 设备, 能看到如下输出说明安装成功
➜ stlink git:(develop) lsusb ... Bus 002 Device 013: ID 0483:3748 STMicroelectronics ST-LINK/V2 ...
在 shell 配置文件如 $HOME/.zshrc 中添加如下环境变量
STLINK=$HOME/.usr/stlink export PATH=${STLINK}/usr/local/bin:${PATH} export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${STLINK}/usr/local/lib
刷新环境变量
exec $SHELL
更新库缓存
sudo ldconfig
然后查看板子信息
➜ ~ st-info --probe Found 1 stlink programmers serial: 2c5a15000b14324d434d4e00 hla-serial: "\x2c\x5a\x15\x00\x0b\x14\x32\x4d\x43\x4d\x4e\x00" flash: 131072 (pagesize: 2048) sram: 36864 chipid: 0x0460 descr: G070/G071/G081
如果上述命令输出如下
Found 1 stlink programmers version: V2J35S7 serial: 2C5A15000B14324D434D4E00 flash: 0 (pagesize: 0) sram: 0 chipid: 0x0000 descr: unknown device
这表示无法识别 st-link 设备, 检查是否使用了 develop 分支的代码, 这个分支上的代码无法正确识别 st-link, 切换到 v1.6.1 tag 解决问题.
测试文件读取
➜ ~ st-flash --debug read dummy.file 0 256 st-flash 1.6.1-96-gbf41f14 2020-09-22T23:56:45 DEBUG common.c: *** looking up stlink version 2020-09-22T23:56:45 DEBUG common.c: st vid = 0x0483 (expect 0x0483) 2020-09-22T23:56:45 DEBUG common.c: stlink pid = 0x3748 2020-09-22T23:56:45 DEBUG common.c: stlink version = 0x2 2020-09-22T23:56:45 DEBUG common.c: jtag version = 0x23 2020-09-22T23:56:45 DEBUG common.c: swim version = 0x7 2020-09-22T23:56:45 DEBUG common.c: stlink current mode: debug (jtag or swd) 2020-09-22T23:56:45 DEBUG usb.c: JTAG/SWD freq set to 0 2020-09-22T23:56:45 DEBUG common.c: *** set_swdclk *** 2020-09-22T23:56:45 DEBUG common.c: stlink current mode: debug (jtag or swd) 2020-09-22T23:56:45 DEBUG common.c: *** stlink_jtag_reset *** 2020-09-22T23:56:45 DEBUG common.c: *** stlink_reset *** 2020-09-22T23:56:45 DEBUG common.c: *** stlink_write_debug32 0x05fa0004 to 0xe000ed0c 2020-09-22T23:56:45 DEBUG common.c: Loading device parameters.... 2020-09-22T23:56:45 DEBUG common.c: *** stlink_core_id *** 2020-09-22T23:56:45 DEBUG common.c: core_id = 0x0bc11477 2020-09-22T23:56:45 DEBUG common.c: *** stlink_read_debug32 0000000000 at 0xe0042000 2020-09-22T23:56:45 DEBUG common.c: *** stlink_read_debug32 0x20006460 at 0x40015800 2020-09-22T23:56:45 DEBUG common.c: *** stlink_read_debug32 0xffff0080 at 0x1fff75e0 2020-09-22T23:56:45 INFO common.c: G070/G071/G081: 36 KiB SRAM, 128 KiB flash in at least 2 KiB pages. 2020-09-22T23:56:45 DEBUG common.c: stlink current mode: debug (jtag or swd) 2020-09-22T23:56:45 DEBUG common.c: stlink current mode: debug (jtag or swd) 2020-09-22T23:56:45 DEBUG common.c: *** stlink_force_debug_mode *** 2020-09-22T23:56:45 DEBUG common.c: *** stlink_status *** 2020-09-22T23:56:45 DEBUG usb.c: core status: 00030003 2020-09-22T23:56:45 DEBUG common.c: core status: halted 2020-09-22T23:56:45 INFO common.c: read from address 0000000000 size 256 2020-09-22T23:56:45 DEBUG common.c: *** stlink_read_mem32 *** 2020-09-22T23:56:45 DEBUG common.c: data_len = 256 0x100 68 5c 00 20 cd 00 00 08 c1 2d 00 08 c7 29 00 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b7 2f 00 08 00 00 00 00 00 00 00 00 25 01 00 08 b9 2f 00 08 df 00 00 08 00 00 00 00 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 00 00 00 00 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 00 00 00 00 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 df 00 00 08 9d 37 00 08 ad 37 00 08 bd 37 00 08 03 48 85 46 00 f0 56 fd 00 48 00 47 39 58 00 08 68 5c 00 20 04 48 80 47 04 48 00 47 fe e7 fe e7 fe e7 fe e7 fe e7 fe e7 4d 30 00 08 b9 00 00 08 72 b6 70 47 62 b6 70 47 ef f3 10 80 72 b6 70 47 80 f3 10 88 70 47 1b 48 2020-09-22T23:56:45 DEBUG common.c: *** stlink_exit_debug_mode *** 2020-09-22T23:56:45 DEBUG common.c: *** stlink_write_debug32 0xa05f0000 to 0xe000edf0 2020-09-22T23:56:45 DEBUG common.c: *** stlink_close ***
-
虚拟机映射
VirtualBox 虚拟机需要将用户添加到 vboxusers 用户组
sudo usermod -aG vboxusers $USER
添加完毕后, 重启主机.