日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

px4原生源码学习二--实时操作系统篇

發(fā)布時間:2024/4/18 windows 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 px4原生源码学习二--实时操作系统篇 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
/**************************************************************************************************************

??po上我使用到的硬件和開發(fā)環(huán)境

? px4硬件:某寶銷量最高的pixhawk套件(主機,gps+指南針,數(shù)傳,pwm轉(zhuǎn)pmm,安全開關(guān),蜂鳴器,電源轉(zhuǎn)換接頭)

? 遙控器:某國產(chǎn)神器

? 開發(fā)環(huán)境:虛擬機vm12+ubuntu14

?ps:此文章只針對純代碼分析,關(guān)于那些個飛機類型啦,硬件什么的我就不多說了,這個得自己去親身體驗才行,切不可貿(mào)然飛行,這個還是很危險的!!!!!

?還有就是什么Git,Linux,make什么的也不會多說,畢竟只是工具屬性。

?獲得更好支持可以訪問http//:px4.io 我知道的大部分來自這個網(wǎng)站。

? **************************************************************************************************************/


??? 為什么我要談到實時操作系統(tǒng)?首先據(jù)我所知,國內(nèi)除了軟件工程專業(yè)和計算機專業(yè),其它專業(yè)應(yīng)該很少會開操作系統(tǒng)這門課程,對于廣大的自控和電子專業(yè)的學(xué)生來說,其實這非常不利的!!!!如果你只是開發(fā)一個簡簡單單的單片機程序,不用考慮以后對于程序的升級與修改,那么你簡簡單單寫個main函數(shù)的while循環(huán)其實沒什么不好。但你要遇到那種開發(fā)周期長,系統(tǒng)復(fù)雜的產(chǎn)品或者項目,那最好是基于實時操作系統(tǒng)開發(fā),因為這對于代碼重用和添加新功能或者新設(shè)備來說會方便挺很多,代碼的編寫程度也會簡單很多。像早期的apm飛控也是基于板子的main函數(shù),導(dǎo)致其代碼復(fù)雜,冗余,后面直接被棄,因為可能每添加一個功能或者設(shè)備,代碼就可能要重構(gòu)。我們要講的px4飛控其實也是基于一個叫做Nuttx的實時操作系統(tǒng)的(在此提醒各位拿到代碼找main函數(shù)的同志們,不要白費力氣,你找不到的,因為確實系統(tǒng)不是main函數(shù)啟動的!!!,后面我會專門講一下px4是如何啟動的),其實我沒猜錯的話大疆飛控用的應(yīng)該是在國內(nèi)外很出名的開源實時操作系統(tǒng)μC/OS。所以要更好理解px4,就一定要有操作系統(tǒng)概念。下面我就基于兩點談?wù)?#xff1a;第一:什么是實時操作系統(tǒng),第二:px4的實時操作系統(tǒng)Nuttx



?????首先談?wù)劜僮飨到y(tǒng),說到操作系統(tǒng),大家首先會想到windows,linux或者Mac os,亦或者手機的一些操作系統(tǒng)。沒錯這些都是操作系統(tǒng),但這些操作系統(tǒng)和今天要談的實時操作系統(tǒng)有一些基本的概念和理論都是一樣的,但他們又有一些不同。

?? 相同點:所以操作系統(tǒng)無非由以下四大部分組成(熟記這四個模塊):

?????????????????? 1.任務(wù)調(diào)度

?????????????????? 2.內(nèi)存管理

?????????????????? 3.文件系統(tǒng)

?????????????????? 4.?I/O

???? 對于主流的操作系統(tǒng)而言,這四個缺一不可!!,而對于一些非常簡單的實時操作系統(tǒng)可能會沒有3和4。

???? px4所使用的的Nuttx這四個模塊都有。

???? 什么是任務(wù)調(diào)度(很多課本上會說進程管理,但后面操作系統(tǒng)發(fā)展出了線程,這個說法其實不嚴謹)?

???? 想想你日常使用的手機,有各式各樣的APP,其實每個APP都可以把它抽象為一個簡單的task(任務(wù)),你在各個APP之間切換自如,包括有一些后臺運行的APP,假設(shè)你手機是單核的,一次只能運行一個task,那手機是怎么實現(xiàn)后臺運行多個APP的呢?這個就得歸功于操作系統(tǒng)的任務(wù)調(diào)度功能,由于大部分的APP都不會涉及到太多的計算,所以這些APP真正使用CPU的時間少之又少,大部分時間是在等待輸入和輸出操作的,這個時候就可以把他們掛起,讓別的task使用CPU了,由于這個切換很快,你感覺不到,所以你就感覺事實上有多個程序在同時運行。

????簡單點說任務(wù)調(diào)度就是一個程序,這個程序決定其他程序什么時候使用CPU,什么時候掛起。

