この記事では、U-Boot Falconモードを使用して、i.MX 8QXPの起動時間を短縮する方法について説明しています。一般的な手法はAN14093で紹介されています。この記事の内容は、LF-6.6.23-2.0.0 BSPでテストされました。
1. i.MX Yoctoプロジェクトのユーザーガイドの記載ステップに従って、Yoctoのビルド環境を準備します。ここでは、BSPが~/imx-yocto-bspディレクトリにあり、ビルド・ディレクトリは~/imx-yocto-bsp/buildであると想定します。
2. 添付のアーカイブを~/imx-yocto-bsp/sourcesに解凍します。これにより~/imx-yocto-bsp/sources/meta-imx-fastbootディレクトリが作成されます。
3. 次のコマンドを使用して、meta-imx-fastbootレイヤをビルドに追加します。
bitbake-layers add-layer ~/imx-yocto-bsp/sources/meta-imx-fastboot
4. 同じツリーでイメージを以前にビルドしたことがある場合は、次のコマンドを使用してu-boot-imxとimx-bootパッケージをクリーンアップします。
bitbake -c clean u-boot-imx imx-boot
5. 新しいイメージをビルドします。このパッケージはすぐに使用できるようにcore-image-minimal向けに構成されています。他のイメージへの応用方法を以下でご紹介します。
bitbake core-image-minimal
6. 結果のイメージを好みの方法でeMMC/SDに書き込み、ボードを起動します。
7. デフォルトでは、ボードは通常通り起動します。高速起動を有効にするには、U-Bootでボードを停止し、次のコマンドを実行してください。
u-boot => run prepare_fdt
8. ボードを再起動します。この段階から、ボードは高速モードで起動するはずです。起動中にカーネルまたはsystemdによって出力されるメッセージは大幅に減少します。カーネルから不要な機能を削除したり、systemdによって開始された不要なサービスを削除したりすることで、起動時間はさらに最適化可能です。詳細は、AN14093を参照してください。
9. U-Bootに再度入る場合は、ボードの電源をオンにしたときに、シリアル・コンソールで「c」キーを長押しします。電源をオンにする前やリセット・ボタンを押す前に「c」キーを押し続けると最も簡単です。
追加したレイヤには、U-Boot、ATF、imx-mkimageのパッチが含まれているほか、core-image-minimalレシピを変更します。
U-Bootでは、Falconモードに必要なオプションが「imx8qxp_mek_falcon_defconfig」という名前の新しい構成ファイルと、spl_start_uboot()関数の実装が追加されます。
ATFでは、デバイス・ツリーのロード・アドレスが正しいパラメータに追加されます。
mkimageでは、kernel-atf-container.img(ブート・パーティションにデプロイ)とuImage(rootfsにデプロイ)の2つのターゲットが新たに作成されます。
core-image-minimalレシピの変更により、新しいファイルが生成されたイメージに確実にコピーされます。
別のイメージをビルドする場合は、そのイメージに適した名前を付けた新しいファイルにcore-image-minimal.bbappendの内容をコピーする必要があります。たとえば、imx-image-fullをビルドする場合は、次のコマンドを使用できます。
cp ~/imx-yocto-bsp/sources/meta-imx-fastboot/recipes-fsl/images/core-image-minimal.bbappend ~/imx-yocto-bsp/sources/meta-imx-fastboot/recipes-fsl/images/imx-image-full.bbappend
*** 免責事項 ***
NXPが提供するあらゆるサポート、情報、テクノロジー(以下「資料」)は、明示的または黙示的を問わず、いかなる保証もなく現状のまま提供され、NXPは、適用法で認められる最大限の範囲で、資料に関連する直接的および間接的な責任および損害を一切否認します。 NXPは、アプリケーションまたは製品設計に関するいかなる支援についても責任を負いません。資料は、NXP製品に関連してのみ使用できます。 NXPは資料に関して提供されたフィードバックを制限なく使用できます。