# 系统启动
PX4 的启动由 shell 脚本控制。在 NuttX 上,它们位于 ROMFS/px4fmu_common/init.d (打开新窗口) 文件夹中的脚本--其中一些脚本也用于 Posix(Linux/MacOS)。仅用于 Posix 的脚本位于 ROMFS/px4fmu_common/init.d-posix (打开新窗口).
所有以数字和下划线开头的文件(例如 10000_airplane
) 是预定义的机身配置。它们在构建时被导出到 airframes.xml
文件,该文件由 QGroundControl (打开新窗口) 用于机身选择用户界面。添加新配置 这里.
其余文件是一般启动逻辑的一部分。第一个执行的文件是 init.d/rcS (打开新窗口) 脚本(或 init.d-posix/rcS (打开新窗口) 在 Posix 上),它会调用所有其他脚本。
以下部分根据 PX4 运行的操作系统进行了划分。
# Posix(Linux/MacOS)
在 Posix 中,系统 shell 被用作脚本解释器(例如 /bin/sh,在 Ubuntu 中被链接到 dash)。要做到这一点,需要做以下几件事:
PX4 模块需要在系统中看起来像单独的可执行文件。这是通过符号链接实现的。每个模块都有一个符号链接
px4-<module> -> px4
在箱柜
文件夹下的二进制路径。执行时,将检查二进制路径 (argv[0]
),如果它是一个模块(以px4-
),就会将命令发送到主 px4 实例(见下文)。TIP
px4-
前缀,以避免与系统命令(如关闭
),还可以通过键入px4-<TAB>;
.shell 需要知道在哪里可以找到符号链接。为此
箱柜
目录中添加了符号链接。路径
变量。shell 会将每个模块作为一个新的(客户端)进程启动。每个客户进程都需要与 px4 的主实例(服务器)进行通信,而实际的模块则作为线程运行。这是通过 UNIX 插座 (打开新窗口).服务器通过套接字监听,客户端可以连接并发送命令。然后,服务器将输出和返回代码发送回客户端。
启动脚本直接调用模块,例如
指挥官启动
而不是使用px4-
前缀。这是通过别名实现的:每个模块都有一个以别名<模块>=px4-<模块>;
文件中创建bin/px4-alias.sh
.rcS
脚本在主 px4 实例中执行。它不会启动任何模块,而是首先更新路径
变量,然后使用rcS
文件作为参数。此外,还可启动多个服务器实例进行多载具模拟。客户端通过
--实例
.该实例可通过$px4_instance
变量。
当 PX4 已在系统上运行时,可从任何终端执行这些模块。例如
cd <PX4-Autopilot>/build/px4_sitl_default/bin ./px4-commander takeoff ./px4-listener sensor_accel
# 动态模块
通常情况下,所有模块都编译到一个 PX4 可执行文件中。不过,在 Posix 上,可以选择将模块编译成单独的文件,然后使用 动态
指挥。
dyn ./test.px4mod
# NuttX
NuttX 集成了 shell 解释器 (NuttShell (NSH) (打开新窗口)),因此可以直接执行脚本。
# 调试系统启动
软件组件驱动程序的故障不会导致启动中止。这可通过 设置+e
在启动脚本中。
可以通过连接 系统控制台 并重新启动电路板。生成的启动日志包含有关启动顺序的详细信息,并应包含启动中止原因的提示。
# 常见启动失败原因
- 自定义应用程序:系统内存不足。运行
免费的
命令来查看可用内存量。 - 导致堆栈跟踪的软件故障或断言
# 更换系统启动
可以通过创建一个文件来替换整个启动程序 /etc/rc.txt
在 microSD 卡上使用新配置(旧配置中的任何内容都不会自动启动,如果文件为空,则根本不会启动任何内容)。
自定义默认启动几乎总是更好的方法。下文对此进行了说明。
# 自定义系统启动
自定义系统启动的最佳方法是引入一个 新机架配置.机架配置文件可包含在固件中或 SD 卡中。
如果只需要对现有配置进行调整,例如多启动一个应用程序或设置几个参数值,可以通过在 /etc/
SD 卡的目录:
- /etc/config.txt:修改参数值
- /etc/extras.txt启动应用程序
文件说明如下。
警告
系统引导文件是 UNIX 文件,需要 UNIX 行尾。如果在 Windows 上编辑,请使用合适的编辑器。
备注
这些文件在 PX4 代码中被引用为 /fs/microsd/etc/config.txt
和 /fs/microsd/etc/extras.txt
其中,microsd 卡的根文件夹路径为 /fs/microsd
.
# 自定义配置(config.txt)
config.txt
文件可用于修改参数。该文件在主系统配置完成后加载,并且 之前 已启动。
例如,您可以在 SD 卡上创建一个文件、 etc/config.txt
来设置参数值,如图所示:
参数设置-默认 PWM_MAIN_DIS3 1000 参数设置-默认 PWM_MAIN_MIN3 1120
# 启动其他应用程序(extras.txt)
extras.txt
可用于在主系统启动后启动其他应用程序。这些应用程序通常是有效载荷控制器或类似的可选定制组件。
警告
调用系统引导文件中的未知命令可能会导致引导失败。通常情况下,启动失败后系统不会流式传输 mavlink 信息,在这种情况下,请检查系统控制台上打印的错误信息。
下面的示例显示了如何启动自定义应用程序:
在 SD 卡上创建文件
etc/extras.txt
有这些内容:自定义应用程序启动
通过使用
设置+e
和set -e
命令:set +e optional_app start # 如果 optional_app 未知或启动失败,将不会导致启动失败 set -e mandatory_app start # 如果 mandatory_app 未知或启动失败,将中止启动