Как Linux загружает прошивку для встроенных модулей драйверов [дубликат]

Упростите: grep завершает ненулевое значение, если ничего не находит (или вы можете проверить, TODOS содержит что-либо в оболочке с помощью теста -n "$ TODOS" ).

#!/bin/sh
TODOS=$(grep -R 'TODO:' ./src)
if [ $? -eq 0 ]; then
    echo not ok
    echo $TODOS
else
    echo ok
fi
7
12.02.2016, 09:49
2 ответа

Я прочитал исходники ядра, особенно drivers/base/firmware_class.c, и обнаружил, что

CONFIG_FW_LOADER_USER_HELPER 

активирует вариант загрузки прошивки udev (очевидно, только для загружаемых модулей, когда работает udev). Но, как упоминалось на LKML, это, похоже, устаревший метод.

Более того, прошивка, необходимая встроенным модулям, загружается из initramfs посредством fw_get_filesystem_firmware() через kernel_read(), если быть точным.

2
27.01.2020, 20:20

Можно встроить образы встроенного ПО в само ядро, используя параметры конфигурации ядра 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

1
27.01.2020, 20:20

Теги

Похожие вопросы