跳至正文

备份并刷写固件

已核对 2026-11-01

结果: 保存每个电机的设置,安装兼容的映像,并检查应用程序启动和设置保存。 工具和通信 必须已经可以工作。

1、准备机制

固定机械臂,托住各连杆,然后关闭电机力矩。关闭其他使用串口的程序。刷写工具要求 torqueEnable = 0、通过 lock = 1 锁定持久化写入,并且没有活动告警。若不满足条件,请用相应的设置工具解决。不要绕过检查,也不要在未查明原因时清除告警。

可以使用已安装的姿态记录工具关闭力矩。运行命令,先托住机构,再确认关闭力矩,等待 Torque off verified,然后输入 done,不要记录姿态:

macOS / Linux
npm run record-poses -- --port "$SERVO_PORT" --ids 1,2,3,4,5,6
Windows PowerShell
npm.cmd run record-poses -- --port "$env:SERVO_PORT" --ids 1,2,3,4,5,6

将选定的 ID 替换为您的 ID。这将创建一个重播不需要的空姿势文件。这是一个受控的扭矩释放程序,而不是紧急停止。

2. 备份每个电机

两种备份目的使用不同的、不可互换的格式:

文件 创建者: 目的
tools/settings/backups/servo-1-before-flash.json Node.js settings backup 将持久旧版设置普通恢复到同一电机
backups/servo-1-factory-recovery.json Python settings.py backup 恢复出厂固件后修复保存的设置和重置模板

这两个命令都会读取电机而不更改其设置:

macOS / Linux
npm run settings -- backup --port "$SERVO_PORT" --id 1 --file tools/settings/backups/servo-1-before-flash.json
Windows PowerShell
npm.cmd run settings -- backup --port "$env:SERVO_PORT" --id 1 --file tools/settings/backups/servo-1-before-flash.json
macOS / Linux
tools/flash/.venv/bin/python tools/flash/settings.py backup --port "$SERVO_PORT" --id 1 --file backups/servo-1-factory-recovery.json
Windows PowerShell
.\tools\flash\.venv\Scripts\python.exe tools/flash/settings.py backup --port "$env:SERVO_PORT" --id 1 --file backups/servo-1-factory-recovery.json

对每个 ID 重复 ,更改 --id 和文件名。在项目外部保留另一个副本,并用其物理电机标记每个备份。现有文件不会被覆盖;为另一个快照使用新名称。旧备份不包括 Extension 配置文件或重力模型:单独保存这些 JSON 文件。

检查: 两个命令都成功并且两个文件都存在。请勿恢复其他电机的备份;它的偏移量可以改变编码器计数的物理意义。

3. 离线检查固件镜像

从 v0.1-preview 的 Assets 区域下载 custom-v9-e44c0e6.zip。将 firmware.enc 和 release.json 两个文件都解压到 tools/flash/releases/custom/。不要使用 Source code 源码压缩包、release.example.json 或原始编译输出。

macOS / Linux
tools/flash/.venv/bin/python tools/flash/flash.py inspect --manifest tools/flash/releases/custom/release.json
Windows PowerShell
.\tools\flash\.venv\Scripts\python.exe tools/flash/flash.py inspect --manifest tools/flash/releases/custom/release.json

inspect 未打开串口。它检查清单结构、图像大小和 SHA-256。对于此存档,预计为 extension.major: 9 、 extension.minor: 0 、 model_bytes: [[9, 3]] 和 encoded_bytes_verified: 25744 。如果验证失败,则获取原始匹配对;不要手动调整其哈希值或大小。

4. 按 ID 刷写单个电机

以下命令写入固件并重新启动所选电机:

macOS / Linux
tools/flash/.venv/bin/python tools/flash/flash.py flash --manifest tools/flash/releases/custom/release.json --port "$SERVO_PORT" --id 1
Windows PowerShell
.\tools\flash\.venv\Scripts\python.exe tools/flash/flash.py flash --manifest tools/flash/releases/custom/release.json --port "$env:SERVO_PORT" --id 1

收到提示时输入 FLASH。保持供电,完成前不要运行其他上传工具。正常的按地址刷写允许其他具有唯一地址的电机保持连接;请逐个刷写。正常刷写期间,不要手动对总线断电再上电。

工具会保存设置快照、传输镜像、验证应用程序启动并比较设置。成功完成后,力矩保持关闭。报告保存在 backups/flash/,请与备份一起保留。这会检查应用程序和设置,而不是逐字节回读整个固件。

5. 检查已安装的接口

刷写完成后,在不启动运动的情况下读取能力信息和反馈:

macOS / Linux
node host/servo-driver/examples/v9-feedback.js "$SERVO_PORT" 1
Windows PowerShell
node host/servo-driver/examples/v9-feedback.js "$env:SERVO_PORT" 1

此示例使用 1,000,000 波特率和 ID 1。操作其他 ID 时请更改最后一个参数。使用不同波特率时,需要修改此示例代码。预期 Extension 版本为 9.0;会话未激活且力矩关闭是正常状态。

如果传输完成但应用程序验证失败,请保留报告,并在再次刷写前检查 ID、波特率和设置。设备无响应或明确需要恢复原厂固件时,请使用恢复流程。

下一步:检查或建立校准。


文档首页 · 源码修订:a995f77。Extension 9.0。