容易混淆的嵌入式(Embedded)术语

news2025/1/31 8:09:37
因为做嵌入式开发工作虽然跳不出电子行业,但还是能接触到跨度较大的不同行当,身处不同的圈子。诸如医疗,银行,车载,工业;亦或者手机,PC,专用芯片;甚至可能横跨系统开发、驱动开发、应用开发。计算机本身以及涉及的一众基础学科无外乎都是舶来品,再加上不同圈子存在思维模式上的差异。所以就会出现每一种不同的圈子,可能对同一个东西,有不同的称谓,而同一种称谓,也可能对应的东西不一样,容易出现很多驴唇不对马嘴的沟通。
本文针对常见在不同圈子容易引起误解的嵌入式概念,尽可能的说明白有哪些差异,这些差异是怎么来的。 💾

下图是典型的计算机系统,还可以看到负责CPU与内存的数据交换、图形处理、CPU与PCIE数据交换的北桥芯片,现在的CPU制造工艺越来越先进,集成度越来越高,内存控制器已被集成到CPU里,就连显卡也被收进CPU了(就是我们所说的核显),而PCIE控制器收归南桥管理了,因此北桥芯片组的功能被瓜分了,所以现在的Intel芯片组把北桥取消掉只剩南桥了,而AMD也只有早期的主板还保留着北桥和南桥。

处理器

处理器的这种解释我个人比较认同:计算机处理器是解释和执行指令的功能单元,也称为中央处理器或cpu,它是计算机的中枢神经系统,与处理器和内存周围被称为外设的设备形成对比,如键盘、显示器、磁盘、磁带机等都是外设。 每一种处理器都有一套独特的操作命令,可称为处理器的指令集,如存储、调入等之类都是操作命令。

