LS1043AXN8QQB と 2GB DDR4 を搭載したカスタム ボードでは、パワーオン リセットを正しく CAN ません。
HW アーキテクチャ: LS1043A 2GB DDR4 (512MB x8 ビット)、eMMC ブートモード付き。eMMC にはすべてのブート イメージ (uboot、カーネルなど) がフラッシュされていました。
パワーオン リセットは、いくつかの電源状態、RESET 信号をチェックするためのいくつかのロジック ゲートによって制御されます。これは RDB リファレンス・デザインに従います。詳細設計については、添付の回路を参照してください。
障害: 電源投入後、ボードはランダムな障害率で正常に電源投入リセットCANません。パワーオンリセットに失敗した場合、定期的なパルスでPORESET_B、RESET_REQ_B、およびHRESET_BをCANキャプチャします。また、LS1043A から eMMC チップへの SDHC_CLK 出力が常に存在することもCAN。以下のように
以下のように波を拡大すると、
起動後、LS1043A によって HRESET_B が HIGH にプルアップされていることがわかります。これは、システムがすでに PLL ロック動作を終了し、HRESET_B の駆動を停止し始めたことを意味しますが、[PBL が SD カードから PBI コマンドをフェッチし、PBI が CCSR スペースに書き込み、OCRAM に SPL をプログラムする] 操作に失敗し、その後、GPP が 0x0000_0000 のブート ROM にジャンプします。これは、ブート プロセス シーケンスに従って、ASLEEP がドライバ LOW にならないためです。
この問題をデバッグして修正するための提案はありますか?ありがとう。
デバッグフェーズでは、 MPUが故障しているときにCPU が継続的にリセットされるのを防ぐために、 RESET_REQ_B をPORESETから切断できる必要があります。
RESET 回路の設計については、 AN5012、LS1043A設計チェックリスト - アプリケーションノート 、図18、JTAGインターフェース接続 、および LS1043ARDB ボード を参照してください 。
まず、 PORESETが低い原因を特定します。PORESETがトリガーされると、 CPUは正常に動作しなくなります。
PORESET_Bの制御ロジックは、RDBリファレンスデザインのようにCPLD制御を使用しません。代わりに、下図に示すようにウォッチドッグタイマーと、前述のパワーオンリセット用のロジック回路を使用します。
TPS3828ウォッチドッグチップは、システムの電源投入後、初期起動時に200msの遅延出力を内蔵しており、PORESET_Bの解除を制御します。前述の論理ゲート回路を介して、電源検出ロジックとのANDゲートロジックを実行し、CPU_PORESET_BをLS1043Aプロセッサに出力してリセットを開始します。
uboot またはシステムに入った後、reset または reboot コマンドを使用して、最終的に RESET_REQ_B を介してウォッチドッグ チップを制御し、システムのソフト リセットと再起動を実行できます。
このようなリセット制御がシステムの正常な電源投入時の起動に影響を与えるかどうかという疑問が残ります。現状の分析に基づくと、LS1043Aは起動後にOCRAMにアクセスした後、初期化に失敗したと考えられます。
PORESET により POR が繰り返されるようです。
PORESET がハイからローに変化する原因となる信号を確認してください。
このステップでは、DDR 部分は POR に影響しません。
中国語で返事をすることもできます。
さらに情報を追加しますと、ボードで使用した DDR4 チップは MT40A512M8SA-062E IT (3200MT/s バージョン) であり、ddr_init.c で LS1043ARDB (LS2108) のデフォルト設定を使用しました。DDR チップまたは DDR 設定は、OCRAM で DDR コントローラを初期化する際のシステムのパワーオン リセットに影響しますか?
同様の問題、断続的な障害(数千回の再起動のうち1回のみ発生)に遭遇しました。u-boot の起動プロセス中にソフトウェアがフリーズします。障害メッセージは「Synchronous Abort」ハンドラ、esr 0x02000000 です。呼び出しの詳細を逆アセンブルしたところ、次のことがわかりました。initr_pci →pci_init→dm_pciauto_config_device (pci_auto.c:371)→dm_pci_hose_probe_bus (pci-uclass.c:607)→dm_pciauto_prescan_setup_bridge→bl dm_pci_get_bdf。ret が戻ると、アドレス 0x8202fc20 で例外が発生します。問題は、ret が誤ったアドレスに到達することですが、呼び出された esr は単なるレジスタシフトであり、それ自体には本質的にエラーが発生しやすい側面はありません (メモリへのアクセスもジャンプもありません)。
このソフトウェアはcpldを使用してウォッチドッグ(外部ウォッチドッグ)にアクティブに信号を送り、 PORESETを使用して外部ウォッチドッグをリセットしようとしましたが、失敗しました。この問題についてご助言いただけますでしょうか?
この質問については、新しいトピックを立てることをお勧めします。ありがとうございます。
すでに新しい通知「ソフトウェア起動時に同期アボートが発生しました」ハンドラー、esr 0x02000000