linux cpu占用率如何看
287
2022-09-03
1254_CubeIDE程序烧写一次之后ST link无法再次烧程序解决
全部学习汇总: GreyZhang/g_stm32f103: some hack for stm32f103 (github.com)
之前买了2个STM32F103的开发板,感觉可以作为Arduino的加强版,因为上面有CAN通信以及USB通信。买来的时候商家给烧了测试程序,也很明显能够看到闪灯等功能可以正常工作。我手里刚好有ST link以及Jlink调试器,感觉这2个小板子做一个测试用的小工具应该还是很合适的。
先用了ST Link,配合CubeIDE来进行程序的烧写。第一次烧写,提示ST link的固件太旧,建议升级。我其实一直很反感这样的要求,经常工具不好用的一个原因就是升级带来的兼容性。但是,这个升级不进行烧写不能够继续。没办法,进行了升级。升级的过程很顺利,接下来使用CubeIDE创建了一个空的工程,里面加了一个计数器累加功能之后编译完烧录进去了。烧录很顺利,但是运行调试的时候出现了问题。再次尝试二次烧录,发现已经识别不到device了。
我寻思,可能就是调试器的固件升级带来的影响吧。还好,我开发板买的多,调试器也多。发现CubeIDE可以使用Jlink,于是换了一个Jlink的调试器。再次被提示需要升级,不升级无法烧写。没办法,又一次升级固件。最终悲催,一样的效果,无法找到device。
初步怀疑是调试器升级带来的不兼容,先去设备管理器中查看了设备信息,发现两个调试器其实都识别良好。这么看,最起码能够确定调试器还是可以工作的,而且驱动良好。接着,又用工具查看了调试器的序列号,读取成功而且跟之前的也是一致的。看起来基本上确定是兼容性问题了,接下来可能得找一下兼容性的烧写工具。
烧写工具找到了几个,做了初步的测试,但是依然没有好消息。查看了论坛,发现我遇到的问题可能并不是个例。这个原因主要是来自CubeIDE对于调试功能的处理,在初始化的时候把调试功能给毙掉了。解决的方式可以尝试RESET一直拉低,之后开启烧写功能后放开。如果这样奏效的话,看起来这个可调式的设置也是软件可以单独控制的。而出现了类似问题的解决方案是让MCU回到一个彻底的硬件响应状态,不给用户程序运行的机会就开始烧写。而且,这里面有一个关键的连线处理。在执行上面的操作的时候,需要把STM32F103的BOOT0和3.3V短接提供一个一直为1的信号。
接下来,按照这样的方式进行测试:第一次烧写后,软件不能够运行。但是,第二次就可以正常烧写并且可以调试运行。
说起来,最初出现问题之后,我也下意识地去按了几次复位键。但是也只是想让MCU恢复一下可能的司机状态,并没有进行长时间的按键操作。有机会碰到解决方案但是运气并不是很好。但是,祸福相伴,正好是因为如此我才有机会对这个机理做一个全新的了解学习。
最后,结合找到的教程总结一下解决的方案。
上面是CubeIDE生成的默认配置。
从这里看,设备调试功能是被禁用了的。需要修改为支持调试后才可以更自由地进行调试器的烧写调试。
接口的修改方式也是比较明确的。但是,这部分代码看着是工具生成的,在IDE的配置层面可能也有支持。
我找了一下,在这里,其实还是有多重选择的。看起来,这个默认的配置信息不见得就是最符合开发者需要的,还是需要做一个明确的甄别。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~