根据我的理解,固件控制硬件,驱动程序与固件交互以控制硬件。这是对的吗?
在Linux中,与固件交互的API或功能是什么?固件代码是否独立于任何操作系统(例如Linux或Windows)?
答案 0 :(得分:8)
固件是在设备上运行的软件。驱动程序是告诉操作系统如何与设备通信的软件。具有固件的所有设备通常被编程到设备中(具有ROM芯片或可编程ROM芯片),但是存在一些设备,其中固件在初始化时被加载到设备中。 每台设备都没有frimware.
答案 1 :(得分:1)
这取决于设备和PC之间的连接方式。对于PCI主板,有一套Linux内核模式API。另一组内核模式API用于与通过USB端口连接的设备进行通信。对于以太网和WiFi连接,您可以使用套接字API,完全在用户模式下完成通信。通过串行端口连接的设备也使用用户模式API处理 - 它们在Linux操作系统中被视为文件。
通常,设备固件不依赖于主机系统OS。但是,它取决于在设备上运行的操作系统(如果有)。固件代码可以在没有任何操作系统的情况下以普通C编写,也可以在实时操作系统下运行。现代设备可能包含全功能的操作系统,如嵌入式Linux或Windows。在这种情况下,具有特定于该设备的程序的整个OS被认为是设备固件。例如,针对特定移动设备的Android OS。