ODrive应用 #2 odrivetool入门指南
odrivetool入门指南odrivetool是和ODrive配套的PC程序。 它的主要目的是提供一个类似命令行终端的工具软件来配置和调试ODrive,以及一些类似固件升级的其它附加功能。文章目录odrivetool入门指南安装连接多个ODrive将ODrive配置参数备份DFU固件烧录常见问题使用其他DFU工具升级固件WindowsLinuxmacOSST Link固件烧录实时绘图使用od..
odrivetool入门指南
odrivetool 是和 ODrive 配套的 PC 软件。 它的主要目的是提供一个类似命令行终端的工具软件来配置和调试 ODrive,以及一些类似固件升级的其它附加功能。
版本说明
ODrive 硬件版本: v3.6-56V
ODrive 硬件内部固件版本: fw-v0.5.1
odrivetool 版本: 0.5.1.post0(pip install odrive==0.5.1.post0)
文章目录
1. odrivetool 的安装
参考ODrive入门指南进行安装。
在系统命令终端中输入 odrivetool --help Enter 来查看 odrvetool 可用的附加功能。
2. 连接多个 ODrive
默认情况下,当一台电脑同事接入多个 ODrive 时,odrivetool 将连接到它找到的任意一个 ODrive。 如果这不是您想要的,则可以选择指定的 ODrive。
要查找 ODrive 的序列号,请运行 odrivetool,然后连接 ODrive 并打开电源。 您应该看到如下内容:
Connected to ODrive 306A396A3235 as odrv0
In [1]:
306A396A3235 就是此 ODrive 的序列号。 如果您只想对这个序列号的 ODrive 进行操作,可以关闭 odrivetool(输入quit Enter )然后在系统命令终端中输入odrivetool --serial-number 306A396A3235Enter 来启动 odrivetool。
我的 ODrive 在DFU模式下是否仍然可以查看它的序列号?
可以的,序列号可以通过查看USB描述符来查看。
假设您在Linux系统下,您可以输入以下命令来查看:
$ (sudo lsusb -d 1209:0d32 -v; sudo lsusb -d 0483:df11 -v) 2>/dev/null | grep iSerial
iSerial 3 385F324D3037
3. 将 ODrive 配置参数备份
您可以使用 odrivetool 来备份和还原设备配置,也可以将一个 ODrive 的配置转移到另一 ODrive。
- 要将配置以文件的形式保存到PC上,系统命令终端中执行
odrivetool backup-config my_config.jsonEnter - 要从配置文件还原到配置到ODrive,系统命令终端中执行
odrivetool restore-config my_config.jsonEnter
4. DFU 固件烧录
ODrive v3.4 或更低版本不支持使用 odrivetool 进行固件升级,您需要使用 STLink 编程器进行固件烧录。
要将 ODrive 更新到最新固件版本,只需打开系统命令终端并运行 odrivetool dfuEnter ,然后按照提示进行即可,过程中需要使用 Zadig 将 STM32 BOOTLOADER 的驱动替换为 libusb-win32。
请注意,此过程将连接到 GitHub 服务器以检索最新固件。
odrivetool 在整个固件更新中将保留您先前对 ODrive 的配置。 但是如果任何设置被删除或重命名,您将收到警告消息。
如何烧录自定义固件?
如果您要烧录一个特定的固件文件而不是自动从 GitHub 服务器下载一个固件文件,则可以执行 odrivetool dfu path/to/firmware/file.hexEnter。
您可以下载正式发布的固件文件(下载链接)。 您需要下载后缀为 .hex 的文件(而不是 .elf 文件)。 确保您选择的固件版本和您的 ODrive 版本相匹配。
如果您想要从源代码编译固件,请参考ODrive固件开发指南。
4.1 常见问题
-
Windows: 在固件升级过程中会提示 将 “STM32 BOOTLOADER” 的驱动替换为 “libusb-win32”。您需要打开 Zadig utility 然后将 “STM32 BOOTLOADER” 替换为 libusb-win32 然后固件升级会自动继续运行。
-
Linux: 尝试使用管理员权限执行
sudo odrivetool dfuEnter 而非odrivetool dfuEnter。 -
在某些计算机上,您需要拔出并重新插入USB,以使PC理解我们已从运行模式切换到DFU模式。
-
如果设备无法进入DFU模式,请尝试将其强制为DFU模式。
将 ODrive 电路板上丝印有
RUN DFU的拨码开关从RUN拨到DFU,然后重新启动 ODrive。 完成固件升级后,请不要忘记拨回RUN位置,然后再次对 ODrive 进行重启。
4.2 使用其它软件进行 DFU 固件烧录
有些人在使用 odrivetool dfu 工具时遇到问题,因此以下内容是有关如何使用其他工具对 ODrive 进行刷写固件的操作。
在开始以下步骤之前,您需要获取固件二进制文件。 您可以下载正式发布的固件文件(下载链接)。 确保选择与您的 ODrive 版本相匹配的文件下载。接下来将会使用到 .hex 后缀的文件。
如果您想要从源代码编译固件,请参考ODrive固件开发指南。
4.2.1 Windows
您可以使用 ST 的 DfuSe 进行固件烧录。
- 下载该工具(下载链接),您需要登录 ST 帐号。
- 安装该工具后,找到安装目录下与您使用的系统对应的驱动进行驱动的安装(C:\Program Files (x86)\STMicroelectronics\Software\DfuSe v3.0.6\Bin\Driver\Win10\dpinst_amd64.exe)。
- 启动
DfuFileMgr.exe,可以在您的开始菜单中找到名为Dfu file manager来启动。 - 选择 "I want to GENERATE a DFU file from S19, HEX or BIN files"然后点击OK。
- 点击 “S19 or Hex…”,选择到
ODriveFirmware.hex。 - 将所有其它设置保持默认,然后单击"Generate…" 按钮。
- 将输出文件另存为
ODriveFirmware.dfu。 请注意,由于某些原因,保存时会产生警告,直接忽略即可。 - 启动
DfuSeDemo.exe,可以在您的开始菜单中找到名为DfuSeDemo来启动。 - 按照上面如何强制进入DFU模式中的说明将ODrive强制进入DFU模式。
- 此时在界面左上角应该显示出了处于DFU模式的STM设备。
- 如果未出现,则可能是因为Zadig将驱动程序替换为libusb。 我们需要将其设置回原始驱动程序。参考Zadig如何恢复为原始驱动.
- 如果完成上述步骤后,ODrive仍被识别为libusb设备,则可以尝试删除libusb驱动程序(当我们完成固件升级后可以再次使用Zadig重新安装驱动)。 您可以简单地删除文件
C:\Windows\System32\drivers\libusb0.sys。 - 在界面下方勾选 “Verify after download” 然后点击 “Choose…” 按钮,选择我们前边生成好的
ODriveFirmware.dfu文件。 - 点击 “Upgrade” 按钮。
- 如果收到警告,提示您无法检查设备类型是否正确,请单击“yes”以继续。
- 恭喜,您的ODrive固件已经被更新了; 您现在可以退出DfuSeDemo。
- 关闭ODrive的电源,然后将ODrive设置回RUN模式。
4.2.2 Linux
安装 dfu-util:
sudo apt install dfu-util
按照上面如何强制进入DFU模式中的说明将ODrive强制进入DFU模式。
在固件目录下执行下边的指令进行固件的烧录:
sudo dfu-util -a 0 -s 0x08000000 -D ODriveFirmware.bin
4.2.3 macOS
首先安装 arm-gcc 工具链:
$ brew cask install gcc-arm-embedded
让后将固件文件格式由 .elf 转换为 .bin 文件:
$ arm-none-eabi-objcopy -O binary ODriveFirmware_v3.5-48V.elf ODriveFirmware_v3.5-48V.bin
安装 dfu-util:
$ sudo port install dfu-util # via MacPorts; for HomeBrew use "brew install dfu-util"
找到设备序列号以备用:
$ dfu-util --list # list the DFU capable devices
[...]
Found DFU: [0483:df11] ver=2200, devnum=5, cfg=1, intf=0, path="20-2", alt=0,
name="@Internal Flash /0x08000000/04*016Kg,01*064Kg,07*128Kg", serial="388237123123"
对指定序列号的设备进行固件烧录:
$ sudo dfu-util -S 388237123123 -a 0 -s 0x08000000 -D ODriveFirmware_v3.5-48V.bin
5. ST Link 固件烧录
仅对于ODrive v3.4或更早版本,才需要使用STLink烧录。 您将需要STLink / v2或与之兼容的编程器。
-
安装 OpenOCD
- Windows: 安装说明 (同时依照指示安装 ST-LINK/V2 的驱动)
- Linux:
sudo apt-get install openocd - macOS:
brew install openocd
-
下载固件(下载链接)。您将会使用 .elf 文件进行烧录。同时请确保您选择的固件版本和您的ODrive版本相匹配。
-
如下图所示连接ODrive和STLink/v2编程器:

然后对 ODrive 上电。
-
打开系统命令终端,然后导航到固件所在的目录。
-
运行以下命令(将ODriveFirmware_v3.4-24V.elf替换为您所使用的固件文件名称):
openocd -f interface/stlink-v2.cfg -f target/stm32f4x.cfg -c init -c "reset halt" -c "flash write_image erase ODriveFirmware_v3.4-24V.elf" -c "reset run" -c exit
如果一切正常,您应该会看到类似的内容:
wrote 262144 bytes from file ODriveFirmware_v3.4-24V.elf in 10.194110s (25.113 KiB/s)
如果以上操作出现错误,请确保openocd已添加到您的系统环境变量 PATH 中,检查杜邦线是否正确连接,然后再次尝试。
如果您有任何问题或疑问,欢迎您加入ODrive社区 或 QQ群 851421965 进行交流。
更多推荐

所有评论(0)