嵌入式工程师需要学哪些
嵌入式工程师需要学编程能力、处理器架构、操作系统等。
1、编程能力
嵌入式工程师大类上属于软件工程师的范畴,编程技能是基本功,DJI、小马智行、NINEBOT、石头科技、OPPO、小米、地平线这些公司都对C/C++要求熟练掌握的程度。除此以外对解释型语言要求为至少熟悉一种脚本语言。
了解Linux系统,会使用Makefile工程管理工具等。可见,C和C++仍旧是嵌入式开发绝对主流的语言。底层软件这么多年来,一直是C的天下,在可预见的将来,不会改变。
随着系统复杂度越来越高,越来越多的应用层软件采用C++来编写。Sehll主要用于制作工程管理工具,Python可以让你和人工智能工程师愉快对话。
2、处理器架构
美团、小马智行、石头科技、OPPO、VIVO都要求熟练掌握或者精通STM32单片机和ARM处理器架构,其它加分项有DSP、熟练使用ARM Cortex-A或M系列内核的SOC。
这部分我们需要了解Cortex-M和Cortex-A系列处理器架构。哈佛架构、冯诺依曼架构、多级流水线、是最简单的问题。SIMD、MIMD、指令预取、乱序执行这些概念也要搞懂。
3、操作系统
目前的电子产品功能越来越多,也越来越复杂,操作系统可以极大地简化产品的开发难度。大疆、美团、小马智行、小米、地平线都要求熟悉Linux下的多进程多线程、网络编程的开发和调试,内存、功耗、性能优化等。
无人驾驶和无人机,这些对响应速度要求高的行业,对实时操作系统也有不同程度的要求。在这一部分我们需要掌握基本的操作系统知识,理论结合实际,熟悉一个RTOS,大多数的RTOS的复杂度远小于Linux。Linux拥有完善的生态,相较于RTOSLinux的C库配置已经很完善了。
但是想要用好就有一定难度了,在这里需要了解内存管理、进程管理、多核、中断、锁、消息队列,性能分析等等内容来应对开发工程中帧率下降、系统秒级卡死、相机丢帧等异常。