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源碼目錄
? 運行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原生源码学习二--实时操作系统篇
- 下一篇: px4原生源码学习四--Nuttx 实时