電工之家_電工基礎知識學習網站
當前位置:電工之家 > 電工知識 > 單片機 > 正文

為什么無人機一般都用stm32而不是arm+linux

時間:2019-02-13 14:57 來源:電工之家

首先STM32是什么?什么是ARM?STM32和ARM關系是什么?
1.STM32 是基于ARM Cortex-M3和M0的單片機,是ARM的一個小子類。
2.ARM處理器是英國Acorn有限公司設計的低功耗成本的第一款RISC微處理器。全稱為Advanced RISC Machine。ARM處理器本身是32位設計,但也配備16位指令集,一般來講比等價32位代碼節省達35%,卻能保留32位系統的所有優勢。
3.從上面的定義來看,STM32其實就是ARM的一種處理器,ARM是統稱,
題主把ARM和STM32的概念有點模糊。
為什么無人機一般都用stm32而不是arm+linux
為什么無人機一般都用stm32而不是arm+linux
其次、為什么無人機不采用ARM+linux方案?
這個問題很有意思,問題出在linux身上。
為什么無人機一般都用stm32而不是arm+linux
我們先搞清楚linux是什么?
“Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩定的多用戶網絡操作系統。
Linux操作系統誕生于1991 年10 月5 日(這是第一次正式向外公布時間)。Linux存在著許多不同的Linux版本,但它們都使用了Linux內核。Linux可安裝在各種計算機硬件設備中,比如手機、平板電腦、路由器、視頻游戲控制臺、臺式計算機、大型機和超級計算機。
嚴格來講,Linux這個詞本身只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基于Linux內核,并且使用GNU工程各種工具和數據庫的操作系統。“--來源于百度詞條
linux操作系統作為網絡操作系統性能非常強大,并發性非常好。但是它作為無人機的方案有一個很致命的問題,那就是它的實時性很差,這由的操作系統的任務調度特性決定的。也許有人會說linux操作系統支持實時調度策略的啊,是表面看是這樣的。但是真實情況是不能滿足實時要求。
一個致命問題是,linux在用戶態支持可搶占調度策略,而在核心態卻不支持搶占式調度策略。這樣運行在Linux核心態的任務(或系統調用)是不能被其它優先級更高的任務所搶占的,這樣就會引起優先級逆轉問題。另外,Linux操作系統的中斷處理句柄是不可調度的,不能依優先級高低。
  此外,我們還關心和任務響應時間相關的時鐘精度,以及由于資源共享而帶來的優先級逆轉問題。linux中硬件時鐘中斷的默認時間間隔是10ms,所有的軟件時鐘都是靠硬件來觸發的。而簡單同步機制(互斥)不支持優先級繼承又很可能導致優先級逆轉。
而無人機要求時時刻刻在計算無人機當前的姿態,發現姿態和預定目標不一致馬上進行姿態矯正,這對系統實時性要求很高。linux的調度策略不能滿足無人機實時性的要求,這就是無人機不采用ARM+linux的根本原因。
其他因素
linux系統本身復雜度也是影響項目開發的一個重要因素,移植、學習、維護成本太高
STM32裸機程序程序員可以掌控調度策略,能夠根據實際情況調節,靈活度更高
STM32裸機裸機編程,比linux編程復雜度低

看過《為什么無人機一般都用stm32而不是arm+linux》的人還看了以下文章
單片機為什么用C語言而不用JAVA 單片機為什么用C語言而不用JAVA
在學生時代,我用過C語言編程也用過JAVA語言編程,工作之后都還給老師了,但是基本的概念還是知道一些。 C語言和JAVA語言同樣是高級語言,但是還是不同的,C語言要更低級一些,對硬件的控制更加直接,JAVA語言的運行需要使用JAVA虛擬機。下面分別對C語言和JA...
學習編程為什么要使用硬件 學習編程為什么要使用硬件
學習編程的關鍵是自己動手實踐,多訓練,沒有硬件怎么實踐?前期可以不需要硬件,只看書學習,但是效果不佳,最好是一邊學習一邊實踐。即使看書學會了如何編程,最終還是要運用在硬件上的,硬件是載體,沒有硬件執行,光有軟件是沒有意義的。 (1)嵌入式軟...
為什么說JCC指令與標志寄存器是溝通計算機的橋梁 為什么說JCC指令與標志寄存器是溝通計算機
為什么說JCC指令與標志寄存器是溝通計算機的橋梁 通過JCC指令可以實現有條件跳轉,而標志寄存器是決定JCC指令是否實現跳轉的必要條件。所以JCC指令與標志寄存器是溝通計算機的橋梁。 【什么是JCC指令】 JCC指令是什么?JCC指令表示以J開頭的一組指令,是JMP...
單片機移位操作右移為什么最高位保持原數最低位移出 單片機移位操作右移為什么最高位保持原數最
單片機移位操作右移為什么最高位保持原數最低位移出 移位操作的含義 移位運算符是位操作運算符的一種。移位運算符在二進制的基礎上對數字進行平移。按照平移的方向和填充數字的規則分為:右移、(帶符號右移)和 需要特別注意的是,移位運算是按照二進制數字進...
為什么要學習51單片機?單片機的學習方法 為什么要學習51單片機?單片機的學習方法
為什么要學習51單片機?單片機的學習方法 無論是工程師還是大學教師還是大學生都喜歡用51單片機,原因有以下幾點: 1.由于51內核(指具有8051cpu的單片機)具有大量的資料,有很多的種類,所以受到了人們的喜愛,是初學者能夠收到事半功倍的學習效果。真的是這...