良い一日!
私たちはカスタム LS1046 ベースのボードを立ち上げようとしていますが、DDR4 のキャリブレーション手順に行き詰まっています。
モジュールのSPDデータは正常に表示され、キャリブレーションプロセスも正常に開始されますが、その後、この理由で失敗します(CodeWarriorのログ
################################# 実行 1
検索結果: wrlvl_searcher
######################################
テスト結果: [
============================================================
更新日:
WRLVL_CNTL = 0x8655F605、WRLVL_CNTL_2 = 0x00000000、
WRLVL_CNTL_3 = 0x00000000、SDRAM_CLK_CNTL = 0x02800000
============================================================
更新日:
WRLVL_CNTL = 0x8655F60A、WRLVL_CNTL_2 = 0x0B0B0C0F、
WRLVL_CNTL_3 = 0x0F10110D、SDRAM_CLK_CNTL = 0x02800000
============================================================
更新日:
WRLVL_CNTL = 0x8655F60A、WRLVL_CNTL_2 = 0x0B0B0C0F、
WRLVL_CNTL_3 = 0x0F101115、SDRAM_CLK_CNTL = 0x02800000
============================================================
更新日:
WRLVL_CNTL = 0x8655F60A、WRLVL_CNTL_2 = 0x0B0B0C0F、
WRLVL_CNTL_3 = 0x0F10111D、SDRAM_CLK_CNTL = 0x02800000
書き込みレベリングの開始値は正しいので、これ以上の変更は必要ありません。
しかし、他の問題によりテストは失敗しました。
最も一般的な障害の原因:
-DDR4 DQn_MAPレジスタに設定された値が正しくない
-ODT値が正しくない
- 間違ったドライバー強度が選択されました
-タイミング構成0プロパティ(TIMING_CFG_0レジスタ)に選択されたタイミング値が正しくありません
<<テストに失敗しました!>>
{{Write Leveling start values are correct and require no further modification,
but the test failed due to other issues.}}
えーっと。キャプチャレジスタ:
0xE20, 0xDEADBEEF
0xE24、0xDEADBEEF
0xE28, 0x00000000
0xE40, 0x00000000
0xE44, 0x00000000
0xE48, 0x0000001D
0xE4C、0x60FF2001
0xE50, 0x00001FC0
0xE54, 0x00000000
0xE58, 0x00010000
############################################
DQ マッピングは問題ないようです。CPU から DDR スロットへのマッピングは 1:1 SO、DDR モジュール SPD からの DQ マッピングを変更せずに使用します。
何が問題なのでしょうか?
お客様ボード上で利用可能な RCW はありますか?
ASLEEP LED は点灯したり消えたりしましたか?
DDRクロックの周波数はどれくらいですか?
よろしくお願いします。
DDR キャリブレーションは、ハードコードされた RCW を使用して実行されます。
システムクロック - 100 MHz DDRバスクロック - 800 MHz、DDRデータレート - 1600 mt/s
メモリ モジュール - 非 ECC。
興味深い点の 1 つは、タイマーから時間まで、キャリブレーションの第 1 段階 (wrtlvl 検索) が正常に通過したことです。
例:
テスト結果: [ =====================================================
更新日:
WRLVL_CNTL = 0x8655F605、WRLVL_CNTL_2 = 0x00000000、
WRLVL_CNTL_3 = 0x00000000、SDRAM_CLK_CNTL = 0x02800000
============================================================
更新日:
WRLVL_CNTL = 0x8655F609、WRLVL_CNTL_2 = 0x0A0B0C0E、
WRLVL_CNTL_3 = 0x0F10110D、SDRAM_CLK_CNTL = 0x02800000
============================================================
更新日:
WRLVL_CNTL = 0x8655F609、WRLVL_CNTL_2 = 0x0A0B0C0E、
WRLVL_CNTL_3 = 0x0F101115、SDRAM_CLK_CNTL = 0x02800000
============================================================
更新日:
WRLVL_CNTL = 0x8655F609、WRLVL_CNTL_2 = 0x0A0B0C0F、
WRLVL_CNTL_3 = 0x0F10111D、SDRAM_CLK_CNTL = 0x02800000
《テスト合格!》
Err.captureレジスタ:
0xE20, 0x00000000 0xE24, 0x00000000 0xE28,0x00000000
0xE40,0x00000000 0xE44,0x00000000 0xE48, 0x0000001D
0xE4C, 0x00000000 0xE50,0x00000000 0xE54,0x00000000
0xE58, 0x00010000
ごみ:
0xF00,0x00000000 0xF04, 0x00000002 0xF08, 0x0000000F
0xF0C,0x14000C20 0xF10, 0x00000000 0xF14, 0x00000000
0xF18, 0x00000000 0xF1C, 0x00000000 0xF20, 0x00000000
0xF24, 0x2F003000 0xF28, 0x32003400 0xF2C, 0x39003B00
0xF30, 0x3C003E00 0xF34, 0x00005000 0xF38, 0x00000000
0xF3C, 0x00000000 0xF40, 0x00000000 0xF44, 0x00000000
0xF48, 0x00000001 0xF4C, 0xD4000000 0xF50, 0x13001500
0xF54, 0x17001900 0xF58, 0x1D001F00 0xF5C, 0x21002200
0xF60, 0x3A000000 0xF64, 0x00009000 0xF68, 0x00000020
0xF6C, 0x00000000 0xF70, 0x0070006F 0xF74, 0x00000000
0xF78, 0x00000000 0xF7C, 0x00000000 0xF80, 0x00000000
0xF84, 0x00000000 0xF88, 0x00000000 0xF8C, 0x00000000
0xF90, 0x00000000 0xF94, 0x80000000 0xF98, 0x00000000
0xF9C, 0x34043104 0xFA0, 0x35043304 0xFA4, 0x31043304
0xFA8, 0x2F043104 0xFAC, 0x04040000 0xFB0, 0x00000003
0xFB4, 0x1F1E1F21 0xFB8, 0x1E1C1F1D 0xFBC, 0x1F1B1D1E
0xFC0, 0x1C1B1C1C 0xFC4, 0x1F1E1F22 0xFC8, 0x1F1F2120
0xFCC, 0x1F1E1F20 0xFD0, 0x1C1D201F 0xFD4, 0x1F1B1B1E
0xFD8, 0x1F1D1E1C 0xFDC, 0x1F1F1D1F 0xFE0, 0x1F1D1E1C
0xFE4、0x1F1C191A 0xFE8、0x1C1D1C1A 0xFEC、0x1F1E1C1E
0xFF0, 0x1E1F1E1A 0xFF4, 0x1F1F1F1F 0xFF8, 0x1F1F1F1F
0xFFC、0x1F000000
データ:
0x00000009 0x0000000a 0x0000000b 0x0000000c 0x0000000f
0x0000000f 0x00000010 0x00000011 0x0000001d
その直後に、(設定を変更せずに)キャリブレーション プロセスを再度開始すると、失敗します。
######## ## Result for: wrlvl_searcher ## ####
テスト結果: [
更新: WRLVL_CNTL = 0x8655F605、WRLVL_CNTL_2 = 0x00000000、
WRLVL_CNTL_3 = 0x00000000、SDRAM_CLK_CNTL = 0x02800000
============================================================
更新: WRLVL_CNTL = 0x8655F609、WRLVL_CNTL_2 = 0x0A0B0C0E、
WRLVL_CNTL_3 = 0x0F10110D、SDRAM_CLK_CNTL = 0x02800000
============================================================
更新: WRLVL_CNTL = 0x8655F609、WRLVL_CNTL_2 = 0x0A0B0C0E、
WRLVL_CNTL_3 = 0x0F101115、SDRAM_CLK_CNTL = 0x02800000
============================================================
更新: WRLVL_CNTL = 0x8655F609、WRLVL_CNTL_2 = 0x0A0B0C0E、
WRLVL_CNTL_3 = 0x0F10111D、SDRAM_CLK_CNTL = 0x02800000
書き込みレベリングの開始値は正しく、それ以上の変更は必要ありませんが、テスト
その他の問題により失敗しました。最も一般的な障害の原因:
- DDR4 DQn_MAPレジスタに設定された値が正しくない
- ODT値が正しくない
- 間違ったドライバ強度が選択されました
- タイミング構成0プロパティ(TIMING_CFG_0レジスタ)に選択されたタイミング値が正しくありません
<<テストに失敗しました!>>
{{Write Leveling start values are correct and require no further modification, but the test failed due to other issues.}}
エラーキャプチャレジスタ:
0xE20, 0xDEADBEEF 0xE24, 0xDEADBEEF 0xE28, 0x00000000 0xE40, 0x00000000
0xE44, 0x00000000 0xE48, 0x0000001D 0xE4C, 0x60FF2001 0xE50, 0x00001FC0
0xE54, 0x00000000 0xE58, 0x00010000
ごみ:
0xF00, 0x00000000 0xF04, 0x00000002 0xF08, 0x0000000E 0xF0C, 0x14000C20
0xF10, 0x00000000 0xF14, 0x00000000 0xF18, 0x00000000 0xF1C, 0x00000000
0xF20, 0x00000000 0xF24, 0x2F003100 0xF28, 0x33003400 0xF2C, 0x3A003A00
0xF30, 0x3C003E00 0xF34, 0x00005000 0xF38, 0x00000000 0xF3C, 0x00000000
0xF40, 0x00000000 0xF44, 0x00000000 0xF48, 0x00000001 0xF4C, 0xD4000000
0xF50, 0x13001500 0xF54, 0x17001900 0xF58, 0x1D001F00 0xF5C, 0x21002200
0xF60, 0x3A000000 0xF64, 0x00009000 0xF68, 0x00000020 0xF6C, 0x00000000
0xF70, 0x0070006F 0xF74, 0x00000000 0xF78, 0x00000000 0xF7C, 0x00000000
0xF80, 0x00000000 0xF84, 0x00000000 0xF88, 0x00000000 0xF8C, 0x00000000
0xF90, 0x00000000 0xF94, 0x80000000 0xF98, 0x00000000 0xF9C, 0x31022F02
0xFA0, 0x33023102 0xFA4, 0x30023102 0xFA8, 0x2E022F02 0xFAC, 0x02020000
0xFB0, 0x10000003 0xFB4, 0x46444650 0xFB8, 0x45445142 0xFBC, 0x51445052
0xFC0, 0x46454544 0xFC4, 0x45434651 0xFC8, 0x44455045 0xFCC, 0x46455051
0xFD0, 0x45455146 0xFD4, 0x52505052 0xFD8, 0x52505246 0xFDC, 0x50464546
0xFE0, 0x51465042 0xFE4, 0x53464650 0xFE8, 0x52515145 0xFEC, 0x50454546
0xFF0, 0x45505142 0xFF4, 0x46464646 0xFF8, 0x52515350 0xFFC, 0x00000000
データ:
0x00000009 0x0000000a 0x0000000b 0x0000000c 0x0000000e 0x0000000f 0x00000010 0x00000011 0x00000025
########################################################
また、DDR モジュールが非 ECC であり、プロジェクト設定で ECC が無効になっているにもかかわらず、キャリブレーション プロセス中にレーン 8 がプローブされていることに気付きました。
1. QCVS はハードコードされた RCWオフィシャルをサポートしていないため、有効な RCW がRCW ソース フラッシュまたは SD カードに存在している必要があります。
まず RCW をフラッシュにプログラムし、次に QCVS DDR 検証を行ってください。
2. CCS で以下のコマンドを実行します。
(ビン)42%すべて削除
(bin)43%config cc cwtap
(ビン)44%ccを表示
(bin) 45 % ccs::config_chain {ls1043a dap sap2}
(bin) 46 % 表示 ::ccs::get_config_chain
(bin) 47 % ccs::reset_to_debug
ログを私に送ってください。
3.回路図を共有してレイアウトが以下の通りであることを確認してください。
AN5097、DDR4 SDRAMメモリインターフェースのハードウェアおよびレイアウト設計の考慮事項
よろしくお願いします。
この問題は、QCVS の新しいバージョン (4.27.0) にアップデートすることで解決しました。