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