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
查看启动输出。
nsh> ls
nsh> free
nsh> dmesg
下面是一些可以在 NuttShell 中使用的命令,以便深入了解系统情况。
此 NSH 命令提供剩余的可用内存:
free
top
命令显示每个应用程序使用的堆栈情况:
top
注意堆栈使用量是通过堆栈着色计算的,并且是任务开始以来的最大值(不是当前使用量)。
要查看工作队列的运行情况以及运行速度,使用:
work_queue status
调试 uORB 主题:
uorb top
检查特定的 uORB 主题:
listener <topic_name>
许多其他系统命令和模块列在 模块和命令参考 中(例如 top
、listener
等)。
TIP
某些命令在某些板卡上可能会被禁用(即对于存在内存或闪存限制的板卡,某些模块未包含在固件中)。 在这种情况下,你会看到响应:command not found
(未找到命令)