{eval=Array;=+count(Array);}

国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

問答專欄Q & A COLUMN

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

trilevertrilever 回答0 收藏1
收藏問題

1條回答

GHOST_349178

GHOST_349178

回答于2022-06-28 11:26

不請自來,作為一名長期使用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的根本原因。

其他因素

  1. linux系統本身復雜度也是影響項目開發的一個重要因素,移植、學習、維護成本太高

  2. STM32裸機程序程序員可以掌控調度策略,能夠根據實際情況調節,靈活度更高

  3. STM32裸機裸機編程,比linux編程復雜度低


如果你有更多觀點,歡迎討論。

評論0 贊同0
  •  加載中...

最新活動

您已邀請0人回答 查看邀請

我的邀請列表

  • 擅長該話題
  • 回答過該話題
  • 我關注的人
向幫助了您的網友說句感謝的話吧!
付費偷看金額在0.1-10元之間
<