【问题标题】:What is real difference between Firmware and Embedded Software固件和嵌入式软件之间的真正区别是什么
【发布时间】:2020-04-03 07:07:04
【问题描述】:

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

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

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

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

真正影响内存布局的是什么。

网上的回答都是缺乏技术解释,不满意。

非常感谢。

【问题讨论】:

  • 这些术语没有正式的定义。固件通常只是意味着存储在 NVM 中的东西,使其“牢固”。
  • 是的,你是对的,但是包括固件在内的所有嵌入式软件都使用 NVM,有些使用 eeprom,有些使用闪存。真的很难理解它们是这样的层次结构:Hardware->Firmware->Embedded Software
  • 我认为不同的术语出现在有多层的项目中。例如,一部手机将有应用程序 + 操作系统,但也有大量的固件驱动程序来处理无线电传输、记忆、屏幕 + 触摸等。
  • 谢谢这是具体的例子,那么我可以说嵌入式系统由固件和高级软件组成。从固件的角度来看,它被认为是非常低级的任务,比如它的微型 eeprom 中的信号处理处理器?好吧,通过您的示例,固件具有联合结构或集成结构的一部分。
  • 不,嵌入式系统不一定包含两者。它可能只是固件,即裸机。像这样的术语并不重要。

标签: language-agnostic embedded firmware flash-memory eeprom


【解决方案1】:

它们不是明显独立的事物,甚至没有明确的定义。 固件软件的子集; 通常这个词意味着它在只读内存中:

  • 软件是指任何机器可执行代码 - 包括“固件”。
  • 固件是指只读内存中的软件

在这种情况下,只读存储器包括可重写存储器,例如闪存或 EPROM,它们需要特定的擦除/写入操作,而不是简单的随机访问可写。

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

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

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

最终,您会使用术语“固件”来暗示系统中软件的某种程度的“持久性”,但有一个范围,因此您可以在特定系统的上下文中以任何有用的方式使用该术语.例如,我正在开发一个所有代码都从闪存运行的系统,所以只使用术语 software 来指代它,因为没有必要将它与任何其他类型的软件区分开来系统。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 2018-06-12
    • 2012-06-02
    • 2020-10-08
    • 2018-01-21
    • 2018-04-06
    相关资源
    最近更新 更多