这篇博客,我想聊聊嵌入式。在IT行业,存在着很多不同的领域与不同的职位,由此也延伸出了各式各样的工程师。但其中嵌入式工程师算是比较迷糊的一个职位了,即便同是IT的同事也有不少问过我“嵌入式是干什么的?”更别说是非IT行业的人以及刚刚入门的小白了。甚至于在我刚接触嵌入式的较长一段时间内,也都不能很好的解释嵌入式是什么?可能是由于“嵌入式”这个名字本身就晦涩难懂,以及定义模糊导致的。


由于嵌入式是软硬件之间的纽带,所以这篇博客我打算以一个电子产品从无到有的过程为主线,分析嵌入式在其中所扮演的角色,尽量通俗易懂的介绍一下嵌入式。(行文中为了保持通俗易懂,部分比喻与说法难免不甚严谨。若是有特别荒谬的原则性错误,望斧正。

虽然,百度百科上面就有对嵌入式的词条介绍,很多书籍上面以及网上一些文章里面也有对嵌入式的介绍。但都过于专业,就拿百度百科的嵌入式词条来说,更像是对嵌入式的一个总结,涉及过多的专业名词和理论知识,行文过于坚硬死板。对于刚入行的小白来说,这些文章并不友好。(至少当初我刚刚开始学习的时候就没看懂)这些文章更适合在你已经对嵌入式有一定了解之后,再回来看。它们更像是学生时代上完课之后学霸的课堂笔记一样。可以帮你把零散的知识点串联起来,做个总结,但却不能使你在完全不听课的情况下了解这些知识点。小白需要的,可能只是该迷雾与其他已知事物的联系而非该迷雾本身的构成。所以这篇博客我并不打算通过介绍嵌入式的定义,组成和分类等来说明,而是从一个产品的形成来聊一聊嵌入式。文中引用部分里的内容仅是扩展,如果理解不了可跳过。

《嵌入式》
https://baike.baidu.com/item/%E5%B5%8C%E5%85%A5%E5%BC%8F/575465?fr=aladdin
《嵌入式系统》
https://baike.baidu.com/item/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%B3%BB%E7%BB%9F/186978?fr=aladdin


嵌入式这个词虽然晦涩难懂,但其实它和我们的生活息息相关。如果身边的人问我嵌入式是什么,在时间有限而对方又不是想要深入研究的情况下,我一般会这样回答“嵌入式可以通俗的理解为用软件来控制硬件以实现某种特定的功能”。但如果有人要我认真详细的通俗易懂的介绍一下嵌入式,那么我会从嵌入式工程师是干什么的这个角度出发,以一个嵌入式产品从无到有的过程为切入点,解释一下嵌入式这个行业。

我们身边的很大一部分电子产品,其实都是嵌入式设备。当然并不是全部电子产品,像我们的通用电脑(PC)就不属于嵌入式设备的范围,它们之间的区别可查看我的另外一篇博客。像一些功能较为单一的电子产品,也不属于嵌入式设备。至于如何区分它们,我后面细说。

《通用计算机(PC)和手机是否属于嵌入式设备(嵌入式的定义)-杂谈》
https://blog.csdn.net/L_0x0b/article/details/106497327

现在的电子产品内部都是一些电路板。复杂点的像我们的手机、电脑、机顶盒、游戏机、无人机、网络交换机、路由器、汽车的控制面板、扫地机器人。简单点的像老式电视机、电冰箱、空调、微波炉、电子手表、座机、蓝牙音响、U盘、读卡器、摄像头等。内部其实都是由一块或多块电路板组成的。

需要说明的是,像哪些电风扇啊,钨丝电灯泡啊这类的连板子都没有的并不是电子产品,它们属于电气机械邻域的产品了,一般意义认为电子产品是由电容电阻之类的元器件组成的。

《电子产品》https://baike.baidu.com/item/%E7%94%B5%E5%AD%90%E4%BA%A7%E5%93%81/10573839?fr=aladdin

而这块电路板都是由一堆电子元器件和一个或多个芯片组成。拆开手边的任何一个电子产品,里面都是这样的。而我们现在的高度发达的科技世界就是由这些电路板组成的。我们身边所有的科技产品都是这种电路板。


那么这块板是怎么来的呢?从无到有,想要说清楚这个流程。首先要知道,这个世界的分工是越来越细的了,这么一块电路板是由社会上面的多个国家多个领域多个公司多个岗位一起协作制造出来的。

目前来说这个世界上还没有任何一个公司能够独立生产出来一台手机。并不是技术上面不行,而是规模很难达到那么大,强如苹果仍然有部分技术源于外部。

这块电路板上面各式各样的元器件像电容、电阻、电感、二极管、三级管以及集成电路等

以及还有一些其他的元器件如晶振,蜂鸣器,电感线圈,MOS管,各种传感器,例举起来就太多了这里就不细说了,仅电阻电容和二极管之类的由于参数和功能以及封装的不同就会衍生出几百上千种不同的型号来。其中集成电路依据不同的公司不同的功能又有几百上千种,一般认为四方形的周围或底下有引脚的都称为集成电路.CPU也属于集成电路的一种(CPU属于超大规模集成电路),广义上的CPU一般认为是个人电脑里面的CPU,所以集成电路也有另外一个名称——芯片。只是我们一般不把小型的集成电路称作芯片罢了。

《集成电路》
https://baike.baidu.com/item/%E9%9B%86%E6%88%90%E7%94%B5%E8%B7%AF/108211?fr=aladdin
《中央处理器》
https://baike.baidu.com/item/%E4%B8%AD%E5%A4%AE%E5%A4%84%E7%90%86%E5%99%A8/284033?fromtitle=CPU&fromid=120556&fr=aladdin
《芯片、半导体和集成电路之间的区别是什么?》
https://www.zhihu.com/question/26112127
《【零基础】一文读懂CPU(从二极管到超大规模集成电路)》
https://www.cnblogs.com/cation/p/11192289.html

这些硬件材料,一般由一些院校的科研机构和政府的科研机构以及一些行业巨头的大公司以及一些元器件的生产厂家在弄,他们负责研发出这些最底层的电子元器件以及集成电路来,也就是由科学研究界负责最底层的材料那一块。他们把材料研发出来了,然后把研究成果交给一些元器件生产厂家去生产这些元器件。然后一些做产品的公司就会去买这些电子元器件进行自己的产品开发和生产。

这里有三种情况,第一种是研发的公司委托生产厂家生产然后自己找客户出售,这种一般称为代工厂模式,这种一般适用于专用功能的集成电路。第二种是研发的公司研发成功后,经过宣传一些生产厂家购买其知识产权进行生产销售,这种一般适用于通用程度较高的集成电路。第三种是研发的公司自有生产线的,自己研发自己生产,这种类型的公司规模体量一般都很大。元器件生产出来了。一些经销商会大批量的从多个生成厂家那里进行代购,然后一些产品公司会从经销商那里统一采购产品需要的所有元器件进行产品的研发生产和销售。


但是单一的元器件是不能实现我们需要的功能的,我们需要把它们组合制作成满足各种各样功能需求的电路板才是一个成品。

现在基本的硬件材料有了,然后我们需要根据特定需求选择特定的元器件,并绘制原理图制作PCB板,该工作由负责硬件的工程师去完成。

该工程师在不同的公司里面由于细分的程度不同叫法不太一致,一般有硬件工程师、电路设计工程师、PCB工程师、嵌入式硬件工程师等等等等,搞软件的统一称他们为硬件工程师就对了。

硬件工程师负责把这些电子元器件组合起来绘制成原理图,他们绘制的电路板一般有两种,一种是带“控制芯片”的复杂电路,像电脑电视机遥控飞机平衡代步车等。一种是不带“控制芯片”的简单电路,像U盘读卡器充电器等。

不带“控制芯片”的电路比较简单,纯粹由电子元器件以及一些小型的集成电路模块搭建而成。而带“控制芯片”的电路板一般会比较复杂而且特征也比较明显,核心为控制芯片,外围电路均是围绕着核心控制芯片搭建的模块电路。


需要特别说明的是,为了便于理解,我上面提到的复杂电路简单电路仅仅只是一个相对概念而已,并不绝对的正确。事实上有一些不带“控制芯片”的电路也会比带“控制芯片”的电路复杂很多,这主要是由于带“控制芯片”的电路一般都是以低频电路为主。而一些由低频高频数电模电混合的电路即便不带“控制芯片”,但在设计的时候由于要考虑各个电路模块中的兼容性和稳定性等因素,其设计的难度往往更高电路更复杂。事实上由于嵌入式电路的特征较为明显,所以大部分嵌入式设备的电路板都大同小异,且一些高端设备像基于ARM的A系列芯片产品还分为核心板和底板两部分组成,核心板则是由一些像高通三星全志华为海思这些公司设计开发的,硬件工程师只需要设计底板,从设计的角度看嵌入式电路反而是更加简单的。但总体而已,嵌入式电路还是会比绝大多数非嵌入式电路复杂。


当硬件工程师把原理图绘制出来了,现在原理图和PCB都有了,把他们交给PCB制版厂家就可以生产出电路板了。下一步就需要去采购原理图里面对应的元器件,然后进行检料与贴板。

检料就是把采购到的材料与PCB板进行二次确认,确认好参数、规格与封装与原理图上面是否对应。贴板就是把元器件焊接到电路板上面去,有时在测试阶段批量少时会人工贴,量产阶段批量大时则会采用机贴,做PCB制版的厂家就可以进行贴板。

在进行采购时,大部分元器件以及集成电路都会有很多供应商,但唯独“控制芯片”例外。由于研发生产难度较大,这个“控制芯片”是由世界上顶尖的几个公司合作设计制作的,也只有他们能够提供,并且一直处于垄断地位。

具体可参考我另外一篇博客

《嵌入式芯片与通用芯片(当前世界的芯片格局)-杂谈》
https://blog.csdn.net/L_0x0b/article/details/107361944


既然说这个世界上能设计生产芯片的公司那么少,芯片的设计制造难度又那么大。如果所有带控制的电子设备都需要一颗这样的控制芯片才能正常工作的话,那么仅仅靠这几家公司设计芯片,又怎么能满足几千上万种不同的电器使用呢?难道要为了电视机单独设计一款芯片,为了电冰箱单独设计一款芯片,为了智能手表单独设计一款芯片,为了电子门禁单独设计一款芯片?或者为了一个智能灯泡单独设计一款芯片?

这显然不现实,总共就那么几家公司,他们不可能专门为全世界所有智能电子产品都设计出特定的芯片来。其实他们生产的芯片功能都是一样的,都是处理指令、运算数据。根据指令的不同可以控制芯片处理各种各样的事情。而编写这些指令的工作,则是由程序员来做了。程序员可以通过编写程序下载到芯片中去指导这个芯片工作,同时控制着外围电路和传感器,以实现各式各样想要的功能。基于这个原理,一款芯片就能够同时适应很多不同的电子产品了(你能想象电冰箱和遥控飞机和智能手表里面的芯片甚至可能是同一款一模一样的芯片吗?只是这个芯片里面的程序和外围的电路图不一样而已)。

具体想要什么功能,生产电子产品的厂家自己编程写自己的程序进芯片里面,指导芯片工作,用来实现自己想要的功能。而这个按照特点需求写特定代码进芯片里面指导芯片工作的人,就是嵌入式工程师了。

为了便于理解,我上面一段的说法并不太严谨。首先CPU能直接识别的指令我们程序员也是编写不了的,由于电平只有高低两种状态的原因,导致了电脑只能识别0和1两种数据,也就是说CPU能直接识别的指令只能是由0和1组成的。我们显然写不出全是0和1组成的程序,那样不仅难度系数太大可阅读性太低而且长度也巨长。所以程序员写的代码都是需要通过编译器进行编译才能转换为CPU能直接识别的二进制程序,即便是像汇编一样接近底层的语言也是一种符号化的机器语言,仍然需要转换为0和1组成的二进制指令。其次这些经过编译后的二进制程序也不是直接下载到芯片中去的,它们会先被下载到内存中去,然后CPU再从内存中读取指令数据到CPU内部的指令寄存器中,再对指令进行解析处理和执行。

《CPU的内部架构和工作原理》
http://blog.chinaunix.net/uid-23069658-id-3563960.html
《一条指令在cpu中的执行流程(理解CPU组成)》
https://blog.csdn.net/aigoogle/article/details/23750257


所以一块原理图是怎么生产出来的?我最后再给你回顾一下这个过程。首先,一个公司想要生产一个电遥控飞机,然后公司老板就让他们的硬件工程师设计原理图,然后硬件工程师就会和嵌入式工程师沟通,选好芯片型号确定好方案后,然后电子工程师就开始根据功能需求画电冰箱或遥控飞机的原理图,等原理图画好后。

就给到嵌入式工程师,然后嵌入式工程师就根据原理图以及芯片手册开始编程写代码,这期间硬件工程师就从世界上仅有的几家芯片公司手上买回来芯片,从一些元器件厂家手中买到需要的电子元器件,然后就委托到一些电路板制造厂家那里制作出电路板,然后把电路板交回到嵌入式工程师手中,嵌入式工程师就开始把程序烧写进这块电路板里面开始调试。

等到调试成功了之后,这个电路板就可以装进遥控飞机里面,然后老板就可以拿着这个遥控飞机去卖钱了。这就是一个电子元器件从无到有的一整个过程了。当然实际情况会比我这里说的要复杂一些,还有遥控飞机的模型,材料,和机翼的选择之类的要考虑,但整体情况差不多就这样了。

由于这个世界已经分工的越来越细了,嵌入式工程师又可细分为好几个不同的方向,大方向可分为嵌入式硬件工程师和嵌入式软件工程师。也有居于具体芯片系列分的51单片机工程师和stm32工程师、而有一些芯片由于比较高级,是可以带系统的,这就有衍生出嵌入式驱动工程师以及嵌入式系统工程师这些岗位,等等等等。且嵌入式工程师和社会上比较常见的软件工程师(像Java研发工程师、WEB前端开发工程师、Pyhton研发工程师、H5开发工程师、游戏开发工程师、MFC界面开发工程师等)不一样,虽然对外都可自称搞IT的都是写代码的,但嵌入式的代码和硬件有较大的相关性会跑在不同的硬件平台上面,而他们的代码更多的是纯软件平台的操作,更多是跑在电脑端以及手机端。

嵌入式负责控制最底层的硬件,给软件提供接口,然后他们软件工程师那边在我们提供的接口上面开发。就像你电脑上面的软件是没法直接访问电脑上面的硬件的,电脑的硬件由嵌入式控制,我们在提供接口给到电脑上面的软件实现功能。


参考:

《你不知道的过去 - Linux 系统发展史小览 (与Unix区别科普文)》
https://www.iplaysoft.com/p/brief-history-of-linux
《计算机发展史》
https://blog.csdn.net/wanddoudou/article/details/81330672

写在后面

这篇博客写完后,接下来很长很长一段时间内我可能都不会再写这种概述类型的文章了,实在是耗时太长,精力耗费太大了。这篇博客和我前面两篇博客《嵌入式芯片与通用芯片(当前世界的芯片格局)-杂谈》《通用计算机(PC)和手机是否属于嵌入式设备(嵌入式的定义)-杂谈》其实是同步写的,或者说这三篇一开始只是一篇最后被我拆分成三篇发布而已,我平时利用空余时间两周可以写一篇博客,但这三篇加在一起足足耗费了我两个多月的空余时间。
而且期间各种折磨各种没思路想放弃写不下去。它们不同于那种教学类型的文章以及那种介绍某个知识点的文章。有比较清晰的脉络可以然你像填空似的逐步完善各个段落各个小结。这种类型的文章本身就没有一条完整的脉络,想要写只能自己制造一条脉络(就像我文章里面的脉络就是“一个电子产品的从0到1”),然后依据这条脉络去写。
没有脉络想到什么写什么也是可以,网上有些文章就这么写的。不过一篇没有主线没有脉络的文章看起来是很费劲的,特别是这种概述性的文章。一篇好的文章应该是能够让读者在不知不觉中跟着作者的思路一直走到最后。并且从中了解到作者想要表达的所有东西。我文中引用的参考文章很多都能做到这点,以前没写过这种类型的文章时看觉得没什么,现在写完这几篇文章之后实在是佩服的五体投地。
有了基本脉络之后,还只是第一步,因为你想要表达的东西不一定都能很好的契合到这条脉络中去。不能写着写着突然插进来一个毫不相干的知识点来,要考虑好上下文之间的关系过渡。但你把这些都处理完了,但还只是文章的整体架构而已。
写的过程中你还要时刻注意你写的东西的准确度,总不能误人子弟,胡谝乱造,要对说出来的东西负责。你又要不断的去找相关资料,看一大堆文章(即便我写这三篇博客之前已经有一个大概的了解了,但期间为了确保文章的准确性,看的文章也至少在50篇以上,文中引用出来的文章只是其中比较好的而已)。做到这些还不够,最后在写的时候还要想方设法的尽量用通俗易懂的语言来写。期间各种删删改改,不断的重新组织语言,不断的重写。
说了一大堆,只是想发泄一下而已,最近写这几篇文章真的要疯掉了我。写这种文章真难为我这个作文都写不好的理科生了。但没写之前我也不知道我之前为什么想要写这种类型的文章,虽然整体写完确实让我学到了很多以前不是特别了解的东西。但从现实的角度说,这些提升的东西对我的编程能力提升没有半点作用。远远没有写那种对于语法知识点,代码分析之类的博客对我的提升大。而且这两个多月来,为了写这几篇博客反而很耽误我学习新的编程知识。但不写都写完了也就这样了。可能是想要把我在这方面了解的东西做个总结吧。又或者可能如我的个人简介上所说的一样吧。


零BUG是原则性问题。

嵌入式是什么?(一个电子产品的从0到1)-杂谈相关推荐

  1. 设计公司如何给你一个电子产品?

    日常生活中我们接触到的电子产品还是很多的,比如使用频率最多的手机.耳机.电脑.ipad等等,这些都是我们日常生活中都会用到的,电子产品设计的速度也很快,产品更新迭代速度是许多产品无法达到的,也许我们只 ...

  2. 作为一个极客,我是如何评价一个电子产品的

    手机 我现在在用的手机是魅蓝Note3 一台手机,对我来说最重要的是续航能力,第二是信号接收能力. 对于一个离开手机就活不了的我,续航能力必定位于第一,优秀的续航能力会让我在日常生活中不用带着一个充电 ...

  3. Java项目:仿小米电子产品售卖商城系统(java+SpringBoot+Vue+MySQL+Redis+ElementUI)

    源码获取:博客首页 "资源" 里下载! 项目描述:这是一个基于SpringBoot+Vue框架开发的仿小米电子产品售卖商城系统.首先,这是一个前后端分离的项目,代码简洁规范,注释说 ...

  4. 基于ASP.NET的电子产品销售网站的设计与实现

    在信息时代,日益普及的Internet不仅带给人们更多及时的资讯信息,而且也在生活的各个方面带给人们更多的便捷,在一定程度上改变着人类的生活方式,例如在线购物.人们只要通过Internet的连接,在个 ...

  5. 【转载】嵌入式加密芯片为电子产品版权护航

    在激烈竞争的电子以及通信产品行业,很多公司大概都有这样的经历:自己费尽心血设计的产品,投放市场不久就被竞争对手分析透了,从硬件到软件原封不动地被克隆,换了一个外壳投放市场,自己成为了自己的竞争对手   ...

  6. 一个做得很好的电子产品测评类网站:Zealer

    无意中发现了一个做得很好的电子产品测评类网站--Zealer.http://www.zealer.com/ 站长王自如很有个人魅力.尤其他在老罗发布会点评的那期节目里. 与他类似,我也是做质量评测的, ...

  7. 如今电子产品普及生活每一个角落,单片机不是青春饭也不会被淘汰

    如今电子产品普及我们生活每一个角落,单片机不是青春饭也不会被淘汰 人体的静电可达上千幅,甚至上万伏,如此高的电压很有可能把电子产品的芯片给损坏,但是在现实生活中,即使遭受很多静电,电子产品也不受其影响 ...

  8. 一个可以实时查相关电子产品价格的网站

    香港价格网,里面的价格和香港的百老汇.丰泽等的价格几乎同步,相差不大,有很大的参考价值,对于准备去香港买电子产品的网友来说,是个非常好的网站,特别分享: http://www.price.com.hk ...

  9. 永不停息的红舞步一个电子工程师的心路历程(转载)

    转载自新浪微博 传说中有一对美丽的红舞鞋,穿上它,你将舞出最美丽的舞步-- 正式从事电子硬件设计工作四年多了,回忆起接触电子的这几年,感触很多--虽然经历了很多酸甜苦辣,但也给我的生活增添了很多色彩- ...

最新文章

  1. SAP WM 业务部门Unplanned工单消耗导致WM层面单据异常问题之分析
  2. ES5-15 数组基础、数组方法、数组排序
  3. VS Code 1.38 发布!
  4. dubbo接口快速测试技巧
  5. IL应用之——用IL分析接口的本质
  6. Redis 究竟适不适合当队列来用?
  7. HDFS进阶应用 配置 NFS 网关
  8. MSIL实用指南-struct的生成和操作
  9. linux ios文件是否存在,Linux如何读取iOS镜像文件
  10. C语言程序设计(第三版)何钦铭著 习题6-3
  11. leetcode *207. 课程表(拓补排序)(2020.8.4)
  12. Python datetime日期相减
  13. POJO、PO、DTO、DAO、BO、VO需要搞清楚的概念
  14. CSS文字排版终极指南
  15. aptio2018设置u盘启动_2018年U盘装系统bios设置U盘启动方法介绍
  16. 马太效应/幂律分布的本质以及其数学表述
  17. 手机java游戏下载网站
  18. MTK手机软件系统工程和配置简介
  19. 更新Qt Creator版本后打开之前的项目,只有.Pro的问题.
  20. ffmpeg与ffdshow的关系

热门文章

  1. 如何在手机上完成日语翻译中文
  2. 可兼容所有浏览器的“收藏本站”、“设为首页”js代码
  3. 《STL源码剖析》总结
  4. 如何下载安装与火狐浏览器不兼容的火狐浏览器插件
  5. python -基本编程题
  6. Educoder Python 计算思维训练——文件操作与异常处理
  7. 认识信道(零):天线的极化
  8. 炒股杠杆放大多少合适
  9. Windows远程桌面出现CredSSP加密数据修正问题解决方案
  10. 如何用真实图案填充图片?