0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

“为用而专”---嵌入式系统 下

jf_78858299 来源:裸机思维 作者: GorgonMeducer 傻孩子 2023-04-13 15:36 次阅读

当被人问起“什么是嵌入式系统”时,无需看过我的文章,有一种狡猾的说法肯定是挑不出任何错误的——套用知乎上一类著名的问答体,“如何快速的假装/成为某个领域的专家”——你可以故作认真的说:

嵌入式系统首先是一个计算机系统”,然后大谈你对软件和硬件的看法……

为了在几乎没有逼格的行业中让大家能够有机会装逼,下面我就教大家一种关于嵌入式系统软件和硬件的特别观点,绝对可以让所有的小师妹小师弟甚至是同龄人偷来“刮目相看”的眼光。当然首先你要真的理解这种说法。

为了引起更多人的注意,同时让话题更有冲击性,你应该非常肯定、神秘、恨铁不成钢而又愤慨的宣布一个观点:

“你知道么?嵌入式系统中几乎所有人关于软件和硬件的看法都是错误的……我们被教科书给坑了!”

1、传统计算机系统中的“软件/硬件”观

通常,我们提到计算机硬件,脑海里立马浮现的就是一台PC主机,当然这个时候你要特别小心,因为这个时候你举出的例子很可能是暴露年龄或者逼格的。比如,用台式机举例还是用笔记本举例显然暴露年龄,用Windows笔记本举例还是Mac举例将暴露逼格。当我们提到软件,脑海里浮现的差不多就是Windows上跑着的各类软件,当然,如果你能用APP,特别是iOS的APP来举例,显然就是很有面子的。

是的,细心的你注意到了,传统的软硬件观念直接来源于通用计算机。在后面的讨论中我们会发现,这种由通用计算机带来的思维定势是非常可怕的。

2、嵌入式系统中的“软/硬件”观

嵌入式系统中的软件和硬件并不是你想象的那么简单。这其实很好理解,你可以在大学校园里随便拦下几个学生,让我们来做一个采访,问问他们什么是软件什么是硬件:

屌丝A(计算机学院):你丫有病么?硬件就是你的电脑主机咯,主板、CPU、内存硬盘、显卡什么的;软件就是Windows程序咯

屌丝B(信息学院):硬件就是单片机啊,51、AVR、STM32之类的,对了,还有开发板也算吧?软件嘛,就是Firmware咯(固件),过去用汇编开发,现在都是用C了

屌丝C(信息学院):毛线!我还可以用VHDL和Verlog写一个内核呢,你说说VHDL和Verilog写出来的是不是软件?FPGA是不是硬件?

屌丝B:呃……那咋办?

屌丝D(计算机学院):你们别忘了,开发板上跑的虚拟机也是硬件哦,虚拟机上用Java写的程序也是软件。

大家可能注意到了,在嵌入式系统中,软件和硬件是一个不那么靠谱的定义方式——当人们用普通话发相同的声音说同一个词语的时候,描述的可能根本不是同一个东西。那么,嵌入式系统中,软件和硬件应该如何理解呢?

方案一 . 要么,你可以假装从来没有看过这篇文章,只跟你用相同系统的人讨论问题,或者“自己根据语境”自动切换软件和硬件的意思。

方案二 . 要么,我们重新定义一下软件和硬件的概念,只要这个概念兼容原有的理解方式就可以了。

真有一种兼容老概念的新定义么?答案是肯定的。让我们来首先找一找在不同层面上软件的共同点:大家都是用一种语言(Java、C、VHDL、甚至是原理图)来描述自己大脑中的逻辑(思维)。让我们来体会一下这个特点,是不是这么个特点?因此,我们重新郑重的定义一下软件:

软件:人们借助某种语言,“尝试”固化下来的,自己的思维

与之相对,硬件的概念可以修改为:

硬件:业已固化下来的逻辑,可以稳定的提供确定的服务和功能

可见, 软件的本质是思维,是设计人员的思维 ,因而程序设计人员最重要的是自己 根据任务的需求想通所有的逻辑,并借助一定的语言作为工具,把自己的思维"固化"下来 。这个思维的过程叫做"设计(Design)"、这个固化的过程叫做"编码(Coding)"。简单的说,写代码只是一个思维翻译的过程,更重要的是首先写程序的人要想清楚,拥有清晰的思维,然后借助准确无误的语言表达能力(很遗憾,很多人语言表达能力非常有限——就是用C语言写不出自己想要实现的功能)才能写出正确的代码。

思维的设计有很多辅助工具,如大家熟知的流程图(Flow Chart)、UML图、还有大家不太用的数据流图(Data Flow Diagram)等等。然而,具体代码往往并不是一个好的辅助工具。进行思维设计的开发人员,叫做Programmer。

将Programmer的设计文档(各类图表)翻译成具体程序代码的人叫做Coder。

说残酷一点:Programmer设计,负责思考;Coder翻译,负责干苦力。如果你不服,我也没办法,哈哈哈哈……

**硬件,本质上一个固化下来的逻辑。**这个逻辑的前身当然是思维,只不过它被固化下来了,而且可以"稳定"可靠的提供"确定"的功能和服务。比如,FIFO是队列,在某些软件系统中把这种逻辑确定的模块叫做"构件"(Component),一种中性化的描述,并不强调它是软件还是硬件。因为构件的本质是一个模块,是一个可以提供"确定"的,大家都知道的功能的模块。它可以是硬件的,也可以是软件的。Who care?有的系统还会提供硬件抽象层,进一步模糊这类模块的软硬属性——反正你知道它是做什么的就行了,反正它很可靠,而且可以重复利用,所以你用就好了,是软的还是硬的,无所谓,反正都是同一个API

