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

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

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

以 RT-Thread 為例,分享一下我的學(xué)習(xí)方法

[復(fù)制鏈接]

451

主題

451

帖子

666

積分

二級會員

Rank: 2

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

' x3 o' x; a( ]8 @) X這種持續(xù)的學(xué)習(xí)總結(jié)輸出,也為我以后求職增加了籌碼,呈現(xiàn)給對方公司的,不再是一紙枯燥的簡歷,可以是我的技術(shù)博客,公眾號,GitHub,開源作品,等等,這也是我的利益目標(biāo)之一。
0 V; [* h3 B( n. i% ?9 q如果你還不知道如何搞清楚自己學(xué)習(xí)的利益目標(biāo),那就要先花時間好好想清楚了,而對于大多數(shù)職場打工人來說,學(xué)習(xí)技能最直接的目標(biāo),就是為了跳槽好找工作。2 n" n# c, F/ U/ z* G
可以把跳槽當(dāng)作利益目標(biāo)之一,但是別忘了,最好還是要通過展示手段,把你所學(xué)到的技能呈現(xiàn)到對方公司面前,而不是把技能都寫在一紙簡歷上面。
7 I- M0 m, w2 p弄清基本概念) \( B5 S/ l! G4 k! G5 O, S* A
文章里面的每一段話,是由字詞句三者組成的,就像我們初中高中學(xué)習(xí)閱讀理解的時候,分析一段話的含義,都是從字或詞開始進(jìn)行分析(文言文翻譯簡直是一段痛苦的經(jīng)歷)。
3 I7 ~" y. o4 i1 Y5 |! D所以,要學(xué)習(xí)RT-Thread操作系統(tǒng),就需要先弄清楚操作系統(tǒng)的基本概念。
2 g$ a, U* d' o9 q8 z& {+ x這些基本概念,在操作系統(tǒng)里面基本上都是相通的,不管是實時操作系統(tǒng)還是多任務(wù)分時操作系統(tǒng)。" n# ^( w7 Q; W2 }- H$ P
(在你看這段話的時候,腦海是不是也會有疑問,什么是多任務(wù)分時操作系統(tǒng)?)" i! g0 }9 X! K4 K
為什么會看不懂一段話,無非就是組成這段話的詞語概念不理解,不妨看看下面一段話,里面紅框部分都涉及了各種概念,而這些概念如果你不懂的話,是看不懂這段話的。
/ H/ R" }- p! i( q+ p7 B; ^6 } 1 @6 k8 v4 ?& n7 o' r& v5 I& s
短短幾句話里面,就包含了很多操作系統(tǒng)的概念,什么是線程調(diào)度器?什么是搶占式?什么是最高優(yōu)先級?什么是中斷服務(wù)程序?等等。。。
9 v0 Y5 Z8 n& d4 i2 m5 {$ g而我能很容易看懂這幾句話,是因為我有了以前的學(xué)習(xí)經(jīng)歷作為鋪墊。
0 b. M1 ^# W3 b# A2 m9 A那么,在我們平時的學(xué)習(xí)中,如何搞懂這些基本概念呢?教大家一個比較實用的方法,就是在網(wǎng)上搜索的時候,在前面加上“如何通俗地理解xxx”,比如,“如何通俗地理解多線程”,網(wǎng)上就會有不少結(jié)合生活事例的參考答案。1 S  ^, S- \7 Y4 H
1 s+ {" V3 l3 K. D/ [! n6 U4 u6 r
現(xiàn)在終于知道為啥語文數(shù)學(xué)外語這些科目可以貫穿整個學(xué)業(yè)生涯了,學(xué)習(xí)語文可以鍛煉我們的閱讀理解能力,而數(shù)學(xué)可以讓我們建立邏輯推導(dǎo)能力,學(xué)習(xí)外語,是為了在經(jīng)濟全球化的背景下,讓自己更好地和世界交流。
7 S) Z; H; }; }5 N0 t. l建立抽象思維* a* ~- k1 \; ?# U: s6 T: Y
為什么要建立抽象思維?人為什么能通過閱讀文字或觀看圖片和視頻來獲取知識?. |2 N* U" j  ]; @8 q3 H
原因就是,一個人在接收外界信息的時候,會在自己的大腦里面建立一個具體的事物影像,這個具體的事物影像在構(gòu)建的時候,會依賴于你自身的社會經(jīng)歷以及知識豐富程度。
* F" G' {" ]/ J5 m* K4 e, K回到如何學(xué)習(xí)RT-Thread這個話題上面,我在學(xué)習(xí)RT-Thread的時候,首先參考的是其官網(wǎng)提供的學(xué)習(xí)資料,而這一大堆學(xué)習(xí)資料里面,我首先關(guān)注的,肯定是RT-Thread這個操作系統(tǒng)的簡介和框架。
! n5 s' ]  n' M" d" D
' b) q2 K7 F0 Z千萬不要一開始就去看系統(tǒng)源碼,也不要馬上去運行demo例程,在你的大腦建立RT-Thread這個影像框架之前,看這些源碼,無疑是想自己勸退自己。: w# t$ \7 t& |, r* ~1 D  f: n! |( u5 d
為什么要先看簡介和框架?
4 D0 o7 Z+ h: a8 T) q因為這個框架可以有助于我建立一個關(guān)于RT-Thread的大腦影像,往后不管我學(xué)習(xí)RT-Thread的哪一塊內(nèi)容,都是基于這個框架的,框架是用來告訴我們,里面的代碼以及模塊是如何進(jìn)行組織的,所以,框架很重要!4 s1 o* I$ `5 B( o3 z& A# [
細(xì)心的人就會發(fā)現(xiàn),即使是這個框架介紹,里面也涉及了很多基本概念,這樣又回到了“弄清基本概念”這個環(huán)節(jié)。所以,這是一個螺旋式的過程,不斷弄清概念,建立大腦影像,如此往復(fù)循環(huán)。' Q+ u2 e$ y8 h, G& x1 L
當(dāng)你要去看操作系統(tǒng)代碼的時候,面向?qū)ο蟮乃季S,肯定是必不可少的,這又回到了“什么是面向?qū)ο?”這個問題上了。
: e5 H3 Z2 a$ P$ ~, V我相信,通過網(wǎng)絡(luò)搜索,你一定會基本明白什么是面向?qū)ο,接下來就是C語言如何實現(xiàn)面向?qū)ο罅,具體可以查看以下文章。9 C; V8 x9 i  z4 U
嵌入式 C 語言面向?qū)ο缶幊?--- 總結(jié)8 H; k7 e  g/ I# q: V& r2 s9 t/ [
基于狀態(tài)機和面向?qū)ο蟮乃枷耄O(shè)計一個通用的按鍵檢測模塊。2 }1 I' `- J. E& _  \0 @7 O; \
如何建立抽象思維?這個問題實在太難回答了。
0 a! |9 b! c3 O2 h% y; _抽象思維的建立,不是一朝一夕的事情,它需要周而復(fù)始地保持一種對世界好奇的學(xué)習(xí)心態(tài),而且很大程度取決于你的人生經(jīng)歷和知識體量,& D& [6 a/ x) j9 x3 Z1 z
我能給出的建議就是,多閱讀經(jīng)典書籍,多觀察這個世界,多總結(jié)和思考,多于不同行業(yè)的朋友交流。$ M# d) ^3 t+ y, @! e( @8 Y
持續(xù)總結(jié)輸出
- ], Z. d3 H7 ~為什么我現(xiàn)在那么喜歡寫文章?為什么我一直建議各位持續(xù)總結(jié)輸出?
0 ^6 h: q" M( D7 ]* N9 ?$ L. G9 ]這是因為,一個人的認(rèn)知象限里面,有以下四種狀態(tài):不知道自己不知道、知道自己不知道、不知道自己知道、知道自己知道。
$ N& b( y- o+ |/ p7 m; ?1 s關(guān)于這四種認(rèn)知狀態(tài)的說明,在網(wǎng)絡(luò)上面有很多解釋,這里不做重復(fù)描述。% _" I5 U' S) u: ]. I- h
持續(xù)地通過技術(shù)文章進(jìn)行輸出,可以讓一個人理清自己的學(xué)習(xí)過程與學(xué)習(xí)狀態(tài),這種方式可以讓一個人搞清楚學(xué)習(xí)過程里面,哪些是自己知道的,哪些是自己不知道的。# N0 y- N# A4 f" `  i. p7 X
我相信,很多人在最初學(xué)習(xí)一個新知識點的時候,通常都是處于“不知道自己不知道”的狀態(tài),也就是不知道自己哪些地方不懂,自然就不會向別人提問。
, s$ a' Q- O- _8 u  ]4 ^+ ?1 N“好記性不如爛筆頭”這個道理,我相信很多人都懂。我在2015年學(xué)習(xí)Linux驅(qū)動的時候,就開始用記事本零散地記錄自己的學(xué)習(xí)過程,那時候,還沒學(xué)會系統(tǒng)化地進(jìn)行技術(shù)文章組織和輸出。0 {2 R4 [6 V$ g3 z/ j2 F$ m6 v* _0 z# e

* _1 N0 V) m  X# B5 ]直到最近這兩年決定寫公眾號和博客,才明白系統(tǒng)化知識的重要性,所以公眾號和博客的寫作風(fēng)格,都是通過技術(shù)專輯的方式來呈現(xiàn),% Y2 r3 e3 S# |: g6 `  S
一方面是為了讓自己學(xué)習(xí)不會太片面,同時讓網(wǎng)絡(luò)上的知識碎片能盡可能集中一點,方便以后自己查閱,如果能給你帶來一些幫助,那是對我莫大的鼓勵。( O6 j1 f$ d  u$ F! \
這種持續(xù)的總結(jié)輸出,會給我?guī)硪恍┱答佔饔,讓我認(rèn)識了很多優(yōu)秀的同行,同時也希望我的學(xué)習(xí)總結(jié),能給其他嵌入式的初學(xué)者帶來一些參考," ]2 f) a' z: i3 P1 H7 i6 Z* D# v
以上就是我的學(xué)習(xí)方法論,關(guān)于我的從業(yè)經(jīng)歷和職場感悟,也可以在公眾號獲取我的個人微信,跟我一起互相交流,共同進(jìn)步。) Z: A8 E( `  K
感謝閱讀!) N0 w4 |: E- z# {7 K$ x
-END-
" A5 m; t, W( i) z% b: y往期推薦:點擊圖片即可跳轉(zhuǎn)閱讀6 M3 s. _( Y4 Y% E1 h* D
                                                       
8 J' z2 m. x1 ]1 E/ `                                                               
9 L. D; O" C: i/ i  Z; n                                                                        9 i5 U; x& h9 Y2 ~
                                                                                7 x- l' Z4 g. ~( o, `* M* G9 I# w
$ x4 [+ d1 x4 a5 V8 N4 D" j
                                                                               
( h$ N9 }  e6 N4 n: o! J                                                                                        【5折福利】選型必看!這款RK3588開發(fā)板究竟有何魅力?
7 i5 s# Z5 O0 ~% m; e7 z0 f" D                                                       
% F' x9 \9 ~% N5 w5 i3 U+ [7 G                                                               
0 M) Z3 F! N& z6 D5 }) a                                                                        9 a/ p% |' h4 D
                                                                                9 e2 E7 R# x0 H+ l3 v) z
: c3 l3 s7 z( a
                                                                                5 z( X3 W" I7 d1 }0 u
                                                                                        這兩種 C 語言語法,建議別用,不然會被罵慘!
  G' M/ b4 k; N! v6 a* @                                                               
5 q9 H8 d8 a8 E. \7 I- K  F5 D                                                                        6 k4 q; b5 B( O( y& S
                                                                                / l) Q  v, B+ L5 C2 e8 Y$ P
0 O* D5 e8 V6 D. V* Y+ \; d" Z
                                                                               
1 ~. ]) v/ m# e$ ~' h# g6 R4 k6 l                                                                                        嵌入式 C 語言,那些“花里胡哨”的語法特性。
; m) A" o2 ]" K; ?                                                                               
( k3 @: f1 r8 u* `  N                                                                       
# Z+ `) h6 [3 J                                                                % o& d& |/ v* {" s/ |
                                                        我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師1 U; \' G7 N+ \' x4 I8 A$ s
關(guān)注我,一起變得更加優(yōu)秀!
回復(fù)

使用道具 舉報

發(fā)表回復(fù)

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

本版積分規(guī)則

關(guān)閉

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


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