px4原生源码学习三--Nuttx实时操作系统的使用
/**************************************************************************************************************
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原生源码学习四--Nuttx 实时操作系统编程
前面说到px4是基于Nuttx实时操作系统上的,那么px4也是由一些程序所构成,这些程序实现了飞行器的自主控制,只不过这些程序并不是我们通常所见到的单片机或者windows编程那样的程序,但基本编程思 ...
- px4原生源码学习二--实时操作系统篇
/*************************************************************************************************** ...
- px4原生源码学习一
接触px4代码有几天了,想把自己所学所想记录下来. px4就不过多介绍了,算得上目前使用的最广泛的开源飞控了.为什么说"px4原生代码学习呢",这还得追溯到被大疆干死的3DR,3D ...
- px4原生源码学习-(1)
接触px4代码有几天了,想把自己所学所想记录下来. px4就不过多介绍了,算得上目前使用的最广泛的开源飞控了.为什么说"px4原生代码学习呢",这还得追溯到被大疆干死的3DR,3D ...
- 漂流瓶语聊视频文字聊天模式app软件原生源码定制开发
漂流瓶语聊视频文字聊天模式app软件原生源码定制开发 功能首页: 1. 顶部是一个滚动信息条 2. 下面是大海和漂流瓶界面 3. 再往下是心动匹配和扔一个 4. 点击心动匹配之后,进入匹配页面,配对成 ...
- 2021最新4合1即时通讯IM源码-服务端+PC+WEB+安卓+IOS完整原生源码
介绍: 20214合1即时通讯IM源码 服务端+PC+WEB+安卓+IOS完整原生源码 附完整开发文档+视频搭建教程. 注意:此源码亲测可用,他处有小问题,我们已经修复.任何源码,难免有瑕疵,但不影响 ...
- 修改meta标签 查看源码没效果怎么办_Spring 源码学习(三)-自定义标签
又来填坑啦,上一篇讲完默认标签的解析,这篇笔记记录一下自定义标签的解析吧. 我们知道,Spring 源码的核心模块是 Spring-core 和 Spring-beans,在此基础上衍生出其他模块,例 ...
- dubbo源码学习三—暴露服务exporter、invoker
前面我们知道通过自定义标签,我们可以定位到相关标签的解析,同时梳理出三个重要的bean:ServiceBean.ReferenceBean.ConfigCenterBean. 通过Servicebea ...
- [spring源码学习]三、IOC源码——自定义配置文件读取
一.环境准备 在文件读取的时候,第9步我们发现spring会根据标签的namespace来选择读取方式,联想spring里提供的各种标签,比如<aop:xxx>等应该会有不同的读取和解析方 ...
最新文章
- 【非专业评测】发蜡、发膏、发泥、发油、啫喱、发膜、发胶、干胶、发棒、摩丝
- corosync+pacemaker实现高可用(HA)集群(二)
- Avdshare Audio Converter 7中文版
- Django框架之DRF 基于mixins来封装的视图
- wxWidgets:wxSplitterWindow 示例
- 常见硬件设计的EDA工具
- 电路设计之干扰问题总结与分析
- 2019 ACM/ICPC 全国邀请赛(西安)J And And And (树DP+贡献计算)
- babel-preset-env使用介绍
- Windows server 2003 ××× 配置实例(Site to Site)
- [Hive]-架构篇
- 【语音合成】基于matlab比例重叠相加法信号分帧与还原【含Matlab源码 561期】
- ETL工具-Kettle Spoon教程
- ABBYY软件对PDF文本审阅操作之盖章
- carte集群的搭建笔记
- Oracle学习篇章一——基础
- PTF渗透测试框架使用
- IT领域唯一的国家级证书,积分落户、评职称、抵个税...
- 可以ping通外网,ping不通内网,同时可以Ping网关,但是外部ping不到IP
- 控件的移动事件和双击事件