問題 : LPDD2 メモリを使用している i.MX 6Solo デザインで、2 つの重要なレジストリの正しい設定を判断するのが難しい場合があります。
ソリューション:
1) MMDCx_MDMISCレジスタ、LPDDR2_2CHフィールド: i.MX 6Soloプロセッサの場合、このフィールドは常に「0」に設定する必要があります。
理由:このプロセッサでは2チャネルモードは不可能です。チャネルMMDC0のみが外部ピンに接続されています。
2) IOMUXC_SW_PAD_CTL_PAD_DRAM_RESETレジスタ、DDR_SELフィールド: i.MX 6Soloプロセッサの場合、このフィールドは常に「00」に設定する必要があります。
理由 : DRAM ウォーム リセットには MMDC1 からの応答が必要ですが、MMDC1 は 6Solo プロセッサの外部に接続されていないため、ウォーム リセットは完了しません。
これら2つの問題は、MCIMX6SDLリファレンスマニュアルの今後の改訂で明確になります。
こんにちは、Yogee:
私たちはあなたと同じ問題に遭遇します。シングルチャネルLPDDR2(128Mx32)を使用すると、ubootでスタックします。ストレステストツールは問題なく動作しますが、ubootは成功しません。何かアイデアがあり、親切に私たちと共有しますか?
どうもありがとうございます。
ヤオホア
こんにちはYogee、
私はあなたの両方のファイルを見ました。2つのファイルの間には大きな違いが1つあります。
レジスタ0x021B0848(項目31)ストレステストファイルの値が0x40404040、DCDファイルの値が0x4E4E504C
レジスタ0x021B0850(項目32)ストレステストファイルの値が0x40404040、DCDファイルの値が0x3434382E
私の質問は、DCDファイルのこれらのレジスタ値をどのようにして思いついたのですか?ストレス テスト値は、実際にはレジスタのデフォルト値です。
これらの値を決定するためにストレステストを使用していますか?答えが「はい」の場合は、ストレス テストのキャリブレーション手順から取得した値をストレス テスト ファイルに代入し、キャリブレーション テストを実行せずにストレス テストを実行してみてください。これに合格した場合は、DCD レジスタの設定がストレス テストで使用している値と同じであることを確認し、再試行してください。
DCD ファイルに見当たらなかったもう 1 つのことは、CCM クロック レジスタ 0x020c4018 を 0x00060324 の値に設定するための行エントリでした。このレジスタのデフォルト値は0x00064324で、変更されるフィールドはperiph_clk2_selであり、MMDCに影響を与えるはずはないと思いますが、それでもフィールドはストレステストファイルで意図的にそのように設定されているため、違いが生じる可能性があります。
現時点では、ファイルに他に問題はありません。ストレス テストのレジスタ値が機能していて、エラーが発生しない場合は、DCD ファイル内の同じ値が機能しているはずです。うまくいけば、上記があなたの問題を解決するでしょう。
そうでない場合は、私に知らせてください、そして私は何か他のものを見つけようとします。
それでは。
印
こんにちはYogee、
DDR ストレス テスト ツールを使用していて、それが機能している場合は、プロセッサにロードしているパラメーターは既に正しいです。
私はあなたの本当の問題はどちらかだと思います:
1) u-bootファイル内のパラメータが、ストレステストツールで決定したパラメータと同じではない(同じである必要があります)
2) レジスタ パラメータが正しい順序で読み込まれていません。
パラメータをロードする必要がある特定の順序があり、その順序に従わないと、MMDC で問題が発生します。一般的に、順序は次のとおりです。
- IOMUX ピン設定。
- ZQキャリブレーションを含むMMDCキャリブレーション設定と、それに続くFRC_MSRビットの設定。
- メインの MMDC レジスタ設定をロードする (および、このセクションでロードされた最後のレジスタとして MMDC をオンにして初期化する)
- 接続された LPDDR2 デバイスの MR レジスタを設定します。
u-boot DCDファイル(初期化パラメータを含むファイル)のコピーを添付すると、それを確認して、問題を引き起こしていると思われるものをすべて指摘します。
それでは。
Mark