Skip to content

PX4 控制台/Shell

PX4 允许通过 MAVLink Shell(MAVLink 外壳)系统控制台 对系统进行终端访问。

这里将说明它们的主要区别,以及如何使用。

系统控制台与外壳

PX4 的 系统控制台 提供对系统的底层访问、调试输出以及对系统启动过程的分析。

只有一个 系统控制台,它运行在一个特定的 UART 上(即调试端口,如在 NuttX 中所配置的),并且通常通过 FTDI 线缆(或其他一些调试适配器,如 Dronecode 探针)连接到计算机。

  • 用于 底层调试/开发:启动过程、NuttX、启动脚本、板卡初始化、PX4 核心部分的开发(例如 uORB)。
  • 更具体一点,这里是包括自启动的用户应用在内的整个 PX4 系统下所有启动过程唯一的输出位置。

外壳提供对系统的上层访问能力:

  • 用于执行基础的模块调试运行命令。
  • 直接 显示你启动的模块的输出。
  • 无法 直接 显示在工作队列上运行的任务的输出。
  • 在 PX4 系统无法启动时无助于调试(它并没有运行)。

INFO

现在,在某些板卡上可以通过外壳使用 dmesg 命令,这使得比以前更底层的调试成为可能。 例如,使用 dmesg -f & 命令,你还可以看到后台任务的输出。

系统控制台(System Console)在调试系统无法启动时十分必要,它会在飞控板上电后输出启动日志。 由于 MAVLink 提供了更大的灵活性,目前仅使用 MAVLink Shell(MAVLink 外壳)

系统控制台 在系统无法启动时至关重要(当对板卡进行电源循环时,它会显示系统启动日志)。 MAVLink Shell(MAVLink 外壳) 设置起来要容易得多,因此对于大多数调试情况,通常更推荐使用它。

使用控制台/外壳

MAVLink 外壳/控制台和 系统控制台 的使用方式非常相似。

例如,输入 ls 查看本地文件系统,输入 free 查看剩余的可用内存,输入 dmesg 查看启动输出。

sh
nsh> ls
nsh> free
nsh> dmesg

下面是一些可以在 NuttShell 中使用的命令,以便深入了解系统情况。

此 NSH 命令提供剩余的可用内存:

sh
free

top 命令显示每个应用程序使用的堆栈情况:

sh
top

注意堆栈使用量是通过堆栈着色计算的,并且是任务开始以来的最大值(不是当前使用量)。

要查看工作队列的运行情况以及运行速度,使用:

sh
work_queue status

调试 uORB 主题:

sh
uorb top

检查特定的 uORB 主题:

sh
listener <topic_name>

许多其他系统命令和模块列在 模块和命令参考 中(例如 toplistener 等)。

TIP

某些命令在某些板卡上可能会被禁用(即对于存在内存或闪存限制的板卡,某些模块未包含在固件中)。 在这种情况下,你会看到响应:command not found(未找到命令)