您的位置  > 互联网

嵌入式领域比作房地产建筑行业,你造吗?

嵌入式是用于制造产品或控制系统的一类技术的总称。 我认为把嵌入式视为一个行业是错误的。 可以说智能电视是一个产业,无人机也是一个产业。 它们都使用嵌入式技术。

整个字段如下所示:

英国有一家芯片设计公司,叫arm。 ARM是一家非常特别的公司。 它只设计芯片,不生产芯片。 我们把arm设计的输出称为芯片核心。 是整个领域最上游的公司。

将嵌入式领域与房地产、建筑行业进行比较。

(1)arm公司是架构设计师,而且这些设计师的能力都非常强。 他们只设计图纸。

(2)IC设计公司是房地产公司,房地产公司也有自己的设计师。 但这些设计师购买了ARM公司设计的图纸,进行二次开发。 并根据自己房产项目的侧重点对图纸进行不同的修改。

比如,如果是急需的项目,那么房屋的整体面积就应该减少到100平方米左右; 如果是酒店地产项目,则应扩大房间; 如果是别墅类房地产项目,则应增加层高。

即IC公司购买ARM公司设计的芯片设计图纸后,设计出适合其目标行业的芯片。 我们也称这类公司为SoC芯片原厂。

例如,意法半导体公司在收到ARM公司的图纸后,根据微控制领域的特点,设计出了目前非常流行的stm32芯片。 例如,华为海思半导体在拿到ARM公司的图纸后,针对路由器等通信领域设计了相应的芯片。

这些公司只进行图纸的二次开发,这些公司的输出仍然是图纸。 因为他们本身没有能力把图纸变成芯片。 华为找到台湾的台积电晶圆代工厂,请他们根据海思设计的图纸帮助加工芯片。

这就好像一个建筑设计师没有能力盖房子一样。 他们设计好建筑图纸后,需要找专门的施工队按照建筑图纸来建造房子。

(3)产品企业较多。

比如无人机公司,很多四旋翼无人机公司都采用意法半导体的stm32来进行无人机主控。 例如,Oppo手机使用高通芯片来制造手机。 例如,小米使用芯片制造智能电视。

(4) 解决方案公司

有些公司自己制造无人机,进行研发,找代工厂生产,然后贴上自己公司的标志出售。 这种类型的公司是产品公司。 但如果产品公司不想开发自己的产品,比如因为没有足够的人力或者知识储备,那么这些产品公司就会找解决方案公司,俗称外包公司,来帮助开发产品。 产品开发出来后,他们就会隶属于产品公司。 标识。

一些大型工业设计公司也会承包产品解决方案的设计。 工业设计的首要工作是帮助客户设计产品结构; 如果设计公司有供应链、开模经验,一些初创公司也会面面俱到。 对于设计公司来说,这里的设计公司实际上扮演的是解决方案公司的角色。

2.CPU架构及职业选择

Arm针对当前市场设计了三种不同的架构。

(1)针对微控制器领域,设计了-M架构。 比如意法半导体拿到了这张CPU架构图,并基于它设计了stm32; 飞思卡尔也拿到了这张CPU架构图,这里基于此设计了k60。 基于这种架构设计的CPU主要是基于之前的51单片机,也俗称MCU、单片机。

-M架构分为很多细分系列:

例如低功率系列-M0。

通用微处理器领域,-M3。

在高性能微处理器领域,-M4。

除了增加了特定的功能模块和提高了性能之外,它们之间本质上没有区别。 如果您了解一种类型,您就可以轻松学习其他类型。

智能磨面机、空气净化器、3D打印机或者很多无人机都采用这种架构的CPU作为主控。 如果你是做这类产品,你需要按顺序学习以下知识:

[1] C语言

[2]stm32芯片裸机编程,即用C语言操作各种外设。

[3]实时操作系统。

[4] 模拟电路设计、MCU外围电路设计。

然后我会做一个从0到1的项目,包括软件和硬件。

可以提供以下职位:

(1)stm32工程师、单片机软件工程师、嵌入式软件工程师。

(2)嵌入式硬件工程师。

大公司一般划分比较细,有专门的嵌入式stm32软件工程师和嵌入式硬件工程师。 最好的办法就是去51job等招聘网站上搜索一下,看看这些职位需要什么样的专业知识。

这种设计主要是针对MCU外围电路设计,主要是需要掌握MCU和模拟电路。

这两个主要是软件方面的,以C语言和ARM微处理器为核心。

如果你只是想制作一架无人机:

如果你只想进行电机控制:

如果你没事干,就去招聘网站看看这些招聘信息,你就知道自己想学什么了。

