RTOS排位戰(zhàn)!你到哪個(gè)段位了?
莫問(wèn)收獲,但問(wèn)耕耘。
——曾國(guó)藩
本文來(lái)和大家分享一下我在RTOS打怪升級(jí)路上經(jīng)歷的幾個(gè)段位,僅供參考。
青銅段位 | 玩起來(lái)RTOS
這個(gè)段位,我把它總結(jié)為:玩起來(lái)RTOS。
2018年,我參加了RT-Thread組織的大學(xué)生雄鷹計(jì)劃,和眾多對(duì)RT-Thread感興趣的學(xué)生一起學(xué)習(xí)內(nèi)核,每周學(xué)習(xí)一章內(nèi)容并完成作業(yè)。
這是我第一次接觸RTOS內(nèi)核,得益于RT-Thread的板級(jí)支持做得實(shí)在是太好了,無(wú)需任何移植,隨便找塊stm32板子就能跑起來(lái)RT-Thread,有訓(xùn)練營(yíng)的教程、官方詳細(xì)的文檔,就這樣開(kāi)始了內(nèi)核的學(xué)習(xí)。
在這個(gè)過(guò)程中主要是參考教程、文檔來(lái)玩起來(lái)RTOS,創(chuàng)建線程、使用信號(hào)量、使用郵箱等等RTOS內(nèi)核基本操作,并記錄了一本足足有26468字的RT-Thread內(nèi)核學(xué)習(xí)筆記。
黃金段位 | 知道RTOS有哪些東西
這個(gè)段位,我把它總結(jié)為:知道RTOS有哪些東西。
2019年,我參加了華為的IoT訓(xùn)練營(yíng),第一次接觸LiteOS和小熊派IoT開(kāi)發(fā)板,本著系統(tǒng)學(xué)習(xí)一下stm32cubemx的想法,就開(kāi)始了邊學(xué)習(xí)邊寫(xiě)博客記錄的過(guò)程,出完這套教程后,發(fā)現(xiàn)LiteOS教程稀缺,何不再趁熱打鐵,出一套LiteOS的教程呢?
說(shuō)干就干!這一干,可謂是對(duì)自己的一次挑戰(zhàn)。
官方?jīng)]有任何細(xì)致的使用文檔,代碼里的注釋也多是版權(quán)信息,這可咋整?只能從源碼下手了。
憑借著學(xué)習(xí)RT-Thread的經(jīng)驗(yàn),開(kāi)始啃源碼,做實(shí)驗(yàn),然后在教程里寫(xiě)出每個(gè)模塊有哪些API可用,這些API如何使用,并在每篇文章中給出一個(gè)使用示例。
從內(nèi)核的基本模塊寫(xiě)到AT框架、SAL框架這些組件,再寫(xiě)到MQTT、LWM2M、COAP這些上云組件,歷時(shí)3個(gè)多月,每天都在研究。
這次經(jīng)歷對(duì)我的成長(zhǎng)挺大,以前是沒(méi)有教學(xué)文檔、視頻就寸步難行,無(wú)從下手,之后發(fā)現(xiàn)其實(shí)一個(gè)RTOS里面就是那些東西,用起來(lái)都差不多的,如果具備一個(gè)RTOS的經(jīng)驗(yàn),再去玩其它的RTOS,很好上手。
所以,還在觀望RTOS的小伙伴,不用糾結(jié)學(xué)哪個(gè)RTOS好,如果不是項(xiàng)目要求必須使用某一種,學(xué)哪個(gè)都是一樣的。
鉑金段位 | 知道RTOS是怎么干活的
這個(gè)段位,我把它總結(jié)為:知道RTOS怎么干活。
2020年,我開(kāi)始了RTOS內(nèi)核的學(xué)習(xí),選擇了代碼寫(xiě)的比較簡(jiǎn)潔粗暴的TencentOS-tiny操作系統(tǒng)。
這次主要是分析研究源碼,主要是學(xué)習(xí)研究系統(tǒng)中任務(wù)、信號(hào)量、消息隊(duì)列如何實(shí)現(xiàn),在系統(tǒng)中以怎樣的形式存在,在提供給用戶(hù)的API中究竟做了什么。
在做嵌入式項(xiàng)目的時(shí)候,不像開(kāi)發(fā)桌面軟件、開(kāi)發(fā)APP那樣,基本上寫(xiě)代碼會(huì)調(diào)用API,調(diào)用庫(kù)就可以,嵌入式設(shè)備中的資源都是非常有限的,如果只是一通調(diào)用而自己沒(méi)有清楚的認(rèn)知,做出來(lái)的產(chǎn)品就像是空中樓閣,看似功能非常炫酷,然而,可靠嗎?面臨各種各樣斷電、斷網(wǎng)、信號(hào)不好、操作失誤的情況,是否可以處理好這些異常呢?
就拿我自己來(lái)說(shuō),寫(xiě)幾個(gè)任務(wù)helloworld一下,再寫(xiě)兩個(gè)任務(wù)之間使用信號(hào)量同步,再寫(xiě)幾個(gè)任務(wù)使用信號(hào)量之間通信,根本莫得問(wèn)題。
可是一旦用RTOS做起項(xiàng)目來(lái),設(shè)計(jì)到任務(wù)如何分配,如何同步,如何通信,就歇菜了,好好的RTOS程序,最后所有的邏輯都是在main任務(wù)里寫(xiě)……還不如裸機(jī)呢。
鉆石段位 | 知道如何用RTOS干活
這一階段,我把它總結(jié)為:知道如何用RTOS干活。
這個(gè)階段是我準(zhǔn)備接下來(lái)要達(dá)到的目標(biāo),建立在清楚的知道RTOS內(nèi)部如何運(yùn)作的基礎(chǔ)上,可以合理的設(shè)計(jì)安排任務(wù),合理的設(shè)計(jì)任務(wù)間如何同步運(yùn)行,合理的設(shè)計(jì)任務(wù)間如何通信獲取數(shù)據(jù)。
因?yàn)槲乙恢痹趯W(xué)校的原因,做項(xiàng)目都比較任性,可能覺(jué)得想玩,好玩,靈感閃現(xiàn)就去做了,也沒(méi)有約束,沒(méi)有做過(guò)實(shí)際落地產(chǎn)品的經(jīng)歷,這方面也是我一直所欠缺的。
有心的讀者可以從我平常發(fā)的文章看出來(lái),文章深度和從業(yè)好多年的大佬根本沒(méi)法比,所以我會(huì)經(jīng)常轉(zhuǎn)載一些大佬的深度好文,一方面自己學(xué)習(xí),另一方面分享給公眾號(hào)的每位讀者。
我一直很敬佩曾國(guó)藩,考了7次才中秀才,卻以笨功夫成功打通科舉之路,進(jìn)入翰林院,一生崇尚笨拙,以扎實(shí)而非機(jī)巧取勝,很好的詮釋了:
莫問(wèn)收獲,但問(wèn)耕耘。
在機(jī)會(huì)還沒(méi)到來(lái)之前,先不斷學(xué)習(xí)提升自己吧~機(jī)會(huì)是留給有準(zhǔn)備的人的,暫且就分享這些,與公眾號(hào)各位讀者,共勉。
-END-
推薦閱讀
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!






