电子产业一站式赋能平台

PCB联盟网

搜索
查看: 350|回复: 0
收起左侧

以 RT-Thread 为例,分享一下我的学习方法

[复制链接]

575

主题

575

帖子

4422

积分

四级会员

Rank: 4

积分
4422
发表于 2024-8-29 17:50:00 | 显示全部楼层 |阅读模式
我是老温,一名热爱学习的嵌入式工程师
# _# J7 G/ ?; ?8 _关注我,一起变得更加优秀!四年前写的文章,重新分享一下。
! \  E% M+ B6 b4 S/ g6 i  k: P
在分享我的学习过程之前,先交代一下我的工作经历和学习背景。
% l7 a5 Q# R$ V0 \3 V我是从2020年11月初开始学习RT-Thread实时操作系统的,在学习RT-Thread之前,我接触过uCOS和FreeRTOS,' y" b5 K3 Q9 \7 V6 y5 w
但这两个在单片机上应用的实时操作系统,我都没有仔细并系统化地进行学习,都只是局限于开发板上运行一下demo例程。6 ?# E3 x1 a4 E) R; K6 t
以前我在嵌入式开发板公司工作的时候,曾经系统化地学习过Linux驱动程序,当时是买韦东山老师的2440驱动教程,
7 E) a% g& R0 W2 X  E) d不过很遗憾,一直没有从事过Linux驱动开发相关的岗位,学过就丢到一边了,但正是因为这段经历,让我明白了建立抽象思维的重要性。; m! n8 Q" t5 C3 `+ A- {
我曾经使用嵌入式Linux操作系统,开发过两个应用项目,以前为了协助生产,也用操作系统做过一些桌面工具,* Z& q1 \! @" R- `" H
所以,对于使用操作系统开发,里面涉及到的一些概念,比如多线程,内存管理,线程间同步与通信,等等,理解起来也相对容易。& j, {! `- n2 Q/ V9 Q! j$ }5 v, Y
以上就是我学习RT-Thread之前的工作经历和学习背景。
3 c1 c  p) c  P9 R0 I; s% I经过差不多两个月业余时间的学习,我已经把RT-Thread内核应用相关的知识系统化地学习了一遍,并且同时写了一些学习总结文档,如下图所示,
, G# c5 k2 p( i. w* [5 o( `( \! U5 O并且在公众号做成了 专辑 | RT-Thread学习笔记 ,公众号回复【技术文档】即可下载PDF。
$ S! M) r. ^2 }' u2 u! I# U( K  i0 c  m

t2h2lr3agxm64010744839.png

