在分享我的學習過程之前,先交代一下背景。
我是從2020年11月初開始學習RT-Thread實時操作系統的,在學習RT-Thread之前,我接觸過uCOS和FreeRTOS,但這兩個在單片機上應用的實時操作系統,我都沒有仔細并系統化地進行學習,都只是局限于開發板上運行一下demo例程。
我以前在開發板公司工作的時候,曾經系統化地學習過Linux驅動程序,當時是買韋東山的2440驅動教程,不過很遺憾,一直沒有從事過Linux驅動開發相關的崗位,學過就丟到一邊了。但正是因為這段經歷,讓我明白了建立抽象思維的重要性。
我曾經使用嵌入式Linux操作系統,開發過兩個應用項目,以前為了協助生產,也用操作系統做過一些桌面工具,所以,對于使用操作系統開發,里面涉及到的一些概念,比如多線程,內存管理,線程間同步與通信,等等,理解起來也相對容易。
以上就是我學習RT-Thread之前的經歷和背景。
經過差不多兩個月業余時間的學習,我已經把RT-Thread內核應用相關的知識系統化地學習了一遍,并且同時寫了一些學***結文檔,并且在公眾號做成了 專輯 | RT-Thread學習筆記 。
先用思維導圖總結概括一下,學習方法不一定適用于每個人,但希望可以給你一些參考。
明確利益目標
參加工作后的學習或自我提升,其目的已經不像在大學校園里面那樣單純,大學里面基本都是學院安排好的學習計劃,而作為學生,只需要按計劃執行就可以了。可以說,很多大學生受限于社會經歷,也不知道為啥要學習這門課程,他們只是知道這是學院要求的。
參加工作后,個人的學習和提升,都是有目的的,人性都是趨利的。你基本不可能做到不帶任何目的而投入大量的時間去學習一門技能,就算是因為興趣愛好而學,那也是為了自己的內心滿足感,“尋找內心滿足感”也是一種目的。
而對于大多數職場打工者的自我學習提升,無非只有兩個目的:名和利。所以,在學習RT-Thread操作系統之前(其實也不局限于RT-Thread,包括很多職場技能也是如此),要先搞清楚自己為什么要學這門技能,要有明確的利益目標。
如果想不明白這個問題,只是道聽途說地覺得RT-Thread或某項技能很火,也想跟風學習一下,那還是不要貿然浪費時間,因為漫無目的的學習,會很難堅持下去。
那么,我學習RT-Thread的利益目標是什么?其實很簡單,是為了公眾號有素材可寫,同時建立自己的技術形象,然后積極擁抱開源社區,認識不同行業的大佬。通過這種學***結+持續輸出的閉環,可以讓自己技術得到提升的同時,也讓自己鏈接更多優秀的人才,如果自己能幫助更多的人,那就更加perfect了。
這種持續的學***結輸出,也為我以后求職增加了籌碼,呈現給對方公司的,不再是一紙枯燥的簡歷,可以是我的技術博客,公眾號,GitHub,開源作品,等等,這也是我的利益目標之一。
如果你還不知道如何搞清楚自己學習的利益目標,那就要先花時間好好想清楚了。而對于大多數職場打工人來說,學習技能最直接的目標,就是為了跳槽好找工作??梢园烟郛斪骼婺繕酥唬莿e忘了,最好還是要通過展示手段,把你所學到的技能呈現到對方公司面前,而不是把技能都寫在一紙簡歷上面。
弄清基本概念
***里面的每一段話,是由字詞句三者組成的,就像我們初中高中學習閱讀理解的時候,分析一段話的含義,都是從字或詞開始進行分析(文言文翻譯簡直是一段痛苦的經歷)。所以,要學習RT-Thread操作系統,就需要先弄清楚操作系統的基本概念。
這些基本概念,在操作系統里面基本上都是相通的,不管是實時操作系統還是多任務分時操作系統。(在你看這段話的時候,腦海是不是也會有疑問,什么是多任務分時操作系統?)
為什么你會看不懂一段話,無非就是組成這段話的詞語概念不理解,不妨看看下面一段話,里面紅框部分都涉及了各種概念,而這些概念如果你不懂的話,是看不懂這段話的。
短短幾句話里面,就包含了很多操作系統的概念,什么是線程調度器?什么是搶占式?什么是最高優先級?什么是中斷服務程序?等等。。。而我能很容易看懂這幾句話,是因為我有了以前的學習經歷作為鋪墊。
那么,在我們平時的學習中,如何搞懂這些基本概念呢?教大家一個比較實用的方法,就是在網上搜索的時候,在前面加上“如何通俗地理解xxx”,比如,“如何通俗地理解多線程”,網上就會有不少結合生活事例的參考答案。
現在終于知道為啥語文數學外語這些科目可以貫穿整個學業生涯了,學習語文可以鍛煉我們的閱讀理解能力,而數學可以讓我們建立邏輯推導能力,學習外語,是為了在經濟全球化的背景下,讓自己更好地和世界交流。
建立抽象思維
為什么要建立抽象思維?人為什么能通過閱讀文字或觀看圖片和視頻來獲取知識?原因就是,一個人在接收外界信息的時候,會在自己的大腦里面建立一個具體的事物影像,這個具體的事物影像在構建的時候,會依賴于你自身的社會經歷以及知識豐富程度。
回到如何學習RT-Thread這個話題上面,我在學習RT-Thread的時候,首先參考的是其官網提供的學習資料,而這一大堆學習資料里面,我首先關注的,肯定是RT-Thread這個操作系統的簡介和框架。
千萬不要一開始就去看系統源碼,也不要馬上去運行demo例程,在你的大腦建立RT-Thread這個影像框架之前,看這些源碼,無疑是想自己***自己。
為什么要先看簡介和框架?因為這個框架可以有助于我建立一個關于RT-Thread的大腦影像,往后不管我學習RT-Thread的哪一塊內容,都是基于這個框架的,框架是用來告訴我們,里面的代碼以及模塊是如何進行組織的,所以,框架很重要!
細心的人就會發現,即使是這個框架介紹,里面也涉及了很多基本概念,這樣又回到了“弄清基本概念”這個環節。所以,這是一個螺旋式的過程,不斷弄清概念,建立大腦影像,如此往復循環。
當你要去看操作系統代碼的時候,面向對象的思維,肯定是必不可少的,這又回到了“什么是面向對象?”這個問題上了。我相信,通過網絡搜索,你一定會基本明白什么是面向對象,接下來就是C語言如何實現面向對象了,具體可以查看以下***。
C語言面向對象編程
用C語言實現面向對象編程
如何建立抽象思維?這個問題實在太難回答了,抽象思維的建立,不是一朝一夕的事情,它需要周而復始地保持一種對世界好奇的學習心態,而且很大程度取決于你的人生經歷和知識體量,我能給出的建議就是,多閱讀經典書籍,多觀察這個世界,多總結和思考。
持續總結輸出
為什么我現在那么喜歡寫***?為什么我一直建議各位持續總結輸出?這是因為,一個人的認知象限里面,有以下四種狀態:不知道自己不知道、知道自己不知道、不知道自己知道、知道自己知道。
關于這四種認知狀態的說明,在網絡上面有很多解釋,這里不做重復描述。
持續地通過技術***進行輸出,可以讓一個人理清自己的學習過程與學習狀態,這種方式可以讓一個人搞清楚學習過程里面,哪些是自己知道的,哪些是自己不知道的。我相信,很多人在最初學習一個新知識點的時候,通常都是處于“不知道自己不知道”的狀態,也就是不知道自己哪些地方不懂,自然就不會向別人提問。
“好記性不如爛筆頭”這個道理,我相信很多人都懂。我在2015年學習Linux驅動的時候,就開始用記事本零散地記錄自己的學習過程,那時候,還沒學會系統化地進行技術***組織和輸出。
直到最近這兩年決定寫公眾號和博客,才明白系統化知識的重要性,所以公眾號和博客的寫作風格,都是通過技術專輯的方式來呈現,一方面是為了讓自己學習不會太片面,同時讓網絡上的知識碎片能盡可能集中一點,方便以后自己查閱,如果能給你帶來一些幫助,那是對我莫大的鼓勵。
這種持續的總結輸出,會給我帶來一些正反饋作用,讓我認識了很多優秀的同行,同時也希望我的學***結,能給其他嵌入式的初學者帶來一定參考,希望后面可以通過更多的開源項目,來回饋開源社區,算是對嵌入式技術圈子一點微不足道的貢獻。
以上就是我的學習方法論,關于我的從業經歷和職場感悟,也可以在公眾號獲取我的個人微信,跟我一起互相交流,共同進步。
原文標題:以RT-Thread為例,分享一下我的學習方法
***出處:【微信公眾號:RTThread物聯網操作系統】歡迎添加關注!***轉載請注明出處。
審核編輯:湯梓紅
-
驅動
+關注
關注
12文章
1827瀏覽量
85186 -
Linux
+關注
關注
87文章
11232瀏覽量
208952 -
RT-Thread
+關注
關注
31文章
1274瀏覽量
39942
原文標題:以RT-Thread為例,分享一下我的學習方法
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論