• 首页
  • 中国
  • MacOS之STM32CubeMX和System Workbench系列问题解决

MacOS之STM32CubeMX和System Workbench系列问题解决

2023-11-01 56浏览
百检网是一家专业的第三方检测平台,汇聚众多拥有权威资质的第三方检测机构为你提供一站式的检测服务,做检测就上百检网。百检网让检测从此检测,一份报告全国通用,专业值得信赖。

自从主力机器使用MBP以后,家里的**的一台Windows机器就是NAS了,一直远程使用NAS在Win下面玩STM MCU。但是低功耗的J3160跑开发还是慢啊,*近终于下决心把开发环境迁移到MacOS并使用完全开源IDE,决定使用STM32CubeMX和System Workbench的组合。折腾了大约**,遇到了好几个坑,在MacOS和Win10之间来回折腾*终解决了。在此记录一下并分享给大家。

软件版本:

STM32CubeMX V4.25.0

System Workbench V2.4

硬件:麒麟座Mini版

MacOS下遇到的问题:

1.1 Eclipse下载的时候报错:

Info : vid/pid are not identical: 0x0483/0x374B 0x0483/0x3748

1.2 Eclipse下载的时候报错:

Error: init mode failed (unable to connect to the target)

*******************

** OpenOCD init failed **

1.3 Eclipse下载的时候报错:

Error: timed out while waiting for target halted

TARGET: STM32F103RETx.cpu - Not halted

in procedure 'program'

in procedure 'reset' called at file "embedded:startup.tcl", line 490

in procedure 'ocd_bouncer'

** Unable to reset target **

shutdown command invoked

Win下遇到的问题:

2.1 Stlink USB communication error

2.2 No Target Connected

2.3 Error:Flash Download Failed-"Cortex-M3"

2.4 Cannot load flash programming algorithm

