嵌入式系统软件和硬件的看法都是错误的?
创始人
2026-01-01 18:09:21
0

嵌入式软件自学_嵌入式软件怎么学_嵌入式系统软件教程

【文本】

当有人问“什么是嵌入式系统”时,没有必要看我的文章。 有一句狡猾的说法,找不出任何错误——借用知乎上的一个著名问答,“如何快速假装/成为某个领域的专家”——你可以假装认真地说:

“嵌入式系统首先是计算机系统”,那么谈谈你对软件和硬件的看法...

为了让大家有机会在一个几乎没有人才的行业里展示自己的才华,我将教大家一个关于嵌入式系统软件和硬件的特殊观点,绝对可以让所有师姐、师弟甚至同行借鉴。 “一脸钦佩。” 当然,首先你得真正理解这句话。

为了吸引更多人的关注,让话题更有影响力,你应该非常坚定、神秘、愤慨地声明一个观点:

“你知道吗,嵌入式系统中几乎每个人对软件和硬件的认识都是错误的……我们都被教科书愚弄了!”

1.传统计算机系统中的“软件/硬件”概念

通常,当我们提到计算机硬件时,首先想到的就是PC主机。 当然,这个时候你要特别小心,因为你这个时候给出的例子很可能会暴露你的年龄或者天赋。 例如,以台式电脑还是笔记本电脑为例,会明显暴露你的年龄;以Windows笔记本电脑或Mac为例,会暴露你的实力。 当我们提到软件时,我们想到的几乎都是Windows上运行的各种软件。 当然,如果能以APP尤其是iOS APP为例,显然是非常值得尊敬的。

是的,如果你细心的话,你会发现传统的软件和硬件概念都是直接源自通用计算机的。 正如我们将在后面的讨论中看到的,通用计算机带来的这种心态是非常可怕的。

2.嵌入式系统中“软件/硬件”的概念

嵌入式系统中的软件和硬件并不像你想象的那么简单。 这其实很容易理解。 你可以在大学校园里拦住几个学生,要求我们进行采访,问他们的软件和硬件是什么:

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

屌丝B(信息学院):硬件就是单片机,比如51、AVR、STM32等。对了,开发板也算吧?软件就是Firmware。 以前用汇编开发,现在用C。

屌丝C(信息学院):羊毛! 我还可以使用VHDL和Verilog来编写内核。 你能告诉我用VHDL和Verilog写的东西算不算软件吗? FPGA是硬件吗?

屌丝B:呃……我们该怎么办?

屌丝D(计算机学院):别忘了,开发板上运行的虚拟机也是硬件嵌入式系统软件教程,虚拟机上用Java编写的程序也是软件。

您可能已经注意到,在嵌入式系统中,软件和硬件并不是非常可靠的定义——当人们用普通话使用相同的声音并说相同的单词时,他们可能根本描述的不是同一件事。 那么,嵌入式系统中的软件和硬件应该如何理解呢?

选项1.要么,你可以假装你从未读过这篇文章,只与与你使用相同系统的人讨论问题,或者你可以“根据上下文”自动切换软件和硬件的含义。

方案2。或者,我们可以重新定义软件和硬件的概念,只要这个概念与原来的理解兼容即可。

真的有一个与旧概念兼容的新定义吗? 答案是肯定的。 我们先来看看不同层面的软件有什么共同点:每个人都用一种语言(Java、C、VHDL,甚至是原理图)来描述自己大脑中的逻辑(思维)。 让我们体验一下这个功能。 有这样的功能吗? 因此,我们郑重地重新定义软件:

软件:人们用某种语言来“尝试”自己已经固化的思维

相比之下,硬件的概念可以修改为:

硬件:固化的逻辑,能够稳定地提供一定的服务和功能

可见,软件的本质是思维,也就是设计者的思维。 因此,对于程序员来说最重要的是根据任务的需要弄清楚所有的逻辑,并使用某种语言作为工具来“固化”自己的思维。 这个思考过程称为“设计”,这个固化过程称为“编码”。 简单来说,写代码只是一个思维翻译的过程。 更重要的是嵌入式系统软件教程,写程序的人首先要思路清晰,思维清晰,然后使用准确的语言表达能力(不幸的是,很多人的语言表达能力非常有限)——也就是说,如果你不能写出你想用C语言实现的功能,就可以写出正确的代码。

