固件 blob(来自 linux-firmware)到底是什么?

固件 blob(来自 linux-firmware)到底是什么?

根据https://wiki.gentoo.org/wiki/Linux_firmware

Linux 固件是随 Linux 内核一起发布的软件包,其中包含某些硬件设备的部分或全部功能所需的固件二进制文件。这些二进制文件通常是专有的,因为一些硬件制造商不会发布构建固件本身所需的源代码。

例如,我的蓝牙 pcie 设备需要linux-firmware/qca/htbtfw20.tlv。这是内核驱动程序吗?为什么格式是.tlv,为什么有些是.bin?通常内核驱动程序是 ELF 可执行文件。

答案1

许多硬件供应商对其硬件的工作原理秘而不宣。这就是为什么他们将设备的一些功能隐藏在闭源 blob 中。他们将这些 blob 与驱动程序一起分发。

这些 blob 不由 OS 执行,而是被加载到硬件中。加载 blob 后,OS 可以使用某些驱动程序来管理设备。

对于蓝牙,大多数设备都使用通用 Linux 模块(例如btusb,或者hci_qca在您的情况下)。该模块会检测设备、加载固件,然后就可以像使用其他设备一样使用该设备。

文件的名称其实并不重要。它由供应商选择。

固件并不完全是驱动程序。它是由设备执行的一段代码,用于与驱动程序进行通信。

Linux 维护者从供应商处获取固件,或者他们的驱动程序,并将 blob 积累在Linux 固件 git

发行版维护者(如 Сanonical)将此固件打包成包。对于 Ubuntu,它令人惊讶地linux-firmware打包成包。它由内核 linux-frimware git 组成,并会不时更新。

相关内容