本文档介绍 PX4 系统的启动和初始化过程,包括只读存储器文件系统 (ROMFS) 结构、启动脚本和模块加载顺序。初始化过程将系统从启动状态转变为完全可操作的飞行控制系统。
有关创建这些启动文件的构建系统的信息,请参阅构建系统。有关初始化期间启动的特定模块的详细信息,请参阅系统架构。
概述
PX4 的启动过程由存储在 ROMFS 中的 Shell 脚本控制,ROMFS 嵌入在飞行控制固件中。系统遵循确定的顺序,初始化硬件、加载参数、启动核心模块,并根据机身类型配置飞行器。
ROMFS 结构和生成
ROMFS 包含所有启动脚本、机身配置和初始化文件。构建系统在编译期间生成此文件系统。

ROMFS 是在构建过程中使用 CMake 生成的。关键文件包括:
| 文件 | 目的 |
|---|---|
rcS | 主初始化脚本 |
rc.autostart | 生成的机身选择逻辑 |
rc.serial | 生成的串口配置 |
rc.sensors | 传感器初始化 |
rc.vehicle_setup | 特定车辆的设置 |
主启动脚本(rcS)
主启动脚本rcS负责协调整个初始化过程。它遵循严格的顺序以确保系统正确初始化。
存储初始化
启动脚本首先尝试挂载参数和日志的持久存储:

参数系统初始化
参数系统加载控制系统行为各个方面的配置值:
机身配置
系统根据以下SYS_AUTOSTART参数选择并加载特定于机身的配置:
模块加载顺序
启动脚本按特定顺序加载模块以确保正确的依赖关系:

POSIX/SITL 启动差异
POSIX 启动脚本处理特定于模拟的初始化:
POSIX 启动的主要区别:
- 使用环境变量进行配置(
PX4_SIM_MODEL,PX4_SYS_AUTOSTART) - 支持通过
PX4_PARAM_*环境变量覆盖参数 - 启动模拟特定模块(
pwm_out_sim,simulator_sih) - 配置 UXRCE-DDS 以进行 ROS 2 通信
特定主板定制
启动系统通过可选脚本支持特定于主板的定制:
| 脚本 | 目的 | 地点 |
|---|---|---|
rc.board_arch_defaults | 特定于体系结构的默认值 | /platforms/${PLATFORM}/init/${ARCH}/ |
rc.board_defaults | 特定于板的参数 | /boards/${BOARD}/init/ |
rc.board_sensors | 板载传感器配置 | /boards/${BOARD}/init/ |
rc.board_mavlink | 板载 MAVLink 流 | /boards/${BOARD}/init/ |
rc.board_extras | 主板附加模块 | /boards/${BOARD}/init/ |

用户自定义点
启动系统为用户提供了几个自定义点:

错误处理和恢复
启动系统包括强大的错误处理:

系统提供多种恢复机制:
- 参数备份与恢复
- 硬故障日志恢复
- 失败时模块重新启动
- 安全模式运行
- 音频和视觉错误指示
944

被折叠的 条评论
为什么被折叠?



