今天在B站上看到稚晖君的一段学习方法分享视频,挺受启发,结合自己的一点现有认知故写下了这篇笔记。 原视频链接【6-14直播录像】在 线 吹 水
1. 当下的惊艳来源于持之以恒的积累,技术不是一蹴而就的事情
2. 学东西要有针对性的去学,要么是完成手中项目的需求要么就是兴趣的驱使。这也引出了要边学边用的学习思路,现学现卖既能加深理解又能查漏补缺,毕竟对于计算机这门学科来说学会和会用是两码事。学习和运用相结合,不要单纯的只是硬啃某一块知识点,啃完不用很快就会忘掉。
3. 搞技术一定要边打仗边学习。不要等把某个领域学精学透了再去做项目,要边做项目边去发现自己知识的欠缺然后再去补。将别人做过的项目进行自顶向下技术裁剪,里面有很多不懂的点然后逐个攻破学到细节里的东西。这样学会了的知识可以立马用到实际中解决实际问题,还能提高自己学习的自信心。
4. 在应用层、驱动层、kernel层中,单片机跑裸机程序属于kernel层。裸机实时性好,并且由于面向底层开发对底层优化做的好,基础应用跑裸机效果比较好但是裸机上很难实现复杂的应用这就得上操作系统了。
5. 学到的东西要及时做总结记录并且阶段性输出。将学到的知识总结成文档、代码的话封装成私库、硬件的话把硬件封装成模块,并记录好针对细节方面的说明,比如对外的接口、设计中需要注意的坑。最好还能把新学的知识和原有知识做组合看能不能应用到新项目中,将项目实现进而巩固这些知识。
6. 用实际需求驱动学习,稚晖君列举了自己学习用I2C做电机驱动的事例
(1)明确工作的目的是什么:用I2C来做什么?—> 用I2C给高性能无刷电机做驱动
(2)是否有现成的可用方案、经验:市面上可以买到的是无人机上基于电调的无刷电机控制方案。无人机的电调只能控制电机在高转速下工作,现实需求是控制无刷电机低速工作并实现正反转。
(3)没有现成的方案怎么办?—>通过找相关的开源项目自己研究实现方法。
(4)找到开源项目以后怎么办?—>先去开源项目的工程文件里找技术规划(硬件、软件),从硬件和软件两部分对技术路线进行拆解。硬件是三相逆变器的电路设计(我猜是关于PWM的),软件是实现I2C的算法,还有平台TI、ESP。
(5)做完技术拆解以后怎么办?—>通过技术拆解就能找到技术难点和底层的东西。通过翻阅资料、书籍、刷教程逐个击破,并做好总结。
(6)及时把学到的知识做好总结(比如把上周查到的有用资料在周天总结整理出来)以技术输出作为目标。一个快速提高学习效率的方法就是费曼学习法,简单来讲就是以教为学。自身对细节掌握的越透彻对知识理解的越充分越能以通俗易懂的方式将知识传授给别人,同时这也是个直面自己盲维的过程,检验自己究竟掌握了几分倒逼自己查漏补缺。
7. 面对一个从未用过的硬件模块(以传感器为例)如何快速上手集成到项目里面来:Arduino。Arduino的优点是入门容易可以做出功能复杂的项目,比如四轴无人机、3D打印机、机器人。
(1)对于一个陌生的传感器,在Arduino中找是否有相关的库,有的话用Arduino跑通测试传感器的功能是否满足项目要求。
(2)测试没问题后,下一步的工作分为两部分:硬件、软件。硬件上要向传感器的卖家、提供方获取原理图(主要是原理图,PCB电路图有没有都可),目的是从硬件层面自己设计硬件模块将传感器连接到项目电路中;软件上将Arduino相关库移植到项目平台(如ST)上。
8.常用的嵌入式操作系统:FreeRTOS。RT-Thread接口较简单易用。
9.嵌入式Linux开发是搞嵌入式的必须技能。单单只学裸机开发就业面很窄。
10.学习Linux驱动开发最好是在项目中学习。学起来上手很快,就像完形填空,照着Linux驱动开发模板填源代码。这里的源代码和裸机开发的源代码没太大区别。
11.学PCB看杜洋的视频教程也可以淘宝买课程。初级学习一个系列的画双层板教程大概10-20个小时。
12.关于提高工作效率
(1)做擅长的事更容易集中精力。对一件事积累的越多越擅长,积累的过程也是提升效率的过程。
(2)安排好事务的优先级,先做高优先级的
(3)避免被与当前任务无关的事情打断
13.编程语言只是决定实现的效率,实现的算法更重要。
14.学习的深度和广度的抉择:深度是找工作、职业发展、学术研究的保障,广度在于满足个人兴趣爱好。一专多能,先在某个领域做的比较深入以后再考虑广度。
最后,学习方法真的很重要,借鉴优秀的学习方法站在巨人的肩膀上让我们成长的更快些吧,用自己所长为祖国添砖加瓦。
|