专栏名称: 嵌入式微处理器
关注这个时代最火的嵌入式微处理器,你想知道的都在这里。
51好读  ›  专栏  ›  嵌入式微处理器

嵌入式能做什么产品?拆完家我悟了!

嵌入式微处理器  · 公众号  ·  · 2024-12-19 12:00

正文


前言

大家好,我是科岩。

这是一篇科普文章,分享嵌入式能干啥,到底什么是嵌入式。

你大概应该知道嵌入式就是基于51单片机,stm32等等芯片,还有Linux操作系统做的硬件设备,但可能这些在你脑子里都是隐约的概念。

我从一个朋友家借来了一些嵌入式设备,它们有的主控是51单片机,有的是stm32,有Linux,还有一台英伟达的AI设备。

由于不是我的,就把它们拆开,帮大家一探究竟。

文章后面,还会讨论硬件工程师和软件工程师工作内容的区别,以及大家经常问的一个问题,就是初学者要不要学51单片机,我会分享一些我不建议学习51单片机的理由。

文章比较长也比较干,希望能给刚入门的你或多或少一些启发。

还是用一个脑图呈现给大家,高清版可以到公众号下载。

51单片机

首先来看51单片机。

使用51单片机的产品一般有着非常简单的逻辑。

逻辑是什么呢?其实就是【如果xxx,就xxx】,这样的一种条件判断,所有的处理器其实做的就是这一件事。

最常见的51产品就2大类:家电和玩具。

比如遥控车:

玩具枪:

遥控器:

牙刷、筋膜枪:

破壁机:

多功能锅:

用的基本都是51单片机。

先来拆个遥控器。

里面的构造非常简单,就是一块电路板,一颗芯片和一个红外发射头。

芯片上一般都会写字,我们叫丝印,会写明这个芯片的型号,这个遥控器芯片的型号是AD918C。

这是一颗遥控器专用的芯片,我没查到具体的资料,只能说大概率是一颗51芯片。

我们再看一下多功能锅,这个锅的功能可以火锅、烧烤、清蒸,通过旋钮可以控制火力大小,有2个按键可以控制开关和定时。

所以多功能锅芯片的处理逻辑是什么呢?如果旋钮旋在某一个档位,就给对应的火力;如果按了定时按钮,就可以定时做饭。

把它拆开:

那个主控芯片是一颗韩国现代半导体公司的,A96T218芯片,是一颗51单片机。

51单片机芯片的价格非常便宜,在几毛钱到几块钱之间。

它的处理器位数只有8位,位数越大,能处理的数据量和复杂度越高。

通常我们在谈论51单片机的时候, 这个【51】 的意思,实际上指的是单片机的一种指令集架构,它是英特尔公司发明的8051指令集,由于它比较经典,使用广泛,所以我们在说起51单片机时,常常用它代指所有的8位微处理器。

像前面的多功能锅,用的是韩国现代半导体的芯片,而芯片用的指令集是英特尔的8051指令集。

而其实8位处理器除了8051,还有很多种指令集,像microchip的PIC,ATMEL的AVR、意法半导体的stm8。

后面是指令集对应的芯片型号,这些也都很常见,只不过没有8051使用广泛而已。

8位MCU的主频一般在1MHZ到100MHZ之间,这个主频越大处理速度越快。

内存的范围是128字节到8K字节,硬盘或者说flash范围是2K到128K字节,这个量级的硬盘所能容纳的代码量是几百行到几千行。

它的引脚数量一般是8个到40个脚,引脚就是芯片伸出来的这些细细的铁丝或者说导线,芯片要通过这些导线控制其他的装置或者电路,比如电机的旋转或者是金属盘的加热。

所以 【嵌入式】这个概念我们也可以定义一下了,就是 把处理器嵌入到电气装置或者机械装置的内部,控制这些装置。

51单片机的电路板一般是1到4层,这个层数是什么意思?

我们看到的电路板表面密密麻麻有许多芯片啊、电阻、电容等等元器件,仔细看上面还有许多电线。芯片的引脚,就是通过这些导电的电线连接到元器件上控制它们。

电路板的材料是绝缘的,表面上我们只能看到正面和背面,实际上中间还有很多层,每个层上也都有导线,层数越多,这个电路板越复杂。

