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