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

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

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

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

(待续...)

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

相关内容

热门资讯

【... 工作中常会遇到这样的情况,格式需要经常转换,虽然WPS和office可以转换一些格式,但还是有很多格...
揭... 软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。它是一项包括需求捕捉、需求分析、设计...
游... OPPO手机上可以在游戏软件商店中下载到光遇。具体的方法和步骤如下: 打开OPPO手机上的游戏软...
汽... 时不我待环顾全世界,汽车产业在几乎每个国家都被视作支柱产业。放眼中国,汽车行业机会很多,工作机会一大...
深... 深圳是中国软件开发行业的重要城市之一,拥有众多优秀的软件开发公司。下面我将为大家详细介绍几家值得推荐...
轻... Appstore下载安装如果三星手机需要下载安装软件应用,建议尝试以下步骤: 1. 使用手机功能表中...
一... 本文详细介绍了如何在苹果5s手机上安装微信应用商店(App Store)的方法。 打开手机主屏上的A...
精... 根据《国务院办公厅关于2024年部分节假日安排的通知》精神,结合我公司实际情况,现将2024年春节放...
谁... 根据您的描述,您想了解关于手机版的通达OA软件精灵和其他类似软件的信息。我们将对这些软件进行详细分析...
智... 点击上方蓝色字体,关注我们/电子电气架构技术创新交流群 /添加微信15021948198,申请加入汽...
破... 亲爱的朋友们,大家好!我是微信公众号:美美宝库。最近我们进行了一次改版,导致很多读者无法收到美美宝库...
让... 在我们熟悉的花园里,植物似乎总是安静地存在着。 不过,你有没有想过,如果让他们参加演唱会,会发生什么...
C... 图片来源@视觉中国| 一代新未来,作者 | 陈根法律一直被认为是社会上的“精英”职业,专业性强,涉及...
A... 注意!所有工具不得用于非法及商业用途,本人仅收集分享,不负责软件教学,原作者如有意见联系删除。AI人...
律... 近日,财通证券李月波团队在其公众号发布了一份由ChatGPT撰写、Deepl翻译的实验报告,题为《改...
“... “快牙”这个产品与牙齿无关,它的意思是“快速蓝牙”。 其功能与蓝牙非常相似,用于终端与终端之间的“连...
为... SDV (Software-Defined Vehicle,软件定义汽车)是汽车行业热门话题,SDV...
今... 从今晚交易开始,文华手机银行将实行收费。 为保证我公司客户能正常使用APP进行交易,澎博暂时推出苹果...
办... 办公软件1. 办公室。 让我重点介绍一些我在工作中经常使用的、我有一些经验的功能。 首先是Word的...
人... 办公室你刻意寻找的东西往往是找不到的。世界上的一切事物都有它自己的时间来去。更多免费资源:自行在公众...