从Rtos到Linux:学习的策略
这里目的只是为了学习,哪天工作需要用上了能更顺利的上手,写文章的目的是为了记录和便于查询。工作的前两年主要是以mcu裸机为主,目的是压缩资源以最少的ram和flash实现最多的功能,后来五年做的东西越来越复杂的跑的rtos,有freertos,zephyr,偶尔需要参考一些设计还会看rt-thread,过去段时间断断续续,偶尔利用周日的空闲时间捣鼓吃灰多年的板子,是块imx6ull的板子,20年年底买的野火的pro版,以下分享几点心得并且本人实际证明是对的。
从心态上,第一个是不去认为他们有多大的鸿沟,过去接触的感受是这样,起码驱动上是这种感觉,如果认为很难那从起步就开始胆怯了而是抱着‘即将变的更强的’心态去看待学习新东西这个事情。第二个是抛开一些功利的想法,学习就是学习不是为了赚多点钱不然当现实达不到目标就会放弃,虽然干的是mcu+rtos的工作,要相信学习linux驱动开发这个事情,多少能得到收获的,并且正反馈到当下的开发工作上。
从方法上,多利用过去的知识和经验,会让自己更好的理解(也就是举一反三),如果看不懂的东西可以查、问,多以日常开发的经验去类比,如果实在没法搞懂,可以先放着。例如我自己在第一次使用rtos的时候也是先会用,多看看demo,看看别人怎么用的为什么这么用,所以这里的重点是知道怎么用然后了解为什么,去想想有没有更好的设计办法,‘了解为什么’ 这步可以看情况去执行,但是这步不做的话,出问题了无从下手还是得从原理和本质上去入手。这里我在看野火资料的时候看的非常痛苦,本人大学只看过野火的mcu资料算是部分启蒙者了,但是imx6ull的教程实在不太行,后来转去看隔壁原子的资料发现好一些于是就有了看原子资料使用野火的板子的情况,后来了解到网上不止我一个人这样。所以这里本人是跟着原子的资料将板子用起来。
本人是电气专业,学校的时候只跑过51、stm32之类的mcu,那会rtos也就跑一下ucosiii,实际上并不熟悉,刚毕业的时候因为一些推广,制造焦虑的文章里认为mcu工资低(其实工作后发现mcu也有不少待遇不差的),要学就学linux,于是毕业前就薅了块板子,买了韦老师的课程,但是那时候,很多东西不知道为啥看不进去也看不懂,不知道为什么这样。随着工作年限上来还有知识面的扩展,发现一些那时候无法理解的东西能搞懂了,这里也可以理解每个人的知识背景不一样对知识的接受程度也不一样。因此后面记录学习过程的时候,一些内容尽量用已有的知识体系去类比和理解,实在搞不懂就先放着,可能还没到搞懂的时机。