
Я узнал, что подсистема прошивки использует udevd для копирования прошивки в созданную запись sysfs «data».
Но как это работает в случае встроенного модуля драйвера, где udevd еще не запущен?
Я использую ядро 3.14.
ТИА!
решение1
Я прочитал исходники ядра, особенно drivers/base/firmware_class.c
, и обнаружил, что
CONFIG_FW_LOADER_USER_HELPER
активировал быudev
вариант загрузки прошивки (очевидно, применимый только для загружаемых модулей, когда запущен udev). Но как упоминалось наЛКМЛПохоже, это устаревший метод.
Более того, прошивка, необходимая встроенным модулям, загружается из , 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/Использование_и_механизм_функции_ядра_%22запрос_прошивки()%22#Загрузка_прошивки_из_образа_ядра