MIMXRT1166 と W9812G6KB SDRAM を 166 MHz で使用するカスタム ボードがあります。SDRAMCRx 設定を SDRAM データシートで要求されている特定の値に合わせるように DCD を構成しました。DQS ピンはボード上で配線されていません。
私のアプリケーションは Zephyr を使用しており、SDRAM はデータとアプリケーションのヒープ/スタックに利用されています。数分間実行すると、アプリケーションがクラッシュし、さまざまなエラー メッセージが表示されます。
[00:08:10.517,000] os: ***** USAGE FAULT *****
[00:08:10.525,000] os: Illegal use of the EPSR
[00:18:33.709,000] os: ***** USAGE FAULT *****
[00:18:33.717,000] os: Attempt to execute undefined instruction
[00:01:58.470,000] os: ***** USAGE FAULT *****
[00:01:58.478,000] os: Unaligned memory access パターンを書き込んでそれをチェックするベアメタル アプリケーションを実行して SDRAM をテストしたところ、問題なく何時間も実行できました。
SEMC パラメータの調整に多くの時間を費やしましたが、成功しませんでした。私の知る限りでは、間違った値がスタックからポップされていますが、クラッシュは毎回異なる場所で発生し、そのパターンを見つけることができません。
私はこの問題の追跡に多くの時間を費やしてきましたので、どんな指摘でも本当に感謝します。
こんにちは@tbonkers 、
それはわかってよかったです!ご質問がございましたらお気軽にお問い合わせください。
すてきな一日を、
カン
---------------------------------------------------------------------------------
注記:
- この投稿があなたの質問への回答である場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう!
- Threadは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。
後ほど関連する質問がある場合は、新しいThreadを開いて、閉じたThreadを参照してください。
---------------------------------------------------------------------------------
こんにちは@Kan_Liさん
ファームウェアが原因であるという手がかりがあります。これまでは Zephyr v3.7.1 LTS を使用していましたが、昨日 Zephyr v4.2.99 に切り替え、2 つのボードを一晩稼働させたままにしましたが、問題なく稼働しました。
ご協力ありがとうございます。
こんにちは@tbonkers 、
添付のパッチは SDRAM ストレス テスト用のコードです。任意のフォルダーでこのパッチを使用して「git apply」コマンドを使用すると、ソース ファイルをプロジェクトに含めることができます。
お役に立てれば幸いです。
すてきな一日を、
カン
---------------------------------------------------------------------------------
注記:
- この投稿があなたの質問への回答である場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう!
- Threadは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。
後ほど関連する質問がある場合は、新しいThreadを開いて、閉じたThreadを参照してください。
---------------------------------------------------------------------------------
こんにちは@Kan_Liさん
SDRAM を使用しないアプリケーションを実行している場合、エラーは表示されません。データに OCRAM を使用して、パターンを SDRAM に書き込み/読み取りするテストを行いましたが、問題なく動作したSO、問題は SDRAM に関連していると結論付けることができると思います。
SDRAM を別のチップ (ISSI) に変更しましたが、問題は解決しません。読み取りテストと書き込みテストは合格しているので、これがハードウェア/ルーティングの問題であるとはまだ 100% CAN確信できません。問題をさらに切り分けるためにどのようなテストを実行すればよいかについて、何かアイデアはありますか?
こんにちは@tbonkers 、
情報ありがとうございます!データとヒープ/スタックを SRAM などの別の場所に置くことは可能ですか? 問題が解決しない場合は、根本的な原因が SDRAM ではなくアプリケーション側にあることを意味します。
すてきな一日を、
カン
---------------------------------------------------------------------------------
注記:
- この投稿があなたの質問への回答である場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう!
- Threadは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。
後ほど関連する質問がある場合は、新しいThreadを開いて、閉じたThreadを参照してください。
---------------------------------------------------------------------------------
こんにちは@Kan_Liさん
DCD ファイルを更新しても変化はなく、クラッシュは引き続き発生します。
こんにちは@tbonkers 、
情報ありがとうございます!DCD ファイルは専門家によって確認され、更新されました。添付ファイルから入手してください。
お役に立てれば幸いです。
すてきな一日を、
カン
---------------------------------------------------------------------------------
注記:
- この投稿があなたの質問への回答である場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう!
- Threadは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。
後ほど関連する質問がある場合は、新しいThreadを開いて、閉じたThreadを参照してください。
---------------------------------------------------------------------------------
こんにちは@Kan_Li 、回路図を見ていただきありがとうございます。
DCD は SEMC の初期化にのみ使用し、アプリケーションからは SEMC には触れません。添付の dcd.c ファイルを参照してください。
こんにちは@tbonkers 、
シェアしていただきありがとうございます!SDRAM 回路図は私と専門家によって二重チェックされましたが、問題は見つかりませんでした。DCD ファイルも共有していただくことは可能でしょうか?アプリケーション コードでも SEMC を初期化しましたか?宜しくお願い致します。
すてきな一日を、
カン
---------------------------------------------------------------------------------
注記:
- この投稿があなたの質問への回答である場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう!
- Threadは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。
後ほど関連する質問がある場合は、新しいThreadを開いて、閉じたThreadを参照してください。
---------------------------------------------------------------------------------
こんにちは@Kan_Liさん
以下は SDRAM の回路図です。
こんにちは@tbonkers 、
ご説明ありがとうございます!レビューのために回路図の一部を共有していただくことは可能でしょうか?特に RT と SDRAM 間の接続に関して。
すてきな一日を、
カン
---------------------------------------------------------------------------------
注記:
- この投稿があなたの質問への回答である場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう!
- Threadは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。
後ほど関連する質問がある場合は、新しいThreadを開いて、閉じたThreadを参照してください。
---------------------------------------------------------------------------------
こんにちは@Kan_Liさん
コードは EPSR の読み取りまたは書き込みを試行せず、アプリケーションは XIP モードで実行されます。EVK にはアクセスできませんが、別の SDRAM チップを使用する以前のボード リビジョンがあり、アプリケーションは問題なく実行されます。これは、SDRAM の構成ミスまたはハードウェアの問題を示しています。
例外はほとんどの場合異なり、異なる場所で発生します。次に例を示します。
[00:26:09.898,000] os: ***** MPU FAULT *****
[00:26:09.906,000] os: Instruction Access Violation
[00:26:09.914,000] os: r0/a1: 0x00000001 r1/a2: 0x80101c60 r2/a3: 0x80101c60
[00:26:09.925,000] os: r3/a4: 0x80101c60 r12/ip: 0x8012b4bc r14/lr: 0x300335ad
[00:26:09.936,000] os: xpsr: 0x20000246
[00:26:09.943,000] os: s[ 0]: 0x80101c60 s[ 1]: 0x800026c4 s[ 2]: 0x00000000 s[ 3]: 0x3005c74c
[00:26:09.955,000] os: s[ 4]: 0x3005c730 s[ 5]: 0x30031fef s[ 6]: 0x80082460 s[ 7]: 0x00072300
[00:26:09.968,000] os: s[ 8]: 0x00000038 s[ 9]: 0x3000debb s[10]: 0x8012b4c8 s[11]: 0x3000a52f
[00:26:09.981,000] os: s[12]: 0x00000000 s[13]: 0xfffffffd s[14]: 0xaaaaaaab s[15]: 0xaaaaaaab
[00:26:09.993,000] os: fpscr: 0xaabaaaaa
[00:26:10.000,000] os: Faulting instruction address (r15/pc): 0x80101c60
[00:26:10.010,000] os: >>> ZEPHYR FATAL ERROR 20: Unknown error on CPU 0
[00:26:10.020,000] os: Fault during interrupt handling
[00:26:10.029,000] os: Current thread: 0x80101c60 (lvgl_handler_tid)
[00:26:10.039,000] os: Halting system PC は SDRAM を指していますが、アプリケーションは SDRAM から機能を実行することは想定されていないため、これは奇妙です。一部のレジスタには 0xaaaaaaab という疑わしい値が含まれていますが、これは Zephyr がスタックを 0xaaaaaaaa パターンで埋めるため、スタック汚染を意味している可能性があります。
DCD ファイル内の SDRAM タイミング パラメータを変更すると、エラーの頻度が増加する傾向があります。この場合も、SDRAM に問題があると考えられますが、正確な理由を特定CANません。
SDRAM 速度を下げてみましたが、クラッシュはまだ発生します。私が気づいたもう 1 つの点は、SEMC_INTR の AXIBUSERR が設定されていることです。これは、ベア メタル アプリケーションの実行時には発生しません。
こんにちは@tbonkers 、
アプリ コードから EPSR レジスタの読み取り/書き込みを試行していますか?特にこのレジスタのTビットは重要です。Tビットが0のときに命令を実行しようとすると、エラーまたはロックアップが発生します。未定義命令の問題もこれが原因で、非整列メモリアクセスの問題もこれが原因であるのではないかと考えます。
カスタム ボードを使用しており、プロジェクトは XIP モードで実行されていると想定していますか?RT1160EVK もお持ちかどうかはわかりませんが、お持ちの場合は、EVK でアプリケーション コードを試して、結果が同じかどうかを確認してください。そうすることで、根本的な原因がハードウェアかソフトウェアかを特定するのに役立ちます。
すてきな一日を、
カン
---------------------------------------------------------------------------------
注記:
- この投稿があなたの質問への回答である場合は、「正解としてマーク」ボタンをクリックしてください。ありがとう!
- Threadは最後の投稿から7週間フォローされます。それ以降の返信は無視されます。
後ほど関連する質問がある場合は、新しいThreadを開いて、閉じたThreadを参照してください。
---------------------------------------------------------------------------------