win10 wsl 调用ST-LINK_CLI.exe 遇到的问题总结

STM32 专栏收录该内容
11 篇文章 0 订阅

环境和工具

  • 操作系统:win10 Ubuntu linux 子系统 (wsl)
  • make
  • ST-LINK V2 swd 烧录

要实现的功能

利用make 工具,实现对stm32 单片机一键烧录、擦除、读取hex等功能。实现原理是:命令行模式下 调用 ST 官方提供的命令行工具ST-LINK_CLI.exe,根据不同的参数,实现不同的功能。

遇到的问题

执行脚本,程序打印出ST-LINK CLI 的相关信息后,卡顿一分钟左右(期间ST-LINK V2 黄红灯一直交替闪烁),然后输出can't reset the core unable to connect to the st-link!

问题分析

  • 首先,系统内st-link 的驱动是正常可用的。利用st-link utility 的图形界面工具验证过,是可以正常擦除芯片的。
  • makefile 里面的实现应该也没问题,之前在win7 系统一直使用,能实现完整的功能。makefile的实现如下
STLINK_CLI='/mnt/c/Program Files (x86)/STMicroelectronics/STM32 ST-LINK Utility/ST-LINK Utility/ST-LINK_CLI.exe' 

erase:
	$(STLINK_CLI)  -ME

read_hex:
	$(STLINK_CLI) -c SWD -Dump 0x0 0x8000000 a.hex

  • 一直怀疑是wsl 调用Windows 程序的权限问题。但是权限问题解决之后,问题还是存在

问题解决

重新去查看了一遍 STM32 ST-LINK utility software description这个文档,最终找到了根本原因。调用命令行工具时,需要指定是使用JTAG 还是 SWD,否则默认使用JTAG。纳闷的是,我之前一直没指定使用SWD,之前怎么可以实现调用的?难道跟st-link_cli 的版本有关?改过后的makefile 如下

STLINK_CLI='/mnt/c/Program Files (x86)/STMicroelectronics/STM32 ST-LINK Utility/ST-LINK Utility/ST-LINK_CLI.exe' -c SWD freq=480

erase:
	$(STLINK_CLI)  -ME

read_hex:
	$(STLINK_CLI) -c SWD -Dump 0x0 0x8000000 a.hex

  • 0
    点赞
  • 2
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值