1. 程式人生 > >PX4程式碼學習系列部落格(2)——PX4與實時作業系統

PX4程式碼學習系列部落格(2)——PX4與實時作業系統

px4飛控是基於nuttx實時作業系統的。

作業系統(OS)是什麼?

具體的定義可以去看計算機專業的課本或者百度之,我這裡講我自己對作業系統的理解:
作業系統相當於在計算機硬體和人或者其它軟體之間的一個翻譯官,有了它,人和其他軟體就不用“說”控制計算機硬體的“艱深”的“語言”。它展示給人的良好的圖形介面,提供給其他軟體的清晰的API。對於人或者其它軟體下達的指令,它自己排程各種計算機硬體裝置完成。這一方面方便了使用者使用計算機,另一方面它提高了系統資源的使用效率。

作業系統應該具有的功能有:

任務排程:
windows系統可以同時執行多個程式,這是因為多個程式在輪流使用CPU,但是由於切換的速度很快,我們感覺多個程式是在同時執行的。任務排程其實是個程式,它決定哪個程式在什麼時候使用CPU。
記憶體管理:
程式的執行需要記憶體,多個程式同時執行時記憶體怎麼利用,各個程式利用的多少,利用的位置,利用完成後的釋放等等,需要一個叫記憶體管理的程式來控制。
檔案系統:
檔案系統用來整理檔案,就是windows的檔案目錄結構,當然不同系統略微有些差別。
驅動程式:
控制硬體裝置的軟體程式。
使用者介面:
方便使用者控制計算機。不是必須的。

實時作業系統(RTOS)是什麼?

作業系統分為實時作業系統和非實時作業系統,我們常用的windows就是非實時作業系統。非實時作業系統的任務排程一般採用時間片轉輪的方法,同時進行的幾項任務輪流使用CPU,所以,非實時作業系統在有任務就緒之後不一定能馬上執行,必須等待在它前面的任務掛起或者時間片結束後才能執行。這在一些實時性要求比較高的場合是不能使用的,比如飛控中控制電機的任務,如果它被其它任務堵塞了,那結果就是炸機。實時作業系統是利用中斷的方法,當有高優先順序的中斷到來時,CPU馬上移交給它使用。執行完成再返回剛才的任務。
常見的實時作業系統有:uCOS,VxWorks,RTLinux,Nuttx等。

Nuttx實時作業系統是什麼?

為什麼要用Nuttx實時作業系統?

1.使用作業系統可以使應用程式程式碼結構結構清晰,編寫難度降低。
2.提高程式碼的重用性,方便新增新功能和新裝置。
3.飛行控制的實時要求。
4.Nuttx是比較小的實時作業系統,適合在微控制器中使用。

相關推薦

PX4程式碼學習系列部落(2)——PX4實時作業系統

px4飛控是基於nuttx實時作業系統的。 作業系統(OS)是什麼? 具體的定義可以去看計算機專業的課本或者百度之,我這裡講我自己對作業系統的理解: 作業系統相當於在計算機硬體和人或者其它軟體之間的一個翻譯官,有了它,人和其他軟體就不用“說”控制計算機硬體

JavaScript學習系列部落_35_JavaScript 正則表示式的使用

正則表示式的使用 先說RegExp物件的一個方法 test() - 使用這個方法可以用來檢查一個字串是否符合正則表示式的規則,如果符合則返回true,否則返回false。 1、用正則表示式來檢查一個字串中是否含有字母a var reg = new RegExp("a"); var s="abcdef"; c

系列部落---從零開始學習音視訊程式設計技術

