ファームウェアサブシステムがudevdを使用して、作成されたsysfsの「データ」エントリにファームウェアをコピーすることを学びました。
しかし、udevdがまだ開始されていない組み込みドライバーモジュールの場合、これはどのように機能しますか?
3.14カーネルを使用しています。
TIA!
カーネルソース、特に_drivers/base/firmware_class.c
_を読んだところ、
_CONFIG_FW_LOADER_USER_HELPER
_
udev
ファームウェアロードバリアントをアクティブにします(明らかに、udevが実行されている場合、ロード可能なモジュールでのみ使用できます)。しかし [〜#〜] lkml [〜#〜] で述べたように、これは古いメソッドのようです。
さらに、組み込みモジュールに必要なファームウェアは、正確にはfw_get_filesystem_firmware()
からkernel_read()
を介してinitramfs
からロードされます。
カーネル構成オプション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