跳至主要内容

什么是固件?

固件是一种由制造商嵌入硬件设备中的软件,用于控制设备的基本操作以及硬件与软件之间的通信。设备或芯片的固件存储在硬件的非易失性存储器中,并在设备通电时加载。固件存在于计算机、电视和物联网设备等终端设备中,也存在于图形处理单元(GPU)、固态硬盘(SSD)和网卡等组件中。确保固件安全需要考虑更新、供应链完整性以及漏洞管理等方面。

为什么需要固件?

固件是大多数现代电子设备及其组件(包括计算机、电视、物联网设备、GPU、SSD 和网卡)的关键组成部分。以下是固件对于硬件运行至关重要的原因:

  • 提供基本功能: 固件控制硬件设备的基本操作。如果没有固件,设备将无法通电、初始化硬件组件、运行软件或提供用户界面。

  • 提升设备性能: 固件使硬件组件能够在最佳状态下运行。例如,新的固件升级可能会缩短操作系统加载时间,从而加快设备启动速度。

  • 启用功能更新: 工程师会发布新固件以引入新功能,从而改善用户体验。例如,相机固件的更新可能会让设备能够以新的文件格式保存图像。

  • 加快问题解决速度: 某些设备需要通过固件更新来解决与硬件相关的问题。例如,显卡在极端使用情况下可能会过热,这就需要调整固件中编码的处理周期。

  • 统一互连组件: 电子设备利用固件与内部及外部组件(如扬声器、麦克风和摄像头)进行通信。固件将底层数据交换的复杂性从软件应用程序中抽象出来。

固件是如何工作的?

固件在直接嵌入硬件设备的非易失性存储器中运行。非易失性存储器是一种即使在断电后也能保留数据的存储介质。您可以将固件视为硬件的基础软件。该软件负责让计算机、设备和嵌入式系统做好准备,以响应用户的操作。首先,工程师针对特定设备编写、编译并测试固件代码。随后,他们利用专用软件和设备将代码直接写入硬件的存储芯片中。

例如,设备制造商可能会将固件存储在闪存、电可擦除可编程只读存储器(EEPROM)或只读存储器(ROM)芯片中。存储器类型的选择取决于多种因素。例如,如果需要存储简单且经证实稳定的固件,可以使用 ROM 或 EEPROM。不过,对于可能需要频繁更新的复杂固件,使用闪存芯片则更为适宜。若要运行固件,需要将非易失性存储器连接到中央处理器(CPU),以便将固件加载到 RAM 中。

以下是固件运行的关键阶段:

启动过程

当设备通电时,它会运行存储在存储芯片中的固件。CPU 从存储器中加载固件代码,并逐条执行其中的指令。根据固件类型的不同,CPU 可能会对配置、输入/输出设备及网络功能进行检查,并加载计算机的操作系统。例如,大多数计算机在启动时都会加载基本输入/输出系统(BIOS)。在加载已安装的操作系统之前,BIOS 会执行一系列检查,以确保所有设备都能正常工作。

运行时环境

工程师开发固件是为了实现特定功能,例如任务调度、处理输入信号、控制输出以及应对硬件安全问题。每种固件都在专为其所针对的硬件而构建的环境中运行。与软件应用不同,通常无法将同一固件用于不同类型的设备。例如,数码相机的固件无法在手机上运行,​​尽管这两种设备具有某些共同功能。

更新机制

Firmware update for IoT

制造商通过固件更新来引入新功能、修复问题、解决固件漏洞并提升固件性能。固件更新既可以自动进行,也可以要求用户确认后进行。大多数联网设备会通过互联网检查更新,并进行下载和安装。例如,智能手机可以通过无线方式下载并安装补丁文件来更新固件。不过,对于某些设备(如网络路由器),您可能需要手动更新固件。

固件有哪些类型?

固件有多种类型,每种类型都具有独特的特性。

底层固件

底层固件与底层硬件紧密耦合;传统上它存储在 ROM 中,但在现代系统中则存储在闪存中。底层固件通过直接访问各个组件来控制基本的硬件功能。一旦嵌入,该固件将在设备的整个生命周期内保留在 ROM 中。

在计算机系统中,基本输入/输出系统(BIOS)和统一可扩展固件接口(UEFI)就是底层固件的典型示例。BIOS 负责处理基本控制功能,而 UEFI 则通过自动化复杂流程来缩短启动时间并增强计算机安全性。

