怎么从单片机到linux

Posted 东皇※太一

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么从单片机到linux相关的知识,希望对你有一定的参考价值。

看到很多网友提问:学单片机的怎么过渡到linux开发,以我自己的经验来说,大多网友学历比我高,基础比我好,我能从单片机过渡到linux,你们也一定可以!并且相信你们看完此文可以更快更早的步入linux之门!

本人男,90年,大专学历,应用电子技术专业,在校学的都是跟硬件相关的,像电子电路、电工基础、PCB制板等,跟软件沾点边的就汇编跟C51,C51实际就是用C语言去操作51单片机,只需要一点点C语言基础就可以了,所以当时也没在意C语言的重要性,后面才知道这方面的基础严重不足,但在学校学习自认为还不错,因为自己对这方面也很有兴趣,用单片机做过很多小项目,像数字钟、遥控车、循迹小车等等,代码写的怎样不多说,反正功能是通了的,哈!

实习找工作的时候去了某个老师推荐的他同学的公司,一家做IP通话终端的公司,当时老板(老师同学的哥哥)面试的时候带我参观了他们研发部跟相关产品,当时研发部有二十几号人,用的芯片是stm32、lpc17xx这种,我感觉很不错,挺喜欢,后面问我薪资待遇,我说1.5k,老板立马同意了,然后问我还有没有跟我差不多的同学,叫一起过来,待遇一样,然后我又拉了两个同学入坑,汗!

现在想想自己当初是多么的单纯,不过当时并不这么觉得。12年的二线城市,实习期1.5k,包食宿,每天有两个同学一起上下班,日子过得算是苦中有乐!并且实习期结束我还攒下了8000块钱,那时特别兴奋,存在银行卡里交给我妈,特嘚瑟!

在这家公司虽然工资低,但工作一点都不轻松,这真的很矛盾,拿着最低的薪,干着最累的活!实习期开始做了一段时间的硬件,但后来我觉得对软件更感兴趣,实习期结束后就转软件了,但是我之前从没弄过stm32,c语言基础也不太好,也没人教我怎么用,纯靠自己琢磨捣鼓,实在吃力。

因为自己懂些硬件,就把公司的一些废板子焊出来搭建最小系统用来调试,这也是我们电子专业的优势,也买了些开发板,照着例程学习,因为C语言基础不好,于是在十一七天假的时候狂补C语言,主要看《c primer plus》。

后面慢慢的对stm32有了感觉,对C语言也能熟练运用了,在公司干的活也越来越顺手了,工资也从开始的实习的1.5k,转正2k,后面涨到了3k,后面又自学了数据结构,MFC,windowns应用开发等等,反正啥有兴趣就弄啥

再后来在这家公司呆了两年的时候,我那两位同学都走了小半年了,他们去了深圳,我一个人呆在那感觉也没意思,主要是工资低,于是跳槽了,工资直接翻倍,一下从3k变为6k,但只包午餐不包住宿,还是挺开心,仍然在同一个城市,干的事情跟之前差不多;

这是一家小公司,研发总共不超过5人,软件大小活都是我一个人干,然后就是疯狂的用stm32做各种项目,在这家公司也呆了两年,大大小小项目就做了十多二十个,在这里用各种stm32做开发,模块应用得到了很好的锻炼,同一个模块用在不同的产品上,做的都有点想吐了,也是从那个时候我开始注意模块的移植与积累,慢慢的有了框架思维,同时下班后我又自学linux,但在这家公司两年里都没有涨过工资!

两年后,因为那一句,世界那么大我想去看看,我裸辞了,来了深圳,找了一家做GPS车载设备的公司工作,在openCPU上开发,相当于是基于人家API进行二次开发,从二线城市来到一线,工资幅度有了很大提升,相比之前差一点翻翻,但是房租贵了,每天需要挤地铁,深圳是个神奇的地方,也是在这里遇到了我的另一半。

在这家公司干了差不多三年,调过三次薪,除了第一次涨幅比较大,后面两次都是普调,意思性的,由于公司是国企转私营性质的,遗留很多问题,里面领导内斗的厉害,后面换了领导,自己感觉干的也不太爽,于是又裸辞,当时新领导还极力挽留,主动问我加多少工资愿意留下来,但我们干开发的就是这么实在,一般不喜欢主动提加工资,等心凉了再加工资就没意思了

现在从事的这家公司是做机器人的,负责android驱动跟部分mcu开发,也是因为机缘巧合,做驱动开发的同事走了,而我正好有这方面的知识储备,于是就接手了,真正快速的成长还得在实际的项目开发中,会有压力迫使你去解决问题,去学习,并且那时学以致用更能让你印象深刻,目前干了三年多了,工资20k+,主要是离家近,不用挤地铁,老婆在这边全职带娃,我下班回家后要帮忙做饭洗碗,所以平时能不加班就不加班,让我有更多的时间陪伴家人,这点挺好!

本文算记录下自己的职业生涯与技术成长路线,其中走了很多弯路,但也有收获,从开始的51单片机,到stm32,再到linux驱动,一路走来跌跌撞撞,如履薄冰,让我在这条道上坚持这么久的唯一原因就是——穷,其次就是兴趣,哈哈,我们班大多同学都已转行,仍从事本专业工作的一根手指头都数的过来。

最后以我自己的经验给想从单片机过渡到linux开发的童鞋一些建议!

①如果你想做linux应用开发,那么你完全不需要单片机基础,可以直接上,跟Windows下面的应用开发大同小异

②如果你想做linux驱动开发,那么你学了单片机是有优势的,像我们学单片机的一般是电子专业的,优势是我们懂硬件,能看懂原理图,知道硬件的底层逻辑,会使用万用表、示波器等工具;
但欠缺也很明显:不懂操作系统,没有面向对象思想,有可能C语言基础也不扎实,这些短板是需要我们自己补上的。

所以做linux驱动开发需要具备:

①要有比较好的C语言基础,像指针、数据结构要能熟练运用
②要有面向对象的思维,linux内核虽然基本都是C语言(小部分汇编)所写,但是很多实现都运用了面向对象的思想
③需要懂些linux的基本操作与指令,像工具的安装,代码的搜索与过滤等
④懂些操作系统原理

最最最重要的,就是动手,动手,动手,无需多问,现在就行动起来!!!
 

以上是关于怎么从单片机到linux的主要内容,如果未能解决你的问题,请参考以下文章

学51单片机,总是感觉学不会该怎么办呢?

学51单片机,总是感觉学不会该怎么办呢?

初学单片机,感觉一脸茫然?

漫画|Linux 并发竞态互斥锁自旋锁信号量都是什么鬼?

怎么找回tf卡里面的资料?

单片机能做什么创意小发明?新手怎么制作单片机智能小车?