本文章所涉及的到內容均為轉發,看完一篇文章在此處貼上一個連結的方式生成,主要是以此來督促自己循序漸進的學習和積累,文獻內容其實並不高深,並且內容也不見得完全正確,因此有認為不妥的地方,我會盡量修改,當然是以ps方式提出。在學有縮成之後會開始自己原創的音視訊部落格。 內容從零開始,慢慢深入(在每篇

QT學習資料部落:《Qt 實戰一二三》和《Qt 學習之路 2》等

參考原貼 https://blog.csdn.net/dpsying/article/details/80615320 目的:僅供自己學習,並無他用。 參考書目: 1《Qt5開發及例項》(Qt 5.8為平臺)         

Vb資料庫學習總結部落

專案說明:        本階段初步接觸程式語言,是“行動下移、思想上移”的突出體現過程,敲程式碼過程中收穫的不僅僅是一個個實現的程式,更重要的是其凝練出的思想精華。  本階段會讓學員初步接觸程式語言,是“行動下移、

Cnn學習相關部落

CNN卷積神經網路原理講解+圖片識別應用(附原始碼) 笨方法學習CNN影象識別系列 深度學習影象識別專案(中):Keras和卷積神經網路(CNN) 卷積神經網路模型部署到移動裝置 使用CNN神經網路進行圖片識別分類 DeepLearning tutorial(5)CNN卷積神經網路應用於人臉識別(詳細流程+

JavaScript 系列部落(二)

JavaScript 系列部落格(二) 前言 本篇部落格介紹 js 中的運算子、條件語句、迴圈語句以及陣列。 運算子 算術運算子 // + | - | * | / | % | ++ | -- console.log(5 / 2); // 2.5 // 取整 con

JavaScript 系列部落(三)

JavaScript 系列部落格(三) 前言 本篇介紹 JavaScript 中的函式知識。 函式的三種宣告方法 function 命令 可以類比為 python 中的 def 關鍵詞。 function 命令宣告的程式碼區塊,就是一個函式。命令後面是函式名,函式名後面的圓括號裡面是要傳入的形參名

vue-cli(vue腳手架)快速搭建前端專案——Vue系列部落

最近自己做了一個vue做前端,nodejs做後的完整專案,在此過程遇到的問題和收穫的心得分享出來,希望能和大家交流探討。 專案搭建步驟 1.首先要確保計算機上安裝了nodejs環境,才能進行以下步驟(nodejs環境安裝); 2.使用淘寶映象:npm config set registry

JavaScript 系列部落(五)

JavaScript 系列部落格(五) 前言 本篇部落格學習 js 選擇器來控制 css 和 html、使用事件(鉤子函式)來處理事件完成後完成指定功能以及js 事件控制頁面內容。 js 選擇器 在學習 js 選擇器前需要了解幾個概念。 節點(一):在文件(document)中出現的所有內容都

JavaScript 系列部落(七)

JavaScript 系列部落格(八) 前言 本篇部落格介紹頁面節點概念、文件結構以及如何使用 js 操作文件節點還有事件 target 以及 BOM 操作。 節點 dom與dom屬性 // DOM: 文件物件模型 => 提高給使用者操作document obj的標準介面 // DO

簡單程式碼爬取部落超連結的文字,並且去除字元“原”和空格

        這裡給大家分享一個怎麼用Python爬取超連結的文字,並且能夠去除字元“原“和前後空格、空行等等。這個程式碼不多,而且非常簡單。我這裡用的是Python3,版本不和的可以調整一下,這個程式碼還是很好理解的。        接下來我給大家分享爬取我的部落格超連結

最近半年的學習部落計劃 (2018.6)

    先對之前的半年計劃的成果進行總結,順便提出未來半年的計劃。    關於前端:完成了高階JS的學習,並且更新的系列部落格,JS學得很紮實。考慮到JQuery實在是過時了,就沒有再看了。關於Angular,因為在之前的公司離職了,沒有再用了。反而因為工作的關係,接觸到了小

web學習部落小專案(登入註冊模組)

這個小專案採用的框架是struts2+spring3+hibernate3   將action與hibernate整合到spring中 剛入手時,還是沒有層次性,想到什麼就先寫什麼,寫完之後再回頭看時

Django 系列部落(一)

Django 系列部落格(一) 前言 學習了 python 這麼久,終於到了Django 框架。這可以說是 python 名氣最大的web 框架了,那麼從今天開始會開始從 Django框架的安裝到使用一步步的學習,這系列部落格不會像前端的那樣水了(立個 flag),希望可以成為高質量的部落格。那麼本篇部落

Django 系列部落(二)

Django 系列部落格(二) 前言 今天部落格的內容為使用 Django 完成第一個 Django 頁面,並進行一些簡單頁面的搭建和轉跳。 命令列搭建 Django 專案 建立純淨虛擬環境 在上一篇部落格中已經安裝好了虛擬環境,所以用虛擬環境來安裝指定版本的 Django。為了可以從頭到尾的走一遍

讀讀書,敲敲程式碼,寫寫部落,思考思考人生。

z 對於音樂推薦來說,網易雲音樂無疑是國內最為出色的音樂APP,很多人驚喜地發現使用網易雲音樂聽的歌曲基本上都是自己喜歡的歌曲,這是在其他音樂APP身上不能得到的體驗。根據使用網易雲音樂的經驗和推薦演算法的一些知識,嘗試分析網易雲音樂的音樂推薦。當然具體的雲音樂推薦系統

最近半年的學習部落計劃

將近4個月時間沒有更新js的學習心得了,原因有二:1,最近工作專案接觸了新的架構,python做底層資料的獲取和重新整理資料庫,web端是mvc框架,php和資料庫互動更新model,前端採取angular架構。學習python和angular架構耽誤了一點時間。2. 我覺

JavaSE_8系列部落——專家之路(一)---Java反射的總結

先來四個基本問題 一什麼是反射what 生活中的反射 程式設計語言中的反射 Java中的反射 其他語言中的反射 NET平臺中的反射

序列化和反序列化系列部落(一)—— What and Why?

引言: 序列化和反序列化幾乎是工程師們每天都要面對的事情,但是要精確掌握這兩個概念並不容易:一方面,它們往往作為框架的一部分出現而湮沒在框架之中;另一方面,它們會以其他更容易理解的概念出現,例如加密、持久化。然而,序列化和反序列化的選型卻是系統設計或重構一個重要的環節,在分散式、大資