因为对STM32CubeMX不熟悉, 然后参考了某网站的教程,该教程里面没有提到SYS设置,而STM32CubeMX默认SYS设置里面的Debug选项默认是No Debug, 然后我就开始了烧写,然后就出现了问题1.1(Info : vid/pid are not identical: 0x0483/0x374B 0x0483/0x3748)和问题1.2 (** OpenOCD init failed **)的错误。未配置SYS就进行烧写导致PA13和PA14引脚被错误设置,所以无法下载程序,错误设置后即便修正了SYS设置(Debug选择Serial Wire)也无法正常下载。搜索了很多网上相关的网页,而且尝试升级了STlink V2的固件 (http://www.st.com/en/development-tools/stsw-link007.html ),都没解决问题1.2 。

而问题1.1的解决比较简单,就是不使用自动生成的cfg配置文件,自定义cfg配置文件并修改其中的 source [find interface/stlink.cfg] 为source [find interface/stlink-v2.cfg] 即可。这两个文件在/Applications/Ac6/SystemWorkbench.app/Contents/Eclipse/plugins/fr.ac6.mcu.debug_2.1.4.201801121207/resources/openocd/st_scripts/interface/下,有兴趣可以看一下,其中一个pid是0x374B,另外一个pid是0x3748,所以使用stlink-v2.cfg这个正确的文件即可,还有一个文件是stlink-v2-1.cfg,里面的pid也不匹配。

问题1.2折腾无果后,然后决定在Win下面尝试一下,因为原先Win下面用Keil是可以的。然后Keil下载麒麟座自带的跑马灯程序的时候,遇到了问题2.1 (Stlink USB communication error),网上有两个方法解决:升级Keil,或者给STlink-v2固件降级(好吧 我两样都做了),低版本固件地址(V2.J20.S4 链接:https://pan.baidu.com/s/1dHlgYwL 密码:6vwr),解决了问题2.1。再次尝试用Keil下载,遇到了问题2.2(No Target Connected)。

其实问题2.2的原因和问题1.2一样,都是因为PA13和PA14引脚被错误设置导致的。于是搜了很久,参考了西城无故事的博客(https://blog.csdn.net/liaodong2010/article/details/52734384 )和周勇的博客( http://zhyong319.blog.163.com/blog/static/6857205201276105311857/),他们的解决方式是下载前手动reset大约0.5s然后有一定概率能正常烧写,但是我在周勇的博客评论中看到一个更简单的方法,那就是把Boot0和Boot1拉高,随意写一个能跑的程序然后就能正常烧写了。

解决了这两个问题以后,再次尝试Keil烧写,遇到了错误2.3和错误2.4,主要原因是因为升级了Keil,板子类型没有选对,在Flash->Configure Falsh Tools配置窗口中,切换到“Utilities"页,按“Setting"按钮进入“Flash download setup"配置窗口,在“Flash download setup"配置窗口点击“Add”按钮,在“Add Flash Programming Algorlthm"窗口中选择STM32F10x Med-density 128k (麒麟座Mini版的处理器是STM32F103CBT6 128k Flash),然后2.3和2.4就都解决了。

然后回到MacOS,再次烧写,遇到1.3错误,解决办法是把配置文件中的 reset_config 这一行改为reset_config none 即可。*后一个问题是,如果在项目名称上点右键,如果直接选择Target-Program chip,我这里无法把*新程序下载到MCU上。不过直接在菜单栏上点击Run是可以下载的。后来发现需要先右键-Build project,然后右键再选择Target-Program chip才可以。所以还是直接菜单栏点击Run*方便。

*后,我把STlink V2的固件升级到*新,全部都能正常工作了。

总结一下:

MacOS下遇到的问题解决方法:

1.1 Eclipse下载的时候报错:

Info : vid/pid are not identical: 0x0483/0x374B 0x0483/0x3748

解决方法:

使用自定义配置文件进行编译,并进行如下修改:

source [find interface/stlink.cfg] 更改为 source [find interface/stlink-v2.cfg]

自定义配置文件方法,直接右键点击 项目名 Run.cfg 文件并改个文件名,然后右键点击项目树里面的项目名称,选择“Propeties”,然后在Run/Debug Settings-选择项目名-Edit-Debugger-User Defined-Browse 那里选择你自己改名的配置文件:

1.2 Eclipse下载的时候报错:

Error: init mode failed (unable to connect to the target)

*******************

** OpenOCD init failed **

解决方法:这里是由于PA13和PA14被错误配置导致的。**修复STM32CubeMX中的SYS设置,在SYS-Debug中选择Serial Wire。然后拉高Boot0和Boot1烧写一个正常固件,然后拉低他们,就能正常烧写了。

1.3 Eclipse下载的时候报错:

Error: timed out while waiting for target halted

TARGET: STM32F103RETx.cpu - Not halted

in procedure 'program'

in procedure 'reset' called at file "embedded:startup.tcl", line 490

in procedure 'ocd_bouncer'

** Unable to reset target **

shutdown command invoked

解决方法:

修改 * Run.cfg文件,把 reset_config srst_only srst_nogate connect_assert_srst 这一行改为 reset_config none

配置文件自定义方法参考1.1 解决方法。

Win下遇到的问题解决方法:

2.1 Stlink USB communication error

解决方法:更新Keil,或者给STLink V2固件降级。V2.J20.S4 链接:https://pan.baidu.com/s/1dHlgYwL 密码:6vwr

2.2 No Target Connected

解决方法:这里是由于PA13和PA14被错误配置导致的。拉高Boot0和Boot1烧写一个正常固件,然后拉低他们,就能正常烧写了。

2.3 Error:Flash Download Failed-"Cortex-M3"

解决方法:这里是由于芯片类型没有选择正确导致的。在Flash->Configure Falsh Tools配置窗口中,切换到“Utilities"页,按“Setting"按钮进入“Flash download setup"配置窗口,在“Flash download setup"配置窗口点击“Add”按钮,在“Add Flash Programming Algorlthm"窗口中选择正确的芯片型号和Flash大小即可。

2.4 Cannot load flash programming algorithm

解决方法:这里是由于芯片类型没有选择正确导致的。解决方法同上。


百检网秉承“客户至上,服务为先,精诚合作,以人为本”的经营理念,始终站在用户的角度解决问题,为客户提供“一站购物式”的新奇检测体验,打开网站,像挑选商品一样简单,方便。打破行业信息壁垒,建构消费和检测机构之间高效的沟通平台