-
1 # 小王的天空子城
-
2 # 時間走不停
stm32現在是主流的mcu,ST公司在中國的推廣做得很好,與很多高校都合作。還與很多做開發板的合作,市面上出現很多stm32的開發板。工程師選型肯定是從熟悉的開始,而stm32的晶片本來也不錯。開發也比較方便,現在出來stm32chubeMX工具,能透過圖形化配置,很方便,能很快建立工程,使用者只需要在上面新增自己的控制程式碼。我們公司也用
-
3 # 跟我學微控制器
不請自來,作為一名長期使用STM32微控制器進行開發的老司機,來回答一下這個問題。
首先、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的概念有點模糊。
其次、為什麼無人機不採用ARM+linux方案?這個問題很有意思,問題出在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程式設計複雜度低
回覆列表
對無人機控制來說,最重要的是實時性,Linux作為一個通用作業系統,實時性不夠,而功能又太多,即使是RTLinux,在實時程度上也只能算是準實時作業系統。所以硬體上一般都是用的Cortex-M系列,系統一般用更精簡的實時系統,其他需要大量資料處理的任務,再外掛專用模組來處理,保持核心控制部分的穩定性,這是傳統設計策略。當然現在也有很多廠家把資料處理和控制做在一個核心裡,隨著軟硬體的成熟,以後越來越可靠,也是大的發展方向。