参考了ODRIVE的教程
Ubuntu编译环境
如下命令安装环境
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
sudo apt-get update
sudo apt-get install gcc-arm-embedded
sudo apt-get install openocd
sudo add-apt-repository ppa:jonathonf/tup && sudo apt-get update && sudo apt-get install tup
sudo apt-get install python3 python3-yaml python3-jinja2 python3-jsonschema
如下命令验证安装是否成功
arm-none-eabi-gcc --version
arm-none-eabi-gdb --version
openocd --version # should be 0.10.0 or later
tup --version # should be 0.7.5 or later
python --version # should be 3.7 or later
VSCode扩展安装
在VSCode中按Ctrl+P,分别执行如下命令
ext install ms-vscode.cpptools
ext install marus25.cortex-debug
ext install marus25.cortex-debug-dp-stm32f4
如果是在Windows下,那还需要添加ARM_GCC_ROOT环境变量,但Linux就不需要了。
VSCode Task创建
应该可以直接复制已有的工程的tasks.json文件到.vscode文件夹。
参考:ODrive的tasks.json
已经将这个放到VESC工程中编译成功了,但是还没有测试调试是否可以用。
调试器配置
调试器有两个参数需要配置:调试器种类(如本文使用jlink)和调试接口(如本文使用swd而非jlink默认的jtag)。
默认的指令在Makefile中,如下
OPENOCD := openocd -f interface/stlink-v2.cfg $(PROGRAMMER_CMD) -f target/stm32f4x.cfg -c init
其中,interface/stlink-v2.cfg位于/usr/share/openocd/scripts/interface,需要自己cd到 里面编辑
sudo gedit jlink-swd.cfg
复制以下内容
interface jlink
transport select swd
Ctrl+S保存,关闭文件
回到Makefile中,在flash-stlink2:前加入
JLINK_OPENOCD := openocd -f interface/jlink-swd.cfg $(PROGRAMMER_CMD) -f target/stm32f4x.cfg -c init
flash-jlink: all
$(JLINK_OPENOCD) \
-c 'reset halt' \
-c 'flash write_image erase $(FIRMWARE)' \
-c 'reset run' \
-c exit
在命令行中进入ODrive/Firmware
执行make,再执行make flash,可以看到下载成功!
VSCode编译步骤
- 编译生成:Terminal -> Run Build Task (Ctrl+Shift+B)
- 下载:Terminal -> Run Task -> flash
- 调试:Run(Ctrl+Shift+D)-> “Debug ODrive (Firmware)”
总结
可以看出,安装过程十分简洁,而Windows可能就不这么简单了。所以还是优先使用Ubuntu进行开发。