嵌入式系统软件和硬件的看法都是错误的?
创始人
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都是一样的。

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

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

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

(待续...)

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

相关内容

热门资讯

人... 本文目录导航: 人工智能AI软件哪个更适用 AI修图的好工具介绍个ai修图...
a... 本文目录导航: ai人工智能培训去哪家比拟好? 人工智能培训机构排名前十 ...
人... 本文目录导航: 人工默认哪些大学 人工默认专业排名前10有哪些学校 ...
学... 本文目录导航: 学习人工默认数学必定要很好么? 学习人工默认必定要良好的数...
人... 本文目录导航: 人工智能哪些大学 人工智能专业排名前10有哪些学校 ...
人... 本文目录导航: 人工智能为什么要用芯片? 人工智能须要哪些技术 ...
a... 本文目录导航: ai人工智能教育有哪些ai人工智能教育有哪些课程 松鼠AI...
人... 本文目录导航: 人工智能专业好务工吗? 人工智能专业务工如何 ...
用... 本文目录导航: 用这些Ai修图神器,小白秒变修图大神! ai修图收费 ...
秘... 本文目录导航: 秘塔ai搜查如何经常使用 ai人工智能在线经常使用方法ai...
务... 本文目录导航: 人工智能务工前景堪忧真的假的 务工前景好吗 人工智能务工太...
罕... 本文目录导航: 罕用的人工智能软件平台有哪些? 中国的ai软件有哪些 ...
人... 本文目录导航: 人工智能须要学哪些课程 ai须要学哪些课程 ...
人... 本文目录导航: 人工默认技术运行专升本可以吗? 人工默认专业可以专升本吗?...
a... 本文目录导航: ai智能教育究竟有没有用呢? 人工智能培训机构哪个好 ...
学... 本文目录导航: 学人工智能好务工吗 人工智能专业好找上班吗 ...
a... 本文目录导航: ai培训师怎样考ai培训师怎样做 人工智能证书含金量高吗?...
A... 本文目录导航: APP软件开发公司怎样选用 我要运营一款App软件,然而要...
山... 本文目录导航: 山东蓝光软件有限公司公司简介 西安易博软件有限责任公司公司...
招... 本文目录导航: 招聘启事模板15篇 软件工程师任务条件? ...