博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

首先将你的px4硬件同电脑连接(通过usb即可), 切换到px4源码目录。
cd Firmware/Tools

运行pythone脚本,同Nuttx的shell通信
./mavlink_shell.py /dev/ttyACM0

运行结果如下图所示:

这就是一个类似于linux的shell,因为他是Nuttx的shell,所以叫Nuttx shell,简称nsh。它的作用和其它操作系统的命令行没什么区别,都是用来对系统进行操作用的,敲击相应的命令,完成对应得任务,是一个很好的用户界面(知道操作系统的强大了吧!这是个在stm32上跑的系统,他还自带shell!),所以看px4代码千万不要有单片机main(),init(),while(1)的思维,要站在操作系统层面看待px4。
下面我就具体来讲讲这个nsh的使用:
用过shell的朋友,肯定会想到我先打个help试试:

一看就知道了,这是nsh的命令,用过linux的应该很快就知道这些命令的意义了,像什么ls,cd,pwd,echo,rm啦都是在linux上经常使用的命令。事实上在Nuttx系统中这些命令的功能和在其他类Unix系统中是差不多的(因为确实有些命令功能不是那么强大,有些许不同)。如果有些命令你觉得功能不是很清楚,可以通过查看Nuttx实时操作系统的官网中Nuttx shell手册,查看详细功能(全英文,http://nuttx.org/doku.php?id=documentation:nuttshell,拉到网页最下面可以看到索引。)

那么Builtin App又是什么鬼呢?

其实就是Nuttx的一些内建程序,这些程序中大部分是px4团队为飞控写的控制程序(所以px4飞控不是一个单独的程序,而是由这几十个程序构成,每个程序功能明确!)下面我们就随便挑一个程序讲讲,比如ver,这是个判断硬件版本的程序。在nsh界面中输入ver,可以看到下面的输出,说我们缺少运行所带的参数,让我么输入相应参数。

我们就在输入:ver hw ,它就会输出板子的硬件版本。

你可以试试其它程序,过程都是一样的,有的要带参数,有的不要,可以试试看,不会出什么问题的。
还有一个比较重要的东西,我觉得我应该交代一下,就是Nuttx的文件系统,我们可以通过命令来查看Nuttx系统中有哪些文件。
nsh界面输入:ls

可以看到输出了4个文件夹,因为篇幅原因,我就不过多讲解了,主要讲讲这四个文件夹是做什么用的
dev文件夹下面是被系统抽象出来的驱动,你通过cd命令进去看,可以看到里面的文件都是对应硬件的名字,这也就是第二篇所讲的一切皆文件,通过读取这些文件就可以获取传感器和其它I/O设备的数据了。
etc文件夹是用户的是一些配置文件,和一些执行脚本(nsh执行的脚本),里面还有一些很重要的东西,后面我会讲到。
fs文件夹下面一个重要的文件夹就是microsd,这个就是px4硬件上的那张内存卡,他就被系统挂载在/fs/microsd下。
obj文件夹下面是px4团队为Nuttx开发的一个类似于操作系统进程通信的东西,就是那个uorb(这个我也会在后面单独介绍一下,目前还不是很了解),你目前可以把里面的文件理解是用来供不同进程间通信的文件就好(类似于linux的管道文件)。