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)。

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

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

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

    关注

    40

    文章

    3435

    浏览量

    128229
  • PC
    PC
    +关注

    关注

    9

    文章

    1952

    浏览量

    152804
  • iOS
    iOS
    +关注

    关注

    8

    文章

    3322

    浏览量

    149170
  • 计算机硬件
    +关注

    关注

    0

    文章

    10

    浏览量

    7681
收藏 人收藏

    评论

    相关推荐

    嵌入式系统的设计方法

    嵌入式系统的设计方法从嵌入式系统的C程序设计开始讲,一步步深入。
    发表于 03-28 09:45 38次下载

    嵌入式系统的构建

    嵌入式系统的构建 嵌入式系统的硬件构成1.1. 嵌入式系统硬件
    发表于 03-15 15:15 39次下载

    嵌入式系统介绍

    第1章 嵌入式系统基础知识 1.1 嵌入式系统的定义和组成 1.1.1 嵌入式系统的定义
    发表于 09-02 10:09 2374次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>介绍

    嵌入式系统基础知识

    关于嵌入式系统基础知识关于嵌入式系统基础知识关于嵌入式系统基础知识
    发表于 03-03 16:58 5次下载

    嵌入式系统初级了解

    嵌入式系统的初级了解,嵌入式系统入门了解,嵌入式系统的作业。
    发表于 03-17 16:06 9次下载

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

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

    嵌入式系统是怎么样组成的

    嵌入式系统在生活中有诸多应用,大家对于嵌入式系统或多或少有所耳闻。在前两篇文章中,小编对嵌入式系统
    发表于 01-03 13:52 1575次阅读

    嵌入式系统定义

    嵌入式系统定义(嵌入式开发培训方案)-嵌入式系统定义                        
    发表于 07-30 14:27 11次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>定义

    嵌入式系统的特点有哪些

    嵌入式处理器是嵌入式系统的核心,是控制、辅助系统运行的硬件单元。自微处理器的问世以来,嵌入式系统
    的头像 发表于 08-31 17:58 1.1w次阅读

    嵌入式系统知识之嵌入式系统的组成

    基本概念:嵌入式系统是一种专用的计算机系统,作为装置或设备的一部分。通常,嵌入式系统是一个控制程序存储在ROM中的
    发表于 10-19 18:33 9次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>知识之<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>的组成

    嵌入式系统测试2

    嵌入式系统测试21.导弹控制属于嵌入式系统在()方面的应用。正确答案: D. 军用2.下列()不是嵌入式开发所必需的工具。正确答案: B
    发表于 10-19 18:33 10次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>测试2

    嵌入式系统概述

    目录嵌入式系统(Embedded system)嵌入式处理器嵌入式操作系统(Embedded Operating System)分类基本概念
    发表于 10-19 18:33 5次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>概述

    什么是嵌入式系统

    什么是嵌入式系统嵌入式系统(Embedded System) 是一种完全嵌入受控器件内部,为特定应用而设计的专用计算机
    发表于 10-21 10:36 9次下载
    什么是<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>

    设计制造嵌入式系统

    设计制造嵌入式系统2-4 我之前提到过各种类型的嵌入式系统及其应用前景,我说过嵌入式系统在军用
    发表于 11-03 19:06 1次下载
    设计制造<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>

    什么是嵌入式系统嵌入式系统的具体应用

    嵌入式,一般是指嵌入式系统。用于控制、监视或者辅助操作机器和设备的装置。
    的头像 发表于 12-20 13:33 735次阅读