知乎

作者:知乎用户
链接:https://www.zhihu.com/question/331105168/answer/726443596
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

在踏入工作之前,或者说在真正从事项目开发之前,你所认为的熟悉和具体的工作需求差别很大,不过因为你只是希望暑假实习,四级/二级有当然更好,没有的的话,那就是在简历中能体现出自己的"闪光点"。以你很了解的串口/网络通讯为例,串口是很简单的接口,对于底层来说就波特率,停止位,奇偶校验位,数据位这些知识,在复杂点也就涉及些流控知识,但单纯的串口往往在设计中就只能打印调试信息,具体应用是建立在基于串口实现的安全可靠的多机通讯协议上的,这并不简单,如果使用自定义协议,就要求设计帧格式,确定帧头,命令字,数据位,校验位,要定义错误数据的处理方式,在各种异常下要给予规定的反馈,通讯失败的重传机制,多次失败后的硬件强制复位和上报error的动作;如果使用通用协议如Modbus,你要去移植,并能够解决调试中遇到的各种问题,事实上我在使用自定义协议时,很多理论也来自与Modbus的开发调试经验。至于网络通讯,在别人调好的带以太网驱动的内核上,写些socket代码可不算对网络通讯了解,顶多算对socket API了解,在工作中你可能需要根据实际情况修改网口驱动,适配不同厂家的PHY或者WIFI芯片,在socket基础上,你要实现客户端/服务器,你要理解B/S或C/S架构,并基于这些知识在结合产品需求实现服务和应用。你要了解TCP/IP的相关知识,也要能够实现客户端/服务器和解决开发中遇到的问题,类似TCP/UDP的优缺点,ARP寻址的实现原理,异步/同步Socket的应用,如何保持和服务器的长连接,如何实现断点重连,如何解决不同厂商PHY的兼容性问题。上述这些问题,在项目开发中遇到过,解决自然就积累了经验。其实我在了解这些知识的时候,并没有任何人教我,我都是自己翻书,看技术文档/手册,看别人发表的博客来解决遇到的问题,然后根据自己面对的情况再去总结积累(我工作到现在纸质笔记本写满了3个,电子文档也一堆),这些知识网上到处都是,需要去发现总结。其实身边的很多产品其实都是属于嵌入式开发的范畴,以智能音箱为例,包含语音录入,上传云端,服务端处理,结果下载,语音输出,为了配置添加蓝牙功能,就是典型的嵌入式应用例子,如果你服务端用开源的接口处理,就可以自己实现个不考虑时间处理和准确率的智能音箱,如果你能系统的理解整个流程并完整实现,基本也高于一般初级工程师了,即使做不完整,实现部分也足够你踏入门槛,不在为找工作担忧了。看到这里你也应该大致了解了,嵌入式虽然是应用技术,提倡实践为主,理论为辅助,但是把实践的经验提炼出来,转化为自身积累的的知识,在配合理论深化支撑,这部分就是在行业中持续进步的根基,也是你技能中的"闪光点"。如果这些还不具备,也不用灰心,多面试总能找到合适的工作,我转行时基本1周就2个面试,而且找了2个月(当时毕业一年,还没有积蓄,后来找到工作后还是同学借了1000块钱才度过那月),你情况总不会比那时的我更惨,不过为了更好的发展,还是要多做方案并及时总结。希望上面的经验能够对你有帮助,如有需要,也可以参考我其他的回答(如嵌入式如何入门的回答),可能也会有帮助。

猜你喜欢

转载自blog.csdn.net/qq_34190043/article/details/94647101