Skip to main content

本地升级

概述

本地升级是一个用于升级负载设备固件的功能,开发者使用本地升级功能,能够方便用户安装本地固件升级包文件升级负载设备的固件。

固件传输协议

开发者在开发本地升级功能时,可调用接口 UAV_Upgrade_Init 指定传输协议并配置传输设置信息。

使用UAVFTP 协议

UAVFTP,即 UAV Common File Transfer Protocol,是 Autel Robotics 独有的文件传输协议,开发者通过调用指定的接口,即可获得所需的文件。 UAVFTP 协议升级负载设备的固件时,请参考 UAV_Upgrade_FirmwareDownload,了解获取固件的方法,并在调用 UAV_vUpgrade_Init()` 接口时初始化该结构体。

说明:

  • 使用 Linux 或没有网口的负载设备可使用该方式传输固件。
  • 由于该方式使用命令信号传输通道传输固件,传输速度一般。

实现本地升级功能

1. 本地升级模块初始化

在使用本地升级功能前,请先初始化升级模块,并指定升级固件时所使用的传输协议。

returnCode = UAV_Upgrade_Init(&g_uavUpgradeHandler);
if (returnCode != 0) {
LOG_INFO("UAV_Upgrade_Init error, return code = %d", returnCode);
return returnCode;
}

2. 升级流程

开发者根据结构体 T_UAVUpgradeHandler 实现负载设备本地升级的函数,并通过 T_UAVUpgradeHandler() 接口注册负载设备本地升级的回调函数;通过函数 UAV_Upgrade_Query() 查询负载设备升级状态。

使用本地升级功能

运行具有升级功能的程序

请在使用本地升级功能时,参考运行示例程序,编译出当前支持本地升级功能的程序。

Linux 平台运行环境调整

为使用升级功能,需要将程序设置为默认启动,请参考如下步骤:

  1. 将编译生成的应用程序拷贝到/usr/local/example/目录下。

  2. 在命令行中的输入如下指令:

    • chmod 666 /dev/ttyUSB0
    • chmod 755 /usr/local/example/upgrade
    • /usr/local/example/upgrade&

    说明:

    • ttyUSB0 为连接负载设备的串口设备,开发者可根据实际的情况修改该名称。
  3. 重启负载设备,通过终端命令 ps aux | grep upgrade 检查程序是否正常运行

HC32F4 平台运行环境调整

如需在 HC32F4 平台上使用本地升级功能,开发者需先将 Bootloader 烧录到开发平台中,再烧录负载设备的固件。

  1. 使用脚本构建Bootloader后烧录,构建脚本及产物目录为:

    • samples\sample_c\platform\rtos_freertos\hc32f460\04_tools\all_make.bat
    • samples\sample_c\platform\rtos_freertos\hc32f460\04_tools\release
  2. 构建并烧录基于SDK lib开发的固件

    • 参考 samples\sample_c\platform\rtos_freertos\hc32f460\02_app\projects\app.uvprojx 工程

说明:

  • Bootloader 是 MCU 上电运行的程序,用于更新应用固件并执行应用固件。
  • 应用固件:实现负载设备的软件功能,编译 Payload SDK Lib。

Sample 升级原理介绍

Linux 程序文件升级原理

利用升级功能可以获取到需要更新的固件文件(通过 UAVFTP 协议),将固件文件替换掉原先运行的程序文件,系统重启后完成固件升级。

相关参考:

  • 负载设备升级流程:example/upgrade
  • 使用本地升级功能:exsample/upgrade.cxx

HC32F4单片机程序升级原理

使用 HC32F4 开发的负载设备从 Flash 中直接读取固件文件并运行负载设备程序,因此开发者需先烧录 Bootloader,再烧录应用固件。

HC32F4 固件升级流程

  1. HC32F4 平台上电后,将启动 MCU。
  2. 无人机触发升级流程后,通过升级接口将升级文件发送至负载设备,并进行升级。实现参考运行示例程序

相关参考:

  • samples\module_sample\test_upgrade.c