8位MCU的电路板一般都很简单。

那么,再看我们需要掌握的技术栈有哪些。

C语言是最基本的,之后就是GPIO、定时器、中断、串口这些最常用的,想使用这些功能,就需要学习寄存器、电子学知识,再深入些,还可以看看汇编指令集。

8位MCU的知名厂商,我简单列了国内2家和国外2家。

总结一下,我们常常说的51单片机,一般用来处理最简单的逻辑功能,51的意思是英特尔的8051指令集,由于使用广泛,常常在日常口语语境下用它泛指8位的微处理器。

32位机

接下来,我们再说下stm32,它能处理的逻辑功能要比8位机更加复杂,常用的产品包括家居、安防、汽车等等,非常广泛。

先看这个智能门锁,它通过机械结构控制门上的锁芯。


它支持4种开锁方式,指纹、刷卡、机械钥匙、和密码,所以主芯片的处理逻辑很容易想到,如果指纹比对正确,就开锁;如果读卡信息正确、密码正确,就开锁。

拆开也可以看到一块电路板,上面有指纹读取的芯片、读卡的芯片、还有和手机通信的蓝牙芯片,它的主芯片型号是EFM32,是美国芯科的32位单片机。

你可能没听过这个品牌。

没事品牌不重要,你只要知道它不是8位机,而是32位的就可以了。

我们再来拆这个模拟射击的产品。

这款产品可以用来模拟训练打靶, 整个系统由枪、靶、报靶系统构成

枪不断发射激光信号,靶收到激光后,通过无线发射坐标数据给报靶端,报靶端会在靶面上画轨迹。

扣动扳机后,枪会发一个射击信号给报靶端,报靶端计算坐标,语音播报射击环数。

演示一下:

拆开看下,枪的主控芯片是一颗华大的HC32,芯片和电路板非常精细,有主控MCU,有通信芯片、激光芯片,还有控制电机的芯片。

靶面芯片是一颗兆易创新的GD32F103。

报靶端是一个STM8的8位MCU,用来接受无线信号,触摸屏的主控是安卓系统,通过串口和STM8通信,使用的是一颗64位的全志的A64芯片。

这个射击系统算比较复杂的系统了,从8位单片机,到32位单片机,再到64位的高端处理器,都有涉及。

ok,你可能会问,怎么到现在还没有STM32,STM32其实是意法半导体公司生产的arm指令集MCU的一种型号,因为它的开发工具、生态做的都很好,拉低了单片机开发的门槛,价格也不贵,所以使用非常广泛,大部分人都知道。

一款单片机做到这个程度确实很棒,让我不由得想竖起一个大拇指,如果你看到这里还没划走,会发现屏幕下方有个拇指,拜托点赞支持下科岩,鼓励我做出更好的内容。

由于大部分人都知道,所以常常说起stm32,就代指了32位单片机。

32位单片机的价格在几块钱到几十块钱的价格区间。

不像51单片机,我搜了半天没找到1块以内的。

常见32位芯片的指令集架构有这些。

最常用的当然是arm公司的Cortex M系列,使用这个架构的芯片型号有你们熟知的stm32芯片,国内兆易创新完全复制了对应版本,像我们刚刚拆的靶面,用的就是这款GD32F103。

另外,上面拆的锁的主控EFM32是Cortex M指令集,枪的主控华大HC32也是Cortex M,这个Cortex M后面如果举例常用芯片的话,这一个脑图都列不完,实在太多了。

所以与其说stm32使用广泛,不如说是arm Cortex M架构使用广泛。

除了arm,还有最近几年火热的RISC-V指令集,这是加州大学伯克利分校开源的指令集。

另外像中天微的指令集C-SKY,后来被阿里收购成了平头哥;atmel也有32位指令集,叫AVR32、微芯的PIC32也是32位的指令集。

32位MCU的主频范围大概在几十MHZ到几百MHZ之间,基本也是51的10倍。

内存范围,最小4K,最大640K字节;磁盘从2K到2M字节,能够容纳几千行到几万行的代码量。引脚数量是20到100脚,电路板层数最高6层,可能也有更多的,不过我没搜到。

