# UAVCAN 固件升级

如果提供了匹配的固件,PX4 将自动升级 UAVCAN 节点上的固件。

警告

UAVCAN 设备在出厂时通常已预装适当的固件。开发 UAVCAN 设备时主要需要这些说明。

# Vectorcontrol ESC 代码库(Pixhawk ESC 1.6 和 S2740VC)

下载 ESC 代码:

Git 克隆 https://github.com/thiemar/vectorcontrol
CD 向量控制

# 刷新 UAVCAN 引导加载程序

在通过 UAVCAN 更新固件之前,Pixhawk ESC 1.6 需要刷新 UAVCAN 引导加载程序。要生成引导加载程序,请运行

生产 清洗 &&; 董事会=px4esc_1_6 生产 -j8

生成后,引导加载程序映像位于 firmware/px4esc_1_6-bootloader.bin,OpenOCD 配置位于 openocd_px4esc_1_6.cfg.跟随 本说明 将引导加载程序安装到电调上。

# 编译主二进制文件

董事会=s2740vc_1_0 生产 &&; 董事会=px4esc_1_6 生产

这将为两个受支持的电调构建 UAVCAN 节点固件。固件图像将位于 com.thiemar.s2740vc-v1-1.0-1.0.<git hash>.binorg.pixhawk.px4esc-v1-1.6-1.0.<git hash>.binn.

# Sapog 代码库(Pixhawk ESC 1.4 和 Zubax Orel 20)

下载 Sapog 代码库:

Git 克隆 https://github.com/PX4/sapog
CD 水稻
Git 子模块更新 --init --recursive

# 刷新 UAVCAN 引导加载程序

在通过 UAVCAN 更新固件之前,电调需要刷新 UAVCAN 引导加载程序。引导加载程序的制作方法如下:

CD 引导程序
生产 清洗 &&; 生产 -j8
CD ..

引导加载程序映像位于 bootloader/firmware/bootloader.bin,OpenOCD 配置位于 openocd.cfg.跟随 本说明 将引导加载程序安装到电调上。

# 编译主二进制文件

CD 固件
生产 发布=1 # RELEASE 是可选项,省略可构建调试版本

请注意,某些较新版本的 GCC 在链接过程中会导致 segfault。在撰写本报告时,4.9 版本确实能正常工作。固件镜像位于 firmware/build/io.px4.sapog-1.1-1.7.<xxxxxxxx>.application.bin其中 <xxxxxxxx>; 是数字和字母的任意序列。Zubax Orel 20 有两个硬件版本(1.0 和 1.1)。请确保将二进制文件复制到后续说明中的正确文件夹。电调固件将检查硬件版本,并适用于这两种产品。

# 祖巴克斯全球导航卫星系统

请参阅 项目页面 (打开新窗口) 了解如何构建和闪存固件。Zubax GNSS 附带一个支持 UAVCAN 的引导加载器,因此可以通过 UAVCAN 以统一的方式更新其固件,如下所述。

# 在自动驾驶仪上安装固件

UAVCAN 节点文件名遵循命名约定,允许 Pixhawk 更新网络上的所有 UAVCAN 设备,无论其制造商是谁。因此,必须将上述步骤生成的固件文件复制到 SD 卡或 PX4 ROMFS 上的正确位置,才能更新设备。

固件图像名称的惯例是

<uavcan name>-<hw version major>.<hw version minor>-<sw version major>.<sw version minor>.<version hash>.bin

例如 com.thiemar.s2740vc-v1-1.0-1.0.68e34de6.bin

但是,由于空间/性能限制(名称不得超过 28 个字符),UAVCAN 固件更新程序要求将这些文件名拆分并存储在如下目录结构中:

/fs/microsd/fw/<node name>/<hw version major>.<hw version minor>/<hw name>-<sw version major>.<sw version minor>.<git hash>.bin

例如

s2740vc-v1-1.0.68e34de6.bin /fs/microsd/fw/io.px4.sapog/1.1/sapog-1.7.87c7bc0.bin

基于 ROMFS 的更新程序沿用了这一模式,但在文件名前加上了 _ 这样你就可以添加固件了:

/etc/uavcan/fw/<device name>/<hw version major>.<hw version minor>/_<hw name>-<sw version major>.<sw version minor>.<git hash>.bin

# 将二进制文件放入 PX4 ROMFS

最终的压轴文件位置是

  • S2740VC 电子调速器: ROMFS/px4fmu_common/uavcan/fw/com.thiemar.s2740vc-v1/1.0/_s2740vc-v1-1.0.<git hash>.bin
  • Pixhawk ESC 1.6: ROMFS/px4fmu_common/uavcan/fw/org.pixhawk.px4esc-v1/1.6/_px4esc-v1-1.6.<git hash>.bin
  • Pixhawk ESC 1.4: ROMFS/px4fmu_common/uavcan/fw/org.pixhawk.sapog-v1/1.4/_sapog-v1-1.4.<git hash>.bin
  • Zubax GNSS v1: ROMFS/px4fmu_common/uavcan/fw/com.zubax.gnss/1.0/gnss-1.0.<git has>.bin
  • Zubax GNSS v2: ROMFS/px4fmu_common/uavcan/fw/com.zubax.gnss/2.0/gnss-2.0.<git has>.bin

请注意,ROMFS/px4fmu_common 目录将挂载到 Pixhawk 上的 /etc 目录。

# 启动固件升级程序

使用 PX4 Flight Stack 时,请在 "电源配置 "部分启用 UAVCAN 并重启系统,然后再尝试 UAVCAN 固件升级。

另外,也可通过 NSH 手动启动 UAVCAN 固件升级:

uavcan 启动 uavcan 启动 fw