t2h2lr3agxm64010744839.png
6 }% F( U& g' m. H
先用思维导图总结概括一下,学习方法不一定适用于每个人,但希望可以给你一些参考。
- k  i* v: J# D. I

xc31ukjvcze64010744939.png

xc31ukjvcze64010744939.png

6 z4 ^. P" h- A4 J# v明确利益目标
: d  I' R6 q. z& U3 X. J+ ^6 j参加工作后的学习或自我提升,其目的已经不像在大学校园里面那样单纯,大学里面基本都是学院安排好的学习计划,而作为学生,只需要按计划执行就可以了。
4 v/ Z, J; y$ w5 S) k可以说,很多大学生受限于社会经历,也不知道为啥要学习这门课程,他们只是知道这是学院要求的。  ?# h+ w4 }4 ]# x! X
参加工作后,个人的学习和提升,都是有目的的,人性都是趋利的。
5 ]$ X5 T) m$ q0 K/ T你基本不可能做到不带任何目的而投入大量的时间去学习一门技能,就算是因为兴趣爱好而学,那也是为了自己的内心满足感,
+ K9 k& u: }2 f( S: H  P4 N“寻找内心满足感”也是一种目的。
! X3 l5 x2 M, O1 I而对于大多数职场打工者的自我学习提升,无非只有两个目的:名和利。
! w' D/ e1 C2 \9 {6 K4 T2 n所以,在学习RT-Thread操作系统之前(其实也不局限于RT-Thread,包括很多职场技能也是如此),要先搞清楚自己为什么要学这门技能,要有明确的利益目标。
* c! h4 U& L$ x5 z如果想不明白这个问题,只是道听途说地觉得RT-Thread或某项技能很火,也想跟风学习一下,那还是不要贸然浪费时间,因为漫无目的的学习,会很难坚持下去。4 _# }9 t3 e3 n
那么,我学习RT-Thread的利益目标是什么?2 c7 P# e% o8 \, U' t! i) f1 V
其实很简单,是为了公众号有素材可写,同时建立自己的技术背景和人设,然后积极拥抱开源社区,认识不同行业的技术大佬。
9 Q+ K5 X( B* m( f: E; o& W0 _4 [通过这种学习总结+持续输出的闭环,可以让自己技术得到提升的同时,也让自己链接更多优秀的人才,如果自己能帮助更多的人,那就更加perfect了。( u5 @' }7 Z% q2 `

zzmwiszwxkf64010745040.png

zzmwiszwxkf64010745040.png
: S: b! ^& ?( w4 C
这种持续的学习总结输出,也为我以后求职增加了筹码,呈现给对方公司的,不再是一纸枯燥的简历,可以是我的技术博客,公众号,GitHub,开源作品,等等,这也是我的利益目标之一。
! Y  U. `, Q6 C3 o% S如果你还不知道如何搞清楚自己学习的利益目标,那就要先花时间好好想清楚了,而对于大多数职场打工人来说,学习技能最直接的目标,就是为了跳槽好找工作。
. W/ m1 m, e' ^- U4 |可以把跳槽当作利益目标之一,但是别忘了,最好还是要通过展示手段,把你所学到的技能呈现到对方公司面前,而不是把技能都写在一纸简历上面。3 g, O9 R' s9 I1 I4 i
弄清基本概念
0 e, A2 q+ B& k# o9 J4 d文章里面的每一段话,是由字词句三者组成的,就像我们初中高中学习阅读理解的时候,分析一段话的含义,都是从字或词开始进行分析(文言文翻译简直是一段痛苦的经历)。
, V/ l6 U* N  I7 |+ A所以,要学习RT-Thread操作系统,就需要先弄清楚操作系统的基本概念。* i: x) E0 n8 r3 Q
这些基本概念,在操作系统里面基本上都是相通的,不管是实时操作系统还是多任务分时操作系统。
" x8 g' ]2 y! N. Q8 F(在你看这段话的时候,脑海是不是也会有疑问,什么是多任务分时操作系统?)
3 N. t# x( R# x' F% w9 {) h" F为什么会看不懂一段话,无非就是组成这段话的词语概念不理解,不妨看看下面一段话,里面红框部分都涉及了各种概念,而这些概念如果你不懂的话,是看不懂这段话的。- c) b8 b) x6 V

ct502uylzgi64010745140.png

ct502uylzgi64010745140.png

$ `4 U1 S( s! ?( ?9 \: j1 m5 u0 w短短几句话里面,就包含了很多操作系统的概念,什么是线程调度器?什么是抢占式?什么是最高优先级?什么是中断服务程序?等等。。。4 o6 `& k) F" {, u" i2 d+ a# k; n
而我能很容易看懂这几句话,是因为我有了以前的学习经历作为铺垫。6 W+ z6 b% _, F' S' y6 @) k; o
那么,在我们平时的学习中,如何搞懂这些基本概念呢?教大家一个比较实用的方法,就是在网上搜索的时候,在前面加上“如何通俗地理解xxx”,比如,“如何通俗地理解多线程”,网上就会有不少结合生活事例的参考答案。  C( C1 x6 M' J9 R) z  @

j0ivuub1v4p64010745240.png

j0ivuub1v4p64010745240.png

% p) U6 P, `' Z, r+ P; ]现在终于知道为啥语文数学外语这些科目可以贯穿整个学业生涯了,学习语文可以锻炼我们的阅读理解能力,而数学可以让我们建立逻辑推导能力,学习外语,是为了在经济全球化的背景下,让自己更好地和世界交流。4 I" p- Q; e6 r8 v* v
建立抽象思维9 F# _: w- a- ]; `
为什么要建立抽象思维?人为什么能通过阅读文字或观看图片和视频来获取知识?6 B2 o% W) n) z2 S0 c" g
原因就是,一个人在接收外界信息的时候,会在自己的大脑里面建立一个具体的事物影像,这个具体的事物影像在构建的时候,会依赖于你自身的社会经历以及知识丰富程度。
0 x6 n' X9 G3 M3 b# Z回到如何学习RT-Thread这个话题上面,我在学习RT-Thread的时候,首先参考的是其官网提供的学习资料,而这一大堆学习资料里面,我首先关注的,肯定是RT-Thread这个操作系统的简介和框架。
) ~8 t1 ~8 H! S

3fbacimho0t64010745340.png

3fbacimho0t64010745340.png
' F. {0 |6 c  c: s+ a
千万不要一开始就去看系统源码,也不要马上去运行demo例程,在你的大脑建立RT-Thread这个影像框架之前,看这些源码,无疑是想自己劝退自己。2 ^) ]  x( i7 O/ o
为什么要先看简介和框架?
3 V: H# O+ u4 j9 ?. Q$ f9 o因为这个框架可以有助于我建立一个关于RT-Thread的大脑影像,往后不管我学习RT-Thread的哪一块内容,都是基于这个框架的,框架是用来告诉我们,里面的代码以及模块是如何进行组织的,所以,框架很重要!
$ o8 a' r; x8 \( x" q8 N- }. Z细心的人就会发现,即使是这个框架介绍,里面也涉及了很多基本概念,这样又回到了“弄清基本概念”这个环节。所以,这是一个螺旋式的过程,不断弄清概念,建立大脑影像,如此往复循环。
5 ]/ d; Z- C5 Y7 }1 P' S! g; e; L当你要去看操作系统代码的时候,面向对象的思维,肯定是必不可少的,这又回到了“什么是面向对象?”这个问题上了。1 |6 E5 X6 {0 w1 |: b
我相信,通过网络搜索,你一定会基本明白什么是面向对象,接下来就是C语言如何实现面向对象了,具体可以查看以下文章。
: F- I4 [$ g( P2 X  V! q9 Y嵌入式 C 语言面向对象编程 --- 总结
9 W( Y5 c: j* z2 B: l' I基于状态机和面向对象的思想,设计一个通用的按键检测模块。
- S2 k0 ^' e  G3 D如何建立抽象思维?这个问题实在太难回答了。
1 |1 g% C+ L1 E, b; i抽象思维的建立,不是一朝一夕的事情,它需要周而复始地保持一种对世界好奇的学习心态,而且很大程度取决于你的人生经历和知识体量,/ q* g! L0 w1 F: u! X" |% b
我能给出的建议就是,多阅读经典书籍,多观察这个世界,多总结和思考,多于不同行业的朋友交流。
( B7 j) E% k8 S% e( \- \- I持续总结输出
# G6 k* }, O& A6 O7 k; c为什么我现在那么喜欢写文章?为什么我一直建议各位持续总结输出?
4 e0 t4 ~2 ~  E# j: n1 c5 [这是因为,一个人的认知象限里面,有以下四种状态:不知道自己不知道、知道自己不知道、不知道自己知道、知道自己知道。5 X6 H7 V& R. z
关于这四种认知状态的说明,在网络上面有很多解释,这里不做重复描述。& Z% O0 t- [: @) H% H5 S( U
持续地通过技术文章进行输出,可以让一个人理清自己的学习过程与学习状态,这种方式可以让一个人搞清楚学习过程里面,哪些是自己知道的,哪些是自己不知道的。* r" e, r* f! X0 i; R2 s
我相信,很多人在最初学习一个新知识点的时候,通常都是处于“不知道自己不知道”的状态,也就是不知道自己哪些地方不懂,自然就不会向别人提问。
  v* D9 ?( k: w8 B( u3 b% b% e$ n! x“好记性不如烂笔头”这个道理,我相信很多人都懂。我在2015年学习Linux驱动的时候,就开始用记事本零散地记录自己的学习过程,那时候,还没学会系统化地进行技术文章组织和输出。
% C6 w0 v: j4 K% O4 Q/ j1 d

rig1amywncm64010745440.png

rig1amywncm64010745440.png
' v" x+ t* h/ T/ k, v
直到最近这两年决定写公众号和博客,才明白系统化知识的重要性,所以公众号和博客的写作风格,都是通过技术专辑的方式来呈现,0 Q, o; x' ?: P2 {0 R
一方面是为了让自己学习不会太片面,同时让网络上的知识碎片能尽可能集中一点,方便以后自己查阅,如果能给你带来一些帮助,那是对我莫大的鼓励。
( ?8 J* l! {+ w' Z1 _7 g这种持续的总结输出,会给我带来一些正反馈作用,让我认识了很多优秀的同行,同时也希望我的学习总结,能给其他嵌入式的初学者带来一些参考,
% ]$ f3 z8 w! S3 m* J/ B" C以上就是我的学习方法论,关于我的从业经历和职场感悟,也可以在公众号获取我的个人微信,跟我一起互相交流,共同进步。
" ?  R1 ~- Z- j( B: Z9 c% @6 O' V' i感谢阅读!
: l3 ?6 A. J9 y0 w6 x-END-
9 U6 C+ R8 K& d  l往期推荐:点击图片即可跳转阅读9 {3 M3 H' k, S# g, z* u! t
                                                       
7 I8 b, D1 a  d                                                                , q$ ~& U9 N7 T) H1 B
                                                                        % B3 q/ W: S& D% N4 |" H* N  g
                                                                               
8 K3 k- S1 _& Y, ~: Z% Z

ucc0avw0kbl64010745540.jpg

ucc0avw0kbl64010745540.jpg
+ U/ \3 X- w. J+ J
                                                                               
, I: I7 W" t0 D! D1 G& p( X                                                                                        【5折福利】选型必看!这款RK3588开发板究竟有何魅力?
, Z( Z! J4 j! Z' t                                                        % w7 h: e0 c5 S+ x2 F+ y
                                                                ; W2 t) p+ d4 R
                                                                       
/ r  F9 j- e2 X8 a- w$ K                                                                               
8 ?/ L# t0 n6 w2 Y1 b* ]+ l

wlvvpegu0ce64010745640.jpg

wlvvpegu0ce64010745640.jpg
" y* b; u- L; L5 {6 H$ d; _
                                                                                $ u9 X# A7 z  W- c  B8 Z
                                                                                        这两种 C 语言语法,建议别用,不然会被骂惨!
' C) {: Q. {- H: c! T7 o5 e# n% I                                                               
% j# c: X2 F  ]/ {2 c  v2 E4 ~2 u8 ]                                                                        . ^* h# E' p7 U$ E  a! J% w! r4 Q
                                                                               
* V' R# V4 ?( K5 m( a# ]

pa30o1bfwsc64010745740.jpg

pa30o1bfwsc64010745740.jpg

5 L9 Y2 C/ q) ^: J9 L                                                                                  R- Z; M9 l' y- U9 a
                                                                                        嵌入式 C 语言,那些“花里胡哨”的语法特性。" j( `: m! c( N$ i) P8 I
                                                                                ' p8 X7 I1 x! J4 q* C/ ?/ K7 V0 w
                                                                        1 w( H0 H- W$ t% y: C0 g" i8 t1 |
                                                               
5 r, k. W# q: u" T* e9 d  u0 i                                                        我是老温,一名热爱学习的嵌入式工程师. A) E  S1 D+ V# p) S/ z; N* {% ~
关注我,一起变得更加优秀!
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表