AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1482074
Accepted
user529857
user529857
Asked: 2019-09-12 23:22:11 +0800 CST2019-09-12 23:22:11 +0800 CST 2019-09-12 23:22:11 +0800 CST

如果固件是一个 CS 概念,它是如何定义的?

  • 772

我在理解术语固件(作为一种软件)时遇到问题;
如果它是一个 CS 概念,最好在这里询问它以获得正式的定义和对我的错误的更正,作为解决方案。

我记得在 Richard Stallman 的不同讲座中,固件通常是一种非自由软件,因此它的源代码(或编译代码,我猜)嵌入在硬件中,因此无法根据需要进行研究和更改(因此也无法删除)。
这让我以以下方式感到困惑:

如果固件是不是“虚拟”存储在内存中的软件,而是作为硬件架构嵌入到硬件中(“以金属方式”写入),那么它怎么能像在 Bios 升级中那样升级但从未被删除?
例如,我可以在内核中升级 Apple iphone 的操作系统,但从不删除它,我误解了为什么。

firmware computer-architecture
  • 2 2 个回答
  • 180 Views

2 个回答

  • Voted
  1. Best Answer
    Gilles 'SO- stop being evil'
    2019-09-13T13:42:22+08:002019-09-13T13:42:22+08:00

    “固件”是一个相当模糊的概念。什么是固件和什么不是固件之间的确切界限取决于上下文。

    固件通常是不是主操作系统的代码,也不是在主操作系统之上运行的软件。但是这个定义留下了一些回旋的空间。

    在计算机外围设备的上下文中,与驱动程序相对的固件有一个精确的定义:驱动程序在作为主操作系统的组件的主处理器 (CPU) 上运行,而固件在辅助处理器(GPU、磁盘控制器)上运行,网络控制器,...)。此类外围设备的固件可能随外围设备一起提供并存储 EEPROM 或闪存,或者驱动程序可以将其加载到外围设备的 RAM 中——这取决于外围设备是否具有持久内存。如果固件没有随外设一起提供,它通常以制造商没有记录的“二进制 blob”的形式出现。

    在其他情况下,固件也可以表示在主处理器上运行的代码。固件是在比操作系统更低的级别上运行的软件。或者,如果您是固件或操作系统开发人员,您的软件可能是其他人的固件,而其他人的固件是您的软件——固件在堆栈中低于软件,但边界取决于您与谁交谈。例如,操作系统开发人员通常将 BIOS 和 UEFI 视为“固件”,但便携式 UEFI 实现的开发人员可能会将他们的软件视为在硬件制造商制造的固件之上运行的应用程序。

    固件的另一个可能定义是它是与硬件一起出售的软件,而不是可以稍后安装的软件。但是这个定义的应用方式存在一些不一致之处。通常将手机上的操作系统称为“固件”,而不是 PC。

    升级或修改固件的难易程度取决于硬件制造商提供的工具以及他们对其施加的限制。对于具有持久存储的外围设备,升级固件的接口可能会或可能不会记录在案,并且可能会或可能不会在这个或那个操作系统的驱动程序中实现。对于自主设备,固件升级可以通过一些图形界面(升级手机或某些路由器上的操作系统),或者可以在一些外部硬件和软件的帮助下完成(例如连接右侧的USB加密狗)格式,或连接到 JTAG 端口,或拔出 EEPROM 芯片)。

    拥有非开源固件(无论定义如何)的原因纯粹是一种社会结构:没有技术原因表明固件应该比任何其他类型的软件更不开源。

    • 1
  2. Saswat Padhi
    2019-09-13T04:47:30+08:002019-09-13T04:47:30+08:00

    我认为您对“理解/学习”部分感到困惑。

    固件被编译并嵌入到硬件中,因此它比高级程序“更难”理解。最终用户无法轻松检查和修改此固件。这并不意味着它不是具有适当语义的可执行对象(程序)。事实上,人们对固件进行逆向工程以准确了解它与硬件的接口方式。完全理解编译后的低级程序究竟做了什么只需要付出更多的努力。但是,许多固件也是开源的,您可以选择将其中一个闪存到您的硬件上。

    此外,固件存储在某种形式的内存中,并且可以擦除。然而,与 RAM 不同,该存储器是非易失性的,因此写入的固件会在多个电源周期内持续存在,直到通过闪存显式擦除/重写。

    当您升级您的 iPhone 固件时,很有可能将其完全删除——只是 Apple 的软件让最终用户更难犯这样的错误。

    • -1

相关问题

  • 我是否正确安装了无线网卡驱动程序?

  • 笔记本电脑中各个组件的硬件固件存储在哪里?

  • HDD :数据是顺序写入 HDD 还是循环方式?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    Windows 10 服务称为 AarSvc_70f961。它是什么,我该如何禁用它?

    • 2 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Marko Smith

    ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:无法获取本地颁发者证书 (_ssl.c:1056)

    • 4 个回答
  • Marko Smith

    我如何知道 Windows 安装在哪个驱动器上?

    • 6 个回答
  • Martin Hope
    Albin 支持结束后如何激活 WindowsXP? 2019-11-18 03:50:17 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    Kagaratsch Windows 10 删除大量小文件的速度非常慢。有什么办法可以加快速度吗? 2019-09-23 06:05:43 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    Inter Sys Ctrl+C 和 Ctrl+V 是如何工作的? 2019-05-15 02:51:21 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve