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 306A396A3235
Enter 来启动 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.json
Enter - 要从配置文件还原到配置到ODrive,系统命令终端中执行
odrivetool restore-config my_config.json
Enter
4. DFU 固件烧录
ODrive v3.4 或更低版本不支持使用 odrivetool 进行固件升级,您需要使用 STLink 编程器进行固件烧录。
要将 ODrive 更新到最新固件版本,只需打开系统命令终端并运行 odrivetool dfu
Enter ,然后按照提示进行即可,过程中需要使用 Zadig 将 STM32 BOOTLOADER 的驱动替换为 libusb-win32。
请注意,此过程将连接到 GitHub 服务器以检索最新固件。
odrivetool 在整个固件更新中将保留您先前对 ODrive 的配置。 但是如果任何设置被删除或重命名,您将收到警告消息。
如何烧录自定义固件?
如果您要烧录一个特定的固件文件而不是自动从 GitHub 服务器下载一个固件文件,则可以执行 odrivetool dfu path/to/firmware/file.hex
Enter。
您可以下载正式发布的固件文件(下载链接)。 您需要下载后缀为 .hex 的文件(而不是 .elf 文件)。 确保您选择的固件版本和您的 ODrive 版本相匹配。
如果您想要从源代码编译固件,请参考ODrive固件开发指南。
4.1 常见问题
-
Windows: 在固件升级过程中会提示 将 “STM32 BOOTLOADER” 的驱动替换为 “libusb-win32”。您需要打开 Zadig utility 然后将 “STM32 BOOTLOADER” 替换为 libusb-win32 然后固件升级会自动继续运行。
-
Linux: 尝试使用管理员权限执行
sudo odrivetool dfu
Enter 而非odrivetool dfu
Enter。 -
在某些计算机上,您需要拔出并重新插入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 进行交流。