【VESC】一.配置开发环境、烧录固件

一.介绍

VESC是一个开源的无刷电机驱动器,由工程师本杰明研发,最初应用于电动滑板,但是由于其出色的性能,也渐渐在其他领域得到了应用。

由于VESC的固件是基于电动滑板这个应用场景开发的,所以如果我们想将其应用在其他领域,就需要对其源码进行二次开发,修改通讯协议或增添自定义的功能。本文章分别介绍了如何在Ubuntu和Windows下搭建开发环境和烧录固件。

二.Ubuntu平台

1.说明

  • 系统:Ubuntu-16.04

  • 开发环境:GNU Arm Embedded Toolchain + build-essential + 文本编辑器

    • GNU Arm Embedded Toolchain为arm的嵌入式编译工具链,可以为Arm Cortex-M架构的芯片编译程序,VESC的缔造者本杰明就是使用该工具链编写的VESC固件。
    • build-essential提供了make等编译工具。
    • 最后需要一个文本编译器用于修改代码。
  • 烧录:STLink + st-flash

2.搭建开发环境

#下载arm编译工具链
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
sudo apt update
sudo apt install gcc-arm-embedded
#下载基本的编译工具
sudo apt install build-essential
#从github上下载VESC固件的源码
cd ~ && git clone https://github.com/vedderb/bldc.git vesc_firmware
cd vesc_firmware
#编译
make

3.烧录固件

#安装依赖
sudo apt-get install git libusb-1.0.0-dev
#下载编译stlink软件
git clone https://github.com/stlink-org/stlink.git
cd stlink
mkdir build && cd build
cmake ..
make
sudo make install
#BLDC_4_ChibiOS.bin为编译出的固件名
st-flash write BLDC_4_ChibiOS.bin 0x08000000

若首次使用st-flash时出现链接库错误,可以使用sudo ldconfig修复。烧录成功的提示见下图。
【VESC】一.配置开发环境、烧录固件

4.连接BLDC tool

#安装依赖
cd ~
sudo apt-get install qtcreator qt-sdk libudev-dev libqt5serialport5-dev
#下载编译BLDC tool
git clone https://github.com/vedderb/bldc-tool.git
cd bldc-tool
qmake -qt=qt5
make clean && make
#给予串口访问权限
sudo adduser $USER dialout
#重启使设置生效
reboot
#运行BLDC tool
cd ~/bldc-tool
./BLDC_Tool

打开BLDC tool以后,使用mini USB连接VESC V4,或者使用mirco USB连接VESC V6。

注意要焊接该0R电阻,才可以通过USB给VESC供电,若没有焊接,则需要给VESC上强电,下图是VESC V4 0R电阻的位置:
【VESC】一.配置开发环境、烧录固件
随后在BLDC tool中选择串口,单击右上角的Connect按钮,若右下角显示连接,则证明固件烧录成功。
【VESC】一.配置开发环境、烧录固件

三.Windows平台

1.说明

  • 开发环境:VSCode + GNU Arm Embedded Toolchain + mingw + git bash

    • VSCode作为文本编译器,同时也将git bash集成在VSCode中,方便进行代码的修改和编译。
    • GNU Arm Embedded Toolchain为arm的嵌入式编译工具链,可以为Arm Cortex-M架构的芯片编译程序,VESC的缔造者本杰明就是使用该工具链编写的VESC固件。
    • mingw可以在windows上提供make指令,可以解释makefile中的编译连接规则。
    • git bash用于在windows上提供一个类linux的终端,执行一些linux命令。
  • 烧录:STLink + STM32 ST-LINK UtilityJ-Link + J-flash

    • 这两种方式都可以通过VESC上的SWD接口为stm32烧录bin文件。

2.搭建开发环境

我们需要分别下载上面提到的VSCode、GNU Arm Embedded Toolchain、mingw 、git,其中GNU Arm Embedded Toolchain可能使用的人比较少,只需去arm官网对应界面中选择gcc-arm-none-eabi-10-2020-q4-major-win32.exe下载即可。其余三种工具下载起来都比较容易,网上也有很多教程,我在这里就不说了。

下载上述工具时一定要注意配置好环境变量,否则终端无法识别对应的命令。我们可以通过快捷键Win+R打开运行,输入cmd并回车,打开终端。在终端输入gitgccarm-none-eabi-gcc三条命令,若终端都可以正常识别,则环境变量配置正确,否则需要手动添加环境变量。

下面给出我安装GNU Arm Embedded Toolchain时添加环境变量的选项:
【VESC】一.配置开发环境、烧录固件
下面我们去github上下载源码,下载完使用VSCode打开该文件夹,如果是第一次使用VSCode,则需要先把git bash设置为VSCode的默认集成终端。

我们打开终端后,在终端中输入mingw32-make命令,即可成功编译固件,如下图所示:
【VESC】一.配置开发环境、烧录固件
【VESC】一.配置开发环境、烧录固件
编译生成的固件在./build路径中。
【VESC】一.配置开发环境、烧录固件
在帮助同学配置开发环境的过程中,我发现在同学的电脑上只能成功编译固件一次,之后就会报错,删去编译生成的./.dep文件夹中的中间文件就可以重新编译了。我写了一个脚本来简化编译流程:

if [[ $1 = "force" ]];then
    rm -rf ./build
    rm -rf ./build_all
fi

if [ -f "./Makefile" ];then
    rm -rf ./.dep
    mingw32-make
else
  echo "找不到makefile文件,尝试更换文件夹"
fi

3.烧录固件

这里以STLink + STM32 ST-LINK Utility为例介绍如何为VESC烧录固件, J-Link + J-flash操作几乎相同。

首先需要在ST的官网上面下载STM32 ST-LINK Utility,记得要留自己的邮箱,这样才能收到下载链接,下载过程中可能会询问你是否要按照STMicroelectronics Virtual COM驱动,我们选择安装。

打开STM32 ST-LINK Utility,将VESC通过ST-LINK连接到电脑。

点击connect按钮,若系统检测到单片机,则可成功连接,若没有检测到,需要再检测一下连接线路。
【VESC】一.配置开发环境、烧录固件
随后将我们刚刚编译生成的.bin固件拖进该软件中:
【VESC】一.配置开发环境、烧录固件
随后点击烧录按钮进行烧录。
【VESC】一.配置开发环境、烧录固件
记得要勾选reset选项,不然烧录进固件以后无法自动
运行,需要手动复位才能运行。【VESC】一.配置开发环境、烧录固件

4.连接VESC tool

有关VESC tool的使用,我将会在下一篇博客中详细介绍,这里使用VESC tool来连接电调,只是为了检测我们是否成功烧录了固件。

打开VESC tool,使用mini USB连接VESC V4,或者使用mirco USB连接VESC V6。

注意要焊接该0R电阻,才可以通过USB给VESC供电,若没有焊接,则需要给VESC上强电,下图是VESC V4 0R电阻的位置:
【VESC】一.配置开发环境、烧录固件

点击连接按钮,若能成功检测到VESC,则证明固件烧录成功。
【VESC】一.配置开发环境、烧录固件

四.参考资料

Benjamin’s robotics

vedderb/bldc-tool

vedderb/bldc

stlink-org/stlink

bilibili up:北冥有鱼qzs

上一篇:微软 Office2021 横空出世 赶紧安装 Office Tool Plus v8.14.2


下一篇:Xhorse Key Tool Plus可以为Porsche Cayenne 2014 5M48H