MissionPlanner架构梳理之(十一)-固件更新
MissionPlanner固件更新系统为用户提供了完整的ArduPilot自动驾驶仪固件更新解决方案。该系统包含两个界面(传统图标式和较新的清单式),支持自动检测主板类型、下载兼容固件并完成刷写操作。核心组件包括固件管理、主板检测和上传系统,支持多种硬件平台(如Pixhawk系列、VRBrain等)。更新过程涵盖固件源选择、清单解析、下载管理以及主板准备、固件上传和验证等关键环节。系统具备错误处
本文档介绍了 Mission Planner 中的固件更新系统,该系统允许用户下载固件并将其刷写到基于 ArduPilot 的自动驾驶仪硬件上。固件更新系统负责处理电路板检测、固件选择、下载以及上传到各种飞行控制器电路板的操作。
有关固件安装后配置参数的信息,请参阅参数编辑器。
固件更新系统概述
Mission Planner 提供了两个主要的固件更新界面:
- ConfigFirmware - 带有车辆类型图标的传统界面
- ConfigFirmwareManifest - 较新的基于清单的接口
两个接口都使用相同的底层系统来检测电路板、下载固件文件以及将固件上传到自动驾驶仪硬件。
固件更新工作流程
固件更新过程遵循以下一般流程:
关键组件
1. 固件类
该类Firmware
是固件更新系统的核心组件:
- 从在线来源检索固件列表
- 处理固件下载
- 管理电路板检测和固件上传过程
- 在更新过程中提供进度更新
主要方法包括:
getFWList()
:从在线来源检索固件列表updateLegacy()
:固件更新过程的主要方法UploadFlash()
、UploadPX4()
、 和UploadVRBRAIN()
:特定于主板的上传方法
2. 板材检测系统
该BoardDetect
类别标识连接到计算机的自动驾驶仪硬件的类型:
检测过程采用:
- USB设备识别
- 端口枚举
- 针对董事会的询问
- 引导加载程序识别
3.上传系统
该类px4uploader.Uploader
在引导加载程序模式下处理与自动驾驶仪硬件的低级通信:
上传者:
- 实现引导加载程序协议
- 处理设备识别
- 管理固件上传过程
- 对上传的固件进行验证
- 提供进度和状态更新
固件更新用户界面
Mission Planner 提供两个主要的固件更新界面:
1. 传统的ConfigFirmware接口
此界面以可点击的图标显示不同类型的载具(直升机、飞机、探测车等)。它:
- 根据车辆类型显示固件选项
- 显示固件版本信息
- 处理固件选择和更新过程
- 使用进度信息更新 UI
关键方法:
updateDisplayName()
:使用固件版本信息更新 UIfindfirmware()
:启动固件更新过程fw_Progress1()
:处理进度更新
2.基于Manifest的ConfigFirmwareManifest接口
这个较新的接口使用固件清单系统:
- 检索可用固件的完整列表
- 将固件与检测到的板类型进行匹配
- 提供更好的兼容性信息
- 使用 APFirmware 类解析清单数据
关键方法:
LookForPort()
:扫描兼容主板并处理固件更新GetBoardID()
:根据设备信息识别电路板类型fw_Progress1()
:使用进度信息更新 UI
固件下载过程
固件下载过程包括:
-
固件源选择:
- 官方 ArduPilot 固件服务器
- Beta/开发固件
- 自定义固件文件
- 历史版本
-
固件列表检索:
- 从固件服务器下载清单文件
- 解析 JSON 固件信息
- 将固件与主板类型匹配
-
固件文件下载:
- 下载固件文件的HTTP请求
- 下载过程中的进度跟踪
- 下载文件的临时存储
固件上传过程
固件上传过程包括以下关键阶段:
-
董事会准备:
- 检测板类型
- 将主板设置为引导加载程序模式(如果需要)
- 验证主板与固件的兼容性
-
固件处理:
- 处理固件文件格式(.px4、.apj、.hex)
- 检查固件板兼容性
- 准备上传固件二进制文件
-
上传执行:
- 擦除目标内存
- 写入固件数据
- 验证上传的数据
-
验证并重启:
- 计算校验和以验证完整性
- 使用新固件重新启动主板
- 向用户报告状态
电路板检测流程
主板检测是固件更新过程的关键部分:
-
端口扫描:
- 枚举可用的串行端口
- 检查具有已知 VID/PID 的 USB 设备
- 检测引导加载程序模式设备
-
板识别:
- 查询设备的板卡类型信息
- 使用 USB 描述符进行识别
- 与已知板类型匹配
-
特殊情况:
- 处理 ChibiOS 引导加载程序
- 识别较新的主板类型
- 后备识别方法
该系统支持多种板类型,包括:
- Pixhawk系列(PX4v2、PX4v3、PX4v4等)
- 立方体自动驾驶仪
- VRBrain/VRCore
- 基于Arduino的自动驾驶仪(APM)
- 专用板(Bebop、Disco 等)
基于清单的固件系统
较新的基于清单的固件系统提供:
-
结构化固件元数据:
- JSON 格式的完整固件目录
- 主板识别信息
- 版本详细信息
-
改进的兼容性检查:
- 精准的板型匹配
- 基于USB ID的识别
- 引导加载程序字符串匹配
-
发布渠道:
- 官方稳定版本
- Beta 版本
- 开发构建
自定义固件选项
系统支持加载自定义固件:
-
自定义固件文件:
- 加载本地 .px4、.apj、.hex 或 .bin 文件
- 自定义固件目录选择
- 不同的文件格式支持
-
DFU模式支持:
- 设备固件更新协议
- DFU固件文件的特殊处理
- 闪存寻址选项
-
历史固件:
- 访问以前的固件版本
- 历史固件浏览器
- 兼容性检查
错误处理和故障排除
固件更新系统包括强大的错误处理功能:
-
连接问题:
- 设备检测的重试机制
- 通信失败的错误报告
- 设备重新连接程序
-
兼容性问题:
- 固件板不匹配检测
- 引导加载程序版本兼容性检查
- 安全板的证书验证
-
上传失败:
- CRC 验证失败
- Flash 损坏检测
- 恢复程序
常见错误及其解决方案通过 UI 报告给用户,并在更新过程中提供详细的进度和状态更新。
固件认证和安全
一些主板实施了安全机制:
-
真品证书:
- 验证董事会真实性
- 公钥验证
- 签名检查
-
安全引导程序:
- 安全引导加载程序的特殊处理
- DFU 模式用于安全更新
- 身份验证协议
概括
Mission Planner 固件更新系统为更新基于 ArduPilot 的自动驾驶仪硬件提供了全面的解决方案。它:
- 检测连接的自动驾驶板
- 提供兼容固件选项
- 下载并处理固件文件
- 将固件上传到硬件
- 验证安装成功
该系统支持广泛的硬件、各种固件源,并包括强大的错误处理和用户反馈机制。
更多推荐
所有评论(0)