前言这可以说是一个经典问题了,经常有同学私信我,stm32学多少程度才能学linux?今天就我自己的学习经验给大家一个参考
对于单片机和linux的学习,一定要明确学习目的是什么!!!
其实这个问题很多同学都问过我,但是我的建议一直都是看自己的目的,还有自己所处的时间段是什么!
我自己是从大二就开始学习单片机,从stc51,PIC16,msp430,瑞萨,飞思卡尔K60,stm8,stm32都学习过,也做过项目,直到大四毕业我还在继续研究,粗略的算学习时间也有两年多,要是把我学习的程度算上,那可能相当于业余学习5年甚至更多时间才行,而且不管是哪种技术原则上都可以一直学习,是的,一直学习。
比较通用的学习进阶路线是51>32>arm
第一阶段-51:
这里的51就是51单片机,因为51单片机外围电路比较简单,芯片的功能也相对简单,可以比较好入门硬件和汇编编程,还有基础的C语言编程,如果这个阶段学的比较好,对于之后的学习好处颇多,我自己就是大一下的时候因为参加实验室的选拔比赛,了解并深入学习了51单片机,这段经历帮助我进入了实验室,而后的一年我又用51做了些作品得了几个奖,也是我嵌入式之路的启蒙。(如果你时间紧迫,也可以调过这步)
第二阶段-32:
再然后就是32,这里的32常规可以理解为stm32,但是其他比如(PIC16,msp43,瑞萨,飞思卡尔K60)也都是可以的,虽然不都是32位处理器(pic和msp30是16位),但是这一阶段最重要的技能就是C语言库函数编程和操作系统使用,stm32说实话是做的最好的一类,现在HAL库使用也很方便,但是这其实也是弊端,如果目标是Linux,那就别太痴迷于库函数编程了,多体会精神即可,一换芯片代码都得重构。。。我第一次参加电赛的时候指定用瑞萨单片机就是折在这了,第二次比赛选的控制组stm32就拿了国一(主要还是高估了自己的学习能力,三天想把代码移植到瑞萨单片机真的难度颇大)
在32这一阶段其实很多同学就止步不前了,这里边也包括我(我的第一份工作是无人机飞控开发,主控就是stm32,这也得益于我参加电赛的经验,当时的项目就是无人机)
第三阶段-arm:
这里说的arm不是指stm32,我们实验室当时主要是指arm9,虽然现在已经很落后了,现在arm11,甚至arm-a才是主流,但是有一点是一直没变的,就是linux开发,arm9是可以运行Linux的,当时实验室是有两块开发板的,当时我只是大致的了解了下,没有深入学习!
可能会比较奇怪,我为什么不学arm,进而学习linux,原因主要是两个,一个就是我的32学的太好了,我可以用32轻松的做项目,参加比赛,得奖,当时的我没什么意识为什么一定要学Linux。还一个原因是当时实验室用linux主要项目的都是研究生,做的基本也都是图像识别,信号处理这种纯软件的项目,当时的我没太大兴趣。虽然也挺可惜的,但是我也不后悔,试想就算我学了linux,毕业的时候大概率还是会找单片机开发,linux技术还是会被放下,过一阵就忘了。
这里如果你还在读研,希望更加进阶一步,欢迎参加我的一对一指导,可以帮你绕过很多坑,节约大量的时间,对于这些时间来说,小小的支出真的不算什么,明白的同学自然懂。
契机:
我开始学习linux是我毕业半年之际,算上大四实习,我已经做了一年无人机开发,虽然已经很顺利了,但是说句实话收入还远没到达我的期望,工作环境也着实有点恶劣,各种原因推动下,我开始学习linux,我学习的方法不是直接看书,我一贯的习惯是直接上手,然后我就买了块英飞凌的核心板,自己画了块底板,移植了uboot,烧录了ubuntu系统,开始从裸机,linux系统编程,多线程编程,网络编程等这个路子把linux趟了个水,半年后我跳槽到了目前的单位(知名的通信外企)。环境是非常的好,也很人性化,收入比之前也多了好几倍,这也算是实现了当时的希望,期间也在不断的升职加薪,转眼已经快7年了,我基本实现了自己的梦想,也算对自己努力的奖励。
下边是我当时为了自学画的linux底板(左下角还集成了stm32f4,可以协同做外部控制),当然了,这是我毕业一年的水平,现在硬件基本上是荒废了,哈哈。
说回问题本身,从我自己的经验想给各位同学一个参考,并不是单片机学到什么程度就能学linux,而是你为什么要学linux? 还一个你有什么基础可以支撑你学习linux,这些点上文我都提到过,如果时间比较充裕,完全也是可以参考的,当然更多的细节每个人可能不同,也是需要定制的部分,这部分欢迎参加我的付费咨询.
未完待续,持续更新!以防后边找不到可以点赞收藏下!