软件的技术栈呢,由于代码量增加了,需要学习更多软件相关的知识,要懂数据结构、实时操作系统、还有网络,而和硬件相关的寄存器啊、电子学这些知识,稍微懂一点就够用,不用像51那样,研究每个寄存器的功能才能使用。

知名的厂商有这些。

如果你工作久了,应该都听过这些名字。

总结一下,stm32只是一款使用了arm Cortex M指令集的32位单片机的型号,由于它上手简单,所以在市场上使用广泛,而除了stm32,其实还有很多其他32位的arm指令集芯片,或者其他指令集芯片。

Linux

接下来是Linux,它比32位MCU更复杂了。

价格当然也更贵,最便宜的也要几十块钱,最贵的几千也有,它的位数是32位和64位,对应的,它做的产品也更贵了。

Linux和前面2个概念又都不相同,它既不是指令集架构,也不是某款芯片的型号,而是一个软件操作系统。

你细品会发现,这其实是个挺有意思的事。

8位单片机领域,火出圈的是英特尔的51指令集;一说32单片机,火出圈的是意法半导体这家厂商的芯片型号;32位和64位的高性能处理器领域,火出圈的是纯软件的操作系统。

广为流传的东西完全不是一回事,为什么是这样呢?

我想,可能是因为,在8位单片机上写软件,常常需要操作寄存器,调用汇编指令,所以8位机的工程师会对汇编比较熟悉,哪个汇编指令好用就用哪个芯片;

而在32位单片机上写软件,芯片厂商把寄存器的使用都封装成了方便调用的函数,大家很少需要调用汇编指令,也不需要关心芯片的架构是什么,只关心哪个厂商的函数更好用更方便就行了;

到了Linux上,芯片厂商封装的函数已经由操作系统的驱动程序调用了,我们不关心芯片架构,不用汇编,连芯片的厂商现在也不需要关心了,只需要调用Linux操作系统提供的统一的、标准的接口就能实现各种各样的功能。

所以你看,在哪个层面工作,那个层面最广泛的技术就会广为流传,当然这只是我自己的一些看法哈。

拆个家用路由器看看。

用的是一颗海思的芯片,SD5650。

再拆个马路上的摄像头。

也有一颗海思的芯片,型号是3516。

除了这个采集摄像头图像的3516,还有一颗意法半导体STM8的8位机,应该是对摄像头做简单的控制。

再拆个智能音箱。

主控是一颗晶晨的A113X。

上面这3个设备,路由器、摄像头、智能音箱,相比51或STM32的设备,又更加复杂了,使用单片机性能不够,无法实现功能,必须使用性能更高的芯片,配合功能复杂的操作系统了。

常见的能够运行Linux的芯片和指令集架构包括这些,这里嵌入式领域使用最多的是Arm Cortex A系列,其他这几种架构大部分都是用在电脑上。

能运行Linux的芯片,主频的范围一般是几百MHZ到几个GHZ,我看英特尔的CPU已经能达到6GHZ了。内存范围128M到32G,硬盘128M到1T字节,引脚的数量,我查到最少的引脚是40个,最多可以有几千个。电路板层数大致是4到30层,各个领域不太一样。

这里的软件技术栈,多了Linux操作系统的使用,和进程、线程、socket接口的调用,当然,也还有GPIO、串口这些基础的硬件接口。

在Linux 上写代码,又比32单片机更高一层,可以完全不懂寄存器、电子学和指令集,只写C语言也是没问题的。

知名厂商我也只列了一些,前面这些是国内的,下面的都是美国的,这个领域的芯片也是咱们天天说的“卡脖子”的技术,前面的32还有51都是低性能的处理器,技术含量不是特别高,美国都不管咱们,我们也并不落后。

但到了这高性能的芯片,最新的技术,上面几家和下面几家相比,还有很大差距的。

SOC

接下来再分享一个概念,SOC,它是system on chip的缩写,翻译过来叫做“片上系统”。

这个概念是相对MCU或者CPU来说的,它的意思是把WiFi、蓝牙或者4G、5G等等这些功能与MCU或CPU集成到同一颗芯片上。

