我了解到固件子系统使用 udevd 将固件复制到创建的 sysfs“数据”条目。
但是,如果 udevd 尚未启动的内置驱动程序模块,这是如何工作的呢?
我使用的是 3.14 内核。
蒂亚!
答案1
我通读了内核源代码,特别是drivers/base/firmware_class.c
,并发现
CONFIG_FW_LOADER_USER_HELPER
将激活udev
固件加载变体(显然仅适用于 udev 运行时的可加载模块)。但正如上面提到的兰卡梅勒这似乎是一个过时的方法。
此外,准确地说,内置模块所需的固件是通过 a 加载initramfs
的fw_get_filesystem_firmware()
。kernel_read()
答案2
可以使用CONFIG_FIRMWARE_IN_KERNEL
、CONFIG_EXTRA_FIRMWARE_DIR
和CONFIG_EXTRA_FIRMWARE
内核配置选项将固件映像构建到内核本身中。这对于您不能或不想在运行时从用户空间提供固件的情况可能很有用(例如,当访问引导设备需要相关固件,并且您不想使用 initrd 时) )。
以下是固件加载可用选项的更详细说明:https://wiki.tizen.org/wiki/Usage_and_Mechanism_of_kernel_function_%22request_firmware()%22#Load_firmware_from_kernel_image