当我们想凸显一个模块的逻辑、确定性和稳定性,而又不能或者不需要或者不关心它的软硬属性的时候,我们就干脆叫他构件(Component)。

重新定义软件和硬件的概念,不是一个文字游戏,而是一个行业内在心底里约定俗成已经默默在做的事情,只是,今天被明确的点破了而已。虽然你觉得被刷了三观(也许你没有),但仔细想想,其实的确和过去的认识没有本质上的区别?

不是么?其实你早就懂对么?哈哈哈哈——我没有重新发明软件或者硬件,我只是诚实的搬运工。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3634

    浏览量

    129845
  • PC
    PC
    +关注

    关注

    9

    文章

    2110

    浏览量

    154812
  • iOS
    iOS
    +关注

    关注

    8

    文章

    3399

    浏览量

    151109
  • 计算机硬件
    +关注

    关注

    0

    文章

    14

    浏览量

    7750
收藏 人收藏

    评论

    相关推荐

    嵌入式系统是什么 什么叫嵌入式系统

    系统的概念也有被滥用的嫌疑。在一般的文献中嵌入式系统是这样定义的:嵌入式系统是以应用为中心,以计算机技术
    发表于 04-20 14:13

    嵌入式系统是什么 什么叫嵌入式系统

    计算机技术基础,并且软硬件可裁减,适用于应用系统对功能、可靠性、成本、体积和功耗有严格要求的计算机系统。但是这种定义较为古板,大家公认的比较有前途的嵌入式
    发表于 06-29 15:55

    什么是嵌入式系统 嵌入式系统定义

    嵌入式系统的概念有多种不同的说法,常见的一种说法是:嵌入式系统是以应用为中心,以计算机技术基础,软硬件可裁剪,对功能、可靠性、成本、体积和
    发表于 09-23 15:57

    嵌入式系统就业前景

    电子、医疗电子等都是嵌入式软件的重要应用领域。良好的英文阅读能力及较强的学习能力是从事这一领域工作的基础。对嵌入式操作系统做到一多能(精
    发表于 06-22 09:12

    什么是嵌入式系统

    、一般运行固定的程序或固定的操作系统,再加上可变的应用程序。3、有些工业系统,仅用于某个特定的控制目的;有些因为有应用程序的加入更显灵活,如手机,平板电脑。现代的
    发表于 10-28 06:03

    什么是嵌入式系统?深嵌入式系统又是什么

    和Android的系统也可以称为嵌入式系统。但是通常,这些通用操作系统需要应用程序处理器,并具有其他功能,例如动态应用程序加载。这就是为什么基于MCU的
    发表于 12-21 06:48

    调试嵌入式系统设计中的串行总线应用手册

    调试嵌入式系统设计中的串行总线应用手册 今天,嵌入式系统几乎遍布在人类社会的每个角落。嵌入式系统
    发表于 03-16 12:21 28次下载

    嵌入式新手学习路线,嵌入式课程学习课程分享

    嵌入式开发就是指在嵌入式操作系统进行开发,一般常用的系统有WinCE,ucos,vxworks,linux,android等。另外,
    发表于 12-19 10:43 1057次阅读

    嵌入式系统什么语言_生活中常见的嵌入式系统

     嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的
    发表于 08-13 15:02 1.3w次阅读

    嵌入式系统嵌入式PLC

    嵌入式系统嵌入式PLC(嵌入式开发面试题目)-该文档嵌入式
    发表于 07-30 10:38 24次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>与<b class='flag-5'>嵌入式</b>PLC

    ARM11嵌入式系统LinuxLCD的驱动的设计

    ARM11嵌入式系统LinuxLCD的驱动的设计(嵌入式开发啥意思)-ARM11嵌入式系统Li
    发表于 07-30 14:53 24次下载
    ARM11<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>Linux<b class='flag-5'>下</b>LCD的驱动的设计

    什么是嵌入式系统

    、一般运行固定的程序或固定的操作系统,再加上可变的应用程序。3、有些工业系统,仅用于某个特定的控制目的;有些因为有应用程序的加入更显灵活,如手机,平板电脑。现代的
    发表于 10-21 10:36 9次下载
    什么是<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>

    嵌入式系统设计的问答

    1.嵌入式系统的概念答:嵌入式系统是一种以应用为中心,以计算机技术基础,可以适应不同应用对功能、可靠性、成本、体积、功耗等方面的要求,集可
    发表于 11-03 18:06 6次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>设计的问答

    为什么航天器、导弹喜欢单片机,不是嵌入式系统

    ,他说:现在的航空、航天和导弹等武器装备中,控制系统几乎都是单片机,不是嵌入式系统。乍一听,和我们的
    发表于 12-05 16:51 12次下载
    为什么航天器、导弹喜欢<b class='flag-5'>用</b>单片机,<b class='flag-5'>而</b>不是<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>?

    ”---嵌入式系统

    综上所属,我们可以简单的小结一嵌入式系统是一个面向应用高度裁减的专用计算机系统——是不是觉得都是废话了?哈哈哈哈,说明你理解了。下一篇,我们将更深层次的揭示隐藏在
    的头像 发表于 04-13 15:34 500次阅读