而典型的计算机系统处理器(central processing unit),则是我们在嵌入式开发中最容易混淆的一个概念,因为我们在沟通时常常忽略了中央(central)这个定语。这个定语描述了这个处理器在整个系统架构中的地位,GPU也是处理器,但是它不能称为中央处理器。而我们只要在计算机背景下,那么处理器往往都是指中央处理器,但是针对别的电子产品,则不尽然,尤其是嵌入式行业,我们把处理器分成了以下常见的几种:

  • MCU(Mirco Controller Unit):这个是我们常说的微控制器。在是计算/控制单元小型化后出现了运行频率低、运算能力一般,但是需要集成化程度高(集成原“芯片组"的各类接口和部分"外设")、价格低廉(辅助系统不应增加太多成本)等因素。由于主要完成“控制”相关的任务的芯片形态。也就是根据外界的信号(刺激),产生一些响应,做一点简单的人机界面。针对在技术推演过程中产生的这种需求,芯片的主频普遍不高,并不需要很强的运算/处理能力,也不需要由大容量的存储器来支撑大的程序。

  • MPU(Micro Processor Unit):这个就是我们常说的微处理器。MPU从一开始就定位了具有相当的处理和运算能力,一帮需要运行较大型的操作系统来实现复杂的任务处理。因此这就决定了MPU应该具备比较高的主频,和较为强大的运算能力。早期经典的Arm 9系列MPU频率就在200MHz-400MHz。现在手机上使用的高端MPU更是到达了3GHz,和主流的桌面处理器是一个级别了。和通用的桌面处理器一样,MPU现在也普遍“多核化”。

  • DSP(Digital Signal Processing):DSP 芯片能够实现数字信号处理技术的芯片,内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,可以用来快速的实现各种数字信号处理算法。它的主要特点就是运算速度快,强调数字信号处理的实时性,适合较复杂的多算法任务。如果想要更快的处理信号,还有FPGA可供选择,但是它就不具有软件的灵活性。

  • SoC(System on Chip):片上系统,如果说中央处理器(CPU)是大脑,那么SoC就是把大脑、心脏、眼睛和手集成到一个片子上,通过一条流片线来生产制作。这意味着,在单个芯片上,就能完成一个电子设备所需要的所有功能,而这个设备在以前往往需要一个或多个电路板,以及板上的各种电子器件、芯片和互连线共同配合来实现。SoC有两个显著的特点:一是硬件规模庞大,通常基于IP设计模式;二是软件比重大,需要进行软硬件协同设计,通用的SDK可以将Soc应用到不同的场景。

存储

我们在京东等网购平台买苹果手机的时候,不同的机身内存,128GB和256GB往往能差出几千块钱,但作为计算机出身的你,肯定对这个内存的大小产生疑惑,我PC机16G的内存已经很大了呀,手机竟然能到128GB?👀莫急,我们去看看苹果官方对这个参数描述为"存储空间",这就准确多了。

其实苹果手机的内存容量不过6GB,而这个动辄几百GB的存储空间是非易失性存储(掉电不丢失)。这个问题是怎么引入的?究其原因还是个翻译问题,内存原本叫 Memory,存储叫 Storage,问题就就是从内置存储(Internal Storage)被翻译成了“内存”开始。既然这个非易失存储器占了"内存"这个坑,那么在手机行业还有个"运存"的说法。嵌入式对存储器又进行了更为细致的划分:

存储器可以从是否可重复写入,是否可随机访问,是否可以掉电存储分成很多种类。

  • 随机存取存储器(Random Access Memory,RAM),也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。RAM工作时可以随时从任何一个指定的地址写入(存入)或读出(取出)信息。它与ROM的最大区别是数据的易失性,即一旦断电所存储的数据将随之丢失。RAM在计算机和数字系统中用来暂时存储程序、数据和中间结果。其中DRAM主要用于容量较大的主存储器,PC中的DDR就是双倍速率同步动态随机存储器,而SRAM多用于容量较小的高速缓冲存储器。

  • ROM 是 read only memory的简称,表示只读存储器。只读存储器(ROM)是一种在正常工作时其存储的数据固定不变,其中的数据只能读出,不能写入,即使断电也能够保留数据,要想在只读存储器中存入或改变数据,必须具备特定的条件。

  • FLASH闪存是在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。NVRAM在FLASH的基础上又提供了更快的以字节为单位的访问以及更快的读写速度,EEPROM这个称法是对于紫外擦除的rom来讲,非常适合需要频繁的改写某些小量数据且需掉电非易失。

架构、驱动与应用

当我们在讨论架构的时候,我们在讨论什么,到底什么是架构?下面是ChatGPT给我的答案:

架构指的是系统或应用程序设计的结构,包括组件、模块、数据流等的组织关系、通信协议、部署方式、运行环境等方面的设计,旨在满足用户需求、提高系统性能、可靠性和可维护性。架构是系统设计的基础,它决定了软件系统的质量、可扩展性、可重用性和适应性。架构设计需要考虑多个因素,如系统规模、业务需求、技术选型等,具有高度的综合性和复杂性。

我针对AI给我们的答案,对比上图所示安卓系统的架构,给出一个我对架构的理解。首先,架构是针对一个完整的产品或者程序工程而言,其次它定义了这个完整应用或者系统程序的层级结构,每一层处理的事务不同,层与层之间会有统一的接口相互调用用以传输数据和事件。最后每一个层级内部又进一步划分了不同的功能模块,功能模块统一在本层进行管理。

下图是Ti公司AM273X芯片中SDK的架构,这个我们嵌入式开发中接触到的架构可以类比为安卓的系统架构,它还提供了一个应用Demo用于连接其提供的上位机软件来配置波形和显示点云数据。

下图是汽车开放系统架构(AUTOSAR),这个我们嵌入式开发过程中接触到的架构可以理解对比理解为安卓应用架构,是汽车领域对于其应用程序的开发需要符合的标准架构。

现在我们知道了什么是架构,那么什么是架构开发?以系统开发为例,1991年10月5日,Linus发布了Linux的第一个“正式”版本: 0.02版。Linus做的工作是系统开发吗?当然是,而且我相信他一定具有很强的跳跃性思维。那现如今由全世界几百个程序员共同共同设计开发维护,他们是不是做的架构开发,当然也是了。那我们嵌入式工程师,在别人提供的SDK之上,裁剪了一部分不需要的功能,又基于别人写的应用demo,适配了行业对应用架构的部分要求,我们是在做架构开发吗?不,我们不是,这里我没有妄自菲薄,整个行业技术的推演就是这样,我们做的,仅仅就是嵌入式开发。我相信只有对自己干的事情又清楚的定位,才能干的长久,干的更好。


什么是驱动?我们继续来看看ChatGPT给我们的答案。

驱动是一种软件程序,它连接着计算机系统中的硬件组件和操作系统,充当着硬件与操作系统之间的翻译器。驱动程序将操作系统所需的指令转换为硬件能够理解和处理的指令,从而使操作系统能够与硬件组件进行通信和交互。驱动程序一般由硬件制造商或第三方公司开发,用于支持特定的计算机硬件设备,如显卡、网卡、声卡、打印机等,使其能够正常工作。为了保证驱动的兼容性和稳定性,用户需要根据自己的计算机硬件配置选择正确的驱动程序,并确保驱动程序得到及时更新和维护。

这次ChatGPT给我的答案我比较满意,驱动程序一般由硬件制造商或第三方公司开发,用于支持特定的计算机硬件设备,如显卡、网卡、声卡、打印机等。这句话点出了驱动的真正编写者的身份,他提供的显卡驱动可能是针对某个特定的系统,比如Windows系统,或者Linux系统,而我们嵌入式工程师可能需要基于别人提供的驱动程序,在一些实时操作系统(没有设备管理)下使用,做一些裁剪。我们可能为一些诸如DS18B20这种小的传感器,包一层符合Linux系统定义的驱动模型,包括模块的加载以及一系列调用接口实现,而后将其加载进Linux系统。我们是在做驱动开发吗?显然也不是。

这里我没有提基于STM32标准库的开发,因为诸如SPI/I2C控制器我们大部分也是改改参数适配外围相连的传感/控制器,而传感/控制器本身运行复杂的又有写好的驱动,简单的照着手册上功能/寄存器说明也就够了,但这不是驱动开发,我想读到这里的你应该理解我的意思📀。所以,我们做的这些工作,依然是嵌入式开发的范畴。


什么是应用?我们来看看ChatGPT的答案。

程序?
应用程序是一种计算机软件,它被设计用于执行特定的任务或功能,例如文档编辑、图像处理、游戏等。应用程序通常是由程序员编写的,可以在计算机、手机、平板电脑等设备上运行。

大部分新闻上称的程序员,都是做应用开发的。他们能够面对到真实的用户需求,而用户使用他们的程序只需要登陆某个网址或者下载某个APP就可以了。而我们嵌入式写的程序,只能在特定的智能硬件设备上运行。那我们将交通,或者工业医疗等行业相关的业务逻辑在某个智能手环或者车载雷达中实现的时候,我们在做应用开发吗?我认为并不是。就拿车载雷达EOL标定功能,它的应用背景是在汽车产线上安装雷达时,可能会由于操作的原因将雷达在可以补偿的范围内装歪了,我们通过标定流程(将汽车驶入标定工位,识别原点角反)来补偿安装过程中引入的误差。这部分实现确实是我们嵌入式开发的范畴,但是它不是应用开发。它太固定了,而应用开发需要遇到更多问题,并发,资源互斥,组件间相互调用,等等一整套完整的思路,一说应用开发就是基于web应用,UNIX环境高编,安卓/ios应用开发,会有基于一套统一的API,按照一种框架和模型进行开发,而我们嵌入式“应用”做的,远没有那么多。所以,依然是嵌入式开发范畴。


十六宿舍 原创作品,转载必须标注原文链接。
©2023 Yang Li. All rights reserved.
欢迎关注 『十六宿舍』 ,大家喜欢的话,给个 👍 ,更多关于嵌入式相关技术的内容持续更新中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/396568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue常见的事件修饰符

前言 vue一共给我们准备了6个事件修饰符,前三个比较常用,后三个少见,这里着重讲下前三个 1.prevent:阻止默认事件(常用) 2. stop:阻止事件冒泡(常用) 3. once:事件只触发一次(常用) 4.captrue:使用事件的捕捉模式(不常用) 5.self:只有event…

案例10---对生产环境的敬畏--生产环境

一:背景介绍 1:上午9:23,老师没有进行上课,但是却又很多的在线人员,并且在线人员的时间也不正确,用户反映问题。 2:开发人员发现用户上课情况异常。 3:10点整,询问项目…

Notepad++ 下载与安装教程

文章目录Notepad 下载与安装教程Notepad 简介一,Notepad 下载二,Notepad 安装Notepad 下载与安装教程 Notepad 简介 Notepad是程序员必备的文本编辑器,Notepad中文版小巧高效,支持27种编程语言,通吃C,C ,Java ,C#, XM…

Android Execution failed for task ‘:app:mergeDebugJavaResource

错误提示 FAILURE: Build failed with an exception.* What went wrong: Execution failed for task :app:mergeDebugJavaResource. > A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction> 2 files found with path k…

不写代码、年薪百万,带你玩赚ChatGPT提示工程-提示应用程序

文章目录前言一、数据生成二、PAL (Program-Aided Language Models): Code as Reasoning总结前言 随着ChatGPT的大火,提示工程在大模型中的重要性不言而喻,本文参考国外Prompt Engineering Guide完成国内中文版本的《提示工程指南》,希望能够…

一文读懂倒排序索引涉及的核心概念

基础概念相信对于第一次接触Elasticsearch的同学来说,最难理解的概念就是倒排序索引(也叫反向索引),因为这个概念跟我们之前在传统关系型数据库中的索引概念是完全不同的!在这里我就重点给大家介绍一下倒排序索引&…

DOTA双功能螯合剂127985-74-4,p-SCN-Bn-DOTA,实验室科研试剂

p-SCN-Bn-DOTA产品描述:p-SCN-Bn-DOTA用于标记多肽的双功能螯合剂,同时螯合放射性核素和连接单克隆抗体。DOTA 的全名是 1,4,7,10-Tetraazacyclododecane-1,4,7,10-tetraacetic acid,中文名称为 1,4,7,10-四氮杂环十二烷-四乙酸,其…

Linux中断操作

一、thread_irq在内核中, 除了可以通过request_irq() 、 devm_request_irq()申请中断以外, 还可以通过以下二个函数申请( 它们比request_irq和devm_request_irq多了一个参数thread_fn)。 用这两个API申请中断的时候, 内核会为相应的中断号分配…

steam海外道具搬运,2个月变现1.6万,真的假的?

这几年的环境,让我这个身负房贷的房奴,实在是喘不过来气! 也是无意间在朋友圈看到,之前突然裸辞的同事,不知道干什么发了财,竟然自己开了公司! 几经询问才知道,他就是利用steam海外…

微内核架构的理解

什么是微内核架构 相信大家都听说过微内核架构,也或多或少做过一些类似于微内核架构的设计,为了可以更好的设计出微内核的架构,我们了解下什么是微内核架构。 说到微内核架构,大家首先会想到的是Eclips、IDEA、OSGI、Spring Plugi…

CAD连续标注怎么操作?CAD连续标注尺寸命令使用技巧

CAD标注工具可以在图形中创建多种标注,并可对标注样式进行修改或编辑。但是有些新手设计师在绘图过程中,不知道CAD连续标注怎么操作,其实很简单,本节内容就给大家分享一下浩辰CAD软件中CAD连续标注尺寸命令的使用技巧吧&#xff0…

005+limou+HTML——(5)HTML图片和HTML超链接

1、图片标签<img> &#xff08;1&#xff09;图片标签属性 [src]&#xff1a;用于指定这个图片所在的路径&#xff0c;常使用相对路径&#xff0c;比较少使用绝对路劲。如果图片路径有错误的话&#xff0c;就会发生图片显示错误[alt]&#xff1a;用于指定图片的提示文字…

三天吃透mybatis面试八股文

本文已经收录到Github仓库&#xff0c;该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点&#xff0c;欢迎star~ Github地址&#xff1a;https://github.com/…

HDFS读数据流程

1&#xff09;客户端通过Distributed FileSystem向NameNode请求下载文件&#xff0c;NameNode通过查询元数据&#xff0c;找到文件块所在的DataNode地址。 2&#xff09;挑选一台DataNode&#xff08;就近原则&#xff0c;然后随机&#xff09;服务器&#xff0c;请求读取数据…

蚂蚁感冒(简单数论)

长 100 厘米的细长直杆子上有 n 只蚂蚁。它们的头有的朝左&#xff0c;有的朝右。每只蚂蚁都只能沿着杆子向前爬&#xff0c;速度是 1 厘米/秒。当两只蚂蚁碰面时&#xff0c;它们会同时掉头往相反的方向爬行。这些蚂蚁中&#xff0c;有 1 只蚂蚁感冒了。并且在和其它蚂蚁碰面时…

编译错误:rpcndr.h(192,14): error C2872: “byte”: 不明确的符号

Windows上使用C11 编译出现错误1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared\rpcndr.h(192,14): error C2872: “byte”: 不明确的符号1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared\rpcndr.h(191,23): message : 可…

第十章 opengl之光照(投光物)

OpenGL投光物平行光点光源衰减聚光平滑/软化边缘投光物 当前光线都是来自空间的一个点。但实际&#xff0c;我们有很多种类的光照&#xff0c;将光投射到物体的光源叫做投光物。需要讨论几种不同类型的投光物。大致为&#xff1a;定向光&#xff0c;点光源&#xff0c;聚光等 …

Shell编程:轻松掌握入门级Shell脚本,成为Shell高手

文章目录前言一. 实验环境二. shell基础入门精讲2.1 什么是shell脚本&#xff1f;2.2 shell的种类2.3 脚本案例2.3.1 打印 hello-word案例2.3.2 统计指定目录下的文件数和目录数2.4 shell脚本编写规范总结前言 &#x1f3e0;个人主页&#xff1a;我是沐风晓月 &#x1f9d1;个人…

微服务架构(小白教学1)

相信大家吃饭的时候肯定是很苦恼打饭之慢&#xff0c;在自己饥肠辘辘的时候&#xff0c;面对自己喜欢吃的食物窗口却如同有百万大军虎视眈眈&#xff0c;自己内心的煎熬可想而知有时候在想这么美味的食物&#xff0c;为什么窗口就只开一个呢&#xff1f;于是你告诉了你的爸爸&a…

浅谈运维工程师的开发能力的培养

写在前面 本文已获得作者授权&#xff0c;作者的博客地址&#xff1a;https://www.cuiliangblog.cn/ 原文链接&#xff1a;浅谈运维工程师的开发能力的培养 一、运维工程师发展路线 1. 传统运维 侧重点是解决具体的问题。要求具备扎实的底层的知识储备&#xff0c;如网络、l…