SDRAMの初期化の問題(Freescale iMX31)


10

ハードウェア構成の変更に対応するために、既存の初期化シーケンス(SDRAMの低レベルの初期化)を変更しようとしています。iMX31の既存のSDRAMは別のサイズに置き換えられました。それ以外は、同じタイプ/メーカー/レイアウト/ピン/タイミングです。仕様に従って。

簡単なセットアップシナリオとエラー動作:ボードを起動できました(NANDからブートローダーを実行し、「step2ブートローダー」をRAMにコピーし、RAMから「step2ブートローダー」を実行します)。しかし、RAMからの実行(ステップ2にジャンプした後)が常に失敗するため、いくつかの設定が間違っているようです。

間違ったパラメータを特定するために大量の詳細なテストを行いましたが、結果は次のとおりです。-NANDまたはJTAGから実行すると、シングルバイト/ワードの読み取り/書き込みが機能します-NANDから実行すると、ブロック単位/バースト書き込みが機能するようです( JTAGも)興味深いこと:-ブロックごとの書き込みの後、正しいバイト/ワードを読み取るためにSDRAMアドレスで複数の読み取りが必要です(!)-カラムの設定を変更して、より高い(+1)の量のみを使用する場合「ロードモード」の列はプリチャージ/リフレッシュではなく、機能しますが、一貫性がありません(私の理論では、不足している列が問題にならない場合は、より低いアドレス範囲で確実に機能します)。

私の設定を理解するには:RAMの設定はこの質問の設定とほとんど同じです。RAMタイミングの他に、Freescaleから提供されるため、これは当然の ことです。FreescaleiMX31では、SDRAMアドレスをCPUアドレスに変換するにはどうすればよいですか? 私の元の設定は同じです(リンクの場合も64MBのSDRAM)、新しいRAMは128MBです。すべてのリファレンスボードには64MBまたは128MBが付属しているため、両方の値がiMX31と派生物でサポートされています。

私がしなければならない変更(注意:仮定!)は、RAMのCOLUMN構成(もう1つの列)のみです。RAMのサイズは2倍ですが、それ以外はまったく同じタイミングなどが仕様に記載されています。列が1つしかないため(上記のリンクを参照)、新しいRAMのプリチャージ、リフレッシュ、ロードモードレジスタが0x92100000から0x92200000に変更されます-たとえば)何も変更されません。

質問1:すべてのタイミングと物理チップの特性(ドライブ強度、タイミング、電力消費に影響を与える)が類似している場合、列数の変更は「ローカル」(他の設定には影響しない)である可能性があるという私の仮定は理にかなっていますか?興味深いことに、私は自分の設定をオンラインで利用可能な他の多くの設定(U-Boot、128MBのRed-Boot)と比較し、ドライブの強さなどのボード固有の設定の横には違いがありません。

質問2:上記の私のエラー動作(書き込み、部分的な読み取りのみ)は、RAMの特定の無効な設定に固有のものです。誰が私に詳細を確認するための設定をアドバイスすることができますか?また、パフォーマンスが低下した場合でも、システムによって原因を絞り込むことができるように、「安全な」パラメータを設定することもできます。


問題がハードウェア設計(ICの不良、レイアウトエラー、シグナルインテグリティの低下、電力不足など)に関連していないことを合理的に確信していますか?
jbarlow

回答:


1

2の場合は、iMX31デモボードの設定から始めます。次に、パーツの必要に応じてそれらを変更します(主に速度とサイズ)。特に、読み取り時の待機状態の数が間違っている可能性があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.