大家好,又见面了,我是你们的朋友全栈君。
Windows 下 ODrive 固件开发环境搭建
以下内容适用于希望修改ODrive固件的开发人员。因此,它假定您了解诸如如何使用Git,什么是编译器之类的知识。如果这听起来很陌生,以下内容对您来说可能不适合。
文章目录
1 准备要用到的开发工具
使用到的ODrive开发工具为:
- Python3: 用于运行工程构建脚本
- ST-Link/V2 Drivers: STLink/v2编程器的驱动
- Git for Windows: 用于版本管理和使用它的bash终端
- Visual Studio Code: 轻量级但功能强大的源代码编辑器
- Tup: 用于调用编译命令的构建系统
- ARM GNU Compiler: 用于交叉编译代码
- OpenOCD: 用与使用STLink/v2编程器对ODrive进行烧录
- GNU MCU Eclipse’s Windows Build Tools: 用于工程构建
工具打包下载:
链接 https://pan.baidu.com/s/1BphTCa4OrzmEFmStDXAbHg
提取码 hbh1
2 安装 Python3
双击运行python-3.8.1.exe
注意: 勾选上图中的 Add Python 3.8 to PATH
然后按照提示保持默认安装即可。
2.1 安装 Python 包
windos 命令行中输入 pip install PyYAML Jinja2 jsonschema
安装需要的 python 包。
3 安装 ST-Link/V2 Drivers
解压 ST-Link_Drivers.zip
生成 ST-Link_Drivers
文件夹,进入文件夹双击运行 dpinst_amd64.exe
按照提示保持默认安装即可。
4 安装 Git for Windows
双击运行 Git-2.25.0-64-bit.exe
按照提示保持默认安装即可。
5 Visual Studio Code
5.1 安装 Visual Studio Code
双击运行 VSCodeUserSetup-x64-1.42.0.exe
按照提示保持默认安装即可。
5.2 安装 Visual Studio Code 扩展插件
- 所需扩展插件:
- C/C++
- Cortex-Debug
- 推荐安装的扩展插件:
- Include Autocomplete
- Path Autocomplete
- Auto Comment Blocks
插件安装方法:
- 启动 Visual Studio Code
- 点击红框打开插件管理视图
- 在红框中输入要安装插件的名称 (如:C/C++) 回车
- 点击红框中的 Install 安装
- 等待安装完成即可
5.3 配置 Visual Studio Code 默认终端
配置 Visual Studio Code 默认终端为 git bash
依次点击菜单中的 Terminal -> New Terminal
此时打开的命令终端为 Windows 默认的 cmd 命令终端
点击红框内的下拉框,点击 Select Default Shell
点击红框内的 Git bash 即完成配置
注意: 配置完成后请关闭 Visual Studio Code 再进行下边的步骤
6 配置 Tup
解压 tup-latest.zip
到任意位置,然后将 tup-latest
地址添加到系统环境变量 Path 中即可
7 配置 ARM GNU Compiler
解压 gcc-arm-none-eabi-7-2018-q2-update-win32.zip
到任意位置,然后将 gcc-arm-none-eabi-7-2018-q2-update-win32\bin
地址添加到系统环境变量 Path 中即可
8 配置 OpenOCD
解压 OpenOCD.zip
到任意位置,然后将 OpenOCD\0.10.0-13\bin
地址添加到系统环境变量 Path 中即可
9 配置 GNU MCU Eclipse’s Windows Build Tools
解压 gnu-mcu-eclipse-windows-build-tools-2.12-20190422-1053-win64.zip
到任意位置,然后将 GNU MCU Eclipse\Build Tools\2.12-20190422-1053\bin
地址添加到系统环境变量 Path 中即可
10 尝试编译固件源码
推荐使用 git clone ODrive 固件源码到本地,但是由于政策问题 clone 会非常慢,因此,下面提供了额外的百度网盘下载链接。
-
百度网盘下载:
链接 https://pan.baidu.com/s/1RVbYDL99u2blRTe4mNc5dQ
提取码 mjq4
注意:以下使用百度网盘下载地址
下载的固件进行编译
解压 ODrive-fw-v0.4.11-19-g1c947631.rar
进入 ODrive-fw-v0.4.11-19-g1c947631
文件夹,双击 ODrive_Workspace.code-workspace
选择使用 Visual Studio Code 打开
单击红框中的 tup.config.default
文件,配置硬件版本,修改为如下代码:
# Copy this file to tup.config and adapt it to your needs
# make sure this fits your board
CONFIG_BOARD_VERSION=v3.5-24V
CONFIG_USB_PROTOCOL=native
CONFIG_UART_PROTOCOL=ascii
CONFIG_DEBUG=false
# Uncomment this to error on compilation warnings
#CONFIG_STRICT=true
然后将 tup.config.default
文件重命名为 tup.config
然后保存。
依次点击菜单中的 Terminal -> Run Build Task… 等待构建、编译完成
虽然编译完成了,但是上边的构建过程存在一些问题,这是由于我们使用的源码包而不是通过 git clone 到本地的(如果是通过 git clone 到本地则不存在这个问题),所以执行 version.py 脚本时无法正确获取固件版本信息。可以修改一下 version.py 内部代码,不通过 git 命令获取版本信息而是手动填写版本信息。修改 version.py 内第22行 get_version_from_git() 函数如下:
修改前:
def get_version_from_git():
script_dir = os.path.dirname(os.path.realpath(__file__))
try:
# Determine the current git commit version
git_tag = subprocess.check_output(["git", "describe", "--always", "--tags", "--dirty=*"],
cwd=script_dir)
git_tag = git_tag.decode(sys.stdout.encoding).rstrip('\n')
(major, minor, revision, is_prerelease) = version_str_to_tuple(git_tag)
# if is_prerelease:
# revision += 1
return git_tag, major, minor, revision, is_prerelease
except Exception as ex:
print(ex)
return "[unknown version]", 0, 0, 0, 1
修改后:
def get_version_from_git():
return "fw-v0.4.11-19-g1c947631*", 0, 4, 11, True
11 完成开发环境搭建
11.1 构建工程
- Terminal -> Run Build Task…
终端窗口将被打开。VSCode配置会在此终端中运行命令 make -j4
,来编译工程。
11.2 烧录固件
- Terminal -> Run Task… -> flash
终端窗口将被打开。 VSCode配置会在此终端中运行命令make flash
,来烧录固件。
11.3 调试
Cortex-Debug 扩展插件,专门用于调试ARM Cortex项目。 您可以在此处阅读有关Cortex-Debug的更多信息:https://github.com/Marus/cortex-debug
- 确保将固件源码文件夹作为当前文件夹
- 用最新固件加载到ODrive (如果使用调试模式可以不需要此操作)
- 点击Debug -> Start Debugging (或键盘 F5)
- 处理器将重置并进入暂停
- 设置断点。注意: 您只能在处理器暂停时设置断点,如果在运行模式下设置断点,则不会应用它们
- 运行 (F5)
- Stepping over/in/out, 重新运行, 按下
pause
(F6) 按钮然后重新设置断点等 - 当调试完毕后,您可以按下
stop
(Shift+F5) 停止调试。同时它会自动关闭openOCD
11.4 清除构建文件
如果您想构建新的代码分支您可能需要清理构建时生成的文件。
- 打开命令终端 (View -> Terminal) 然后在命令终端中输入
make clean
回车
如果您有任何问题或疑问,欢迎您加入ODrive社区或QQ群 851421965 进行交流。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/126222.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...