我之前写过几篇嵌入式入门的文章
不过我的读者还是觉得不够过瘾,我觉得还是要着重说一下嵌入式软件应该重点学习什么,guoqing收假最后一天写文。
精通C语言
精通C语言
精通C语言
C语言对于嵌入式软件来说就是他的命脉,不懂C语言的人根本就不能说想搞嵌入式,而想学好嵌入式,那么就必须要精通C语言,你在大学,可以不参加电赛,不跟老师做项目,但是一定要学好C语言,如果说切菜是厨师的基本功,那么C语言就是嵌入式程序员的基本功,这也是很多招聘公司把C语言来考察面试者的原因。
分享一份C语言学习资料,这个资料是比较全面的,都是电子书,大家有选择性阅读,目前为止应该是最全面,最好的C语言学习pdf资料了。
链接:
https://pan.baidu.com/s/15LZKixjFQzs0ZNfOo2ZWpQ
提取码:
gx7w
数据结构和算法有点因岗位而异,有的岗位基本很少用到数据结构和算法,可能工作十来年,挂着一个嵌入式软件的头衔,结果没写过一个链表,基本的语法都是一些 if 和锁 ,控制GPIO口之类的,但是用不到不等于不学,我们所知道的所有操作系统,都脱离不开数据结构和算法,而且嵌入式软件是需要和操作系统代码强相关的,嵌入式软件的代码依赖操作系统的代码来运行,学习好数据结构和算法,可以让你看到猪是怎么跑的,但是至于以后入职工作,能不能用这方面的技术来吃猪肉,那就要看缘分了。
嵌入式软件不同于互联网,很大一部分就是因为跟硬件息息相关,所以必须要有数电和模电基础,像一些锁相环,与门,或门之类的东西,我们是需要清楚的,纯软件开发可能不需要懂这方面,但是电子技术的话,这些基础是必不可少的。
模电是很多人的一个心病,我当年也是学不好,像三极管,二极管,mos管之类的,还要理解一些电路设计,这部分是大学电子课程的基础,当然,如果你没有这个机会,可以买几本书来学习下。
我觉得搞电子的每个人都应该学习51单片机,很多直接从ARM开始学习的也学得很好,能找到一些不错的工作,但是我还是建议从51开始,51学起来也不难,还能练习C语言,51用来裸跑是非常不错的,理解CPU的工作原理,学习一些通信协议,比如I2C,SPI,点亮LED灯,练习下中断,定时器,后面再做做多任务,学完多任务后,就可以去学习系统相关的东西了。
嵌入式系统,这个东西就比较多了,在学习51之后,你可以学习STM32,STM32标配的就是freertos系统,系统是从多任务衍生过来了,你理解了多任务,再学习系统就不是什么难事了,实时系统我还是推荐学习freertos。
分时系统的话,那肯定是Linux了,如果你跟我一样,特别喜欢Linux,你也可以直接上Linux 学习,Linux是一个很大的东西,有应用,驱动,运维,如果你做嵌入式,就一定不是运维之类的工作,所以,Linux私房菜 这类的书籍是不适合你的,你要看的是《Linux 设备驱动》,《Linux内核设计和实现》这类的书籍。
C语言是每个嵌入式软件面试必备的,我记得我在毕业的时候,去参加一个公司面试,被要求当场写一个键盘扫描的程序,刚开始是比较紧张的,我拿到这个题目的时候,也是一愣一愣的,后来我缓了一下,我认为我自己的知识储备完全可以拿下这样简单的面试题,就是那次,我当场在面试官面前写了键盘扫描的程序,虽然是很简单的代码,但是第一次面试还是比较紧张的。
我想说明一件事情,我们从大学里面学到的东西,如果都认真学习了,完全可以应对面试题目,但是面试的松弛程度,紧张程度,是需要我们不断练习,最后孰能生巧,不紧张了,表现好自己,拿下offer的概率就会增大的,网上那些100%拿下offer的分享,我是不相信的,面试本身就是技术加临场表现的,现在的毕业生,我看来技术都是差不多的,特别现在学习资料都差不多,即使刚开始有点差距,如果有学习的心态,后面能补回来也是很快的。
我前面说了下,嵌入式的工作是万金油,这个也只是相对来说的,在大企业里面,不可能让一个人从事非常多的任务,这样会导致一个问题,风险非常大,你承担的任务越多,那么风险就越大,所以大企业需要的是在某个领域非常专业的人才,从事的事情也是非常专业的,单一的。
单一的工作需要一个Leader来指挥,这就需要一个架构师,这个架构师需要指导你往哪里天聪你的代码,你拉了一车砖头过来,不能随便就乱扔吧,这就需要规则,需要架构师来制定这个规则,所以就出现了各种软件总工。大企业需要单一的某个领域的人才,但是小企业,需要的就不是了,他们需要比较全面的人才,他们没有那么多钱来请各个方面的人才,比如你要做一个手环,在小公司,那你就需要把驱动,应用,后台通信,各个功能子模块都一个人来完成。但是如果你在大公司,你可能就只负责手环的功耗部分,如果功耗有问题就来找你,其他的事情,就不是你负责的范围。
音视频这部分一直都是一个大模块,企业应该把这部分脱离开来找人,所以如果你是从事这部分相关工作的,可以深入专研。很多企业,专门成立多媒体部门,研究的就是音视频相关的技术,编解码等等,数据传输等等,都是他们要做的技术。
有的嵌入式岗位专门研究算法的,比如一些openface等算法一直,还有用matalab做一些算法运算,这些都是嵌入式相关,也是比较专一的岗位,当然了,工资也是比较高的,研究算法的人才因为对某些东西比较有研究,反过来做一些系统或者应用的开发也是如鱼得水,技术相关的东西很多都是相通的。
嵌入式硬件的不同平台,导致了在不同平台上有经验的人才就不一样,如果你是做rockchip的,那么你就具备这部分的经验,你可以一直从事rockchip方面的开发,这就是平台性相关,如果你是做全志平台的,那你可能更擅长全志平台的,如果跳槽,你找全志平台的话,会更有竞争力,别人也更看重你之前的工作经验。
对于文章中的学习资料可以在公众号回复 「 1024 」 获取,有些资料链接过期的,可以私聊我获取。
参考:https://blog.csdn.net/qq_33835307/article/details/83062526
扫码或长按关注
回复「 加群 」进入技术群聊