代码之家  ›  专栏  ›  技术社区  ›  foo_l

Linux中的固件和驱动程序[已关闭]

  •  8
  • foo_l  · 技术社区  · 11 年前

    根据我的理解,固件是控制硬件的东西,驱动程序与固件交互以控制硬件。这是正确的吗?

    在Linux中,与固件交互的API或函数是什么?固件代码是否独立于任何操作系统(如Linux或Windows)?

    2 回复  |  直到 11 年前
        1
  •  8
  •   Community holdenweb    7 年前

    固件是在设备上运行的软件。驱动程序是告诉操作系统如何与设备通信的软件。所有具有固件的设备通常都被编程到设备中(使用ROM芯片或可编程ROM芯片),但也有一些设备在初始化时将固件加载到设备中。 并非每个设备都具有 frimware.

    1. 更具技术性“固件是上传到硬件设备本身的微处理器或可编程逻辑的软件。使用固件的硬件示例有:HP打印机,在通电时从USB端口接收代码,无线网络接口,在启动时上传固件,路由器,可以从互联网上自我更新等等冰是一个加分项。它允许在首次销售之后添加产品改进。其中包括修复产品中的漏洞、应对安全问题或应对监管环境的变化;示例:FCC开放或限制允许的带宽、功耗、安全性。"
    2. 一般来说:驱动程序是一个与硬件对话的内核模块;固件是在与驱动程序通信的硬件上运行的软件。
        2
  •  1
  •   Alex F    11 年前

    这取决于设备和PC之间的连接方式。对于PCI板,有一组Linux内核模式API。另一组内核模式API用于与通过USB端口连接的设备通信。对于以太网和WiFi连接,您可以使用套接字API,通信完全在用户模式下完成。通过串行端口连接的设备也使用用户模式API进行处理,在Linux操作系统中它们被视为文件。

    通常,设备固件不依赖于主机系统操作系统。然而,这取决于设备本身运行的操作系统(如果有的话)。固件代码可以在没有任何操作系统的情况下用纯C编写,也可以在实时操作系统下运行。现代设备可能包含功能齐全的操作系统,如嵌入式Linux或Windows。在这种情况下,具有该设备专用程序的整个操作系统被视为设备固件。例如,用于特定移动设备的Android操作系统。