WSL2下使用openocd连接外部调试器开发STM32

参考:

linux下STM32开发环境搭建

Connect gdb to ip instead of localhost to debug from WSL2

openocd-org


        在linux下搭建STM32的开发环境,通常会用到 openocd 去连接到外部的调试器,如 J-Link,CMSIS-DAP,再提供网路端口给gdb。但由于现阶段 WSL2 访问外部的 USB 设备会存在不足,且WSL2 默认采用了一个NAT网络,如果想要把 WSL2 中的服务直接暴露出来,就不得不考虑做端口转发等问题。

        但是 WSL2 给我们留了一条后路,那就是允许在 WSL 里执行 .exe 文件。

        下载文首 "参考" 项中的 openocd-org 的 openocd 工具,见图1,这里是第一个,我们将其下载到 windows 电脑上。解压后在源文件 bin 目录下会存在 openocd.exe 文件,为了方便,我们将其路径加入到 windows 的环境变量中。加入成功后,无论在 PowersShell 还是 WSL2 中,都可以快捷 tab 得到 openocd.exe 的工具。

图1

         关于 openocd 如何去连接外部调试器,详见文首 "参考" 项的 "linux下STM32开发环境的搭建" 一文。按照文中关于 opeocd 去连接外部调试器的操作,实验使用图1中的 openocd.exe 是可以正常连接到外部调试器,我这里用的是 CMSIS-DAP,如图2。

        图2

         但是,在 WSL2 中使用 gdb 去连接图2所示的 3333 端口时,会连接不上,提示超时失败,见图3。关于 gdb 的简单介绍和使用,详见文首 "参考" 项的 "linux下STM32开发环境的搭建" 一文。

图3 

         见图3,这里为什么是 172.31.192.1,这个得在 WSL2 下查看 /etc/resolv.conf 文件,里面的 nameserver 变量记载的就是 WSL2 的 DNS 客户机配置 IP。这个也是我们需要在 gdb 连接 openocd 提供端口时所使用到的 IP,见图4。

图4 

         回到图3,解决 WSL2 下 gdb 因连接超时连接不上的办法可以详见文首 "参考" 项的 "Connect gdb to ip instead of localhost to debug from WSL2"。这里只提取并记录下解决办法,如图5,在使用openocd时加上 -c "bindto 0.0.0.0"。

图5

         再按照图3所示操作使用 gdb 去连接目标板就可以正常连接,且实验调试正常,见图6。

图6 

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值