固件和嵌入式软件之间的真正区别是什么

问题描述 投票:1回答:1

我正在寻找固件和嵌入式软件之间的真正差异。

在互联网上写的是固件,固件是嵌入式软件的一种,反之亦然。除了经典的BIOS示例之外,它还非常古老。

它们都在非易失性存储器中运行。区别之一是嵌入式软件,例如具有rtos和文件系统并且可以在RAM上运行的应用程序。

如果我不使用rtos和RAM,而仅使用闪存,则意味着我的嵌入式软件是固件,这是真的吗?

实际上真正改变其内存布局的原因。

互联网上的答案缺乏技术解释并且不满意。

非常感谢。

language-agnostic embedded firmware flash-memory eeprom
1个回答
0
投票

它们不是明显分开的东西,甚至没有明确定义。 Firmwaresoftware的子集;术语通常表示它在只读存储器中:

  • 软件指的是any机器可执行代码-包括“固件”。
  • 固件是指只读存储器中的软件,>
  • 在这种情况下,只读存储器包括可重写存储器,例如Flash或EPROM,它们需要特定的擦除/写入操作,而不仅仅是简单的随机访问可写。

RAM和ROM之间的区别执行

实际上不是固件和软件之间的区别。许多嵌入式系统出于性能原因从ROM加载可执行代码并从RAM执行,而其他嵌入式系统则直接从ROM执行。相反,如果最终用户在没有特殊工具或引导加载程序的情况下无法轻松地修改或替换软件,则可以将其视为“公司”。另一方面,如果正常的最终用户可以使用系统本身的功能(例如,通过从可移动媒体或网络复制文件)来修改,更新或替换软件,则它是not固件。考虑操作上的差异,例如在更新PC的BIOS和更新Microsoft Office时-前者需要特殊的过程来不同于正常的操作系统服务来加载和运行软件。

例如,智能手机的操作系统,引导程序和BIOS可能被视为固件。用户从应用程序商店加载的应用程序当然不是固件。

在其他上下文中,“固件”可能是指与顺序执行的处理器指令相反的可编程逻辑设备(如FPGA)的配置。但这只是一个小众的区别,但是在同时使用可编程逻辑和软件执行的系统中很有用。

最终,您将使用术语“固件”来暗示系统中软件的某种程度的“永久性”,但是存在一个范围,因此您将以在特定系统的上下文中有用的任何方式使用该术语。例如,我正在一个系统中,所有代码都从闪存运行,因此只能使用术语software

来引用它,因为不需要将其与系统中的任何其他种类的软件区分开。
© www.soinside.com 2019 - 2024. All rights reserved.