思维设计的辅助工具有很多,比如大家熟知的流程图(Flow Chart)、UML图,以及较少使用的数据流图(Data Flow Chart)等,但具体的代码往往并不是很好的辅助工具。 进行思维设计的开发人员称为程序员。

将程序员的设计文档(各种图表)翻译成具体程序代码的人称为Coder。

残酷地说:程序员负责设计,负责思考; Coder翻译,辛苦了。 如果你不服气,我也没办法,哈哈哈哈……

硬件本质上是一个固化的逻辑。 这个逻辑的前身当然是思维,但它已经固化,可以“稳定”、可靠地提供“确定”的功能和服务。 例如,先进先出(FIFO)就是一个队列。 在一些软件系统中,这种逻辑确定的模块被称为“组件”,一种中性的描述,不强调它是软件还是硬件。 因为组件的本质是模块,是能够提供大家都知道的“某些”功能的模块。 它可以是硬件或软件。 谁在乎? 有些系统还会提供硬件抽象层,以进一步模糊此类模块的软硬属性——反正你就知道它是做什么的。 反正很靠谱,可以重复使用,就用吧。 不管是软的还是硬的,反正API都是一样的。

当我们想要凸显一个模块的逻辑性、确定性、稳定性,但又不能、不需要或者不关心它的软硬属性时,我们就干脆称它为组件。

重新定义软件和硬件的概念并不是文字游戏,而是业界心里按照惯例默默做的事情。 然而,今天显然已经被打破了。 虽然你感觉自己的三观发生了变化(也许还没有),但仔细想想,其实和你过去的理解并没有什么本质的区别?

是不是? 其实你已经明白了,对吧? 哈哈哈哈——我不是在重新发明软件或硬件,我只是一个诚实的搬运工。

(待续...)

如果你喜欢我的思考,欢迎订阅裸金属思考

相关内容

热门资讯

国... 随着获客和开售老本的回升,国际的企业越来越注重精细化治理,正在以全体效率的优化来补偿因人力老本升高所...
数... 展示机型:华为MateBook X系统版本:win10 数据库治理系统是系统软件。 有代表性的系...
下... Excel不是数据库软件。 选项中4种软件简介: Microsoft Office Access是由...
出... ● 2005年03月,深圳鼎识科技有限公司成立。 ● 2005年05月,鼎识科技RFID技术运行...
经... 经常出现的数据库治理系统重要有以下几种:Oracle Database、MySQL、Microsof...
手... 若经常使用的是vivo手机,可参考以下模式操作: 一、清算运转内存:1、调出后盾运转软件,一键减速清...
X... 曾经的巨头Windows XP,虽然面临微软的弃之不顾,但在中国依然领有宏大的用户个体。 如何在...
数... 系统软件。 数据库治理系统是一种操纵和治理数据库的大型软件,用于建设、经常使用和保养数据库,简称...
电... 比拟好的电脑安保软件有:腾讯管家、网络卫士、卡巴斯基、金山毒霸。 1、腾讯管家 腾讯电脑管家(Ten...
软... 1、软件开发是依据用户要求建造出软件系统或许系统中的软件局部的环节。 软件开发是一项包含需求捕捉...
全... 1. 启明星河:该公司在政府相关方面具备长处,其自主开发的入侵检测系统(IDS)和扫描器内行业内具备...
消... 本书详尽论述了消息化音视频设施与系统的基础常识,内容涵盖15章。 首先,它深化剖析了大屏幕投影、...
P... 《Premiere Pro CS6中文版规范教程》是2014年5月清华大学出版社出版的图书,作者是黄...
手... 1、Lexis Audio Editor 《手机音频编辑器 Lexis Audio Editor》是...
c... CorelDRAWGraphicsSuite是加拿大Corel公司的平面设计软件;该软件是Corel...
三... ①CPU:普通来说,CPU的主频越高,单核性能越强,建模操作越流利;CPU的外围数越多,多核性能越强...
收... 须要下载经常使用一些手机中比拟好用的收费的音频剪辑的软件的用户,在此可以找到以后最好用并且都是收费工...
c... 软件装置失败经常出现疑问有: 1、操作系统版本和兼容性疑问,大局部专业性质软件都明白规则了各个软件版...
学... 学习3d建模须要中下等的电脑性能。 学3d建模重要考验CPU和内存,假设不是3d建模,16G内存+固...
可... 该软件早期名为3DS,由于相似dos年代,须要记忆少量的命令,由于经常使用不便,后改为max,图形化...