嵌入式开发可以说是一个较大的类别,也可以看作是应用技术的一种广义称谓。它在不同的工业和行业场景中应用不同的业务模式和领域。
举个例子,嵌入式技术结合基站通信技术,就构成了华为基站;嵌入式技术结合视频处理/图像处理技术,就构成了海康威视的视频处理器;嵌入式技术结合飞控技术和导航算法,就构成了大疆的无人机,等等。
此外,大家通常关注嵌入式软件开发的范畴,但实际上嵌入式同样也需要硬件开发的支持,因为无论是单片机还是片上系统,都离不开硬件电路板的支持。
简而言之,嵌入式实际上分为硬件工程师和软件工程师两个岗位,而且许多大型公司还设立了独立的算法工程师岗位(通常是在FPGA上开发算法)。
因此,是否嵌入式门槛高取决于你未来想从事的领域和职位。此外,由于嵌入式技术必须最终找到一个实现的领域来完成产品化和市场化,因此对应的应用场景技术也再次提高了门槛。
举个例子来说,如果你掌握单片机或片上系统编程技术,可以算是相对合格的嵌入式软件工程师,但如果你还掌握视频处理基础理论,那就可以成为一名出色的海康威视嵌入式软件开发工程师。我一直从事嵌入式(软件开发)工作,所以针对软件部分的门槛稍微聊一下。
嵌入式软件开发一般分为两大类招聘:MCU开发工程师。通常需要掌握MCU和实时操作系统技术。
许多招聘的基本配置是STM32加uCos或其他实时操作系统(如FreeRtos、LiteOs等)SOC开发工程师。需要解释一下,由于MCU的外设驱动以寄存器控制为主,操作系统也比较简单,因此没有单独设立BSP驱动开发工程师岗位。
但是在ARM+Linux的环境下,由于Linux操作系统相对复杂,从单板开机到系统引导需要专门的BSP驱动开发工程师来负责。业务开发的软件工程师我们称之为应用软件开发工程师。
BSP驱动开发工程师需要深入了解Linux、VxWork等操作系统,能够修改引导加载程序(bootloader),进行芯片外设驱动开发和调试等软件与硬件结合的工作。他们需要掌握各种外设的特性,如ddr、sram、eeprom等,并能够编写和调试基本的通信协议,如IIC、SPI、UART、Rapidio等。有时还需要使用逻辑分析仪、示波器等设备进行辅助操作。
Linux应用软件开发工程师除了要掌握基本的Linux C语言,还要了解和掌握嵌入式产品的业务场景、业务逻辑和所需的相关知识。总结来说,题主需要根据未来想从事的领域和工作以及个人兴趣爱好,选择相应的职业发展方向。无论选择哪个方向,都需要长期的技能训练和项目积累才能逐步成长。
担心自己有些技能不会?项目经历不够? 我们这里准备了一系列实操课程、实战项目、大厂面试题目,点击此处,供大家免费参考、学习~