(2)针对消费电子领域,设计了-A架构。 -一个架构也有很多系列。 比如单核CPU架构——A8、四核CPU架构——A53等。三星获得了ARM设计的架构图,为智能手机行业设计芯片。 联发科获得了ARM设计的架构图纸,为智能电视行业设计芯片。

手机、智能电视、机顶盒、智能音箱等产品比微控制领域的产品更加复杂。 此类产品一般直接运行在Linux或. 所以,在这种嵌入式行业,分工比较明确,基本上都是比较大的公司。 由于人数少,小公司很难有这样的技术储备,处理起来比较困难。

该产品非常复杂。 以我之前从事的智能电视行业为例。

xx公司(一家芯片原始制造商)获得arm架构的授权后,开始专门针对智能电视行业设计SoC。 例如,它将音视频编解码硬件模块集成到SoC中,并将自己的wifi芯片集成到SoC中。 图纸设计好后,首先会在芯片模拟器上预览,看看芯片设计是否有问题。 如何预览? 这是软件团队的工作。 软件团队下设一个团队(uboot团队)、一个Linux内核团队、一个Linux驱动团队、一个团队。

团队会先将uboot移植到芯片模拟器上并先运行; 那么Linux内核团队将负责运行Linux。 驱动团队通常还负责uboot驱动。 驱动程序全部就位后,然后,一步一步地让整个系统运行起来。 如果没有大问题,就把图纸给台积电,让他们制造(这个过程也叫流片)。 拿到芯片样品后,在真实芯片上重复上述步骤。

您需要按顺序学习以下知识:

[1] C语言

[2] -对于A8架构的处理器,例如三星的,对应的开发板厂商有:深圳九鼎或者友善之臂等。对于软件工程师来说,SoC是单核还是多核并不重要。 软件开发没有本质区别。 而且信息量很大,学习起来更容易。 一旦学会了,基本上就可以和其他多核处理器无缝对接了。

[3]uboot,你知道如何使用uboot命令以及如何移植它。 如果想更深入的话,还可以研究部分源码。

[4]Linux应用,主要学习Linux系统API,知道如何调用以及在什么情况下使用什么。

[5] Linux驱动,驱动往往是最难的,但这只是开始。 一旦知道了套路,也就仅此而已了。

还有一类工作是和整个系统相关的。 注意,不是app开发,而是主要开发。 应用程序调用提供的API,这些API本身调用Linux驱动程序,然后Linux驱动程序通过写入寄存器来操作硬件。

因为只有原始芯片制造商真正熟悉这个SoC(因为他们自己设计的),并且设计它的人比任何人都更知道如何使用它。

因此,原SoC厂商已经完成了芯片、智能电视主板以及配套系统软件的开发。 基本上一开机就可以正常看电视了。 把这三个卖给产品公司,比如海信电视、小米电视、或者TCL电视。 TCL从原厂拿到这三样东西后,如果需要修改,比如重新定义电视按键的功能,可以TCL自己修改,也可以请原厂帮忙修改。 这里涉及三种类型的工作。

SoC原厂自己的Linux驱动程序或系统工程师。 SoC原厂与TCL产品公司的对接需要SoC原厂FAE和TCL公司FAE的参与。 如果FAE无法解决问题,请致电SoC原厂的Linux驱动工程师。 帮助。 TCL也有自己的Linux驱动工程师,但他们对芯片的了解肯定不如原厂驱动工程师,所以大多需要原厂驱动工程师的配合。

公司有几个专有名词:

(1)FAE:现场工程师。 比如产品出现问题,原厂会派自己的FAE给客户出差去解决问题,所以FAE需要经常出差。 而且商务旅行通常是永久性的。 我以前的一个同事在青岛海尔电视台呆了半年,出差津贴还蛮高的,当时我们都很羡慕。 如果出差期间无法解决问题,原厂会请公司研发人员协助。

但如果应届生一出来就直接去FAE,离职率会比较高。 相对而言,FAE着眼于大局,对整体项目和产品有更好的了解。 有点类似于小公司的产品经理。 这对您来说是理想的选择。 对于从事技术工作的年轻人来说,他们可能无法学习特定的技能,因此流动率相对较高。

最好先干几年技术再去大公司做FAE,这样更有信心。 有不少女孩在做FAE。 毕竟不需要写代码,这就挺好了。

(2)PM:项目管理/项目经理。 负责协调资源并与客户联系。

(3)RD:研究开发工程师。 需要写代码的和需要画原理图的。 需要有钻研精神,一般负责搭建平台,跑通基础代码。 还有更多的男孩。 对于软件来说,通常是用C语言开发的。

(4)AE:业务工程师。 RD运行完整个系统后,下一步就是AE根据客户的需求编写产品的具体业务逻辑。

