電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 22|回復: 0
收起左側(cè)

以 RT-Thread 為例,分享一下我的學習方法

[復制鏈接]

451

主題

451

帖子

666

積分

二級會員

Rank: 2

積分
666
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2024-8-29 17:50:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
我是老溫,一名熱愛學習的嵌入式工程師
; G' x# N& P% U8 b% l  V; B$ F+ \; j關(guān)注我,一起變得更加優(yōu)秀!四年前寫的文章,重新分享一下。
  u6 _0 ?0 B8 r( h6 H
在分享我的學習過程之前,先交代一下我的工作經(jīng)歷和學習背景。0 L7 d/ ?+ Z5 L( ~% a
我是從2020年11月初開始學習RT-Thread實時操作系統(tǒng)的,在學習RT-Thread之前,我接觸過uCOS和FreeRTOS,
) Q/ K, j" F+ [# U但這兩個在單片機上應(yīng)用的實時操作系統(tǒng),我都沒有仔細并系統(tǒng)化地進行學習,都只是局限于開發(fā)板上運行一下demo例程。+ }: S% e( o% ?1 T2 j
以前我在嵌入式開發(fā)板公司工作的時候,曾經(jīng)系統(tǒng)化地學習過Linux驅(qū)動程序,當時是買韋東山老師的2440驅(qū)動教程,( [4 J! B: D& m$ ]$ e  z7 u2 J) K
不過很遺憾,一直沒有從事過Linux驅(qū)動開發(fā)相關(guān)的崗位,學過就丟到一邊了,但正是因為這段經(jīng)歷,讓我明白了建立抽象思維的重要性。
- {1 z6 f2 K; D* s我曾經(jīng)使用嵌入式Linux操作系統(tǒng),開發(fā)過兩個應(yīng)用項目,以前為了協(xié)助生產(chǎn),也用操作系統(tǒng)做過一些桌面工具,
, B- m/ \, y0 t/ V% a% Y所以,對于使用操作系統(tǒng)開發(fā),里面涉及到的一些概念,比如多線程,內(nèi)存管理,線程間同步與通信,等等,理解起來也相對容易。
. @) x5 `7 @! q0 H以上就是我學習RT-Thread之前的工作經(jīng)歷和學習背景。+ m7 o6 T1 y9 X( g0 ]- ?* Y
經(jīng)過差不多兩個月業(yè)余時間的學習,我已經(jīng)把RT-Thread內(nèi)核應(yīng)用相關(guān)的知識系統(tǒng)化地學習了一遍,并且同時寫了一些學習總結(jié)文檔,如下圖所示,
: m, u2 V- `. J- F! Y并且在公眾號做成了 專輯 | RT-Thread學習筆記 ,公眾號回復【技術(shù)文檔】即可下載PDF。
) x7 n% P! U0 _, {8 B1 Y" o
8 D* ]; f6 r* Y# n先用思維導圖總結(jié)概括一下,學習方法不一定適用于每個人,但希望可以給你一些參考。
3 Z9 ^9 I; J" ~2 b* N% H
# s6 w) Q3 e. x* Z/ w( N" u8 ^明確利益目標7 B5 q  g5 {( p, }6 M, V) z
參加工作后的學習或自我提升,其目的已經(jīng)不像在大學校園里面那樣單純,大學里面基本都是學院安排好的學習計劃,而作為學生,只需要按計劃執(zhí)行就可以了。
& f/ e8 ^2 b2 Q2 _! e+ f4 T可以說,很多大學生受限于社會經(jīng)歷,也不知道為啥要學習這門課程,他們只是知道這是學院要求的。
0 g6 W- M4 p5 K$ t) Z參加工作后,個人的學習和提升,都是有目的的,人性都是趨利的。
9 I8 t! L$ G4 d; g$ N% X你基本不可能做到不帶任何目的而投入大量的時間去學習一門技能,就算是因為興趣愛好而學,那也是為了自己的內(nèi)心滿足感,* q4 [3 |: u: r* N
“尋找內(nèi)心滿足感”也是一種目的。2 @5 k$ r# Q0 s. ~' a
而對于大多數(shù)職場打工者的自我學習提升,無非只有兩個目的:名和利。
9 ]/ S( D3 L1 i8 j* N所以,在學習RT-Thread操作系統(tǒng)之前(其實也不局限于RT-Thread,包括很多職場技能也是如此),要先搞清楚自己為什么要學這門技能,要有明確的利益目標。
9 a! b, t1 e! Q& B; T7 x! l如果想不明白這個問題,只是道聽途說地覺得RT-Thread或某項技能很火,也想跟風學習一下,那還是不要貿(mào)然浪費時間,因為漫無目的的學習,會很難堅持下去。4 Y2 {1 L5 y* F
那么,我學習RT-Thread的利益目標是什么?
4 \! X* }, V% f8 {! H) M4 _其實很簡單,是為了公眾號有素材可寫,同時建立自己的技術(shù)背景和人設(shè),然后積極擁抱開源社區(qū),認識不同行業(yè)的技術(shù)大佬。0 p0 F9 A* E3 G) d+ S9 M7 K
通過這種學習總結(jié)+持續(xù)輸出的閉環(huán),可以讓自己技術(shù)得到提升的同時,也讓自己鏈接更多優(yōu)秀的人才,如果自己能幫助更多的人,那就更加perfect了。9 F4 Z5 D' P1 J0 x4 @+ q

