玩嵌入式,一般怎么入门?

听心跳的声音
嵌入式软件开发

1072 人赞同了该回答

问嵌入式怎么入门,我第一想法和大多数人一样,买块开发板,跟着例程学习,按照步骤学习就行了。

不过在回顾自己从学习到入行的过程,其实也是磕磕绊绊的。和大学里有充足时间学习不同,我大学对嵌入式并没有认真学习过,也没参与过任何的相关比赛,毕业后从事的还是电气工程师工作,1年半后才转的嵌入式(当然提前半年就开始自学了),那段时间算我人生的低谷,也是我进步最快的一段时间(因为白天工作+学习,晚上写代码测试,写总结,鼠标键盘按多了手指得了腱鞘炎),在入门的时候,我和大多数人一样,按照例程提供的顺序将驱动模块逐个学习,然后去学着实现些例程给的方案,可当我面试找工作时候,发现很多大部分面试官不关心这些驱动模块知识,他们关心的都是你做了什么,讲述你实现的思路,遇到的问题,解决的办法,如果涉及到协议,还要讲述内部的细节,这对于跟着开发板自学的我来说从没人告诉,走了很多弯路 。

上面是总结我曾经走过的路,在踏过这些坑后,自然希望分享经验让别人走的更顺利。

(1)如果还是学生,有条件一定参加大学里面的那些比赛,虽然技术含量不高,但配合软硬件开发调试的经历对于今后的发展很有助益,对于毕业后进入大公司也很有帮助。

(2)开发板一定要购买,且要选择文档资料齐全的(我即使现在手里也有两块开发板,一块单片机,一块嵌入式的,就是在业余学习新知识的时候验证下)

(3)和”hello world”一样,嵌入式是从点亮LED开始的,但后面最好不要按照模块顺序逐个学习的方式,而是先定需求,根据需求反过来学习模块,这一步对于入门门槛是比较高的,但只要花费时间踏过去了,后面其实一片坦途。如果不知道怎么算需求,那我定个稍显复杂的上位机

-下位机需求:

  1. 使用串口完成PC和设备通讯

  2. 串口使用自定义协议,包含起始位,地址,数据,结束位,crc校验

  3. 通过串口能够管理外部设备,如复位,蜂鸣器,设置DA输出,获取AD值,并在界面显示

  4. 支持串口在线升级,存储使用外部FLASH,下载支持断点重传,版本检验以及完整性检验,可自定义检验方法,如累加和,crc等。

  5. 上位机开发支持自定义串口协议的软件,使用常用能够实现图形界面的语言和框架,如c#, c++或者python皆可以。

  6. 如果有能力,支持上述自定义协议替换为FreeModbus协议,使用宏切换

  7. 更进一步,将协议和上层应用部分与驱动独立开来设计,利用宏使应用和协议部分支持多平台的移植。

更复杂的,使用Web端,能通过浏览器实现上述功能,如果这些能够自己思考后完成,基本上找到满意的工作还是简单的,上面这些其实可以分解成多个小模块实现,所以看似困难很多,实际上并不困难(无论是单片机还是嵌入式都可以实现这个需求), 我第一份工作做的就是包含上述功能,再加上和其它mcu交互,在支持telnet,snmp,modbus协议的产品。

(4)多做总结,可以自己总结记录文档,也可以发表博客,不一定全部做完了才能发,你调试成功了AD,串口通讯协议调试成功,每一步都可以总结,分享自己开发心得和问题解决方式,会写代码调试可能只是把别人的拿来用,但能够写出来讲解给别人,就一定是深入了解过的,这也是我学习过中留下的最大财富,保存至今,另外你可以看看我其它的回答,应该会对嵌入式有更深刻的认识。

(5)最后忠告一句,早点定位自己的行业,嵌入式行业工作经验和积累很重要,如通讯,安防,工控,车载,电源,物联网等,他们看似都涉及嵌入式,其实除了C和芯片技术知识,其实核心的技术完全不同,早点选择定位发展好的行业,无论升职前景还是跳槽都更好,我之前没这个认识,也是吃了很多苦头,希望引以为戒。