|
我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師 q6 _/ `1 p, o2 P) b* U6 H
關(guān)注我,一起變得更加優(yōu)秀!四年前寫的文章,重新分享一下。; c! R$ U) Z0 U$ g6 v$ N' s- }
在分享我的學(xué)習(xí)過程之前,先交代一下我的工作經(jīng)歷和學(xué)習(xí)背景。
6 s2 \, a% J$ D i7 k6 [& p我是從2020年11月初開始學(xué)習(xí)RT-Thread實(shí)時(shí)操作系統(tǒng)的,在學(xué)習(xí)RT-Thread之前,我接觸過uCOS和FreeRTOS,
9 y7 H/ C+ {5 R6 }- S1 |# ]$ r# k但這兩個(gè)在單片機(jī)上應(yīng)用的實(shí)時(shí)操作系統(tǒng),我都沒有仔細(xì)并系統(tǒng)化地進(jìn)行學(xué)習(xí),都只是局限于開發(fā)板上運(yùn)行一下demo例程。
c. Y- O4 B) W" l4 C" |+ p以前我在嵌入式開發(fā)板公司工作的時(shí)候,曾經(jīng)系統(tǒng)化地學(xué)習(xí)過Linux驅(qū)動(dòng)程序,當(dāng)時(shí)是買韋東山老師的2440驅(qū)動(dòng)教程, Z/ E2 [9 l; w, U- U. {
不過很遺憾,一直沒有從事過Linux驅(qū)動(dòng)開發(fā)相關(guān)的崗位,學(xué)過就丟到一邊了,但正是因?yàn)檫@段經(jīng)歷,讓我明白了建立抽象思維的重要性。9 }# H3 |: m% y8 Q4 l
我曾經(jīng)使用嵌入式Linux操作系統(tǒng),開發(fā)過兩個(gè)應(yīng)用項(xiàng)目,以前為了協(xié)助生產(chǎn),也用操作系統(tǒng)做過一些桌面工具,! p8 x. P/ b6 l
所以,對(duì)于使用操作系統(tǒng)開發(fā),里面涉及到的一些概念,比如多線程,內(nèi)存管理,線程間同步與通信,等等,理解起來也相對(duì)容易。9 L1 p& W' o0 w( ?% S9 a
以上就是我學(xué)習(xí)RT-Thread之前的工作經(jīng)歷和學(xué)習(xí)背景。' f, [- F1 ]4 o U9 ^
經(jīng)過差不多兩個(gè)月業(yè)余時(shí)間的學(xué)習(xí),我已經(jīng)把RT-Thread內(nèi)核應(yīng)用相關(guān)的知識(shí)系統(tǒng)化地學(xué)習(xí)了一遍,并且同時(shí)寫了一些學(xué)習(xí)總結(jié)文檔,如下圖所示,
( o% O" y# q$ m- a并且在公眾號(hào)做成了 專輯 | RT-Thread學(xué)習(xí)筆記 ,公眾號(hào)回復(fù)【技術(shù)文檔】即可下載PDF。
+ i1 J3 X( @0 v( D- A' `" i& g
t2h2lr3agxm64010744839.png (9.12 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
t2h2lr3agxm64010744839.png
2024-8-30 13:46 上傳
6 A, h: e' {% {0 w先用思維導(dǎo)圖總結(jié)概括一下,學(xué)習(xí)方法不一定適用于每個(gè)人,但希望可以給你一些參考。2 |: }; @4 L; v( x9 [
xc31ukjvcze64010744939.png (37.13 KB, 下載次數(shù): 2)
下載附件
保存到相冊(cè)
xc31ukjvcze64010744939.png
2024-8-30 13:46 上傳
& G. x5 K! @9 |+ {3 v, x; c+ Z/ J; b
明確利益目標(biāo)* b. n" j& B7 s4 j1 V
參加工作后的學(xué)習(xí)或自我提升,其目的已經(jīng)不像在大學(xué)校園里面那樣單純,大學(xué)里面基本都是學(xué)院安排好的學(xué)習(xí)計(jì)劃,而作為學(xué)生,只需要按計(jì)劃執(zhí)行就可以了。$ O+ d/ W' C4 s7 v, @' W
可以說,很多大學(xué)生受限于社會(huì)經(jīng)歷,也不知道為啥要學(xué)習(xí)這門課程,他們只是知道這是學(xué)院要求的。3 I: A# _7 e: a# E$ _: j9 v
參加工作后,個(gè)人的學(xué)習(xí)和提升,都是有目的的,人性都是趨利的。
- k3 p1 l0 U+ J8 M你基本不可能做到不帶任何目的而投入大量的時(shí)間去學(xué)習(xí)一門技能,就算是因?yàn)榕d趣愛好而學(xué),那也是為了自己的內(nèi)心滿足感, d* B( ?- N9 T: W4 M3 M2 Z
“尋找內(nèi)心滿足感”也是一種目的。! z* c' O2 c, x7 w5 p6 ]; G$ F
而對(duì)于大多數(shù)職場打工者的自我學(xué)習(xí)提升,無非只有兩個(gè)目的:名和利。
# W# W! {: C. a" i! A( z4 S4 j8 f所以,在學(xué)習(xí)RT-Thread操作系統(tǒng)之前(其實(shí)也不局限于RT-Thread,包括很多職場技能也是如此),要先搞清楚自己為什么要學(xué)這門技能,要有明確的利益目標(biāo)。" F. N6 m9 O# p# w# G
如果想不明白這個(gè)問題,只是道聽途說地覺得RT-Thread或某項(xiàng)技能很火,也想跟風(fēng)學(xué)習(xí)一下,那還是不要貿(mào)然浪費(fèi)時(shí)間,因?yàn)槁䶮o目的的學(xué)習(xí),會(huì)很難堅(jiān)持下去。
% `; o* g% ~8 `+ a0 M那么,我學(xué)習(xí)RT-Thread的利益目標(biāo)是什么?& a: r! i9 x& y0 P5 t, b
其實(shí)很簡單,是為了公眾號(hào)有素材可寫,同時(shí)建立自己的技術(shù)背景和人設(shè),然后積極擁抱開源社區(qū),認(rèn)識(shí)不同行業(yè)的技術(shù)大佬。
& U# z5 `7 j; V' U通過這種學(xué)習(xí)總結(jié)+持續(xù)輸出的閉環(huán),可以讓自己技術(shù)得到提升的同時(shí),也讓自己鏈接更多優(yōu)秀的人才,如果自己能幫助更多的人,那就更加perfect了。3 j/ j3 ^; K$ m% g2 Y- u
zzmwiszwxkf64010745040.png (211.79 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
zzmwiszwxkf64010745040.png
2024-8-30 13:46 上傳
+ u' _; r" E2 l; x5 ^8 O這種持續(xù)的學(xué)習(xí)總結(jié)輸出,也為我以后求職增加了籌碼,呈現(xiàn)給對(duì)方公司的,不再是一紙枯燥的簡歷,可以是我的技術(shù)博客,公眾號(hào),GitHub,開源作品,等等,這也是我的利益目標(biāo)之一。
8 F7 t# E+ J' R/ a如果你還不知道如何搞清楚自己學(xué)習(xí)的利益目標(biāo),那就要先花時(shí)間好好想清楚了,而對(duì)于大多數(shù)職場打工人來說,學(xué)習(xí)技能最直接的目標(biāo),就是為了跳槽好找工作。
; g# G% z/ g7 g, w C \) z可以把跳槽當(dāng)作利益目標(biāo)之一,但是別忘了,最好還是要通過展示手段,把你所學(xué)到的技能呈現(xiàn)到對(duì)方公司面前,而不是把技能都寫在一紙簡歷上面。
' w: N5 C2 P: I y! @弄清基本概念
" _0 T' c! T- C0 N: {文章里面的每一段話,是由字詞句三者組成的,就像我們初中高中學(xué)習(xí)閱讀理解的時(shí)候,分析一段話的含義,都是從字或詞開始進(jìn)行分析(文言文翻譯簡直是一段痛苦的經(jīng)歷)。
# p8 [6 P# ^7 @0 F# T% `" w所以,要學(xué)習(xí)RT-Thread操作系統(tǒng),就需要先弄清楚操作系統(tǒng)的基本概念。9 i( ?6 p; k8 k! i: M* t5 ^
這些基本概念,在操作系統(tǒng)里面基本上都是相通的,不管是實(shí)時(shí)操作系統(tǒng)還是多任務(wù)分時(shí)操作系統(tǒng)。
' ]+ G- G6 U0 i. G$ Y(在你看這段話的時(shí)候,腦海是不是也會(huì)有疑問,什么是多任務(wù)分時(shí)操作系統(tǒng)?)
+ n+ D, k0 [, X5 H/ N) Y/ w; T0 P1 U為什么會(huì)看不懂一段話,無非就是組成這段話的詞語概念不理解,不妨看看下面一段話,里面紅框部分都涉及了各種概念,而這些概念如果你不懂的話,是看不懂這段話的。
/ F N- L7 M h/ q1 b, S# j7 a) j
ct502uylzgi64010745140.png (97.5 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
ct502uylzgi64010745140.png
2024-8-30 13:46 上傳
7 V0 K! K0 R' D. R/ H* U短短幾句話里面,就包含了很多操作系統(tǒng)的概念,什么是線程調(diào)度器?什么是搶占式?什么是最高優(yōu)先級(jí)?什么是中斷服務(wù)程序?等等。。。' X* d. A6 s5 ]# B! A2 a' [
而我能很容易看懂這幾句話,是因?yàn)槲矣辛艘郧暗膶W(xué)習(xí)經(jīng)歷作為鋪墊。
: v/ q* C1 c: l& i v那么,在我們平時(shí)的學(xué)習(xí)中,如何搞懂這些基本概念呢?教大家一個(gè)比較實(shí)用的方法,就是在網(wǎng)上搜索的時(shí)候,在前面加上“如何通俗地理解xxx”,比如,“如何通俗地理解多線程”,網(wǎng)上就會(huì)有不少結(jié)合生活事例的參考答案。% d$ [. \( I8 ~3 E& n" k
j0ivuub1v4p64010745240.png (101.85 KB, 下載次數(shù): 0)
下載附件
保存到相冊(cè)
j0ivuub1v4p64010745240.png
2024-8-30 13:46 上傳
, E8 b; b! W; Z- u2 q/ Q現(xiàn)在終于知道為啥語文數(shù)學(xué)外語這些科目可以貫穿整個(gè)學(xué)業(yè)生涯了,學(xué)習(xí)語文可以鍛煉我們的閱讀理解能力,而數(shù)學(xué)可以讓我們建立邏輯推導(dǎo)能力,學(xué)習(xí)外語,是為了在經(jīng)濟(jì)全球化的背景下,讓自己更好地和世界交流。& e( W: E. a# [0 D7 H: L
建立抽象思維" ]' M8 a' h1 }, _( Q$ W8 B/ t4 v
為什么要建立抽象思維?人為什么能通過閱讀文字或觀看圖片和視頻來獲取知識(shí)?
4 s3 F0 Z% e5 a1 t K原因就是,一個(gè)人在接收外界信息的時(shí)候,會(huì)在自己的大腦里面建立一個(gè)具體的事物影像,這個(gè)具體的事物影像在構(gòu)建的時(shí)候,會(huì)依賴于你自身的社會(huì)經(jīng)歷以及知識(shí)豐富程度。: T0 a; I2 Q- P+ |, O3 a7 @* M9 Q G
回到如何學(xué)習(xí)RT-Thread這個(gè)話題上面,我在學(xué)習(xí)RT-Thread的時(shí)候,首先參考的是其官網(wǎng)提供的學(xué)習(xí)資料,而這一大堆學(xué)習(xí)資料里面,我首先關(guān)注的,肯定是RT-Thread這個(gè)操作系統(tǒng)的簡介和框架。
# d+ A9 { \; \0 } c3 e! s s
3fbacimho0t64010745340.png (140.24 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
3fbacimho0t64010745340.png
2024-8-30 13:46 上傳
5 c6 J. E( n2 t/ t
千萬不要一開始就去看系統(tǒng)源碼,也不要馬上去運(yùn)行demo例程,在你的大腦建立RT-Thread這個(gè)影像框架之前,看這些源碼,無疑是想自己勸退自己。* y4 |# _! ^4 S% F" U
為什么要先看簡介和框架?
1 ]: R) H: z% X1 B9 L因?yàn)檫@個(gè)框架可以有助于我建立一個(gè)關(guān)于RT-Thread的大腦影像,往后不管我學(xué)習(xí)RT-Thread的哪一塊內(nèi)容,都是基于這個(gè)框架的,框架是用來告訴我們,里面的代碼以及模塊是如何進(jìn)行組織的,所以,框架很重要!
/ I. E f: ]- h9 Y* G0 L. i2 y2 z( V細(xì)心的人就會(huì)發(fā)現(xiàn),即使是這個(gè)框架介紹,里面也涉及了很多基本概念,這樣又回到了“弄清基本概念”這個(gè)環(huán)節(jié)。所以,這是一個(gè)螺旋式的過程,不斷弄清概念,建立大腦影像,如此往復(fù)循環(huán)。 X9 @) f5 a; r8 B
當(dāng)你要去看操作系統(tǒng)代碼的時(shí)候,面向?qū)ο蟮乃季S,肯定是必不可少的,這又回到了“什么是面向?qū)ο?”這個(gè)問題上了。
( n5 ?0 B0 v' |我相信,通過網(wǎng)絡(luò)搜索,你一定會(huì)基本明白什么是面向?qū)ο螅酉聛砭褪荂語言如何實(shí)現(xiàn)面向?qū)ο罅,具體可以查看以下文章。) N( L2 f# u) R3 B5 I
嵌入式 C 語言面向?qū)ο缶幊?--- 總結(jié)
. B' R) N3 v0 s C, r9 U3 H/ c基于狀態(tài)機(jī)和面向?qū)ο蟮乃枷,設(shè)計(jì)一個(gè)通用的按鍵檢測模塊。
3 x9 J) P) g$ U6 T如何建立抽象思維?這個(gè)問題實(shí)在太難回答了。
3 Y1 l- P' I. @抽象思維的建立,不是一朝一夕的事情,它需要周而復(fù)始地保持一種對(duì)世界好奇的學(xué)習(xí)心態(tài),而且很大程度取決于你的人生經(jīng)歷和知識(shí)體量,
0 |2 U! |, T6 J1 Y9 b z. Y' _/ P我能給出的建議就是,多閱讀經(jīng)典書籍,多觀察這個(gè)世界,多總結(jié)和思考,多于不同行業(yè)的朋友交流。6 c3 ?, ~' z7 U3 j3 g
持續(xù)總結(jié)輸出% x9 F9 ~7 W& y% @0 U" u) \) H
為什么我現(xiàn)在那么喜歡寫文章?為什么我一直建議各位持續(xù)總結(jié)輸出?/ w8 X$ B2 x% S& s( e' B' L
這是因?yàn),一個(gè)人的認(rèn)知象限里面,有以下四種狀態(tài):不知道自己不知道、知道自己不知道、不知道自己知道、知道自己知道。. D3 T4 [9 E* \/ h& |1 l! A
關(guān)于這四種認(rèn)知狀態(tài)的說明,在網(wǎng)絡(luò)上面有很多解釋,這里不做重復(fù)描述。
0 h4 `7 H+ j) S- D( R3 |+ E/ H; L持續(xù)地通過技術(shù)文章進(jìn)行輸出,可以讓一個(gè)人理清自己的學(xué)習(xí)過程與學(xué)習(xí)狀態(tài),這種方式可以讓一個(gè)人搞清楚學(xué)習(xí)過程里面,哪些是自己知道的,哪些是自己不知道的。
( x3 s. E" ^9 b8 t5 r% V/ C我相信,很多人在最初學(xué)習(xí)一個(gè)新知識(shí)點(diǎn)的時(shí)候,通常都是處于“不知道自己不知道”的狀態(tài),也就是不知道自己哪些地方不懂,自然就不會(huì)向別人提問。8 l" _% m* u0 L) b- j2 o
“好記性不如爛筆頭”這個(gè)道理,我相信很多人都懂。我在2015年學(xué)習(xí)Linux驅(qū)動(dòng)的時(shí)候,就開始用記事本零散地記錄自己的學(xué)習(xí)過程,那時(shí)候,還沒學(xué)會(huì)系統(tǒng)化地進(jìn)行技術(shù)文章組織和輸出。
7 S# v7 {; j$ g7 J1 Z/ ?
rig1amywncm64010745440.png (55.89 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
rig1amywncm64010745440.png
2024-8-30 13:46 上傳
0 p! J. d/ s" v6 ]; }直到最近這兩年決定寫公眾號(hào)和博客,才明白系統(tǒng)化知識(shí)的重要性,所以公眾號(hào)和博客的寫作風(fēng)格,都是通過技術(shù)專輯的方式來呈現(xiàn),
$ t! j7 S( \0 `' |& p一方面是為了讓自己學(xué)習(xí)不會(huì)太片面,同時(shí)讓網(wǎng)絡(luò)上的知識(shí)碎片能盡可能集中一點(diǎn),方便以后自己查閱,如果能給你帶來一些幫助,那是對(duì)我莫大的鼓勵(lì)。
) Y- j3 H' K4 I4 V I這種持續(xù)的總結(jié)輸出,會(huì)給我?guī)硪恍┱答佔(zhàn)饔,讓我認(rèn)識(shí)了很多優(yōu)秀的同行,同時(shí)也希望我的學(xué)習(xí)總結(jié),能給其他嵌入式的初學(xué)者帶來一些參考,) \5 g! z9 e3 T+ }, C
以上就是我的學(xué)習(xí)方法論,關(guān)于我的從業(yè)經(jīng)歷和職場感悟,也可以在公眾號(hào)獲取我的個(gè)人微信,跟我一起互相交流,共同進(jìn)步。* g% a: h6 I! Y) G# @9 b
感謝閱讀!& @% t$ z5 s3 W6 Q8 t. q# U1 e
-END-' j: ?3 i! {/ h. l( w- z% J3 m8 ]
往期推薦:點(diǎn)擊圖片即可跳轉(zhuǎn)閱讀
. X: X4 G7 E' ^ w3 \ 5 A( A2 h9 H* }/ A* A+ g
# u/ F' v* Y/ @6 S
1 k4 J+ K( D+ I3 T. q" I7 H; H; j, U
6 y( P% K% C. B4 M2 W7 T% h( f5 ]" S
ucc0avw0kbl64010745540.jpg (314.54 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
ucc0avw0kbl64010745540.jpg
2024-8-30 13:46 上傳
4 P, V$ `8 R/ R6 b# v8 Y# |% s) d) W
0 S2 |) _+ Q3 ^# F) h! ^( c& @) a 【5折福利】選型必看!這款RK3588開發(fā)板究竟有何魅力?
: L9 r0 Y/ d8 b5 j1 t3 ]% B
% s8 Z2 L, {# S! B: @2 H 2 d+ X& L. M0 f' E
* k0 b5 `4 C" k
1 y. A6 b: T3 L8 C+ p, Q
wlvvpegu0ce64010745640.jpg (67.09 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
wlvvpegu0ce64010745640.jpg
2024-8-30 13:46 上傳
* \" f6 ^% S) ]* L, G8 i
3 |, t! r; M7 _, X% G3 O 這兩種 C 語言語法,建議別用,不然會(huì)被罵慘!6 p( | d/ ~1 Q$ Q1 I
9 s) W* e1 j; M: t& u * Z- _- C. w8 C$ _% ?
/ }7 _, q# |" V/ G' C( l3 o2 A" p0 F
pa30o1bfwsc64010745740.jpg (129.37 KB, 下載次數(shù): 1)
下載附件
保存到相冊(cè)
pa30o1bfwsc64010745740.jpg
2024-8-30 13:46 上傳
5 S0 z: F) I7 J1 ]7 e( D
8 F: ^5 `, Z1 ~. q; ?- h
嵌入式 C 語言,那些“花里胡哨”的語法特性。
" v3 U9 R# a. t7 n
% K& u" r6 s- C6 E' ^/ m) | 7 E# U) l6 }. F# O* e
% t1 P4 i1 \- p 我是老溫,一名熱愛學(xué)習(xí)的嵌入式工程師! N4 K% T5 M% q$ I5 M, z
關(guān)注我,一起變得更加優(yōu)秀! |
|