最近看到技術交流群在討論【要不要閱讀RTOS內核源碼】的話題。站在過來人的角度來說下:非必要,不建議你閱讀RTOS內核源碼。
我在讀大學的時候,喜歡研究底層的技術原理,比如數碼管、液晶、74系列邏輯IC等,好奇它們怎么工作、怎么實現的,也會寫一些代碼來測試,驗證其中原理。
再后來,學習一些協議棧、RTOS,會比較好奇,也會花時間研究其中的源碼。直到深入閱讀、理解RTOS內核源碼的時候,才發現并非一件容易的事。
我學習RTOS的經歷
先給大家說下我學習RTOS的經歷吧。
我學習RTOS是從大學的時候就開始了,在學習RTOS之前和很多人一樣,也是什么都不懂,跟著老師、看著周邊的人學什么就跟著學什么,比如數電、模電、單片機編程、外設等。
單片機裸機各種資源外設學的差不多,感覺應該進階一下了,所以就選擇了RTOS。
在2011、12年讀書的時候,RTOS還不像現在這么流行(那時還是以“裸機”為主),那個時候網上RTOS的教程大多都還是以μCOS為主,其他RTOS的資料相對很少。像FreeRTOS、RT-Thread以及其他RTOS的資料都很少。
因為早期μCOS的發行都有配套的書籍(請參看μC/OS的那段故事),所以早些年在教學方面大多選擇了μCOS,這也是我當時選擇μCOS作為學習的原因。
(順便再提一點,雖然早期μCOS是商業收費的操作系統,但源碼是可以免費下載的)
1.選擇單片機開發板
我早期學習單片機主要是51(AT89C51、STC89C51等),MSP430等,可以說對他倆玩的比較熟。
所以學習μCOS也是基于他倆開始的,因為大家都知道51資源(Flash、RAM)確實太少了,雖然網上有基于51單片機移植μCOS系統的,但移植系統之后基本干不了別的事了。
所以,我基于51移植μCOS折騰了一段時間就放棄了,選擇了MSP430,430相對51資源多一些,還能有發揮的余地。
早些年如果有學習基于MSP430移植μCOS系統的同學,或許都看過我早期分享的源碼:
因為MSP430之后用過STM32xx、 LPC17xx等基于ARM Cortex-M3 內核的32位單片機,當時基于MSP430跑μCOS系統也感覺很吃力,所以后來選擇了STM32跑μCOS系統。
順便再回憶一下STM32開發板:
現在STM32開發板基本是正點原子、安富萊、野火這三家的天下,早些年基于STM32的開發板是一家神舟開發版,當時可以說全網最火,關鍵原因是性價比很高。
當時,像神舟III號基于STM32F103ZE那樣一塊板載資源非常豐富的開發板只要一百多。雖然我當時比較窮,但我還是沒經受住誘惑買了神舟I號,后又買了神舟III號。
可惜的是,神舟開發板團隊后面(應該在15年之后)就沒有再做了,不知道有多少人還有這段記憶?
2.閱讀μCOS內核源碼
我接觸μCOS操作系統是在2011年,那個時候也是參考各種例程移植代碼,觀察各種現象。
雖然系統跑通了,內核資源也用上了,但始終不能理解各種原理,也不能Get到實時操作系統的精髓。
于是,開啟了閱讀源碼之路,這一下來,發現并不簡單。因為操作系統中有各種指針、數組、結構體等,那個時候老師也從來沒有教過數據結構那些知識,只能靠自己一步一步摸索。
我閱讀μCOS操作系統內核源碼及內核資源,前前后后、斷斷續續大概花了一年時間,之后才深入明白RTOS原來是這么工作的,也更加理解了μCOS內核調度原理、通信機制等。
如果早些年有學習μCOS的同學,應該會看過我早期分享的一份基于神舟III號、uCOS2.92系統的源碼,包含多任務、信號量、互斥鎖、事件標志、消息郵箱、消息隊列、內存管理等各種例程:
這份源碼有中文注釋,是我早期學習μCOS的時候一步一步翻譯過來,當時學習μCOS可以說下了狠功夫。
學習RTOS有必要閱讀源碼嗎?
你看了我上面的經歷,可能會有一種閱讀內核源碼的沖動。
其實,對于很多人我是不建議閱讀源碼,特別是兩種人:
基礎較差的人
沒有時間的人
我學習RTOS之前折騰過很多源碼,也參加過電子設計競賽,自認為基礎還可以。關鍵是在大學,有大量的時間。
如果你基礎不好,且沒有太多空閑時間,又要學習RTOS,閱讀源碼一定要慎重、慎重、再慎重。
對于絕大部分讀者,我的建議是:直接參考例程,然后折騰操作系統的各種API,通過狀態燈、串口打印輸出理解其中的作用及原理。
比如:創建任務之后,刪除任務,你觀察狀態燈是否還在執行這個任務。
閱讀并理解內核源碼有什么好處?
你可能會問:不建議閱讀源碼,是不是閱讀源碼就沒啥作用了?
閱讀并理解源碼其實對自己有很大幫助作用的,比如你會進一步理解RTOS各種通信機制方便后期應用編程,再比如能提升自己的編程思維,我后期很多項目都借鑒了一些源碼的模式。
最后再說明一下,RTOS內核有一些相對復雜的內容,如果你基礎不好,可能閱讀幾天就放棄了。同時,如果你沒時間,只是三天打魚兩天曬網,最終可能沒有一點收獲。
所以,對于絕大部分人我是不建議閱讀源碼。
原文標題:RTOS內核源碼,非必要不建議閱讀
文章出處:【微信號:strongerHuang,微信公眾號:strongerHuang】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論