固件与软件:相似之处与差异
固件和软件是现代嵌入式系统和计算机中的两个术语。
世界正在转变为一个数字世界,大多数工作都是通过计算机完成的。讨论计算机时,最常用的术语是软件和硬件。
许多元素致力于制造现代技术设备。有各种各样的软件和硬件,你可能会遇到固件。
在电子行业中,固件和软件同样受欢迎。区分这些术语可能有点棘手,因为它们有时可能具有相同的目的。
例如,对于安装Android操作系统更新的手动安装,可以指的是固件。这意味着在您的Android手机上刷写操作系统更新时,该软件是专为特定设备硬件或固件而构建的。
如果这看起来令人困惑,让我对这个话题作全面阐述。
在本文中,我将解释软件和固件的区别、相似之处以及一些用例。
我们开始吧!
什么是固件?
在计算机世界中,固件是一种特定类别的计算机软件,为任何设备的特定硬件提供低级控制。固件包含设备的基本功能,并为更高级别的软件(比如操作系统)提供硬件抽象服务。
对于那些较不复杂的设备,固件充当执行控制、监控和数据操作功能的完整操作系统。它保存在非易失性存储器设备中,包括EEPROM、闪存存储器和ROM。
美国科学家阿施尔·奥普勒在1967年提出了“固件”一词。他使用这个术语来描述软件和硬件之间的微程序。
更新固件需要物理更换ROM,或使用特定的程序重新编程EPROM。一些固件存储设备在永久安装后无法更改。
此外,更新固件的重要原因是修复错误、添加设备功能等。你可以简单地将固件视为“硬件的软件”。尽管软件是一个不同的术语,但它们是相互关联的,但不可互换。
设备制造商经常发布定期更新,以确保硬件运行并与新媒体兼容。网络路由器制造商也会在设备上发布固件更新,以提高网络性能。智能手机制造商、相机制造商等也是如此。您只需要访问制造商的网站下载此类更新。
所有的固件根据硬件集成级别分为三个主要类别:
- 低级固件被认为是设备硬件的固有部分。低级固件存储在只读和非易失性芯片(例如ROM)上,因此无法被重新编写或更改。设备在其系统中包含低级固件时,只有一次可编程内存。
- 高级固件:高级固件允许更新,但比低级固件更复杂。它驻留在闪存存储器芯片上。
- 子系统固件:它作为嵌入式系统的一部分。子系统固件的一个例子是服务器的电源子系统。电源子系统是与服务器半独立工作的服务器硬件部件。
例如:统一的可扩展固件接口(Unified Extensible Firmware Interface)、USB驱动器、传感器、小型计算机、智能卡等。
固件更新是如何工作的?
固件更新通常用于防止固件黑客攻击、提高安全性、修复错误、推出新功能以及与最新媒体进行交互。它包含代码,告诉硬件以新的和修改的方式运行。
一些联网设备会定期检查新固件并下载和安装它。但是,其他设备需要用户访问网站来下载和安装固件更新。根据设备的使用情况,更新的频率可能会有所不同。智能设备中的固件可能不需要频繁更新。
智能手机通常会随着软件更新一起升级固件,这样手机就能持续运行,用户不需要更新固件版本。许多电子设备在更新固件时也被要求保持开机状态。
什么是软件?
软件是用于执行特定任务的计算机操作的数据、程序或指令。它是硬件的相反术语,用于描述计算机系统的物理方面。它是无形的。
您还可以将软件称为描述在任何设备上运行的脚本、程序和应用程序的通用术语。因此,软件是计算机的可变部分。软件的主要类别包括:
- 应用软件:它是满足特定计算机需求或执行某些重要任务的软件。
- 系统软件:这种软件类型旨在运行设备的硬件。此外,它为应用程序提供了一个运行平台。
- 编程软件:这种软件提供了软件开发人员所需的编程工具。它还指的是系统和应用软件之间的中间件。此外,您还将获得操作计算机设备和外围设备的驱动程序软件。
在1980年代初,软件是通过软盘销售的。后来,它开始通过CD和DVD销售。大多数软件都是通过互联网购买或直接下载的。您可以轻松从供应商网站找到各种类型的软件。
让我们看一些下面的软件设计类型:
- 架构设计:这种软件设计是软件的主要基础,它通过使用架构设计工具来标识系统的结构、主要组件及其相互关系。
- 高层设计:它被定义为软件设计的第二层,专注于以软件堆栈支持的模块形式实现系统,同时描述了系统的各个模块和功能之间的关系以及数据流。
- 详细层:它被定义为软件设计过程的第三层,专注于特定软件架构的实现细节。
软件质量可以通过一些特征来衡量,包括可访问性、兼容性、功能性、性能、可移植性、可安装性、本地化、效率、可维护性、安全性、可用性、可测试性、可靠性等。
软件如何工作?
所有软件都向计算机提供数据和指令,以便工作并满足用户的需求。如上所述,应用软件和系统软件可以以不同的方式工作。
应用软件
应用软件包含许多程序,为最终用户执行特定的任务,例如浏览网站和撰写报告。它还为其他应用程序执行任务。尽管应用软件是软件,但它不能独立运行。它需要运行计算机的操作系统和其他支持系统软件。
这些是安装在用户计算机上使用计算机内存来执行某些任务的桌面应用程序。它们占用硬盘空间,不需要任何互联网连接来执行任务。
固件 | 软件 |
它是一种控制硬件并定期更新的软件类型。 | 它是一组对计算机系统的指令。 |
固件是操作系统与硬件之间的低级软件。 | 软件位于操作系统之上,并不直接与硬件交互。 |
它包括低级固件、高级固件和子系统固件。 | 它包括应用程序、系统、编程、中间件和驱动程序软件。 |
它的大小很小。 | 尽管是虚拟的,但其大小可以很大。 |
它的目的是不可修改的。 | 根据用户的偏好或需求,可以进行定制或修改。 |
它只需编程一次。 | 您可以根据需要安装和卸载软件多次。 |
您将在硬件的闪存存储器中获得固件。 | 它存储在计算机系统的辅助存储设备上。 |
在开发过程中使用低级编程语言。 | 在开发过程中使用高级和低级编程语言。 |
它直接运行在非易失性二级存储器(如EPROM和闪存)上的存储芯片上。 | 它从可移动介质(如DVD、USB等)复制并安装在存储设备(如SSD或硬盘)中。 |
例如,UEFI和BIOS固件由计算机主板制造商提供。还有像OpenWrt和DD-WRT这样的开源路由器固件。 | 例如,像Linux、Android、Windows等操作系统以及浏览器、应用程序、游戏、MS Office等应用程序。 |
固件与软件:用例
固件的用例
您将在各种计算设备范围内获得固件,包括复杂设备。固件的一些实际用途如下:
- 个人电脑:计算机的固件嵌入在一个小的存储芯片中。计算机外部设备,如显卡、图形等,也包含固件。
- 家用电器:洗衣机和洗碗机使用固件。它使得机器可以与计算机通信,配置设置和控制。
- 存储设备:硬盘、便携式存储设备和USB驱动器包含固件,使设备能够与计算机系统配合运行。
- 智能卡:智能卡也包含固件,以在芯片中嵌入指令,提供基本功能、加密和认证。
- 汽车:汽车包含传感器、小型计算机和嵌入式系统,其中的固件帮助它们执行任务。
- 移动设备:笔记本电脑、平板电脑、智能手机和其他移动设备包含固件,使硬件能够与多种软件配合运行。
软件的使用案例
我认为几乎每个用户现在都知道软件。无论他们在计算机或其他设备上安装和下载什么,都是以软件的形式存在的。使用任何软件已经成为每个人日常生活中的一部分。它在全球范围内有广泛的应用。
在应用软件方面,一些例子包括:
- 文字处理软件:MS Word、记事本和Wordpad
- 电子表格软件:Microsoft Excel、Apple Numbers等
- 数据库软件:MS Access和Oracle等
- 模拟软件:科学模拟器和飞行模拟器
- 企业软件:客户关系管理系统(CRM)
- 多媒体软件:媒体播放器和Real Player
- 教育软件:Encarta、Britannica Mathematical、Google Earth、NASA World Wind
- 演示软件:Keynotes和Microsoft Powerpoint
- 信息工作者软件:资源管理工具、文档工具等
- 应用套件:Microsoft Office、OpenOffice等
- 内容访问软件:Web浏览器、通过media players访问内容等
在系统工程方面,一些例子包括:
- 操作系统,如Windows、macOS和Linux
- 设备驱动程序
- 固件
- BIOS和UEFI
- 编程语言翻译器
- 实用工具
结论
固件通常用于微码嵌入大多数硬件中的嵌入式系统,而软件是指高级程序。更换固件比较棘手,但在软件的情况下,您不会遇到太多麻烦。
然而,固件是控制设备硬件的系统软件。作为一个整体,软件是一组指令,允许您的计算机或其他设备执行任务。我希望现在您已经清楚固件和软件之间的主要差异和相似之处。
您可能也对了解Internet of Things (IoT)感兴趣。