Hi Expert,
DDR3 400MHz無法正常開機,降頻跑303MHz會有不穩定的狀況
執行Software Leveling結果如附件:SW_Leveling_400M.txt, SW_Leveling_303M.txt
400M無法跑出數值,303M可以跑出數值。
使用303M進行設定並測試,memtester會錯誤,
設定部分請參考board.c
測試結果如memtester.txt
是否有其他建議?
謝謝
DanielAM335x_EMIF_Configuration_Tool_v3_V73CBG04808RDJ11_shannon.xlsx
#define V73CBG04808RDJ11_CLK 303
#define V73CBG04808RDJ11_EMIF_READ_LATENCY 0x00100208
#define V73CBG04808RDJ11_EMIF_TIM1 0x888A39B
#define V73CBG04808RDJ11_EMIF_TIM2 0x246D7FDA
#define V73CBG04808RDJ11_EMIF_TIM3 0x50FFE6AF
#define V73CBG04808RDJ11_EMIF_SDCFG 0x61A053B2
#define V73CBG04808RDJ11_EMIF_SDREF 0x0000093B
#define V73CBG04808RDJ11_ZQ_CFG 0x50074BE1
#define V73CBG04808RDJ11_RATIO 0x100
#define V73CBG04808RDJ11_INVERT_CLKOUT 0x1
#define V73CBG04808RDJ11_RD_DQS 0x3C
#define V73CBG04808RDJ11_WR_DQS 0xC4
#define V73CBG04808RDJ11_PHY_FIFO_WE 0x118
#define V73CBG04808RDJ11_PHY_WR_DATA 0xFB
#define V73CBG04808RDJ11_IOCTRL_VALUE 0x0000018B
static const struct ddr_data ddr3_pg5902b_data = {
.datardsratio0 = V73CBG04808RDJ11_RD_DQS,
.datawdsratio0 = V73CBG04808RDJ11_WR_DQS,
.datafwsratio0 = V73CBG04808RDJ11_PHY_FIFO_WE,
.datawrsratio0 = V73CBG04808RDJ11_PHY_WR_DATA,
};
static const struct cmd_control ddr3_pg5902b_cmd_ctrl_data = {
.cmd0csratio = V73CBG04808RDJ11_RATIO,
.cmd0iclkout = V73CBG04808RDJ11_INVERT_CLKOUT,
.cmd1csratio = V73CBG04808RDJ11_RATIO,
.cmd1iclkout = V73CBG04808RDJ11_INVERT_CLKOUT,
.cmd2csratio = V73CBG04808RDJ11_RATIO,
.cmd2iclkout = V73CBG04808RDJ11_INVERT_CLKOUT,
};
static struct emif_regs ddr3_pg5902b_emif_reg_data = {
.sdram_config = V73CBG04808RDJ11_EMIF_SDCFG,
.ref_ctrl = V73CBG04808RDJ11_EMIF_SDREF,
.sdram_tim1 = V73CBG04808RDJ11_EMIF_TIM1,
.sdram_tim2 = V73CBG04808RDJ11_EMIF_TIM2,
.sdram_tim3 = V73CBG04808RDJ11_EMIF_TIM3,
.zq_config = V73CBG04808RDJ11_ZQ_CFG,
.emif_ddr_phy_ctlr_1 = V73CBG04808RDJ11_EMIF_READ_LATENCY,
};
const struct dpll_params dpll_ddr_pg5902b = {
V73CBG04808RDJ11_CLK, OSC-1, 1, -1, -1, -1, -1};
const struct dpll_params *get_dpll_ddr_params(void)
{
return &dpll_ddr_pg5902b;
}
const struct ctrl_ioregs ioregs_pg5902b = {
.cm0ioctl = V73CBG04808RDJ11_IOCTRL_VALUE,
.cm1ioctl = V73CBG04808RDJ11_IOCTRL_VALUE,
.cm2ioctl = V73CBG04808RDJ11_IOCTRL_VALUE,
.dt0ioctl = V73CBG04808RDJ11_IOCTRL_VALUE,
.dt1ioctl = V73CBG04808RDJ11_IOCTRL_VALUE,
};
void sdram_init(void)
{
config_ddr(V73CBG04808RDJ11_CLK, &ioregs_pg5902b, &ddr3_pg5902b_data,
&ddr3_pg5902b_cmd_ctrl_data, &ddr3_pg5902b_emif_reg_data, 0);
}
login as: root root@10.0.50.100's password: # cd /jffs2/ # date && ./memtester 900M Thu Jul 14 07:45:55 UTC 2022 memtester version 4.3.0 (32-bit) Copyright (C) 2001-2012 Charles Cazabon. Licensed under the GNU General Public License version 2 (only). pagesize is 4096 pagesizemask is 0xfffff000 want 900MB (943718400 bytes) got 900MB (943718400 bytes), trying mlock ...locked. Loop 1: Stuck Address : testing 11FAILURE: possible bad address line at offset 0x0f586000. Skipping to next test... Random Value : ok Compare XOR : ok Compare SUB : ok Compare MUL : ok Compare DIV : ok Compare OR : ok Compare AND : ok Sequential Increment: ok Solid Bits : testing 3FAILURE: 0xff00ff00 != 0x00000000 at offset 0x03ee6010. FAILURE: 0x00ff00ff != 0xffffffff at offset 0x03ee6014. FAILURE: 0xff00ff00 != 0x00000000 at offset 0x03ee6018. Block Sequential : setting 0
AM335x DDR3 Software Leveling -- Version: Beta 3.0
-- Copyright: Texas Instruments China Local Team
*************************** Program Start********************************
Please input the AM335x EMIF Timing Configuration:
-- AM335x Default EMIF Timing configuration (for StarterKit EVM) --
DDR3_EMIF_SDRAM_TIM_1 : 0x0888A39B
DDR3_EMIF_SDRAM_TIM_2 : 0x26337FDA
DDR3_EMIF_SDRAM_TIM_3 : 0x501F830F
DDR3_EMIF_SDRAM_CONFIG : 0x61C04AB2
Your choice: 1. Use the default one; 2. Input your own one.
Please Choose The DDR3 Frequency: 1. 303MHz; 2. 400MHz.
DDR3 Frequency is Set at 303MHz!
Please input your DDR3_EMIF_SDRAM_TIM_1 conifguration (in Hex) :
0888A39B
Please input your DDR3_EMIF_SDRAM_TIM_2 conifguration (in Hex) :
246D7FDA
Please input your DDR3_EMIF_SDRAM_TIM_3 conifguration (in Hex) :
50FFE6AF
Please input your DDR3_EMIF_SDRAM_CONFIG conifguration (in Hex) :
61A053B2
Your input EMIF Timing configuration --
DDR3_EMIF_SDRAM_TIM_1 : 0x888A39B
DDR3_EMIF_SDRAM_TIM_2 : 0x246D7FDA
DDR3_EMIF_SDRAM_TIM_3 : 0x50FFE6AF
DDR3_EMIF_SDRAM_CONFIG : 0x61A053B2
Please Enter the PHY_INVERT_CLKOUT value (0 or 1) from the spreadsheet :
1
Please Enter the Seed RD_DQS_SLAVE_RATIO Value in Hex to search the RD DQS Ratio Window :
40
Please Enter the Seed FIFO_WE_SLAVE_RATIO Value in Hex to search the RD DQS Gate Window :
10E
Please Enter the Seed WR_DQS_SLAVE_RATIO Write DQS Ratio Value in Hex to search the Write DQS Ratio Window :
80
Please Enter the Seed PHY_CTRL_SLAVE_RATIO Value in Hex :
100
The ratio seeds for the DDR3 Software Leveling :
invert_clkout = 0x1
RD_DQS_RATIO_VAL = 0x40
FIFO_WE_SLAVE_RATIO = 0x10E
WR_DQS_SLAVE_RATIO = 0x80
PHY_CTRL_SLAVE_RATIO = 0x100
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x11C
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x85
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xBB
***************************************************************
rd_dqs_range = 60
fifo_we_range = 284
wr_dqs_range = 133
wr_data_range = 187
Optimal values not reached, rerunning program with new values...
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x118
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x88
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xBF
***************************************************************
rd_dqs_range = 0
fifo_we_range = 4
wr_dqs_range = 3
wr_data_range = 4
Optimal values not reached, rerunning program with new values...
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x118
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x8C
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xC4
***************************************************************
rd_dqs_range = 0
fifo_we_range = 0
wr_dqs_range = 4
wr_data_range = 5
Optimal values not reached, rerunning program with new values...
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x117
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x90
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xC6
***************************************************************
rd_dqs_range = 0
fifo_we_range = 1
wr_dqs_range = 4
wr_data_range = 2
Optimal values not reached, rerunning program with new values...
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x117
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x94
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xCB
***************************************************************
rd_dqs_range = 0
fifo_we_range = 0
wr_dqs_range = 4
wr_data_range = 5
Optimal values not reached, rerunning program with new values...
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x117
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x98
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xCF
***************************************************************
rd_dqs_range = 0
fifo_we_range = 0
wr_dqs_range = 4
wr_data_range = 4
Optimal values not reached, rerunning program with new values...
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x118
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x9D
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xD3
***************************************************************
rd_dqs_range = 0
fifo_we_range = 1
wr_dqs_range = 5
wr_data_range = 4
Optimal values not reached, rerunning program with new values...
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x119
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0xA2
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xD8
***************************************************************
rd_dqs_range = 0
fifo_we_range = 1
wr_dqs_range = 5
wr_data_range = 5
Optimal values not reached, rerunning program with new values...
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x11A
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0xA8
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xDD
***************************************************************
rd_dqs_range = 0
fifo_we_range = 1
wr_dqs_range = 6
wr_data_range = 5
Optimal values not reached, rerunning program with new values...
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x11A
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0xAD
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xE3
***************************************************************
rd_dqs_range = 0
fifo_we_range = 0
wr_dqs_range = 5
wr_data_range = 6
Optimal values not reached, rerunning program with new values...
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x11A
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0xB0
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xE8
***************************************************************
rd_dqs_range = 0
fifo_we_range = 0
wr_dqs_range = 3
wr_data_range = 5
Optimal values not reached, rerunning program with new values...
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x117
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0xB4
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xEC
***************************************************************
rd_dqs_range = 0
fifo_we_range = 3
wr_dqs_range = 4
wr_data_range = 4
Optimal values not reached, rerunning program with new values...
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x118
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0xB8
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xEE
***************************************************************
rd_dqs_range = 0
fifo_we_range = 1
wr_dqs_range = 4
wr_data_range = 2
Optimal values not reached, rerunning program with new values...
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x117
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0xBD
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xF2
***************************************************************
rd_dqs_range = 0
fifo_we_range = 1
wr_dqs_range = 5
wr_data_range = 4
Optimal values not reached, rerunning program with new values...
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x117
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0xC1
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xF9
***************************************************************
rd_dqs_range = 0
fifo_we_range = 0
wr_dqs_range = 4
wr_data_range = 7
Optimal values not reached, rerunning program with new values...
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x118
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0xC4
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xFB
***************************************************************
rd_dqs_range = 0
fifo_we_range = 1
wr_dqs_range = 3
wr_data_range = 2
Optimal values have been found!!
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x3C
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x118
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0xC4
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0xFB
***************************************************************
===== END OF TEST =====
DDR3 software leveling done!
AM335x DDR3 Software Leveling -- Version: Beta 3.0
-- Copyright: Texas Instruments China Local Team
*************************** Program Start********************************
Please input the AM335x EMIF Timing Configuration:
-- AM335x Default EMIF Timing configuration (for StarterKit EVM) --
DDR3_EMIF_SDRAM_TIM_1 : 0x0888A39B
DDR3_EMIF_SDRAM_TIM_2 : 0x26337FDA
DDR3_EMIF_SDRAM_TIM_3 : 0x501F830F
DDR3_EMIF_SDRAM_CONFIG : 0x61C04AB2
Your choice: 1. Use the default one; 2. Input your own one.
Please Choose The DDR3 Frequency: 1. 303MHz; 2. 400MHz.
DDR3 Frequency is Set at 400MHz!
Please input your DDR3_EMIF_SDRAM_TIM_1 conifguration (in Hex) :
0AAAD4DB
Please input your DDR3_EMIF_SDRAM_TIM_2 conifguration (in Hex) :
248F7FDA
Please input your DDR3_EMIF_SDRAM_TIM_3 conifguration (in Hex) :
50FFE8BF
Please input your DDR3_EMIF_SDRAM_CONFIG conifguration (in Hex) :
61A053B2
Your input EMIF Timing configuration --
DDR3_EMIF_SDRAM_TIM_1 : 0xAAAD4DB
DDR3_EMIF_SDRAM_TIM_2 : 0x248F7FDA
DDR3_EMIF_SDRAM_TIM_3 : 0x50FFE8BF
DDR3_EMIF_SDRAM_CONFIG : 0x61A053B2
Please Enter the PHY_INVERT_CLKOUT value (0 or 1) from the spreadsheet :
1
Please Enter the Seed RD_DQS_SLAVE_RATIO Value in Hex to search the RD DQS Ratio Window :
40
Please Enter the Seed FIFO_WE_SLAVE_RATIO Value in Hex to search the RD DQS Gate Window :
128
Please Enter the Seed WR_DQS_SLAVE_RATIO Write DQS Ratio Value in Hex to search the Write DQS Ratio Window :
80
Please Enter the Seed PHY_CTRL_SLAVE_RATIO Value in Hex :
100
The ratio seeds for the DDR3 Software Leveling :
invert_clkout = 0x1
RD_DQS_RATIO_VAL = 0x40
FIFO_WE_SLAVE_RATIO = 0x128
WR_DQS_SLAVE_RATIO = 0x80
PHY_CTRL_SLAVE_RATIO = 0x100
The Slave Ratio Search Program Values are...
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x0
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x0
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x0
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0x0
***************************************************************
rd_dqs_range = 0
fifo_we_range = 0
wr_dqs_range = 0
wr_data_range = 0
Optimal values have been found!!
***************************************************************
DATA_PHY_RD_DQS_SLAVE_RATIO is :0x0
DATA_PHY_FIFO_WE_SLAVE_RATIO is : 0x0
DATA_PHY_WR_DQS_SLAVE_RATIO is : 0x0
DATA_PHY_WR_DATA_SLAVE_RATIO is : 0x0
***************************************************************
===== END OF TEST =====
DDR3 software leveling done!