如果非要咬文嚼字,其实手机、平板上的,你知道的高通、联发科还有苹果的芯片,严格来说都属于SOC,而只有电脑上的英特尔啊、AMD这些芯片才是真正CPU的概念。

SOC一般使用在集成度高的产品上,比如手机、手表、手环等。

先拆一下这个大人用的理疗仪,实际图片就不展示了,这是我画的抽象现实主义写真图。

它由一个主控板外加3个震动马达组成,主控芯片是一颗TI的CC2541,这是一颗蓝牙芯片,可以通过手机控制。它的逻辑也很简单,就是控制马达的震动频率。

再拆一个儿童手表。

手环和手表的功能大家应该都知道,除了看时间,还可以计步、定位、测心率、代替公交刷卡,相比手环,手表还能打电话、安装一些APP。

可以看到,主控芯片是一颗紫光展锐的SL8521。

它集成了arm的A系列处理器,性能更高了,还集成了WiFi、蓝牙、GPS、4G通信等等的功能。

我们来画个图更直观做个对比看看。

如果一个智能手表用MCU的方案实现,大概会是这样:

中间是处理器,其他功能用特定的模块通过spi、i2c、串口等等协议进行通信。

如果是SOC实现的方案:

会将蓝牙、wifi等等这些常用功能,集成到一颗芯片中,再通过spi或者其他协议和不是很常用的功能芯片通信。

相比之下,MCU的方案更加灵活,可以任意增减功能;而SOC的方案集成度更高,可以做成非常小巧的产品。

SOC的厂商,除了上面提到的那些手机、平板芯片,还有蓝牙、wifi的芯片,下面是比较常见的厂商。

XPU

我们再说最后一种芯片,XPU,就是各种PU,有GPU、NPU、TPU还有DPU,这些能进行大规模人工智能算法的芯片。

GPU:Graphic Processing Unit,图形处理器

NPU:Neural Processing Unit,神经处理器

TPU:Tensor Processing Unit,张量处理器

DPU:Data Processing Unit,数据处理器

这类芯片的常见产品包括自动驾驶、人脸识别等等功能。

我那个朋友从这种人脸识别自动售货柜里:

拆下来了一个盒子,可以看到,这个盒子上有很多接口,可以接485、继电器、网线,还能插SIM卡。

现在把它打开看看。

有一颗4G的通信模组,用来和云平台通信。

有一颗stm32f407的MCU,这应该是实现货柜的开关门之类的控制功能用的。

还有一个英伟达的Jetson边缘AI处理器,用它实现人脸识别。

XPU的位数一般都是32或64位,指令集架构呢,我搜到这几个:

PTX是英伟达自己的,MLU是咱们国内专做AI芯片的一家公司寒武纪自己的指令集。

XPU的性能呢,是用TOPS作为单位,意思是处理器一秒钟可进行几万亿次的操作,也可以换算成CPU的主频。

然后,比较知名的芯片厂商有这些:

前面几家都是国内的,后面是国外的几个大厂。

相关岗位

再来说下嵌入式的相关岗位。

我前面说到的,51单片机、stm32、linux还有XPU,所有的产品都是芯片、电阻电容、电路板,外面套个壳子组成的。

你能看见的外壳,其实是结构工程师的工作。

比如门锁:

它里面结构很复杂,电路板怎么摆放、哪里需要打螺丝开孔,哪里需要装电池,哪里是塑料,哪里是金属,最后这个外观好不好看,外观是工业设计我就不细分了,我们都认为是结构工程师的工作。

一名结构工程师的工作就是画图,需要的技能包括机械设计、材料、建模这些知识。

硬件工程师的工作也是画图,他要把芯片、电容电阻这些元器件用电线连起来,画成电路图给电路板的生产厂家来生产电路板。

需要掌握的技能就是各个芯片、元器件的功能、特性是什么样的,按照一定的规则把它们用电线连起来。

最后是软件工程师的工作,就是写代码控制各个元器件,软件工程师的工作是表面上你看不到的,他们实现了整个产品的各项具体功能。

需要掌握的技能就是操作系统、数据结构这些计算机软件相关的知识了。

无论是51、stm32还是Linux、XPU,本质上,这几个岗位工程师的工作没有任何区别,只不过就是简单与复杂的关系。







请到「今天看啥」查看全文