こんにちは!
私たちは、IMX8ULP チップをベースにしたカスタム ボードを開発しようとしています。
USB経由でUUUを使用してイメージをロードするときに問題が発生します。ロードに失敗しました。デバッグ UART に出力が表示されません。
ボードの詳細:
U-Boot イメージ (flash.bin) の読み込み19% で失敗し、USB が切断されます。
$ sudo ./uuu -V flash.bin
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.5.233-0-g79ce7d2
Build in config:
Pctl Chip Vid Pid BcdVersion Serial_No
==================================================
SDPS: MX8QXP 0x1fc9 0x012f [0x0002..0xffff]
SDPS: MX8QM 0x1fc9 0x0129 [0x0002..0xffff]
SDPS: MX8DXL 0x1fc9 0x0147
SDPS: MX28 0x15a2 0x004f
SDPS: MX815 0x1fc9 0x013e
SDPS: MX865 0x1fc9 0x0146
SDPS: MX8ULP 0x1fc9 0x014a
SDPS: MX8ULP 0x1fc9 0x014b
SDPS: MX93 0x1fc9 0x014e
SDPS: MX91 0x1fc9 0x0159
SDPS: MX95 0x1fc9 0x015d
SDPS: MX95 0x1fc9 0x015c
SDPS: MX943 0x1fc9 0x0027
SDP: MX7D 0x15a2 0x0076
SDP: MX6Q 0x15a2 0x0054
SDP: MX6D 0x15a2 0x0061
SDP: MX6SL 0x15a2 0x0063
SDP: MX6SX 0x15a2 0x0071
SDP: MX6UL 0x15a2 0x007d
SDP: MX6ULL 0x15a2 0x0080
SDP: MX6SLL 0x1fc9 0x0128
SDP: MX7ULP 0x1fc9 0x0126
SDP: MXRT106X 0x1fc9 0x0135
SDP: MX8MM 0x1fc9 0x0134
SDP: MX8MQ 0x1fc9 0x012b
SDPU: SPL 0x0525 0xb4a4 [0x0000..0x04ff]
SDPV: SPL1 0x0525 0xb4a4 [0x0500..0x9998]
SDPV: SPL1 0x1fc9 0x0151 [0x0500..0x9998]
SDPU: SPL 0x0525 0xb4a4 [0x9999..0x9999]
SDPU: SPL 0x3016 0x1001 [0x0000..0x04ff]
SDPV: SPL1 0x3016 0x1001 [0x0500..0x9998]
FBK: 0x066f 0x9afe
FBK: 0x066f 0x9bff
FBK: 0x1fc9 0x0153
FB: 0x0525 0xa4a5
FB: 0x18d1 0x0d02
FB: 0x3016 0x0001
FB: 0x1fc9 0x0152
FB: 0x0483 0x0afb
Wait for Known USB Device Appear...
New USB Device Attached at 1:21-E4DD206F132A48BD
1:21-E4DD206F132A48BD>Start Cmd:SDPS: boot -f "flash.bin"
19%1:21-E4DD206F132A48BD>Fail HID(W): LIBUSB_ERROR_IO (-1)(0.211s)flash.bin は、次の説明にあるように、imx-mkimage ツールを使用して、u-boot および事前ビルドされたイメージから生成されています。
make SOC=iMX8ULP flash_singleboot_m33注意: U-Boot SPL イメージのみをロードすると正常に動作しますが、UART に出力が表示されず、UUU コマンドは受け入れられません。
$ sudo ./uuu -V boot-spl-container.img
uuu (Universal Update Utility) for nxp imx chips -- libuuu_1.5.233-0-g79ce7d2
Build in config:
Pctl Chip Vid Pid BcdVersion Serial_No
==================================================
SDPS: MX8QXP 0x1fc9 0x012f [0x0002..0xffff]
SDPS: MX8QM 0x1fc9 0x0129 [0x0002..0xffff]
SDPS: MX8DXL 0x1fc9 0x0147
SDPS: MX28 0x15a2 0x004f
SDPS: MX815 0x1fc9 0x013e
SDPS: MX865 0x1fc9 0x0146
SDPS: MX8ULP 0x1fc9 0x014a
SDPS: MX8ULP 0x1fc9 0x014b
SDPS: MX93 0x1fc9 0x014e
SDPS: MX91 0x1fc9 0x0159
SDPS: MX95 0x1fc9 0x015d
SDPS: MX95 0x1fc9 0x015c
SDPS: MX943 0x1fc9 0x0027
SDP: MX7D 0x15a2 0x0076
SDP: MX6Q 0x15a2 0x0054
SDP: MX6D 0x15a2 0x0061
SDP: MX6SL 0x15a2 0x0063
SDP: MX6SX 0x15a2 0x0071
SDP: MX6UL 0x15a2 0x007d
SDP: MX6ULL 0x15a2 0x0080
SDP: MX6SLL 0x1fc9 0x0128
SDP: MX7ULP 0x1fc9 0x0126
SDP: MXRT106X 0x1fc9 0x0135
SDP: MX8MM 0x1fc9 0x0134
SDP: MX8MQ 0x1fc9 0x012b
SDPU: SPL 0x0525 0xb4a4 [0x0000..0x04ff]
SDPV: SPL1 0x0525 0xb4a4 [0x0500..0x9998]
SDPV: SPL1 0x1fc9 0x0151 [0x0500..0x9998]
SDPU: SPL 0x0525 0xb4a4 [0x9999..0x9999]
SDPU: SPL 0x3016 0x1001 [0x0000..0x04ff]
SDPV: SPL1 0x3016 0x1001 [0x0500..0x9998]
FBK: 0x066f 0x9afe
FBK: 0x066f 0x9bff
FBK: 0x1fc9 0x0153
FB: 0x0525 0xa4a5
FB: 0x18d1 0x0d02
FB: 0x3016 0x0001
FB: 0x1fc9 0x0152
FB: 0x0483 0x0afb
Wait for Known USB Device Appear...
New USB Device Attached at 1:21-E4DD206F132A48BD
1:21-E4DD206F132A48BD>Start Cmd:SDPS: boot -f "boot-spl-container.img"
100%1:21-E4DD206F132A48BD>Okay (0.213s)
1:21-E4DD206F132A48BD>Start Cmd:SDPS: done
1:21-E4DD206F132A48BD>Okay (0s)問題のデバッグにご協力いただけますでしょうか?さらに確認できることは何ですか?
A2 リビジョンは、UUU および imx-mkimage ユーティリティで発行されていますか?
ご返信よろしくお願いします。
よろしくお願いいたします。
ジャン
こんにちは@Chavira 、
素早いフィードバックをありがとうございます!
私は@jeanpihetと一緒にシステム開発に取り組んでおり、ハードウェア側を担当しています。
MX8ULP_DDR_Tool を使用して DRAM トレーニングを正常に完了し、一致するタイミング ファイルを生成しました。
DDR ツールを使用しながらシリアル ダウンロード モードを介して DRAM トレーニング イメージを正常にダウンロードし、DDR ツールを使用しながら UART 出力も受信しました。
生成されたDRAMタイミングファイルを使用してu-bootスクリプトを構築しているにもかかわらず、U-Bootイメージ(flash.bin)をロードすると、19% で失敗し、USB が切断されます。
問題をどこで調べればよいか、またより有益なエラー メッセージを生成するにはどうすればよいか、教えていただけますか?
ご回答をお待ちしています。
最高、
ルーカス
こんにちは@jeanpihetさん、
NXP サポートにお問い合わせいただきありがとうございます。
プレビルド イメージとソース コードは evk ボードでのみ動作します。
DDR トレーニングが正しく完了したことを確認します。すべての DDR 構成がボードのハードウェア (Linux カーネルと U-boot) と一致していることを確認します。
これらのトピックに関するガイダンスについては、移植ガイドを参照してください。
ボードにインストールされているハードウェアに合わせて、弊社の BSP を適切に移植しましたか?
よろしくお願いします、
チャビラ
こんにちは@Lukas_LH 、
EVK 上の LPUART5 インターフェースは、デフォルトのデバッグ UART として使用されます。
EVK と同様に、UART5 も使用しているかどうか確認できますか?
別の UART を使用している場合は、変更を反映するために BSP コンポーネント (ATF、U-Boot、Linux カーネル、デバイス ツリーなど) に必要な変更を適用しましたか?
また、flash_singleboot_m33 の代わりに flash_dualboot を使用してイメージをビルドしてフラッシュすることもできます。次に例を示します。
make SOC=iMX8ULP REV=A2 flash_dualboot
正しいシリコン リビジョン (REV=A2 またはボードに適用されるもの) を指定していることを確認してください。
さらに、eMMC から起動しているのか、FlexSPI から起動しているのかを明確にしていただけますか?
これはビルドとフラッシュのフローに影響します。
よろしくお願いします、
チャビラ
こんにちは、チャビラさん。
早速のご返信ありがとうございます。
EVK と同様に UART5 を使用していますが、ピンの多重化が異なります。U-Boot dts は新しい多重化で更新されました。
オプション REV=A2 は flash.bin イメージの生成に使用されます。
ブート デバイスは eMMC (SD なし) であり、最初に UUU ダウンロードからブートしようとしています。
現在、flash_dualboot イメージを試しており、ピン多重化などについて EVK とボード間のすべての違いを確認しています。
よろしくお願いいたします。
ジャン
こんにちは、チャビラさん。
DDR init と U-Boot に関していくつか質問があります。
現在、これらのイメージは次の手順で構築されます。
これは正しいですか?
サポートをありがとうございます!
ジャン
こんにちは@jeanpihetさん、
i.MX 移植ガイド (UG10165) のセクション 3.2.1 では、DDR init が SoC ファミリによってどのように異なるかについて説明しています。「ポイント 6」では、i.MX8M パーツは U-Boot SPL を使用して DDR (DCD ではない) を初期化し、ユーザーは SPL DDR PHY/コントローラ コードを変更する必要があると述べられています。この記述は、具体的には 8M デバイスに関するものです。
i.MX8ULP の場合、DDR が U-Boot 自体の DCD テーブルではなく U-Boot SPL によって初期化されるという点で、ブート フローは 8M と似ています。imx-mkimage によってビルドされた flash.bin には、2 つの AHAB コンテナ セットが含まれています。
1 つ目は ROM が OCRAM にロードするセット (SPL + uPower + ELE ファームウェア)、2 つ目は SPL が DDR を初期化した後に SPL が DDR にロードするセット (U-Boot 本体 + TF-A) です。
実際には、これは、U-Boot 内部の DCD ではなく、i.MX8ULP の SPL コードで DDR をカスタマイズ/調整することを意味します (8M の場合と同様)。
8ULP 用の U-Boot SPL はすでに DDR init を提供していますか?そうでない場合、どこで更新すればよいですか?
はい。8ULP の場合、SPL パスは DDR を起動する役割を担います。DDR init フックは、ボード/SOC の NXP U-Boot ツリーの SPL 部分 (ボード ディレクトリ + arch/Arm/mach-imx/… + 8ULP 固有の DDR PHY/コントローラ グルー) の下にあります。そのSPLは、2番目のコンテナ(TF-A + U-Boot本体)を新しく初期化されたDDRにロードします。
USB (UUU) 経由の起動とフラッシュはサポートされていますか?どのイメージを起動できますか?
はい、USB 経由の UUU (ユニバーサル アップデート ユーティリティ) は、ROM のシリアル ダウンロード プロトコルを介して i.MX8/8ULP でサポートされています。flash.binを直接RAMにロードして起動するか、.uuuを使うことができます。より複雑なシーケンスを実行するためのスクリプト。
ビルド手順は正しいですか?
8ULPの場合はu-boot-spl.binが必要です。u-boot.bin (U-Boot本体)、bl31.bin (TF-A)、upower.bin、また、make を実行する前に、imx-mkimage/iMX8ULP/ に配置された ELE ファームウェア (A2 シリコンの場合は mx8ulpa2-ahab-container.img という名前) も必要です。
SO、あなたの全体的な手順は 8ULP に適しています。再確認する必要があるのは、起動ステージのブート タイプ (シングル ブートとデュアル ブート) と宛先 (RAM、FlexSPI、eMMC) に一致する imx-mkimage ターゲットだけです。
こんにちは、チャビラさん。
DTS、ボード固有のコード、M33、upower などの適切なイメージでこの問題を解決できました。U-Boot は正常に起動するようになりました。
迅速かつ効率的なサポートをありがとうございました!この最後の投稿は非常に価値のあるものなので、他のユーザーが参考にできるようにピン留めする必要があります。
よろしくお願いいたします。
ジャン