|
我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師! p. o4 [4 a! K6 e9 N" [% M" g& U
關(guān)注我,一起變得更加優(yōu)秀!四年前寫的文章,重新分享一下。
7 }: {1 B, G% j: }& k在分享我的學(xué)習(xí)過程之前,先交代一下我的工作經(jīng)歷和學(xué)習(xí)背景。
# K3 @6 Z. a, }) T我是從2020年11月初開始學(xué)習(xí)RT-Thread實(shí)時(shí)操作系統(tǒng)的,在學(xué)習(xí)RT-Thread之前,我接觸過uCOS和FreeRTOS,
6 V2 w7 K; e. R+ Z( @! u但這兩個在單片機(jī)上應(yīng)用的實(shí)時(shí)操作系統(tǒng),我都沒有仔細(xì)并系統(tǒng)化地進(jìn)行學(xué)習(xí),都只是局限于開發(fā)板上運(yùn)行一下demo例程。
, O4 N: B( O8 g$ L9 z以前我在嵌入式開發(fā)板公司工作的時(shí)候,曾經(jīng)系統(tǒng)化地學(xué)習(xí)過Linux驅(qū)動程序,當(dāng)時(shí)是買韋東山老師的2440驅(qū)動教程,$ Y1 H* R0 f# k
不過很遺憾,一直沒有從事過Linux驅(qū)動開發(fā)相關(guān)的崗位,學(xué)過就丟到一邊了,但正是因?yàn)檫@段經(jīng)歷,讓我明白了建立抽象思維的重要性。
7 P# q: A+ G9 \$ q& B2 ~- ?: q8 K我曾經(jīng)使用嵌入式Linux操作系統(tǒng),開發(fā)過兩個應(yīng)用項(xiàng)目,以前為了協(xié)助生產(chǎn),也用操作系統(tǒng)做過一些桌面工具,* |; {5 n) m$ K4 W( @
所以,對于使用操作系統(tǒng)開發(fā),里面涉及到的一些概念,比如多線程,內(nèi)存管理,線程間同步與通信,等等,理解起來也相對容易。
3 L" U# H* E$ s% A& B& x6 \以上就是我學(xué)習(xí)RT-Thread之前的工作經(jīng)歷和學(xué)習(xí)背景。+ n7 C' j1 u: C1 P
經(jīng)過差不多兩個月業(yè)余時(shí)間的學(xué)習(xí),我已經(jīng)把RT-Thread內(nèi)核應(yīng)用相關(guān)的知識系統(tǒng)化地學(xué)習(xí)了一遍,并且同時(shí)寫了一些學(xué)習(xí)總結(jié)文檔,如下圖所示,2 F8 E( [. C+ I+ T2 s" j
并且在公眾號做成了 專輯 | RT-Thread學(xué)習(xí)筆記 ,公眾號回復(fù)【技術(shù)文檔】即可下載PDF。
* S& y- _: A5 |% s' x4 B& G
d5twpth3ofz640190018.png (9.12 KB, 下載次數(shù): 0)
下載附件
保存到相冊
d5twpth3ofz640190018.png
2024-9-6 11:13 上傳
) O3 d- J2 Q* {& K
先用思維導(dǎo)圖總結(jié)概括一下,學(xué)習(xí)方法不一定適用于每個人,但希望可以給你一些參考。( Z5 L) V+ H* N' [" `
bt15ooqghuw640190118.png (37.13 KB, 下載次數(shù): 0)
下載附件
保存到相冊
bt15ooqghuw640190118.png
2024-9-6 11:13 上傳
/ d# t Q8 c) J明確利益目標(biāo)
% c% Y) l! G* } a A; K參加工作后的學(xué)習(xí)或自我提升,其目的已經(jīng)不像在大學(xué)校園里面那樣單純,大學(xué)里面基本都是學(xué)院安排好的學(xué)習(xí)計(jì)劃,而作為學(xué)生,只需要按計(jì)劃執(zhí)行就可以了。
2 s6 \4 T/ u( ]/ w. u可以說,很多大學(xué)生受限于社會經(jīng)歷,也不知道為啥要學(xué)習(xí)這門課程,他們只是知道這是學(xué)院要求的。
, Y$ J/ _1 C5 q參加工作后,個人的學(xué)習(xí)和提升,都是有目的的,人性都是趨利的。7 w6 u. d. ?, n, f) S9 p5 t) `; t# J
你基本不可能做到不帶任何目的而投入大量的時(shí)間去學(xué)習(xí)一門技能,就算是因?yàn)榕d趣愛好而學(xué),那也是為了自己的內(nèi)心滿足感,: T E' ?* P" k5 D* T+ G& q: V
“尋找內(nèi)心滿足感”也是一種目的。+ L4 [) q) g" R( i0 s
而對于大多數(shù)職場打工者的自我學(xué)習(xí)提升,無非只有兩個目的:名和利。
+ u6 u, l; X! T4 z, X. v6 F! J! Y- W! N所以,在學(xué)習(xí)RT-Thread操作系統(tǒng)之前(其實(shí)也不局限于RT-Thread,包括很多職場技能也是如此),要先搞清楚自己為什么要學(xué)這門技能,要有明確的利益目標(biāo)。
, O; q( p0 B( m( R& h j1 q* b如果想不明白這個問題,只是道聽途說地覺得RT-Thread或某項(xiàng)技能很火,也想跟風(fēng)學(xué)習(xí)一下,那還是不要貿(mào)然浪費(fèi)時(shí)間,因?yàn)槁䶮o目的的學(xué)習(xí),會很難堅(jiān)持下去。. X0 ?) [' s& u o
那么,我學(xué)習(xí)RT-Thread的利益目標(biāo)是什么?2 N& q, b- I+ {) O# W
其實(shí)很簡單,是為了公眾號有素材可寫,同時(shí)建立自己的技術(shù)背景和人設(shè),然后積極擁抱開源社區(qū),認(rèn)識不同行業(yè)的技術(shù)大佬。) c! v+ d* p( D& |/ J9 R
通過這種學(xué)習(xí)總結(jié)+持續(xù)輸出的閉環(huán),可以讓自己技術(shù)得到提升的同時(shí),也讓自己鏈接更多優(yōu)秀的人才,如果自己能幫助更多的人,那就更加perfect了。
5 H4 i% N! x+ H6 a( ]2 G5 g0 g
cjp0ococ2ll640190218.png (211.79 KB, 下載次數(shù): 0)
下載附件
保存到相冊
cjp0ococ2ll640190218.png
2024-9-6 11:13 上傳
" _& W( l0 C0 W Y1 S9 R這種持續(xù)的學(xué)習(xí)總結(jié)輸出,也為我以后求職增加了籌碼,呈現(xiàn)給對方公司的,不再是一紙枯燥的簡歷,可以是我的技術(shù)博客,公眾號,GitHub,開源作品,等等,這也是我的利益目標(biāo)之一。
% b' s A- W2 d0 \如果你還不知道如何搞清楚自己學(xué)習(xí)的利益目標(biāo),那就要先花時(shí)間好好想清楚了,而對于大多數(shù)職場打工人來說,學(xué)習(xí)技能最直接的目標(biāo),就是為了跳槽好找工作。/ V: y# B; M; d& J4 h6 M1 S. X
可以把跳槽當(dāng)作利益目標(biāo)之一,但是別忘了,最好還是要通過展示手段,把你所學(xué)到的技能呈現(xiàn)到對方公司面前,而不是把技能都寫在一紙簡歷上面。/ J+ u) V- G, b: J& ^& O6 ?
弄清基本概念- E. F) N; _" h& Y
文章里面的每一段話,是由字詞句三者組成的,就像我們初中高中學(xué)習(xí)閱讀理解的時(shí)候,分析一段話的含義,都是從字或詞開始進(jìn)行分析(文言文翻譯簡直是一段痛苦的經(jīng)歷)。
/ j& }4 J* ?" g7 A, Y7 l/ i所以,要學(xué)習(xí)RT-Thread操作系統(tǒng),就需要先弄清楚操作系統(tǒng)的基本概念。
4 I! O5 ~0 I2 u, v6 ^! t8 H這些基本概念,在操作系統(tǒng)里面基本上都是相通的,不管是實(shí)時(shí)操作系統(tǒng)還是多任務(wù)分時(shí)操作系統(tǒng)。7 e1 e% n2 \4 U# H
(在你看這段話的時(shí)候,腦海是不是也會有疑問,什么是多任務(wù)分時(shí)操作系統(tǒng)?)
# k* M" L- ?" C8 u5 y" g為什么會看不懂一段話,無非就是組成這段話的詞語概念不理解,不妨看看下面一段話,里面紅框部分都涉及了各種概念,而這些概念如果你不懂的話,是看不懂這段話的。
7 u5 y1 m; l) ?
22hh42je5s2640190318.png (97.5 KB, 下載次數(shù): 0)
下載附件
保存到相冊
22hh42je5s2640190318.png
2024-9-6 11:13 上傳
, c1 i/ ], |' @, l4 z9 H
短短幾句話里面,就包含了很多操作系統(tǒng)的概念,什么是線程調(diào)度器?什么是搶占式?什么是最高優(yōu)先級?什么是中斷服務(wù)程序?等等。。。4 t# \; S: ]1 b- f. `/ `: h0 V
而我能很容易看懂這幾句話,是因?yàn)槲矣辛艘郧暗膶W(xué)習(xí)經(jīng)歷作為鋪墊。 g1 D9 S/ |% M) N' p# p
那么,在我們平時(shí)的學(xué)習(xí)中,如何搞懂這些基本概念呢?教大家一個比較實(shí)用的方法,就是在網(wǎng)上搜索的時(shí)候,在前面加上“如何通俗地理解xxx”,比如,“如何通俗地理解多線程”,網(wǎng)上就會有不少結(jié)合生活事例的參考答案。2 |- ?9 Z+ O% E) v' o5 L; @
qmmu4ebn2xw640190418.png (101.85 KB, 下載次數(shù): 0)
下載附件
保存到相冊
qmmu4ebn2xw640190418.png
2024-9-6 11:13 上傳
- e1 {$ H& }1 d3 F, Z0 W現(xiàn)在終于知道為啥語文數(shù)學(xué)外語這些科目可以貫穿整個學(xué)業(yè)生涯了,學(xué)習(xí)語文可以鍛煉我們的閱讀理解能力,而數(shù)學(xué)可以讓我們建立邏輯推導(dǎo)能力,學(xué)習(xí)外語,是為了在經(jīng)濟(jì)全球化的背景下,讓自己更好地和世界交流。
2 ?. V; |' T9 B建立抽象思維
& `, }* |, H5 a" Q2 y; g為什么要建立抽象思維?人為什么能通過閱讀文字或觀看圖片和視頻來獲取知識?
2 y y) t* x P. F* D原因就是,一個人在接收外界信息的時(shí)候,會在自己的大腦里面建立一個具體的事物影像,這個具體的事物影像在構(gòu)建的時(shí)候,會依賴于你自身的社會經(jīng)歷以及知識豐富程度。; j) [( c8 G4 k) J0 D4 `
回到如何學(xué)習(xí)RT-Thread這個話題上面,我在學(xué)習(xí)RT-Thread的時(shí)候,首先參考的是其官網(wǎng)提供的學(xué)習(xí)資料,而這一大堆學(xué)習(xí)資料里面,我首先關(guān)注的,肯定是RT-Thread這個操作系統(tǒng)的簡介和框架。8 s) D( Z1 T; K5 @0 }
qamdl3ws0co640190518.png (140.24 KB, 下載次數(shù): 1)
下載附件
保存到相冊
qamdl3ws0co640190518.png
2024-9-6 11:13 上傳
4 e/ ^8 u) S" T- w3 Z% K千萬不要一開始就去看系統(tǒng)源碼,也不要馬上去運(yùn)行demo例程,在你的大腦建立RT-Thread這個影像框架之前,看這些源碼,無疑是想自己勸退自己。
( a2 x# b! O. Q( L為什么要先看簡介和框架?5 Y- \1 P+ G, i+ I7 m% H
因?yàn)檫@個框架可以有助于我建立一個關(guān)于RT-Thread的大腦影像,往后不管我學(xué)習(xí)RT-Thread的哪一塊內(nèi)容,都是基于這個框架的,框架是用來告訴我們,里面的代碼以及模塊是如何進(jìn)行組織的,所以,框架很重要!$ t; C; ?: W; h- G) I" ~. t
細(xì)心的人就會發(fā)現(xiàn),即使是這個框架介紹,里面也涉及了很多基本概念,這樣又回到了“弄清基本概念”這個環(huán)節(jié)。所以,這是一個螺旋式的過程,不斷弄清概念,建立大腦影像,如此往復(fù)循環(huán)。
$ y* {- O7 t4 z6 E6 A& n當(dāng)你要去看操作系統(tǒng)代碼的時(shí)候,面向?qū)ο蟮乃季S,肯定是必不可少的,這又回到了“什么是面向?qū)ο螅俊边@個問題上了。
, X8 N) a8 {. I; w% N* B; o* l3 W3 i1 i我相信,通過網(wǎng)絡(luò)搜索,你一定會基本明白什么是面向?qū)ο,接下來就是C語言如何實(shí)現(xiàn)面向?qū)ο罅,具體可以查看以下文章。
+ k- L3 V4 V# W- O3 w' ~嵌入式 C 語言面向?qū)ο缶幊?--- 總結(jié)
& {1 a$ ? k4 ?$ S) U* }3 B基于狀態(tài)機(jī)和面向?qū)ο蟮乃枷耄O(shè)計(jì)一個通用的按鍵檢測模塊。
0 E2 n! W1 |, I" j) ?, q如何建立抽象思維?這個問題實(shí)在太難回答了。
' \5 X) D" R2 Q ^! `% B抽象思維的建立,不是一朝一夕的事情,它需要周而復(fù)始地保持一種對世界好奇的學(xué)習(xí)心態(tài),而且很大程度取決于你的人生經(jīng)歷和知識體量,
1 n! F6 B) q$ @! b% B8 z* @. j1 o我能給出的建議就是,多閱讀經(jīng)典書籍,多觀察這個世界,多總結(jié)和思考,多于不同行業(yè)的朋友交流。
+ D$ b- E9 d; X2 ]持續(xù)總結(jié)輸出
( L5 Y+ O! }" u% h" x8 G, Y為什么我現(xiàn)在那么喜歡寫文章?為什么我一直建議各位持續(xù)總結(jié)輸出?
3 J- w/ E, ?- X8 s8 i這是因?yàn),一個人的認(rèn)知象限里面,有以下四種狀態(tài):不知道自己不知道、知道自己不知道、不知道自己知道、知道自己知道。# n: _2 Q( C* T; x8 c, H
關(guān)于這四種認(rèn)知狀態(tài)的說明,在網(wǎng)絡(luò)上面有很多解釋,這里不做重復(fù)描述。
& V J) C! M+ r# l; S; e持續(xù)地通過技術(shù)文章進(jìn)行輸出,可以讓一個人理清自己的學(xué)習(xí)過程與學(xué)習(xí)狀態(tài),這種方式可以讓一個人搞清楚學(xué)習(xí)過程里面,哪些是自己知道的,哪些是自己不知道的。
3 j3 ~) E2 f: y$ e% F8 J" M2 {我相信,很多人在最初學(xué)習(xí)一個新知識點(diǎn)的時(shí)候,通常都是處于“不知道自己不知道”的狀態(tài),也就是不知道自己哪些地方不懂,自然就不會向別人提問。
3 J- s4 C+ o. m. O9 g8 T1 F" _“好記性不如爛筆頭”這個道理,我相信很多人都懂。我在2015年學(xué)習(xí)Linux驅(qū)動的時(shí)候,就開始用記事本零散地記錄自己的學(xué)習(xí)過程,那時(shí)候,還沒學(xué)會系統(tǒng)化地進(jìn)行技術(shù)文章組織和輸出。
1 d$ T' R5 x" H8 g! J1 q
0o5vwpy1bas640190618.png (55.89 KB, 下載次數(shù): 0)
下載附件
保存到相冊
0o5vwpy1bas640190618.png
2024-9-6 11:13 上傳
`8 N$ K. P5 N; N; K- J7 k直到最近這兩年決定寫公眾號和博客,才明白系統(tǒng)化知識的重要性,所以公眾號和博客的寫作風(fēng)格,都是通過技術(shù)專輯的方式來呈現(xiàn),; T0 k+ c" S5 P
一方面是為了讓自己學(xué)習(xí)不會太片面,同時(shí)讓網(wǎng)絡(luò)上的知識碎片能盡可能集中一點(diǎn),方便以后自己查閱,如果能給你帶來一些幫助,那是對我莫大的鼓勵。3 e3 G3 E8 U" i2 U- l
這種持續(xù)的總結(jié)輸出,會給我?guī)硪恍┱答佔(zhàn)饔,讓我認(rèn)識了很多優(yōu)秀的同行,同時(shí)也希望我的學(xué)習(xí)總結(jié),能給其他嵌入式的初學(xué)者帶來一些參考,
5 i, W) y D3 [0 t q$ Q0 k以上就是我的學(xué)習(xí)方法論,關(guān)于我的從業(yè)經(jīng)歷和職場感悟,也可以在公眾號獲取我的個人微信,跟我一起互相交流,共同進(jìn)步。4 y- b8 ?+ s& [
感謝閱讀!
0 n, u( h% _( a' ^: l. M. s5 E- K7 ]-END-) L: Q1 T5 V8 C- g* r- k% I
往期推薦:點(diǎn)擊圖片即可跳轉(zhuǎn)閱讀, y8 B# X, e9 }
% d% d6 ?5 Z6 e1 R( e) o; s
; G+ t* N+ }6 ~+ U+ S8 L i) y$ u
6 |+ e+ u' E% L6 S
/ f9 Y+ _4 b% Q# _2 Q- m# @. x& b/ h
xanb22uvhuq640190718.jpg (314.54 KB, 下載次數(shù): 0)
下載附件
保存到相冊
xanb22uvhuq640190718.jpg
2024-9-6 11:13 上傳
$ S4 W, |) N; {+ x, X6 r5 w2 H
$ q* N! Q' @1 w3 F& j! E 【5折福利】選型必看!這款RK3588開發(fā)板究竟有何魅力?
5 H' F* \! f; s; F% p
\; ?2 \4 q* V' N+ q) i5 X9 E& h
8 _, G* U5 h8 x( s
$ t8 D3 _: r5 f4 h" ^+ J 2 `1 }! @6 X: o x: |0 C9 Y2 S
peisibnh2h3640190818.jpg (67.09 KB, 下載次數(shù): 0)
下載附件
保存到相冊
peisibnh2h3640190818.jpg
2024-9-6 11:13 上傳
# M( \* Y3 q& Z6 B6 w
5 r, M! `* J1 X
這兩種 C 語言語法,建議別用,不然會被罵慘!
# ~2 A& _8 N" q; L9 M
# f8 Y" \0 K$ y* n! U0 [ ! S" ?5 r6 ]& D! N! S
+ t. |3 P4 E: P% h) [8 {' C! e
vp5wwzapvmu640190918.jpg (129.37 KB, 下載次數(shù): 0)
下載附件
保存到相冊
vp5wwzapvmu640190918.jpg
2024-9-6 11:13 上傳
4 L: K+ F/ L( m5 l8 J
9 U: X' L8 ?; Q2 {3 V# D; D 嵌入式 C 語言,那些“花里胡哨”的語法特性。% U8 s* x; \6 A4 e7 w% L% V
9 @1 n# W9 ^! O
+ @9 Z, x1 o, t2 X) J, E2 o " W$ F' X5 { N
我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師" |7 \4 W; Y$ U
關(guān)注我,一起變得更加優(yōu)秀! |
|