px4原生源码学习三--Nuttx实时操作系统的使用
来源:互联网 发布:httpclient js 编辑:程序博客网 时间:2024/05/18 00:32
po上我使用到的硬件和开发环境
px4硬件:某宝销量最高的pixhawk套件(主机,gps+指南针,数传,pwm转pmm,安全开关,蜂鸣器,电源转换接头)
遥控器:某国产神器
开发环境:虚拟机vm12+ubuntu14
ps:此文章只针对纯代码分析,关于那些个飞机类型啦,硬件什么的我就不多说了,这个得自己去亲身体验才行,切不可贸然飞行,这个还是很危险的!!!!!
还有就是什么Git,Linux,make什么的也不会多说,毕竟只是工具属性。
获得更好支持可以访问http//:px4.io 我知道的大部分来自这个网站。
**************************************************************************************************************/
前面说到px4是基于Nuttx实时操作系统上开发的,那么Nuttx系统是怎么样的呢?px4又是怎么在Nuttx上运行的呢?本篇文章就向大家讲解一下Nuttx实时操作系统的使用。
首先将你的px4硬件同电脑连接(通过usb即可),并按照我在px4原生源码学习(1)所提到的那样,将px4同虚拟机内的ubuntu系统连接上。
切换到px4源码目录
cd Firmware/Tools
运行pythone脚本,同Nuttx的shell通信
./mavlink_shell.py /dev/ttyACM0
我在运行这个python脚本的时候出现了一些问题,可能是脚本中用到了python 的组件pipe,所以你去安装pipe组件,安装组件的时候还是会出问题,你把那个问题百度一下安装缺少的依赖包,再去安装pipe就可以了如果一切正常你应该可以看到以下画面:
熟悉linux的朋友应该能够猜出这是什么,对!这就是一个类似于linux的shell,因为他是Nuttx的shell,所以叫Nuttx shell,简称nsh。它的作用和其它操作系统的命令行没什么区别,都是用来对系统进行操作用的,敲击相应的命令,完成对应得任务,是一个很好的用户界面(知道操作系统的强大了吧!这是个在stm32上跑的系统,他还自带shell!),所以看px4代码千万不要有单片机main(),init(),while(1)的思维,要站在操作系统层面看待px4。
下面我就具体来讲讲这个nsh的使用:
用过shell的朋友,肯定会想到我先打个help试试:
从截图(截图并不完整)中我们可以看到我们输入help后的结果
首先是这些:
一看就知道了,这是nsh的命令,用过linux的应该很快就知道这些命令的意义了,像什么ls,cd,pwd,echo,rm啦都是在linux上经常使用的命令。事实上在Nuttx系统中这些命令的功能和在其他类Unix系统中是差不多的(因为确实有些命令功能不是那么强大,有些许不同)。如果有些命令你觉得功能不是很清楚,可以通过查看Nuttx实时操作系统的官网中Nuttx shell手册,查看详细功能(全英文)
po上地址: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的管道文件)。
下一篇我将讲解如何为Nuttx编写一个我们程序猿入门一个平台的都会编写的程序。
- px4原生源码学习三--Nuttx实时操作系统的使用
- px4原生源码学习-(3)--Nuttx实时操作系统的使用
- px4原生源码学习-(4)--Nuttx 实时操作系统编程
- px4原生源码学习-(4)--Nuttx 实时操作系统编程
- px4原生源码学习四--Nuttx 实时操作系统编程
- px4原生源码学习-(2)--实时操作系统篇
- px4原生源码学习二--实时操作系统篇
- PX4实时操作系统(nuttx)自学笔记
- px4原生源码学习-(1)
- px4原生源码学习-(1)
- px4原生源码学习一
- 实时操作系统NuttX 介绍
- NuttX实时操作系统
- NuttX实时操作系统
- 实时操作系统Nuttx学习笔记(手册学习部分)
- px4源码学习三--px4源码结构分析
- PX4代码学习系列博客(2)——PX4与实时操作系统
- PX4源码学习二--PX4环境搭建
- 解决Failed to load class "org.slf4j.impl.StaticLoggerBinder"
- 操作符重载
- jsp页面格式化时间
- Java NIO实现WebSocket服务器
- 常用的布局及技巧
- px4原生源码学习三--Nuttx实时操作系统的使用
- java基础杂谈(二)之 switch的多重匹配
- JQuery判断是否为空
- 当当网爬虫
- grokdebuggera安装配置
- HadoopRPC框架-----模拟NameNode和Client通信
- delphi 窗体的创建和释放
- Vim命令总结
- 高手总是最后出场?腾讯出手瓜分一亿现金,我看还比较小气!