[教程]开源电调VESC在Win7 64bit下开发环境的搭建(失败)

经过一周多的查找资料和尝试,VESC开源电调在Window下的开发环境搭建最后还是失败了。
主要问题有:原作者没有对windows下的开发提供教程支持(他本人一直使用Linux)、原作者6年前用的Eclipse插件现在已不被支持、硬件上SWD接口不能成功连接(原因未知)。
因此我最后卡在了“硬件SWD不能连接”,如果日后发现是bootloader软件关闭了该引脚,也许会再尝试弄一下 ?。

为什么要弄这个?

为什么要弄这个

我想从电调入手,从电机控制算法开始学习控制算法的知识。学习控制应该是需要软硬件结合的,而电机+电调板的组合是占用空间最小的硬件了吧。

VESC是什么?

在网上搜“open source esc stm32”得到第一个结果就是VESC(简介:https://vedder.se/tag/stm32-esc/ ,固件项目: https://github.com/vedderb/bldc ),中文名“本杰明电调”,因为作者叫Benjamin Vedder。这个是最流行的开源电调项目(可能是因为硬件比较稳定且功率够大——持续50A、峰值240A电流,电机芯片是TI的Drv8302,支持100%占空比输入,意味着无论PWM周期是20ms还是20us,都能输出100%占空比,电机性能可以做的很好——别家如英飞凌的芯片可没有这么好。题外话了 ?),可以用来改装滑板。

硬件准备

  1. VESC电调一个、小BLDC一个(找同学要了个精灵3的2312电机,不要螺旋桨)、3S/12V航模电池、ST-Link V2:烧录器需要用ST-Link V2,因为作者用eclipse开发,烧录器的.cfg文件他已经指定为这个;如果要用JLink可能涉及一些文件的修改,咱也不懂,那就买一个吧。
  2. stm32f103rbt6核心板一个、ST-Link V2:这个是看到国外一巴西小哥的视频里用了这个板子和ST-Link来验证他的开发环境(vscode),刚好我手上也有,就拿出来了(事实证明这个硬件最后验证了我的软件环境搭建步骤是没问题的)。
    [教程]开源电调VESC在Win7 64bit下开发环境的搭建(失败)_第1张图片

软件准备

  1. IDE方案1:SW4STM32(win_64bits_v2.9):基于Eclipse、专为STM32优化的跨平台免费开发环境(http://www.openstm32.org);比起Eclipse好处是它安装完就自带编译工具链(arm-none-eabi啥的,我也不懂),不用另外下载编译工具链、手动添加路径到系统变量PATH什么的。
  2. IDE方案2:vscode_v1.36.1(编辑器)+ARM_v0.5.0(插件)+C/C++_v0.24.0(插件)+Cortex-Debug_v0.3.1(插件):https://code.visualstudio.com 、OpenOCD_0.10.0:http://openocd.org 、巴西小哥视频中用到的另外几个安装包:MSYS2(为了在vscode里面使用bash和make):https://mega.nz/#!u94zCQpD!iTKJ7NljQraQdEE2A4OqQFz7UJgLJf7l0skq769L6MY 、GNU_ARM工具链:https://mega.nz/#!3wgDCKqR!-dOLUNWbuOaVlmd2o4p4RKOYQ48BWJqBi_wIoqSKuUE
  3. 代码1:vesc开源电调代码:https://github.com/vedderb/bldc
  4. 代码2:巴西小哥的闪灯例程:https://mega.nz/#!DlQyRRgb!H9KzeY3BchlRCG_jmcA6j6J2WT_jFKZczUJmZ1_ex3w
    这里之所以有2套IDE和2份代码,是因为搭建环境进行得不顺利,编译和烧录都存在一定的问题,所以会有交叉验证IDE和代码的过程。最后的结果是:vscode的IDE方案2证实是正确可用的

IDE方案2的验证

按照上一小节的IDE方案2搭建好软件环境后,在vscode下编译和烧录闪灯例程到stm32f103核心板,可以看到上面的红色LED在闪;并且main.c里可以添加断点、查看寄存器值、查看变量值(仅十进制,没有十六进制)。
具体步骤如下:

  1. 下载vscode并安装,然后在里面搜索并安装以下插件:ARM、C/C++、Cortex-Debug;[教程]开源电调VESC在Win7 64bit下开发环境的搭建(失败)_第2张图片
  2. 解压MSYS2和GNU_ARM到某个路径(解压就算安装完了);解压闪灯例程;
  3. 安装OpenOCD;
  4. 添加以下5个路径到系统变量PATH(具体路径视解压位置而定):D:\openocd-0.10.0\bin;D:\GNU_MSYS_WIN32\usr\bin;D:\GNU_MSYS_WIN32\mingw32\bin;D:\GNU_ARM_STM32\bin;D:\GNU_ARM_STM32\arm-none-eabi\bin;
  5. 下面开始验证IDE是否正确可用:
    打开vscode,文件->打开工作区,选择aula4.code-workspace:[教程]开源电调VESC在Win7 64bit下开发环境的搭建(失败)_第3张图片
  6. 然后打开终端(终端->新建终端),输入bash,回车,就会变成下图(如果效果和下面不一样,请检查MSYS路径是否成功添加到PATH,因为这个操作是在执行D:\GNU_MSYS_WIN32\usr\bin下的bash.exe):[教程]开源电调VESC在Win7 64bit下开发环境的搭建(失败)_第4张图片
  7. 然后在这个bash终端下输入make,回车,得到以下输出表示成功编译出.elf文件:[教程]开源电调VESC在Win7 64bit下开发环境的搭建(失败)_第5张图片
  8. ST-Link V2连接核心板,然后插上电脑(记得是自动安装驱动的,如果驱动有问题,就去ST官网下载对应工具,里面有驱动:https://www.st.com/en/development-tools/st-link-v2.html);
  9. 回到vscode,输入make flash,回车,即可完成烧录(如果有问题,应该是芯片被锁住了,解决方法看后面):[教程]开源电调VESC在Win7 64bit下开发环境的搭建(失败)_第6张图片[教程]开源电调VESC在Win7 64bit下开发环境的搭建(失败)_第7张图片
  10. 至此为止,vscode下闪灯例程的编译与烧录就顺利完成了;
  11. 不过debug功能更重要,vscode下debug要怎么做呢?
  12. vscode左边栏点击debug插件,再点击绿色小箭头,即进入debug状态:[教程]开源电调VESC在Win7 64bit下开发环境的搭建(失败)_第8张图片

硬件的坑

上面通过一个小的例程说明用vscode搭配插件的方式,是可以编译makefile工程的。
经过多次尝试(包括用keil/ST-Link Utility),最后确定该环境的确可以编译github下载的bldc工程,但是ST-Link连接不上VESC电调板导致下载和调试不能继续进行(具体原因未知)。

软件的坑

这里指的是IDE的坑。
原作者在2012年给出他在Ubuntu下安装eclipse和插件的教程:http://vedder.se/2012/12/debugging-the-stm32f4-using-openocd-gdb-and-eclipse/ ,后面没有更新过,也没有windows下的教程。

  1. eclipse的运行需要依赖java环境:上java官网下载jdk或者jre,解压安装,然后手动把bin路径添加到PATH,和添加JAVA_HOME变量,否则eclipse不能正常运行;比如我这里给PATH添加:D:\jdk-12.0.1_windows-x64_bin\jdk-12.0.1\bin,然后JAVA_HOME是:D:\jdk-12.0.1_windows-x64_bin\jdk-12.0.1\bin;
  2. 需要用的zylincdt插件已不支持新版eclipse,只支持4.1~4.4以及部分4.5版本(参考:https://www.cnblogs.com/goodhx/p/6036387.html ),而我第一个下载的版本是最新的4.12.0,所以在eclipse marketplace找不到。网上说有手动输入网址可以在线安装的方法,结果出现错误,当时以为是自己新版eclipse不会配置,就想换用教程对应的4.4吧;
  3. 重新下载4.4版eclipse之后,再去marketplace也找不到zylincdt插件;这次用在线安装的方法,发现可能因为网址搬走了,没安装成功;[教程]开源电调VESC在Win7 64bit下开发环境的搭建(失败)_第9张图片
  4. 然后呢,对java环境也有要求(不知是VESC代码工程还是eclipse软件的要求):要用jre7_32bit的环境才行(64位会有问题;jdk8_64位也不行,其他版本没试过);

所以干脆不考虑eclipse了,转至vscode来弄,后来又了解到为STM32优化的基于eclipse的IDE:SW4STM32,就把这两个都试了一下。

  1. SW4STM32很顺利的成功编译了VESC工程,但电调SWD接口有问题,无法验证烧录功能是否也正常;同时它对闪灯示例工程的编译出现错误,无法编译通过,也无法验证烧录功能;[教程]开源电调VESC在Win7 64bit下开发环境的搭建(失败)_第10张图片

没有写出来的细节

除了绊脚的坑,还有一些需要注意的细节需要说明一下:

  1. 闪灯示例中,手动更改头文件包含路径:[教程]开源电调VESC在Win7 64bit下开发环境的搭建(失败)_第11张图片
  2. 可以通过修改.json文件实现打开软件时自动执行bash命令,省去每次打开工程都要手动输入bash:[教程]开源电调VESC在Win7 64bit下开发环境的搭建(失败)_第12张图片
  3. 查资料过程中发现:OpenOCD从0.9.0开始默认通过ST-Link的RST引脚对MCU产生复位信号,这是为了满足低功耗MCU调试的需要;一般情况下并不需要这个功能(在.cfg文件最后添加一段代码即可:https://github.com/chaosAD/ST-Link-SWD-No-SRST/wiki/Disabling-the-ST-Link-SRST )
  4. 烧录器如果从ST-Link V2换成JLink或者其他,至少需要修改.cfg文件(至于还有没有其他文件要改就不清楚了,所以尽量只用ST-Link):[教程]开源电调VESC在Win7 64bit下开发环境的搭建(失败)_第13张图片

作者:Maple_Leaf_15
来源:CSDN
原文:https://blog.csdn.net/Maple_Leaf_15/article/details/96275140
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(开源项目)