i.MX95のカスタムシステムマネージャ設定では、A55論理マシン(LM1)の起動は共有ドライバ関数 SRC_MixSoftPowerUp() (devices/MIMX9/drivers/fsl_src.c) for srcMixIdx = PWR_MIX_SLICE_IDX_A55P (index 11)でフリーズします。 SRC_MixPowerUpCompleted() 決して真を返さない、 FUNC_STAT 混合状態または不整合な状態でフリーズし、最終的にSM自身のWDOG2がFCCUリセットを実行します。
重要なのは、シーケンスが完全な電源オフ・オンサイクルを強制されるとき 電源停止要求も完了しない ハードウェアはこのミックスのソフトウェア電源制御に い ずれ 方向にも応答しないことです。
同じファームウェアは物理的に異なる2つのボード(FRDM-IMX95 15x/LPDDR4xおよびFRDM-IMX95-PRO 19x19/LPDDR5)で同じように停止しますが 、両ボードの工場出荷時のeMMCイメージは完全なLinuxユーザースペースで起動するため、シリコンや基板自体は実証的に対応可能です。
具体的な証拠(下記参照)に基づいて、多くの候補原因を除外することができました。残りの原因についてご助言いただければ幸いです。
| SoC | i.MX95 (B0) |
| ボード | FRDM-IMX95 (15x15、LPDDR4x) そして FRDM-IMX95-PRO (19x19、LPDDR5) |
| システムマネージャー | nxp-imx/imx-sm で lf-6.18.20-2.0.0-5-g3198944 |
| SM設定 | カスタム(SMCT/.mex生成)、 ない mx95evk |
| M33/SMステータス | 完全に動作します |
| M7ステータス | 完全に動作 — SCMI、TRDCパーティショニング、STOP/SUSPEND/ディープアイドル、I2C、イーサネットMDIOはすべて機能しています |
| A55 (LM1) | 説明どおりに失敗する |
| テストされたブートメディア | SD そして eMMC(同一の結果) |
A55はM7からオンデマンドでブートされます SCMI_LmmBoot() (手動でも再現可能) LM1ブート (SMデバッグモニターより)。
SRC_XSPR_CORTEXMIX_PLATFORM (ミックスインデックス11) FUNC_STAT 凍結 0x00001010 または 0x00001011 入国時の状態によって異なります。
7 つのステータス フィールドを解読 PWR_MIX_FUNC_STAT_PUP/PDN:
| PSW_STAT | 「アップ」パターン |
| SSAR_STAT | 「アップ」パターン |
| A55_HDSK_STAT | 「アップ」パターン |
| SYSMAN_STAT | 「アップ」パターン |
| RST_STAT | 「電源オフ」パターン |
| ISO_STAT | 「電源オフ」パターン |
| MEM_STAT | 「電源オフ」パターン |
これは、完全に電源が入った状態でも、完全に電源が切れた状態でも一致しない、矛盾した状態であり、進行しません。
スコープが取り付けられました VDD_ARM (出力キャップC211–C215、インダクタL7の後、DCDCの離散PPF5301下流に設置され、このボードには専用ARMレールが搭載されています。その間 LM1ブート 試み:
つまり、これは単なる権限やタイミング、ソフトウェアのアーティファクトではなく、物理的に観察可能な不完全な電力移行です。
A55Pミックスに対して電源オフと電源オンのサイクル全体を無条件に強制する( MEM_STAT == 0 ゲート — つまり SLICE_SW_CTRL |= PDN_SOFT、待機 電源オフ完了、 SLICE_SW_CTRL &= ~PDN_SOFT、待機 PowerUpCompleted) は、 明示的な電源オフ要求さえも完了しない。 FUNC_STAT 待機中ずっと変化しない。
これは、問題がSRCレジスタインターフェースの下にあることを示唆しており、例えばGPCハンドシェイクの前提条件、SRCブロック自体へのクロックの欠如、ボードやPMICの応答問題などがあり、 SRC_MixSoftPowerUp()自身のシーケンスロジックで修正可能な問題ではないことを示唆しています。
PERF_A55 口論 (3 → 0、ODV → PRK 電圧レベル) — どちらの値でもバイトが同一で障害が発生します。DVS/電圧レベルの不一致は除外されます。
config_bctrl.h (SM_BCTRL_A_CONFIG) / SM_BCTRL_W_CONFIG) — 私の設定では空でした。 mx95evkの値は何も変更されませんでした。それから私はライブレジスターを読みました 稼働中の工場システム SMモニター経由(BLK_CTRL_NS_AONMIX) 0x44210008–0x44210024、 BLK_CTRL_WAKEUPMIX 0x42420030–0x42420064) — すべての言葉が一致しました mx95evk 正確に参照してください。
SM_A55P_CONFIG、 config_user.h、TRDC SRC/GPC/ANATOP の許可、WDOG2 タイムアウト — 全て同一であることが確認されました mx95evk は、ブロッカーではないことが確認されています。(SM自身のDOM2 TRDCアクセスはこれらのレジスタに実際に動作しており、レジスタ値の変更を読み書きできます。)注記 SM_A55P_CONFIG そして SM_DDR_CONFIG 空です mx95evk 自身の設定ファイルも。
SRC_MixIsPwrReady() guard — 正しい論理ですが、ここでは正当にfalse(混合ビット状態)を返すため、動作は変わりません。
無条件 SRC_MixSetA55HdskMode(..., ACK_WAIT) — 効果なし。 A55_HDSK_STAT 最初から最後まで正しい「上向き」のパターンだった。
より新しいSMファームウェア — ピン留めされた SRCREV を walnascar → whinlatter スパンにわたって差分化しました: 変更なし に デバイス/MIMX9/ (含む fsl_src.c、 dev_sm_cpu.c、 dev_sm_power.c)
uboot-imx 違い — リリースごとに実際の違いは存在するが、どれも PD_A55P/SRC_XSPR/A55 の電源投入。これは構造的にも真実です。U-Boot SPL は A55号線で、つまりこのパワーアップが既に成功した後にのみ有効です。
ERR053228アナログ(MTR_ACK_CTRL) — i.MX95には、ミックスごとの MTR_ACK_CTRL/MTR_ACK_STAT ハンドセイク(オフセット0x90/0x94)があり、そのリセットデフォルト(CNT_MODE = 0)はハードウェアMTRのアクセントを無期限に待ち、これはスティック MEM_STATに十分にマッチしているように見えました。私が書いた CNT_MODE = 3 (タイムアウトモード)最大 MTR_CNT_CFG 電源投入遷移前に書き込みが有効になることをリードバックで確認しました(いいえ LOCK_CFG 干渉)。 変更なし。
実際の工場APバイナリ — 抽出済み bl31.bin / tee.bin / u-boot* このボードの既知の正常な工場eMMCイメージからそれらを構築し、 flash.bin 変更なし (U-Bootの最初の命令の前に停止が発生するため、これは想定内の動作である。)
ヒューズ/OTP — 除外: ヒューズはダイごとに一度焼却され、工場出荷時のイメージと私のイメージは 同じ物理的な基板。
ブーツミディアム SDカードとeMMCの両方をテストした結果、同一であった。
ファクトリーSMバイナリの由来 これは特に強調しておきたい点です。なぜなら、「NXPは別のSMビルドを出荷している可能性がある」という可能性を排除できるからです。工場出荷時の eMMC の M33 イメージ (ROM コンテナ 3、イメージ 3、 CORE_CM33、コンテナ相対オフセット 0x79000、サイズ 0x2C800) を使用 mkimage_imx8 -soc IMX9 -parse を実行し、抽出を検証しました。 コンテナ自身の記録されたハッシュとの完全なSHA384一致。その建築バナーにはこう書かれている。
c450f539 は (git merge-base --is-ancestor) であることが確認されています。 私のビルドの直接の祖先であり、唯一の介入コミットは fsl_src.c/dev_sm_cpu.c/dev_sm_power.c これは、機能的な変更を一切伴わない、純粋なテスト用足場のクリーンアップです。
A55を正常に起動させる工場出荷時イメージは、私の場合失敗したSMソースと同じ機能的に動作しています。
上記の投稿は無視して、チケットを閉じてください。先ほどwrynoseを使って新規ビルドをしてみましたが、うまくいきました!以前のビルドではwhinlatterを使用していましたが(FRDM-IMX95に同梱されていたため選択しました)、うまくいきませんでした。