传统上,计算机将 BIOS 存储在 ROM 中,这使得更新变得困难。然而,现代计算机将 BIOS 和 UEFI 存储在闪存芯片中。

高级固件

高级固件执行复杂的指令,并且需要进行更频繁的更新。与低级固件不同,高级固件的设计初衷是比底层硬件更紧密地与用户进行交互。因此,工程师将高级固件存储在闪存芯片中。此类固件通常包含一个引导加载程序,允许其利用更新版本的固件进行自我更新。

高级固件往往负责管理更复杂的逻辑。它充当设备的微型操作系统,方便与应用程序编程接口(API)进行通信。例如,网络设备中包含的高级固件负责将流量路由至各自的目标地址。

子系统固件

子系统固件是存在于外围组件中的独立固件。它通常被称为嵌入式固件,能够独立处理特定任务,同时与中央控制器进行通信。该固件可以通过分担 CPU 的特定任务处理工作来提高系统效率。

例如,存储设备、显示器和电源装置都运行着各自的子系统固件。与高级固件类似,子系统固件也可以进行更新,以提升性能或解决问题。

固件和软件有什么区别?

软件是经过编译或可运行的代码,支持用户进行交互、执行复杂的计算任务或提供广泛的服务。而固件则嵌入在设备中,支持实现基本硬件功能(如网络连接、输入/输出和电源管理)的关键指令。

您可以将软件应用程序安装在硬盘上,也可以直接从云端运行它们。但是,固件是嵌入在硬件设备中的。您可以轻松更新或删除软件,而不会影响设备的正常运行。另一方面,用户无法安全地移除固件,因为它是设备运行必不可少的。例如,您可以安全地卸载移动应用程序,但无法删除智能手机启动所需的固件。

固件安全有哪些注意事项?

与软件一样,固件也存在安全风险。但与软件不同的是,固件面临的安全威胁可能会波及设备硬件,以及设备所支持的数据和应用程序。以下是一些常见的固件安全风险类型:

供应链风险

供应链风险包括在固件开发、编程和分发等多个阶段引入的漏洞。例如,如果使用了来自不可信供应商的存储组件,设备的固件可能会因此受到影响。重视安全的组织可以进行供应商风险评测,或要求设备制造商提供供应链相关信息,以验证固件的可信度。在工程层面,实施加密认证(如代码签名)也至关重要,以确保固件未被篡改。

更新认证

未经授权的固件更新可能会危及设备安全,导致大规模的业务中断。恶意攻击者可能会拦截合法的下载过程,或在固件中植入恶意程序。因此,在安装新版本固件之前对其进行认证至关重要。组织可以采用多种技术,确保不会用受损版本替换现有固件:

  • 数字签名使设备能够验证固件是否来自可信供应商。

  • 对更新通道进行加密,有助于防止未经授权的第三方侦听或拦截合法固件。

  • 版本回滚功能允许工程师在更新出现问题时,手动将固件恢复到正常工作的版本。

漏洞管理

固件更新的频率通常低于软件更新,这可能导致已发现的漏洞长期未得到修复。在某些情况下,硬件制造商可能不会立即发布安全补丁。技术人员也需要时间来更新现场部署的设备固件。对于移动设备,用户可能会忽略更新通知,继续使用过时的固件。为降低固件遭入侵的风险,组织可以采用自动更新机制。此外,组织还可以实施持续的漏洞扫描,并整合安全警报,以便开展预防性监控与修复工作。

亚马逊云科技如何满足您的固件需求?

亚马逊云科技提供一系列解决方案,可帮助您管理物联网设备群的固件并确保其安全:

  • Amazon IoT Device Management 可帮助您管理物联网设备群,执行批量更新,控制固件无线更新的部署速度,并定义用于自动更新的持续性任务。创建逻辑设备组,以便对您的设备群进行组织和定位,并只需几次点击即可执行远程操作。

  • Amazon IoT Device Defender 可帮助您管理物联网设备和设备群的安全,执行诸如审计物联网配置和持续监控物联网设备等任务。

  • FreeRTOS 是一款开源、云中立的实时操作系统,可提供快速、可靠且响应迅速的内核。利用模块化的软件库管理和维护您的设计,并执行空中下载(OTA)安全补丁和固件更新。

立即创建免费账户,开始在 AWS 上使用固件管理。

Browse all cloud computing concepts

Browse all cloud computing concepts content here:

正在加载
正在加载
正在加载
正在加载
正在加载

Did you find what you were looking for today?

Let us know so we can improve the quality of the content on our pages