????上面的說法就引出了一個問題,如果同時有兩個task都要求使用CPU呢?怎么辦!誰先用?這就引進了另外一個概念:優(yōu)先級。誰優(yōu)先級高誰用CPU。而這個就是實時操作系統(tǒng)同普通操作系統(tǒng)的區(qū)別。實時操作系統(tǒng)有嚴密的等級制度和相應(yīng)制度即:高優(yōu)先級task搶低優(yōu)先級task (即使這個task在用CPU)CPU對于高優(yōu)先級的程序,要求系統(tǒng)有快速的反映時間(這是衡量一個實時操作系統(tǒng)好壞的主要標準)。

????什么是內(nèi)存管理

??? 程序要運行首先要干嘛?要把它從ROM(可理解為硬盤)里面加載到RAM(可理解為內(nèi)存)里面。如果單片機就跑一個程序,整個內(nèi)存都是你的,你想怎么用就怎么用。可是引入操作系統(tǒng)后,要對多個task進行調(diào)度,就得把他們?nèi)考虞d到內(nèi)存中,可是畢竟單片機或者mcu的內(nèi)存有限(即使電腦的也有限),這就引出了內(nèi)存管理。

???簡單點說內(nèi)存管理也是一個程序,這個程序決定誰駐留在內(nèi)存,誰離開內(nèi)存。

????
??什么是文件系統(tǒng)?

??在ROM里面保存的東西,如果是少量的東西,你可以隨便保存。可是當你有幾十個g種子的時候,你也直接用單片機的方式一個一個寫到flash里面!!!你雜亂無章的保存會導(dǎo)致后面查找,刪除,修改變得非常麻煩,使用我們要用文件系統(tǒng)來幫我們管理這些個文件,而我們只要對文件系統(tǒng)進行操作就能對文件操作了。

??簡單點說文件系統(tǒng)是一個程序,它幫我們管理我們的文件,使我們操作文件更方便。

? 什么是I/O?

???CPU不能獨立的存在,它得和周圍的設(shè)備通信,內(nèi)存也好,flash也罷,這些都可以通歸為I/O設(shè)備。對于px4來說I/O設(shè)備就更多了,什么gps,陀螺儀,加速計,氣壓計,空速計,pmm輸入等等,還在一直加呢!我們自己寫個main數(shù),也可以讀出這些設(shè)備的數(shù)據(jù),但在操作系統(tǒng)中,對這些設(shè)備進行操作就不是那么簡單了。由于I/O算的上計算機組件當中最復(fù)雜的東西了,你不能簡簡單單把它歸類為某個程序。Unix系統(tǒng)對I/O設(shè)備有個很好的抽象:文件。Unix系統(tǒng)中把所有東西都抽象成文件,I/O設(shè)備是一種特殊的文件。因為事實上我們并不關(guān)心你I/O設(shè)備是什么,我們只想要其中的數(shù)據(jù),文件可以存取數(shù)據(jù),傳感器數(shù)據(jù)不斷更新,我就不斷更新這個文件內(nèi)容,其他程序想要里面的數(shù)據(jù)可以去讀這個文件就行。

???不同系統(tǒng)對于I/O管理的理念大不相同,我無法把它抽象為一個程序或者文件,后面我會針對Nuttx的I/O談?wù)劇?/span>


??px4的實時操作系統(tǒng)Nuttx
???
??? 首先說說px4和Nuttx的淵源:PX4是一個軟、硬件開源項目(遵守BSD協(xié)議),目的在于為學(xué)術(shù)、愛好和工業(yè)團體提供一款低成本高性能的高端的自駕儀。這個項目源于?ETH Zurich (蘇黎世聯(lián)邦理工大學(xué))的計算機視覺與幾何實驗室的PIXHAWK項目、并得到了自主系統(tǒng)實驗室和?自動控制實驗室的支持。而Nuttx也是蘇黎世聯(lián)邦理工大學(xué)
的一個開源項目(這個學(xué)校在計算機方面可能算的上是歐洲最強的了,那個提出最短路徑算法和信號量的教授就是這個學(xué)校的)。所以他們兩個就走到了一起。

? 下面背下書:NuttX 是一個實時操作系統(tǒng)(RTOS),強調(diào)標準兼容和小型封裝,具有從8位到32位微控制器環(huán)境的高度可擴展性。NuttX 主要遵循? Posix 和 ANSI 標準,對于在這些標準下不支持的功能,或者不適用于深度嵌入環(huán)境的功能(如 fork()),采用來自 Unix 和常見 RTOS (如 VxWorks)的額外的標準 API。


?? 下面一篇文章我將著重講解一下Nuttx系統(tǒng)的使用。

總結(jié)

以上是生活随笔為你收集整理的px4原生源码学习二--实时操作系统篇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。