( z8 M+ u- _# z  d  f0 q- A這種持續(xù)的學習總結(jié)輸出,也為我以后求職增加了籌碼,呈現(xiàn)給對方公司的,不再是一紙枯燥的簡歷,可以是我的技術(shù)博客,公眾號,GitHub,開源作品,等等,這也是我的利益目標之一。1 g& B( g( U6 h) R$ D$ H
如果你還不知道如何搞清楚自己學習的利益目標,那就要先花時間好好想清楚了,而對于大多數(shù)職場打工人來說,學習技能最直接的目標,就是為了跳槽好找工作。. S2 _2 Y, j  A2 S* y
可以把跳槽當作利益目標之一,但是別忘了,最好還是要通過展示手段,把你所學到的技能呈現(xiàn)到對方公司面前,而不是把技能都寫在一紙簡歷上面。
7 g5 c; r2 n1 O0 _  ~/ j( P" r+ }& z弄清基本概念
3 H$ B: e8 c5 J: V7 m& a/ J7 h* f/ n文章里面的每一段話,是由字詞句三者組成的,就像我們初中高中學習閱讀理解的時候,分析一段話的含義,都是從字或詞開始進行分析(文言文翻譯簡直是一段痛苦的經(jīng)歷)。5 ~) F7 \! K6 V* y
所以,要學習RT-Thread操作系統(tǒng),就需要先弄清楚操作系統(tǒng)的基本概念。
' A# O/ ^" e- y7 ?這些基本概念,在操作系統(tǒng)里面基本上都是相通的,不管是實時操作系統(tǒng)還是多任務(wù)分時操作系統(tǒng)。
, f7 \4 z! I6 o8 j9 e' Q8 g(在你看這段話的時候,腦海是不是也會有疑問,什么是多任務(wù)分時操作系統(tǒng)?)" v' K& ^, y. o9 v6 u5 C# u
為什么會看不懂一段話,無非就是組成這段話的詞語概念不理解,不妨看看下面一段話,里面紅框部分都涉及了各種概念,而這些概念如果你不懂的話,是看不懂這段話的。& A/ T# v- C, K$ C) z6 t0 {

2 x  F" H5 E# Q1 ?短短幾句話里面,就包含了很多操作系統(tǒng)的概念,什么是線程調(diào)度器?什么是搶占式?什么是最高優(yōu)先級?什么是中斷服務(wù)程序?等等。。。/ ^' M+ G% F5 Z6 X; m- ]/ S
而我能很容易看懂這幾句話,是因為我有了以前的學習經(jīng)歷作為鋪墊。
& Z0 j" N: s7 g* E: o% e2 u, g那么,在我們平時的學習中,如何搞懂這些基本概念呢?教大家一個比較實用的方法,就是在網(wǎng)上搜索的時候,在前面加上“如何通俗地理解xxx”,比如,“如何通俗地理解多線程”,網(wǎng)上就會有不少結(jié)合生活事例的參考答案。
2 |+ X2 D( M" N# \, {8 L  a+ k* _ % t, Y5 b4 x3 G" X7 Y# I
現(xiàn)在終于知道為啥語文數(shù)學外語這些科目可以貫穿整個學業(yè)生涯了,學習語文可以鍛煉我們的閱讀理解能力,而數(shù)學可以讓我們建立邏輯推導能力,學習外語,是為了在經(jīng)濟全球化的背景下,讓自己更好地和世界交流。% X" Z6 o! }& A3 H! J* X
建立抽象思維
9 j4 W* t/ W0 m8 _0 j, O為什么要建立抽象思維?人為什么能通過閱讀文字或觀看圖片和視頻來獲取知識?
  i5 A7 |; x5 a% [9 O4 h原因就是,一個人在接收外界信息的時候,會在自己的大腦里面建立一個具體的事物影像,這個具體的事物影像在構(gòu)建的時候,會依賴于你自身的社會經(jīng)歷以及知識豐富程度。
6 f0 ^% \+ {; y2 i( f  |回到如何學習RT-Thread這個話題上面,我在學習RT-Thread的時候,首先參考的是其官網(wǎng)提供的學習資料,而這一大堆學習資料里面,我首先關(guān)注的,肯定是RT-Thread這個操作系統(tǒng)的簡介和框架。$ D, a+ `6 E4 p: T# P! O
0 B: V- a9 m2 n- e5 b8 ~' U
千萬不要一開始就去看系統(tǒng)源碼,也不要馬上去運行demo例程,在你的大腦建立RT-Thread這個影像框架之前,看這些源碼,無疑是想自己勸退自己。0 Y6 d: }: M( V) \* V7 A# E
為什么要先看簡介和框架?( w7 H' U0 P3 U+ `
因為這個框架可以有助于我建立一個關(guān)于RT-Thread的大腦影像,往后不管我學習RT-Thread的哪一塊內(nèi)容,都是基于這個框架的,框架是用來告訴我們,里面的代碼以及模塊是如何進行組織的,所以,框架很重要!+ p7 F7 g' D- y( E( E7 Q: P
細心的人就會發(fā)現(xiàn),即使是這個框架介紹,里面也涉及了很多基本概念,這樣又回到了“弄清基本概念”這個環(huán)節(jié)。所以,這是一個螺旋式的過程,不斷弄清概念,建立大腦影像,如此往復循環(huán)。
$ |6 d6 |3 x" x: m8 q當你要去看操作系統(tǒng)代碼的時候,面向?qū)ο蟮乃季S,肯定是必不可少的,這又回到了“什么是面向?qū)ο?”這個問題上了。; j/ f% w! J7 y3 |0 O
我相信,通過網(wǎng)絡(luò)搜索,你一定會基本明白什么是面向?qū)ο,接下來就是C語言如何實現(xiàn)面向?qū)ο罅,具體可以查看以下文章。
4 b1 u. ?9 a+ H) }8 A" e- \9 x嵌入式 C 語言面向?qū)ο缶幊?--- 總結(jié)
7 n- o' |9 J5 x* \# r8 k! S  I基于狀態(tài)機和面向?qū)ο蟮乃枷,設(shè)計一個通用的按鍵檢測模塊。  {0 ^  {1 u9 F! F
如何建立抽象思維?這個問題實在太難回答了。6 c5 B$ E5 [$ p) `, {
抽象思維的建立,不是一朝一夕的事情,它需要周而復始地保持一種對世界好奇的學習心態(tài),而且很大程度取決于你的人生經(jīng)歷和知識體量,; l) i4 U5 R$ n0 E% o
我能給出的建議就是,多閱讀經(jīng)典書籍,多觀察這個世界,多總結(jié)和思考,多于不同行業(yè)的朋友交流。% v0 s9 K! o& k" T0 q8 e( z
持續(xù)總結(jié)輸出
) U& `- n+ M& I3 O, ?! D為什么我現(xiàn)在那么喜歡寫文章?為什么我一直建議各位持續(xù)總結(jié)輸出?. |6 o" C3 M5 T! ^( \
這是因為,一個人的認知象限里面,有以下四種狀態(tài):不知道自己不知道、知道自己不知道、不知道自己知道、知道自己知道。
$ l2 Y' b* X, I9 E關(guān)于這四種認知狀態(tài)的說明,在網(wǎng)絡(luò)上面有很多解釋,這里不做重復描述。( I0 j& _5 L7 S/ {6 L3 B7 m' ]% w
持續(xù)地通過技術(shù)文章進行輸出,可以讓一個人理清自己的學習過程與學習狀態(tài),這種方式可以讓一個人搞清楚學習過程里面,哪些是自己知道的,哪些是自己不知道的。3 Z. B" {3 S" u% h  F* b4 @8 n
我相信,很多人在最初學習一個新知識點的時候,通常都是處于“不知道自己不知道”的狀態(tài),也就是不知道自己哪些地方不懂,自然就不會向別人提問。% j5 c: d) T: ?- a8 F% M
“好記性不如爛筆頭”這個道理,我相信很多人都懂。我在2015年學習Linux驅(qū)動的時候,就開始用記事本零散地記錄自己的學習過程,那時候,還沒學會系統(tǒng)化地進行技術(shù)文章組織和輸出。6 {7 Q3 T4 n% J

4 k- T+ s) t; |9 }. [7 l直到最近這兩年決定寫公眾號和博客,才明白系統(tǒng)化知識的重要性,所以公眾號和博客的寫作風格,都是通過技術(shù)專輯的方式來呈現(xiàn),7 E) P1 |5 f# \- K- E
一方面是為了讓自己學習不會太片面,同時讓網(wǎng)絡(luò)上的知識碎片能盡可能集中一點,方便以后自己查閱,如果能給你帶來一些幫助,那是對我莫大的鼓勵。
8 C' u) t. g- e這種持續(xù)的總結(jié)輸出,會給我?guī)硪恍┱答佔饔,讓我認識了很多優(yōu)秀的同行,同時也希望我的學習總結(jié),能給其他嵌入式的初學者帶來一些參考,
' K7 e2 M% g$ X# M以上就是我的學習方法論,關(guān)于我的從業(yè)經(jīng)歷和職場感悟,也可以在公眾號獲取我的個人微信,跟我一起互相交流,共同進步。
; N4 w( w7 _3 i3 x' ]6 H6 S感謝閱讀!0 v( T5 D9 g. O$ J4 L
-END-, M( U& z! i0 z0 F
往期推薦:點擊圖片即可跳轉(zhuǎn)閱讀
5 ]/ W7 Z5 |, y8 c* M                                                       
5 S8 @1 u; r1 H' h                                                               
. k1 G; N# I" \% e3 B9 V/ I2 v5 ^                                                                       
1 {7 J( a3 v/ I# \6 k" t                                                                               
: g  V* d: x% d 5 z) P7 X0 V# r4 I6 W4 ^$ ?
                                                                                ! |( E' D8 _5 E; c3 }% H
                                                                                        【5折福利】選型必看!這款RK3588開發(fā)板究竟有何魅力?3 K: c4 G0 Q* G8 j! c( J
                                                        0 d$ _: g& ]" _* e3 \. {% O
                                                                  n' y( N, L0 D4 k- c( S
                                                                       
) K: E# m& {$ a& P5 ]                                                                                2 o: L; M) X7 Q  r. }# |7 r
/ L4 |; w( a6 X
                                                                                ' _/ |+ L8 D& [" C7 ^" w) N: {
                                                                                        這兩種 C 語言語法,建議別用,不然會被罵慘!
- T" j1 v8 ^% O+ m  C0 d2 y( H                                                                1 y) |$ w- x1 M6 j+ g
                                                                       
1 w) |0 L7 o8 p7 I" |                                                                               
/ p  @6 m8 M( C1 s' a. G  } & C. N1 ^& W! V
                                                                               
  A# c! R( a. D6 O. t* V4 m                                                                                        嵌入式 C 語言,那些“花里胡哨”的語法特性。" g/ J0 @: c/ d" h# m. e
                                                                               
# Z0 o9 Y, {$ J% B; p! e7 D                                                                        1 s2 z9 i' K3 B- Z3 |  C3 s
                                                               
* q+ W9 [5 U9 E: s                                                        我是老溫,一名熱愛學習的嵌入式工程師! u$ R3 ^5 Q/ ?4 c% H$ T( [. W1 y: D
關(guān)注我,一起變得更加優(yōu)秀!
回復

使用道具 舉報

發(fā)表回復

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

關(guān)閉

站長推薦上一條 /1 下一條


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表