0
点赞
收藏
分享

微信扫一扫

STM32CubeIDE无法连接STLinkV2的一个可能原因


前些日子买了个新的STLINKV2 , ( 老的被我家猫猫一泡尿送上西天了)

刚开始还挺正常的, 后来有一天就突然间发现无法调试了.

网上尝试了各种方法, 各种操作. 百度了好久. 最后好在我自己研究出来了.

我使用的是 STM32CubeIDE 这个开发工具

调试选项如下图

STM32CubeIDE无法连接STLinkV2的一个可能原因_杀毒软件

其它的不需要修改, 然后点击下面的apply 按钮, 然后调试Debug, 提示 No STLink 如下图

STM32CubeIDE无法连接STLinkV2的一个可能原因_杀毒软件_02

后来尝试了下载ST-LINK Utility 用它是可以正常连接STLink的, 然后也能正常进行升级操作.
也能正常读取ST-Link的序列号.

可是在CubeIDE中就不能正常读取 . 使用CubeIDE中的 ST-Link 更新功能

STM32CubeIDE无法连接STLinkV2的一个可能原因_stm32_03


却是可以正常更新的, 能够更新到比ST-LINK Utility 还要高的版本.

但是调试却仍然不行, 后来研究了一下, 我感觉可能跟我前些日子安装的杀毒软件有关.

于是我退出了360安全卫士 ,但是效果仍然如故. 还是不能用.

后来我在调试配置界面中发现了这个,我感觉应该是它的问题, 既然用到了端口说不定是跟网络防火墙或者其它的什么有关系. 然后我就点了下Show Command Line 按钮,

STM32CubeIDE无法连接STLinkV2的一个可能原因_杀毒软件_04

把里面的命令复制出来,到命令行窗口中运行了一下. 第一次的时候竟然弹出来了一个防火墙是否允许的提示, 这里我无法再次重现所以截不到图.

最后正常运行的图如下图,说明正常运行了,.

STM32CubeIDE无法连接STLinkV2的一个可能原因_单片机_05

然后我再回到调试配置界面, 选择连接到远程GDB服务器, 但是地址仍然写localhost 端口不变.

STM32CubeIDE无法连接STLinkV2的一个可能原因_杀毒软件_06


这个时候我竟然可以正常调试了.

至此,问题已明了, 根本原因还是调试用的端口被杀毒软件或者防火墙给阻止了, 方法很简单, 要么关掉防火墙, 要么卸掉杀毒软件裸奔, 要么设置一下绿色端口. 就可以正常使用 启动本地GDB服务啦.
这里说一下原理, 为了统一和简化调试的复杂度, 开发工具软件几乎都是通过网络socket 端口来连接被调试的系统的. cubeide 本身并没有访问usb端口和串口或任何硬件, 只是通过网络socket端口跟GDB调试服务器进行通信, 这种调试服务器可以是STLINK server 也可以是Jlink Server 这种调试服务器是实现了调试接口协议的一个简单的程序, 这种调试服务器程序需要开放监听一个端口, 等待来自开发工具的连接. 就是开放监听端口的时候被杀毒软件或防火墙给阻止了.

为啥在cmd中就可以正常提示了呢?

答: 我也不知啊…哈哈哈哈

每次都要自己手动启动GDB服务器还是很麻烦的, 得改回来, 原因知道了, 剩下的就好办了.

然后我关掉cmd窗口, 把调试配置改成 启动本地GDB服务 , 仍然无法连接上STLINK. 说明要么GDB服务程序没启动成功,要么端口被拦截了.

后来经过任务管理器调试发现,确实没有启动GDB调试服务程序. 算了先不管它了, 8成也是防火墙或者杀毒软件给阻止了. 先手动启动吧, 后面卸载掉杀毒软件吧…


举报

相关推荐

0 条评论