溫馨提示本答案僅適合初學(xué)者,對于已經(jīng)學(xué)會os的大神不適用! 答案作為一個深入了解過rtos內(nèi)核實現(xiàn)的我,先給出個回答吧:
選擇越簡單的操作系統(tǒng)內(nèi)核越好 rtos必須是推薦國內(nèi)的! 其實我個人首推TencentOS tiny ,但是目前僅在內(nèi)測階段,就算了吧,聽汪大神說應(yīng)該快開源了。 然后是rt-thread 接下來就是LiteOS 原因首先吧,還是那句話,越簡單越好 。 第一點:初學(xué)者學(xué)習(xí)操作系統(tǒng),那必須是先學(xué)習(xí)內(nèi)核,學(xué)習(xí)內(nèi)核處理的思想,跳出裸機處理的思想,那么選擇的內(nèi)核必然是由簡單到深入。 第二點:學(xué)習(xí)內(nèi)核的話,文檔說明必須要豐富,目前有很多書是寫ucos 跟FreeRTOS 的,很多人都覺得這兩個rtos 非常好,那人家做了那么多年,確實也是非常好的啦,ucos 上過火星;FreeRTOS 開源免費,是全球最多人使用的rtos,我肯定不否認(rèn)這些不好啦。但是我還是推薦國內(nèi)的。ucos實現(xiàn)太臃腫,安全做的非常好,很多情況都考慮了,但是作為初學(xué)者,你會有那么多情況產(chǎn)生嗎,肯定不會的,沒必要學(xué)。FreeRTOS 實現(xiàn)幾乎都是通過宏定義提供給開發(fā)者,實現(xiàn)過程也是很直觀明了,但是內(nèi)核代碼行數(shù)還是太多了,我不推薦(即使我的第一個rtos 也是學(xué)習(xí)FreeRTOS )。 第三點:目前rt-thread 的書籍與例程非常豐富了,比如野火的《rt-thread內(nèi)核實現(xiàn)與應(yīng)用開發(fā)實戰(zhàn)指南》,比如rt-thread官方出版的《RT-Thread編程指南》,都是很不錯的資料。而TencentOS tiny 資料較少,說不定我能給它整一個全網(wǎng)首發(fā)TencentOS tiny 內(nèi)核實現(xiàn)的系列文章 第四點:關(guān)于rtos內(nèi)核,真的是一通百通的?。。「鞣NICP通信的同步、互斥、阻塞機制,真的是一樣的處理思想,大同小異的實現(xiàn)過程,相信我 。
個人學(xué)習(xí)rtos經(jīng)歷在大三的時候,初次接觸FreeRTOS ,就只會調(diào)用api 函數(shù)去實現(xiàn)小demo,沒理解內(nèi)部的實現(xiàn)過程,沒理解各種ipc通信機制的處理,還是以裸機的思想去開發(fā),沒啥意義。 接著就是實習(xí)的時候,必須深入學(xué)習(xí)rtos的實現(xiàn)過程了,這時候接觸的是rt-thread ,一直看博客、看文檔、看源碼,不懂的就問,這段時間認(rèn)識了rt-thread 的很多朋友,比如Andy、流光、大法師(嗯,今天法師邀我中秋節(jié)去一起吃飯,哈哈哈)、糖糖、老吳等等啦,都是大神,膜拜一下。反正不懂就問唄,搗鼓一個多月,算得上初步入門吧,那時候的rt-thread (大)版本還是3,現(xiàn)在都到4了,發(fā)展還是非??斓?。 接著又接觸過rt-thread 的軟件包,也給rt-thread適配過軟件包,目前軟件包下載量還是很大的,而且還是五星好評 ~美滋滋,感覺這個rt-thread 的軟件包還是挺好的,相當(dāng)于插件一樣,需要就添加到工程,不需要就移除就行了,非常方便,當(dāng)然這些軟件包很多是第三方開發(fā)者提供的,沒有統(tǒng)一吧,也不一定能實現(xiàn)大家的功能,但是對于初學(xué)者來說,這些東西就還是很遙遠的,不用理會吧。
關(guān)于rt-thread內(nèi)核的實現(xiàn),也是是參考了Linux的設(shè)計思想,我覺得還是很不錯的,聽說熊大也是非常喜歡Linux,才將rt-thread的風(fēng)格整得與Linux很像(道聽途說,不保證嚴(yán)謹(jǐn))。 然后內(nèi)核的實現(xiàn)也是非常明了的,看下源碼就能懂的那種。缺點是沒啥注釋 ,當(dāng)年我自己懟源碼的時候,有點難受,不過好在有rt-thread 的朋友指點,期間去廣州參加了一場線下培訓(xùn),我主講 ,反正當(dāng)時也是規(guī)規(guī)矩矩講完吧,哈哈哈哈,就臺下聽的人沒啥反應(yīng),莫名尷尬,終于明白大學(xué)老師在臺上講課,臺下的人不理他的感受了。 然后學(xué)完rt-thread后,我又回頭懟了一遍FreeRTOS 的源碼實現(xiàn),這次看FreeRTOS 的實現(xiàn)就很簡單了,也沒啥好說的,實現(xiàn)的邏輯嚴(yán)謹(jǐn)性比rt-thread略好。 接著懟liteos 的源碼,這時候我基本不糾結(jié)具體的實現(xiàn)過程了,反正基本都是那樣,反而對liteos 的設(shè)計思想,框架很有興趣,這是我產(chǎn)生寫DoraOS 的源頭,我覺得這種設(shè)計思想能抄過來自己用,沒錯,是抄,看到好東西就想自己實現(xiàn)一下,比如liteos的哨兵思想(我稱之為哨兵思想,說不定別人不是這樣子稱呼的),還有關(guān)于liteos 中代碼解耦吧,我覺得做的很好,不過代碼有一些也是冗余了。 最后也懟過ucos的源碼,這時候基本上是平平淡淡的眼光去看,當(dāng)時我對設(shè)計模式還沒啥研究,沒看出ucos的設(shè)計模式,直到后來我看到一本關(guān)于設(shè)計模式的書的時候,我才想起ucos 也有設(shè)計模式,如觀察者模式,反正實現(xiàn)的過程與思想都挺好吧,就是api接口太難用,對開發(fā)者不友好。 這兩年期間用過alios ,隨便用一下,沒看源碼實現(xiàn),反正就能很簡單地用(僅內(nèi)核)。 現(xiàn)在TencentOS tiny 也在內(nèi)測中,也有幸被汪大神叫過去參與內(nèi)測,第一眼看源碼的時候,驚艷到我了,這源碼的實現(xiàn)真的是非常簡潔,比我的DoraOS 還簡潔(此時我已經(jīng)自己寫完DoraOS 了),關(guān)于內(nèi)核task部分的源碼只有400 行左右,我自己的DoraOS 都要800 行,反正看這個源碼是很簡單了,就很容易讀懂它,非常好,我很喜歡,解耦、簡潔。。。在內(nèi)測期間,認(rèn)識各路大神,做云端的,小程序的、還有源碼的作者,感覺很不錯,還給他反饋了個小bug 。
深入發(fā)展規(guī)劃其實說了那么多,也不一定有人堅持學(xué)下去,我想說,如果要學(xué)那就堅持學(xué),否則還是不要學(xué)了。 既然以后必然會深入的,那就談?wù)勆钊氚l(fā)展的情況吧(純屬個人見解,僅從物聯(lián)網(wǎng)方面看): 首先未來市場肯定是有物聯(lián)網(wǎng)市場的,我個人覺得吧,當(dāng)5g+ipv6 部署完畢,應(yīng)該就是物聯(lián)網(wǎng)的大規(guī)模發(fā)展了,真希望能趕上這趟車,對于嵌入式終端設(shè)備,能上網(wǎng)或者說能安全 上網(wǎng)就必不可少了,個人覺得在物聯(lián)網(wǎng)時代做 網(wǎng)絡(luò)安全 的應(yīng)該也是很吃香,不過我肯定不是走這條路。 那就說說嵌入式終端設(shè)備上網(wǎng)的問題,rt-thread 擁有各種網(wǎng)絡(luò)組件與設(shè)備驅(qū)動,如以太網(wǎng)、wifi、lora、nb-iot等等、還有各種協(xié)議mqtt、http等,還有安全框架mbedtls等,此外還有未來發(fā)展的語言與圖像相關(guān)的組件,比如說音頻流媒體框架與gui,未來肯定是往方便人類發(fā)展的,那語音交互就很重要了,我自己的規(guī)劃以后可能也會深入圖像處理這方面,我對這方面還是有點興趣的。 關(guān)于與云端交互,rt-thread 應(yīng)該是沒有云平臺,那么可以通過軟件包的方式去接入阿里云、onenet、百度云等平臺,我覺得這不難實現(xiàn),有軟件包的支持,愛怎么加怎么加。 關(guān)于liteos ,我覺得設(shè)計的非常的,也有很多云端的組件,mqtt、coap、lwip、mbedtls、at指令庫(sal層)等都有實現(xiàn)了,但是我沒用過,也不評論吧,應(yīng)該真正用起來也不算難吧,華為云平臺的話我只用上位機連接過,沒在嵌入式設(shè)備連接上。 關(guān)于TencentOS tiny ,我最近在內(nèi)測這個OS與他們的云平臺,OS沒啥說的,等完善文檔的話我很推薦大家學(xué)的,目前估計還得等一會,可以先把基礎(chǔ)學(xué)好,之后啥都不怕了。關(guān)于他們的云平臺,給我的感覺是很簡單,反正做的很簡潔,使用起來也是異常方便,等開源后大家可以隨便搗鼓。 用個證據(jù)證明一下TencentOS tiny 的簡單吧,我拿到TencentOS tiny 后不看文檔,稍微看了下源碼,就直接移植在其他平臺上,直到跑通,用時27 分鐘,這是我不看文檔的情況下,畢竟我也是剛接觸的~
不過大家別學(xué)我,不看文檔還是鬧出很多笑話的,當(dāng)時問汪大神都是非常簡單的問題,再次感謝一下汪大神的耐心解答:
總結(jié)總的來說,還是推薦大家去選擇簡單的學(xué),越簡單越好,所有的OS都很有發(fā)展空間,畢竟都是國內(nèi)數(shù)一數(shù)二的大廠,這些你都不相信的話,你還能相信誰寫的操作系統(tǒng)呢,是吧,對于入門來說,當(dāng)然是越簡單越好咯。ucos這種就太復(fù)雜了,實在是不建議哈。 全篇文章均為杰杰個人觀點,不吹不黑,畢竟我也認(rèn)識這些OS的作者,連alios的都認(rèn)識,只不過他們是玩釘釘而已,具體選擇何種OS就看各位讀者自行決定吧。
|