在討論“如何學(xué)習(xí)和掌握RTOS“這件事情之前,我們首先要明確一點(diǎn):我們是否有必要學(xué)習(xí)RTOS?
關(guān)于這一點(diǎn),可以看我18年的時(shí)候?qū)懙囊黄恼?/span>《該不該用RTOS?我們只做對(duì)的選擇》。這篇文章里的一些觀點(diǎn)放在今天,仍然是適用的。比如:裸機(jī)在并發(fā)性、模塊化、實(shí)時(shí)性、可重用性以及生態(tài)上的缺陷。當(dāng)你使用裸機(jī)寫的軟件越多,功能越復(fù)雜,你所遇到的問題也會(huì)越來越多。
這次主要是想跟大家分享一下”如何學(xué)習(xí)和掌握RTOS”,為什么會(huì)有這個(gè)想法呢,其實(shí)動(dòng)機(jī)也很巧合,是因?yàn)槲铱吹揭粋€(gè)群友的觀點(diǎn)和我的觀點(diǎn)非常相似,也看到大家都有這樣的需求,所以總結(jié)了之前學(xué)習(xí)RTOS的經(jīng)驗(yàn),跟大家做個(gè)分享。
自上而下:先用起來再向下學(xué)習(xí)
我們?cè)趯W(xué)習(xí)一款RTOS時(shí),由于RTOS都是包含各種模塊的復(fù)雜系統(tǒng),學(xué)習(xí)時(shí),首先要先建立宏觀認(rèn)識(shí),了解RTOS的整體架構(gòu),掌握RTOS上的應(yīng)用開發(fā)。
最好的方式是選擇一個(gè)有豐富文檔和例程的RTOS,基于RTOS系統(tǒng)的一整套示例代碼進(jìn)行學(xué)習(xí)是一個(gè)非常好的方法。通過使用這些示例代碼,可以深入了解RTOS系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)方式,學(xué)會(huì)如何使用RTOS來開發(fā)應(yīng)用程序,也使我們的學(xué)習(xí)過程不會(huì)那么枯燥。
具體怎么實(shí)操呢?以RT-Thread新出的星火1號(hào)學(xué)習(xí)板為例?!毙腔?號(hào)”是RT-Thread專門為初學(xué)者設(shè)計(jì)的一套學(xué)習(xí)板,包含了豐富的例程,從內(nèi)核到外設(shè)、從組件到各種各樣的Demo。通過學(xué)習(xí)這樣的示例程序,直接運(yùn)行就可以看到現(xiàn)象,并且每個(gè)例程都有對(duì)應(yīng)的說明文檔,這樣就可以比較輕松的掌握RTOS的應(yīng)用開發(fā)。掌握應(yīng)用開發(fā)之后,再慢慢的深入下去,深入到內(nèi)核、架構(gòu)、底層。
循序漸進(jìn)
RTOS是一個(gè)復(fù)雜的系統(tǒng),學(xué)習(xí)RTOS時(shí),不能心急,”一口吃不成大胖子“,要按照方法循序漸進(jìn)的學(xué)習(xí)。一個(gè)RTOS的SDK通常會(huì)提供多種示例項(xiàng)目,包括內(nèi)核、外設(shè)、文件系統(tǒng)、網(wǎng)絡(luò)等,這些示例項(xiàng)目可以幫助你更好地理解RTOS系統(tǒng)的各個(gè)方面??梢詮暮?jiǎn)單的示例開始,逐步深入到更復(fù)雜的項(xiàng)目中,以便更好地掌握RTOS的開發(fā)技能。
同樣以星火1號(hào)的SDK為例,就包括了內(nèi)核、基礎(chǔ)外設(shè)、高級(jí)外設(shè)、組件、IoT、綜合demo 6個(gè)級(jí)別的示例程序,難度從易到難。學(xué)習(xí)時(shí),可以遵循SDK的難度梯度,一個(gè)階段一個(gè)階段的學(xué)習(xí)。
勤動(dòng)手多做實(shí)驗(yàn)
編寫代碼和進(jìn)行內(nèi)核實(shí)驗(yàn)是學(xué)習(xí)RTOS的重要方法之一。通過編寫代碼,可以更深入地了解RTOS的API函數(shù)、內(nèi)核機(jī)制以及如何使用RTOS來開發(fā)實(shí)時(shí)應(yīng)用程序。
在進(jìn)行內(nèi)核實(shí)驗(yàn)時(shí),針對(duì)同一個(gè)應(yīng)用場(chǎng)景,可以使用不同的系統(tǒng)API來實(shí)現(xiàn),對(duì)比不同API使用上的差異,以及實(shí)現(xiàn)效果下的差別,更好的加深對(duì)內(nèi)核機(jī)制的理解。
星火1號(hào),針對(duì)內(nèi)核的學(xué)習(xí)需求,單獨(dú)準(zhǔn)備了一個(gè)內(nèi)核學(xué)習(xí)例程01_kernel,這個(gè)例程里包含一個(gè)基本的內(nèi)核工程,以及一套內(nèi)核實(shí)驗(yàn)手冊(cè)。根據(jù)內(nèi)核實(shí)驗(yàn)手冊(cè),可以自己動(dòng)手做一些針對(duì)內(nèi)核的API試驗(yàn),比如兩個(gè)同優(yōu)先級(jí)的線程相互切換、高優(yōu)先級(jí)線程搶占低優(yōu)先級(jí)的線程等,借助這些有趣的實(shí)驗(yàn),不知不覺的就掌握了RTOS內(nèi)核的精髓??梢愿玫恼莆誖TOS應(yīng)用開發(fā)。
多借助工具
此外,還可以借助一些工具來輔助RTOS的學(xué)習(xí),比如仿真平臺(tái)或者硬件調(diào)試器。通過仿真平臺(tái)或者硬件調(diào)試器來進(jìn)行內(nèi)核實(shí)驗(yàn),就可以單步程序的運(yùn)行。單步應(yīng)用程序,可以從應(yīng)用代碼直接深入到內(nèi)核代碼,從而更好地了解RTOS的內(nèi)核機(jī)制。
這方面常見的RTOS一般都支持QEMU的方式,借助QEMU可以直接單步程序深入理解內(nèi)核機(jī)制。但是仿真平臺(tái)也有缺點(diǎn),就是無法很好的仿真硬件外設(shè),比如嵌入式中常用的I2C、SPI、CAN等通信協(xié)議,或者一些溫濕度傳感器等外部模塊,就不適合使用仿真平臺(tái)了。這一點(diǎn),星火1號(hào)做的也很不錯(cuò),它板載了ST-Link調(diào)試器,可以直接借助RT-Thread Studio來下載調(diào)試程序。單步程序的運(yùn)行,非常適合初學(xué)者入門。
總結(jié)下來:學(xué)習(xí)和掌握RTOS最好的方法,就是自上而下的學(xué)習(xí)。按照難易程度循序漸進(jìn)的學(xué)習(xí)的同時(shí),也要多動(dòng)手多做實(shí)驗(yàn)。還可以多借助調(diào)試工具深入到RTOS內(nèi)部,可以更好的理解RTOS內(nèi)部機(jī)制。
最后給大家推薦一下我們最近新出的“星火1號(hào)“學(xué)習(xí)板,這款開發(fā)板是專為初學(xué)者而設(shè)計(jì)的,內(nèi)置例程豐富而且按照難度分成了6個(gè)模塊,非常適合初學(xué)者入門RTOS。
搶購(gòu)地址:https://m.tb.cn/h.5YPNnmU?tk=uUvYdFTuOct
下面是星火1號(hào)的交流群 QQ1群839583041(如1群已滿,請(qǐng)加2群)、QQ2群852752783 ,這里都是學(xué)習(xí)RTOS的小伙伴,大家在這里交流RTOS的學(xué)習(xí)方法與學(xué)習(xí)經(jīng)驗(yàn),歡迎來加入我們,一起學(xué)習(xí),共同成長(zhǎng)!
點(diǎn)擊閱讀原文進(jìn)入官網(wǎng)
原文標(biāo)題:朱天龍:學(xué)習(xí)和掌握RTOS最好的方法
文章出處:【微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
RT-Thread
+關(guān)注
關(guān)注
31文章
1289瀏覽量
40140
原文標(biāo)題:朱天龍:學(xué)習(xí)和掌握RTOS最好的方法
文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論