在打印机、交换机等嵌入式设备中,我很困惑固件和操作系统之间的区别是什么。嵌入式设备的操作系统是否类似于 PC(Linux 和 Windows)?
例如,我有一台打印机,它有一个嵌入式 Web 服务器,允许我远程管理打印机。打开厂商网站,发现操作系统是:OS 9.86。这是什么操作系统?请参阅:Phaser 8560 支持和驱动程序
在打印机、交换机等嵌入式设备中,我很困惑固件和操作系统之间的区别是什么。嵌入式设备的操作系统是否类似于 PC(Linux 和 Windows)?
例如,我有一台打印机,它有一个嵌入式 Web 服务器,允许我远程管理打印机。打开厂商网站,发现操作系统是:OS 9.86。这是什么操作系统?请参阅:Phaser 8560 支持和驱动程序
固件是指驻留在非易失性存储器中的一小段代码。在当今办公室常见的硬件外围设备(例如打印机、VoIP 电话等)中,固件通常负责加载(例如操作系统代码签名验证)和管理(例如在恢复模式下刷新操作系统)操作系统,即安装在机器上。执行实际任务(例如打印)是操作系统的工作。
硬件供应商通常使用 Linux 的衍生产品(例如 Cisco IOS)或实时操作系统(例如VxWorks)。
正如其他人指出的那样,固件位于设备的非易失性存储器中。它包含设备从断电或复位启动时执行的指令。这可能是设备上的全部软件,或者它可能包含跳转到某些其他组件上的指令的指令,例如当 PC 的 BIOS 导致处理器读取硬盘驱动器(或软盘或 CD 上的第一个扇区时) -ROM) 来发现接下来要运行的代码。
操作系统是运行在设备上的代码,它为应用程序提供访问设备功能的服务。例如,它可以提供处理器的时间片、用于访问、输入和输出的文件系统等。
嵌入式设备不需要为应用程序提供操作系统,但这可能是制造商在编写软件时使用的合适模型。可以想象,一台打印机可以将其所有固件放在一个带有一些中断处理程序的运行程序中,而无需将 Web 服务器与操作系统分开。我不知道那个特定的模型。
关键是操作系统可以存在于固件中,而固件可以没有操作系统而存在。它们是独立的概念。
用最简单的话来说:
操作系统
包含内核、图形用户界面 (GUI) 或至少一个利用硬件进行文件管理的命令行界面 (CLI)
核心
操作系统软件的一部分,操作系统和硬件之间的门卫和翻译器。
换句话说(来自维基百科),内核的主要功能是调解对计算机资源的访问:
固件
打开计算机电源时:
固件 → 内核 → 完整操作系统
基本上
对于任何要开始运行的设备(计算机、打印机、扫描仪、数码相机等),它应该有一个在开机/启动时运行的初始程序。这个初始程序称为固件。它也称为引导程序,也称为BIOS。它安装在ROM(一种非易失性存储器,其内容是永久性的)中。
固件定位操作系统的内核(请记住,内核是操作系统的一部分)并在启动时将其加载到主内存 (RAM) 中。固件通常用汇编语言或高级语言(如 C/C++)编写。
操作系统是一个完整的软件堆栈,它管理计算机的硬件并设置应用程序运行的环境。换言之,操作系统执行设备的指定任务。内核位于此软件堆栈的底部,只要您的设备启动并运行,它就会一直运行。当我说操作系统管理硬件时,实际上是内核管理对硬件资源(CPU、内存、输入和输出)的任何请求。
与其他人发布的内容相吻合:
固件不仅仅是引导程序或 BIOS,尽管这是大多数消费类设备中该术语的常见用法。
在更复杂的应用中,现场可编程门阵列 (FPGA)、复杂可编程逻辑器件 (CPLD) 和其他类似技术提供了一种用于创建可配置逻辑电路的机制,该机制可以超越由微控制器或更大处理器运行的线性可执行代码. 这通常是专用集成电路 (ASIC) 的替代方案,在放置芯片后无法更改。
在这样的应用程序中,固件不仅仅是加载代码来启动任务。应用程序可以设计为处理多个并行操作,包括但不限于地址路由、信号处理、数学协处理、定时器、电源和复位排序,甚至 LED 和继电器控制。
创建定制设备的可能性是无穷无尽的,对于 FPGA 和 CPLD,可以重新编程。
上述类型的固件(通常)用 VHDL 编程,它描述了同步或异步并行逻辑以表示所需的功能。这些设计通常被布置为可通过内存映射地址范围或通过一些其他协议(例如,PCI/PCI-X/PCIe)访问的软件。固件设计创建的寄存器代表所需功能的一组控制和状态。
另一方面,操作系统为软件提供在某些处理环境中运行的接口(即,提供上下文和“规则”以利用处理器和任何软件可访问的硬件或固件)。操作系统既可以作为固件中的处理规则制定,也可以(更常见地)它只是从 ROM、闪存或其他媒体加载的软件。
操作系统的机器独立部分与硬件之间的接口有多种形式:板卡支持包(BSP)、驱动程序等。BSP 通常用于设置处理器地址和特定于板卡的外围设备等. 许多实时操作系统 (RTOS) 供应商提供了一些基本的 BSP 设置和/或工具来帮助您开始工作。
一些设计人员会保持 BSP 设计简单以使事情顺利进行,并编写许多接口以独立于 RTOS BSP 协议来访问硬件或固件;这在定制固件中更为普遍。
是的,嵌入式设备操作系统与个人电脑“相似”。这些区别是在一定范围内的,但它们基本上都是相同的,并为应用程序提供了一个执行上下文,以便在某些外围设备上运行。至于打印机中实际使用的是什么类型的操作系统?如果没有更多信息,就无法真正知道(他们只发布版本是 9.86 ......可以是自定义的,可以是许多 RTOS 或 GPOS 中的任何一个);此外,还不清楚固件列出的操作系统是否实际上在该下载中,或者只是与兼容性相关的符号。
我希望这会有所帮助!
固件是占用整个硬件资源的应用程序。换句话说,没有操作系统能够在系统上动态加载应用程序。应用程序是操作系统本身。该应用程序操纵硬件的所有资源。因此,应用程序与硬件高度集成,几乎无法跨硬件。这就是应用程序被称为固件的原因:软件固定到指定的硬件。
例如,空调上的固件控制指定的压缩机和指定的控制面板。因此,固件将无法在其他空调型号上使用。(当然,固件在其他设备上无法使用)固件非常依赖硬件。
最初,固件被定义为“固件保存在非易失性存储设备中,例如 ROM、EPROM 或闪存”。但是定义已经过时了:如果您在该计算机上使用固态磁盘(SSD),您的整个计算机将仅在固件内,但没有任何软件。
在我看来,没有基于嵌入式 Linux 的固件,或者你应该在使用 SSD 时将所有软件都称为固件。