2016-12-16 19:10:36 +08:00
|
|
|
=================
|
|
|
|
Built-in firmware
|
|
|
|
=================
|
|
|
|
|
|
|
|
Firmware can be built-in to the kernel, this means building the firmware
|
|
|
|
into vmlinux directly, to enable avoiding having to look for firmware from
|
|
|
|
the filesystem. Instead, firmware can be looked for inside the kernel
|
|
|
|
directly. You can enable built-in firmware using the kernel configuration
|
|
|
|
options:
|
|
|
|
|
|
|
|
* CONFIG_EXTRA_FIRMWARE
|
|
|
|
* CONFIG_EXTRA_FIRMWARE_DIR
|
|
|
|
|
|
|
|
There are a few reasons why you might want to consider building your firmware
|
2018-01-24 10:06:32 +08:00
|
|
|
into the kernel with CONFIG_EXTRA_FIRMWARE:
|
2016-12-16 19:10:36 +08:00
|
|
|
|
|
|
|
* Speed
|
|
|
|
* Firmware is needed for accessing the boot device, and the user doesn't
|
|
|
|
want to stuff the firmware into the boot initramfs.
|
|
|
|
|
|
|
|
Even if you have these needs there are a few reasons why you may not be
|
|
|
|
able to make use of built-in firmware:
|
|
|
|
|
|
|
|
* Legalese - firmware is non-GPL compatible
|
|
|
|
* Some firmware may be optional
|
|
|
|
* Firmware upgrades are possible, therefore a new firmware would implicate
|
|
|
|
a complete kernel rebuild.
|
|
|
|
* Some firmware files may be really large in size. The remote-proc subsystem
|
|
|
|
is an example subsystem which deals with these sorts of firmware
|
|
|
|
* The firmware may need to be scraped out from some device specific location
|
|
|
|
dynamically, an example is calibration data for for some WiFi chipsets. This
|
|
|
|
calibration data can be unique per sold device.
|
|
|
|
|