私たちは Yocto (kirkstone 4.0.4) を使って U-Boot for imx8mm_evk をビルドしています。U-Boot から DFU を完全に削除したいと考えています。
構成フラグメントを使用してU-Bootを構成する方法はわかっていますが、他のオプションではすでに成功しています。しかし、何らかの理由で、この単純な設定フラグメントは機能しません。
CONFIG_DFU=n
CONFIG_CMD_DFU=n
do_configureログから、フラグメントが使用されていることを確認しました。
CONFIG_DFUの値は、フラグメントremove_dfu.cfgによって再定義されます。
前の値: CONFIG_DFU=y
新しい値: CONFIG_DFU=n
CONFIG_CMD_DFUの値は、フラグメント remove_dfu.cfg によって再定義されます。
前の値: # CONFIG_CMD_DFU が設定されていません
新しい値: CONFIG_CMD_DFU=n
また、他のフラグメントがこれらの変更を上書きしないことも確認しました。ただし、do_configureが完了すると、最終的な .configureファイルのCONFIG_DFU=y(CONFIG_CMD_DFUはまだオフ)です。何らかの理由で、レシピが「make oldconfig」を実行すると、値が元に戻ります。
なぜ設定は一見DFUを強制的にオンにしたいのですか?私はdo_configure:appendで変更を強制することでそれを削除することができますが、それは非常に厄介なハックであり、私は別の解決策を好むでしょう。
私は自分自身の質問に答えます:すべてのKconfigファイルを調べて、CONFIG_EFI_CAPSULE_FIRMWARE_FITとCONFIG_EFI_CAPSULE_FIRMWARE_RAWがDFUを強制的に有効にしていることがわかりました。EFIローダーを無効にしたとき、通常の方法でDFUも無効にすることができました。
それはうまくいきません。元の投稿で説明したように、何らかの理由で「oe_runmake oldconfig」を実行すると、設定ファイルで無効になっている場合でも「CONFIG_DFU=y」が設定されます。私はその理由を理解しようとしています。