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

Gue*_*OCs 9 firmware kernel bluetooth drivers

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

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

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

Pil*_*ot6 10

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

\n

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

\n

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

\n

文件的调用方式并不重要。它是由供应商选择的。

\n

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

\n

Linux 维护人员从供应商或其驱动程序获取固件,并在linux-firmware git中积累 blob 。

\n

发行版维护者(如 \xd0\xa1anonical)将此固件打包到包中。对于 Ubuntu,它是令人惊讶的linux-firmware软件包。它由内核 linux-frimware git 组成,并且会不时更新。

\n