Linuxで組み込みドライバモジュールのファームウェアをロードする方法

Linuxで組み込みドライバモジュールのファームウェアをロードする方法

ファームウェアサブシステムがudevdを使用して作成されたsysfs "データ"エントリにファームウェアをコピーすることがわかりました。

しかし、udevdがまだ組み込みドライバモジュールを起動していない場合はどうなりますか?

私は3.14カーネルを使用しています。

ティア!

答え1

私はカーネルのソースコード、特にを読んでdrivers/base/firmware_class.c発見しました。

CONFIG_FW_LOADER_USER_HELPER 

udevファームウェアロードバリアントを有効にします(明らかにudevランタイムのロード可能モジュールのみ)。しかし、上記のようにランカ・メレこれは時代に劣ったアプローチのようです。

また、正確に言えば、内蔵モジュールに必要なファームウェアinitramfsfw_get_filesystem_firmware()kernel_read()

答え2

CONFIG_FIRMWARE_IN_KERNELカーネル設定オプションを使用して、ファームウェアイメージCONFIG_EXTRA_FIRMWARE_DIRCONFIG_EXTRA_FIRMWAREカーネル自体に構築できます。これは、実行時にユーザースペースでファームウェアを提供できない場合や提供したくない状況で役立ちます(たとえば、ブートデバイスにアクセスするには関連するファームウェアが必要で、initrdを使用したくない場合など)。

以下は、ファームウェアのロードに使用できるオプションの詳細な説明です。https://wiki.tizen.org/wiki/Usage_and_Mechanism_of_kernel_function_%22request_firmware()%22#Load_firmware_from_kernel_image

関連情報