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

因为做嵌入式开发工作虽然跳不出电子行业,但还是能接触到跨度较大的不同行当,身处不同的圈子。诸如医疗,银行,车载,工业;亦或者手机,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.rhkb.cn/news/7215.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你也想拥有一台9.9的永久Linux随身服务器吗?

永久Linux随身服务器 9.9的永久Linux服务器一、介绍1.1 方案1.2 **本次教程所用到的所有工具和资源将会放到教程末尾** 二、刷机第一步--备份2.1 进90082.2 全量备份2.3 刷入system分区和boot分区 (若不做服务器做免流 服务器跳过)服务器党需要的也能备份…

超5k+stars,给大家推荐两个ChatGPT自动化论文阅读网站和插件,从此搞科研再也不用愁!...

点击上方“Python与机器智能”,选择“星标”公众号 第一时间获取价值内容 ChatPaper 项目地址: https://github.com/kaixindelele/ChatPaperhttps://huggingface.co/spaces/wangrongsheng/ChatPaper 当下最流行的论文托管网站之一是ArXiv。这个网站成立于…

Android程序员的年终总结

欢迎您能进来,如果你也和我一样,对接下来的工作行情充满了太多的不确定性,那不妨停下您冲忙前进的脚步,和我一起重新刷新一下你自己的看法和规划吧! 我的提问 2019年Android真的还可以养活你自己?2019年我…

转贴:一个程序员的2006年年终总结。

注:本文为转贴者原创,原创贴发布于希赛博客(http://blog.csai.cn) ,原文地址 http://iksa.csai.cn 2006年,我不跟命争。--我的2006年年终总结之一 好久没有到CSAI的blog来了,今天看见自己的博客竟然名列20…

播客丨关于年终总结,程序员有话说

绘声绘影 绘声绘影是网易云信独家打造的一档聚焦行业热点、个人成长方面的播客栏目。 栏目希望通过邀请不同背景、不同行业、不同阅历的企业研发、产品、运营等相关岗位负责人作为节目嘉宾,以自身职业视角交流行业洞见和发展前景;以过来人的视角分享在时…

年终工作总结该怎么写?2022年终工作总结PPT模板,这样写老板才喜欢

你会写年终工作总结吗?每到年底的时候作为公司的管理层就要向老板汇报这一年的成果,做得好不好、赚没赚钱、有什么成果,这些都是要汇报的重点。 要是你汇报的不好,那老板就会觉得你没有这个能力,轻者年终奖没了&#…

程序员的工作总结(2017-12-04)

在新的公司工作半年了时间飞逝,作为一名工程师,也要时刻对自己反省,这样才能够有所提升,在工作中我总结了一下几点,这个可能也是大家常见的一些问题,好记性不如烂笔头,今天就好好的来归纳总结一…

关于程序员写好 ppt 的几点总结

背景 程序员日常工作中最多的应该是接收需求、编码实现需求。但也有些时候需要做一些非代码的文字工作。 比如做述职报告、工作总结等,这些一般的都是通过 ppt 的形式进行展示。 近一年我做了几次 ppt,刚开始写 ppt 简直不要太痛苦,真的不如写…

一名小程序员的2021年度 个人总结

打个广告:吉比特 雷霆游戏内推,摩尔庄园 问道 一念逍遥 不思议迷宫等游戏的发行公司,把岗位全称、工作城市和简历发852376156qq.com 前言 在写这篇总结的之前,不禁感慨,不知不觉又一年了,原来一年可以这…

年终总结怎么写?用上数据可视化,年终奖拿到手软!

2020年还剩下不到一个月的时间了 很多小伙伴都要准备应对每年不得不面对的坎 那就是写年终总结了 问你慌不慌 年终总结要是写得好 非常加分 可以让领导眼前一亮 年终总结要是写得好 领导不满意 你也甭想升职加薪了 也许会有很多小伙伴抱怨: 这种形式主义的事情&…

给为年终总结发愁的职场人,准备了一些模板

距离放假还有19天啦!对职场打工人来说,放假的喜悦和年终汇报的烦恼接踵而来,年终总结、项目盘点、绩效考核是每年这个时候必经的渡劫时刻。 不少人自嘲是“没有感情的PPT杀手”,在看到,设计要大气、配色要时尚、数据要…

程序员如何写出高质量年终总结?

干得好,也要说的好,程序员年终总结看这篇! 对程序员来说,这一年改过很多 Bug,写过很多功能,也重构过一些模块,经历了无数个需求的迭代,进行了无数次的提测,还偶尔加个班…

数据说话---如何写好年终总结

又到年底了,好多人问我年终总结如何写?我自己结合多年的工作经验说下自己的想法和建议,以供大家参考。在刚开始工作的那几年,我对工作总结这种“形式主义”都比较抵触,把工作总结当成是应付老板的差事。 但在最近几年我…

一位工作一年的程序员的2021年度总结

hello,大家好啊,我是一名拥有一年开发经验的java开发程序员, 2021年就要过去了,大家有没有什么感慨呢,为了迎接新的2022年, 我做了一篇2021年的个人总结, 希望总结经验,突破未来工作…

测试部门年终总结报告,应该怎么写?

推荐阅读: 从功能测试进阶自动化测试,熬夜7天整理出这一份超全学习指南【附网盘资源】 Python自动化测试全栈性能测试全栈,挑战年薪40W [内部资源] 想拿年薪30W的软件测试人员,这份资料必须领取~ 年终总结一般对季度、半年度或…

攒了一年的废话,全都用来写年终总结了(附20+年终总结模板)

到了年终,很多小伙伴都逃不过公司的年终总结, 要做的美观且直观本就不易, 还要考虑工作量, 于是很多无路可走的小伙伴选择在报告中放飞自我, 成功诠释了什么叫“废话文学”。 对于这样的年终总结,领导…

如何做好一份程序员的工作汇报ppt?

这个回答分为4个部分: 首先是分析和拆解问题,为什么对于大多数程序来说,做好一份工作汇报ppt是件不容易的事情?第二部分是针对问题的解决方法,主要是工具和逻辑思维两方面的训练第三部分,既然是面向程序员的…

[有人@你]请查收你的年终总结报告

嗨,兄dei,我是建模助手。 新年伊始,最近大家想必已经被各大平台的2022年度报告刷屏了。 听歌软件伴你度过的失眠夜,外卖软件拯救你的饥饿时刻,还有某俩宝账单告诉你,其实你是有钱的,只是你看不到…

分享128个总结汇报PPT模板,总有一款适合你

下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...,大家下载后可以看到。 链接:https://pan.baidu.com/s/1PRQatHHPGDRer24GblNbyQ 提取码:pfxf 质感纹理工作总结汇报PPT模板 简洁文艺墙面工作总结…

[工作报告]转载:程序员绩效总结_年终总结怎么写?

转载:程序员绩效总结_年终总结怎么写? 每年这时候,都有必要写一下一年的个人工作总结。 年终总结或工作总结是个挺重要的事。写好的话,有助于说明自己的工作绩效,绩效好可以多拿年终奖,还有机会争取晋升。另…