可以理解为他们只是在做项目,比如做智能音箱。 至于智能音箱运行的Linux系统则无需担心。 他们只需要基于Linux系统开发智能音箱产品本身的业务逻辑。 通常用C++开发。

最好去SoC原厂做驱动,因为技术性更强; 但原厂不多,所以大部分Linux驱动工作都是在产品公司完成。

对于一些产品,比如车机系统,购买原厂芯片后,只要系统或者Linux系统能够运行,车机系统本身剩下的软件开发大部分都是由产品公司自己完成。 公司可能只有一两个驱动工程师,剩下的就是Linux应用工程师。

Linux 应用程序有很多工作。

职位包括:

Linux驱动工程师

Linux应用工程师

以上两家都是产品公司。

寒武纪和联发科都是原生SoC厂商,以上就是原生的驱动工作。

作为原厂的Linux驱动工程师主要做什么工作?

工作内容主要有四类:

(1)解决产品Bug。 当然,这个bug肯定和你维护的模块有关。 例如,如果您正在维护gpio按钮模块,如果产品测试人员(即QA)发现该按钮不起作用,无论您如何按下它都没有响应,在经过bug管理系统后,该bug领导会分配给你,然后你就需要处理。 这样的工作并不多,因为驱动往往都很稳定,基本没有bug。

(2)解决客户定制需求。 例如,TCL有一个新要求。 连续按两次电视按钮后,电视进入主界面。 您恰好正在维护按钮模块,因此您需要编写代码来实现它。 这种类型的工作不会有很多。

(3)由于芯片迭代,您维护的模块的寄存器发生了变化。 您还需要修改代码,以便驱动程序可以在新芯片上继续使用。 这类工作很多,芯片基本上每个月都会迭代一次,包括一些客户定制的芯片。

(4)Linux系统迭代,例如Linux系统从4.9升级到5.0。 如果你负责的模块恰好调用了内核接口,比如申请中断或者申请gpio,如果这些接口恰好发生变化,那么你也需要修改驱动代码。 。 此类工作通常每两年进行一次。

原厂制作Linux驱动相对稳定且容易。 工作基本上有两个周末休息,福利很好。

还有一些比较专业的行业。 比如音视频编解码行业。 一般需要先学c++、qt,然后再学,。

(3)关于军工中的-R架构,我从来没有接触过这种架构的CPU,所以很难自己写出什么东西。

三、专业术语含义

-M、-A、-R是arn公司设计的CPU核心,是核心的东西。 arm7是arm之前设计的架构,不再维护。 armV7和armV8指的是cpu指令集。 -A8使用arm-V7指令集(可以理解为汇编语句)。

4.总结,内嵌进阶路线,仅供参考

嵌入式是一个领域,而不是一个行业。 不同行业的嵌入知识不同,但基础是相同的。

(1)大学阶段和工作一年。 如果从大二开始学习嵌入式的话,总共就4年了。 在这段时间里,你可以学习嵌入式、stm32、rtos、模拟电路、电路设计、arm裸机、uboot、Linux应用、linux驱动等基础知识。

(2)工作两年左右后,学习行业知识:找到自己感兴趣的行业,因为每个行业对应的行业知识是不同的。 例如,在无人机行业,需要学习无刷直流电机控制和飞行控制算法。 例如,在音视频行业,如果你在做底层,Linux摄像头驱动、编解码模块(但是这个只能在原厂才能真正访问到); 如果你正在开发应用程序,那就是这些。

每个行业所需要的行业知识是不同的。

(3) 花一到两年的时间研究行业标准并弄清楚您的产品需要哪些认证。

每一种产品都不能随便在市场上销售,必须有相关的认证。 了解认证、上游和下游供应商。

如果你还在上学,有大把的时间学习嵌入式,不用担心该不该学硬件,该不该学Linux,还是只做stm32。 如果你延长你的职业生涯,你会发现你学到了很多东西。 你学得越多,你学得就越快。 当你以后找到自己感兴趣的行业时,你就会重点学习该行业的专业知识。

如果你换工作或者选择其他职业,嵌入的工资是平均水平。 与互联网行业相比,薪资还是比较低的,而且学习内容也很多。 如果没有人告诉你如何学、学什么,很容易陷入困境而无法抽身。 , 要小心。 但一旦进入这个行业,因为门槛比较高,你的职业生涯就能得到很好的保障,而且在硬件工作的时间越长,它就越有价值。

在所有嵌入式行业,基础知识始终是C语言、ARM处理器和模拟电路。 剩下的就看具体行业了。

此时,你已经毕业3、4年了。 包括上学的那几年,你可能已经在嵌入式领域工作了七八年了。 你已经是大师了。

文章也将第一时间发布在微信公众号上。 希望大家扫描二维码给予我支持,从0到1开始学习嵌入式,也祝愿大家前程似锦。