TI中文支持网
TI专业的中文技术问题搜集分享网站

EZSDK 5.05 DDR3 U-BOOT修改

你好:

    我现在应经用.out文件在CCS里把DRR基本的值算了出来如下:

 DDR0:

    BYTE0 BYTE1 BYTE2 BYTE3
*********************************************************
Read DQS MAX 68  6c  64  60
Read DQS MIN d  12  12  12
Read DQS OPT 3a  3f  3b  39
*********************************************************
Read DQS GATE MAX 22a 237  209  216
Read DQS GATE MIN d1 e3  b2  c3
Read DQS GATE OPT 17d 18d  15d  16c
*********************************************************
Write DQS MAX 120  11b  fd  102
Write DQS MIN    35  31  17  16
Write DQS OPT aa  a6  8a  8c

===== END OF TEST =====

DDR1:
   BYTE0 BYTE1 BYTE2 BYTE3
*********************************************************
Read DQS MAX 67  6d  68  65
Read DQS MIN d  12  d  12
Read DQS OPT 3a  3f  3a  3b
*********************************************************
Read DQS GATE MAX 220 233  1fb  20c
Read DQS GATE MIN d4 e2  a6  bc
Read DQS GATE OPT 17a 18a  150  164
*********************************************************
Write DQS MAX 11c  11d  ff  fb
Write DQS MIN    31  34  14  12
Write DQS OPT a6  a8  89  86

===== END OF TEST =====

这些值如何填写进U-BOOT里,也就是怎么对应起来。谢谢!
 
现在内存可以读写,就是怎么让U-BOOT启动在串口终端有显示,谢谢!
bing zhang6:

你好:

   根据WIKI的示例,他计算的结果如下

Enter the input file Name
Ti816x_Ratio_values*********************************************************
Byte level Slave Ratio Search Program Values
*********************************************************BYTE3BYTE2BYTE1BYTE0
*********************************************************
Read DQS MAX5d607877
Read DQS MIN8848
Read DQS OPT32343138
*********************************************************
Read DQS GATE MAX1ec1d11b51a0
Read DQS GATE MIN8f7c6341
Read DQS GATE OPT13d12610cf0
*********************************************************
Write DQS MAX97a38c8b
Write DQS MIN0000
Write DQS OPT4b514645
*********************************************************
===== END OF TEST =====
让后他在U-BOOT里填写如下:
Eg: For DDR3@796MHz
[...]
#define RD_DQS_GATE_LANE3 
#define RD_DQS_GATE_LANE2((emif == 0) ? 0x178 : 0x171) /*BYTE2 OPT values from CCS salve ratio*/
#define RD_DQS_GATE_LANE1((emif == 0) ? 0x1B3 : 0x1B5) /*BYTE1 OPT values from CCS salve ratio*/
#define RD_DQS_GATE_LANE0((emif == 0) ? 0x1D6 : 0x1D3) /*BYTE0 OPT values from CCS salve ratio*/#define RD_DQS_LANE3((emif == 0) ? 0x37 : 0x35) /*BYTE3 OPT values from CCS salve ratio*/
#define RD_DQS_LANE2((emif == 0) ? 0x37 : 0x43) /*BYTE2 OPT values from CCS salve ratio*/
#define RD_DQS_LANE1((emif == 0) ? 0x38 : 0x3F) /*BYTE1 OPT values from CCS salve ratio*/
#define RD_DQS_LANE0((emif == 0) ? 0x3B : 0x38) /*BYTE0 OPT values from CCS salve ratio*/#define WR_DQS_LANE3((emif == 0) ? 0x7D : 0x6F) /*BYTE3 OPT values from CCS salve ratio*/
#define WR_DQS_LANE2((emif == 0) ? 0x8F : 0x87) /*BYTE2 OPT values from CCS salve ratio*/
#define WR_DQS_LANE1((emif == 0) ? 0xA2 : 0xA5) /*BYTE1 OPT values from CCS salve ratio*/
#define WR_DQS_LANE0((emif == 0) ? 0xB2 : 0xB0) /*BYTE0 OPT values from CCS salve ratio*/
[...]

((emif == 0) ? 0x160 : 0x15F) /*BYTE3 OPT values from CCS salve ratio*/
上面这一句里面的
0x160 和 0x15F这两个值是怎么来的。谢谢!

Louis:

回复 bing zhang6:

DM816x 有2个EMIF控制器,0x160与0x15F分别对应EMIF0 与 EMIF1,每次SW leveling只算一个EMIF。

bing zhang6:

回复 Louis:

你好:

 1:  但是这个0x160和0x15F我在上面那张WIKI表中并没有找到这两个值。

2: 这个值计算出来后,需要修改U-BOOT里的ddr_defs_ti816x.h文件里的那几个地方。

谢谢!

bing zhang6:

回复 Louis:

你好:

1:  我在WIKI上面的那张表里并没有找到0x160和0x15F。他是怎么来的。

       

*********************************************************
Byte level Slave Ratio Search Program Values
*********************************************************BYTE3BYTE2BYTE1BYTE0
*********************************************************
Read DQS MAX5d607877
Read DQS MIN8848
Read DQS OPT32343138
*********************************************************
Read DQS GATE MAX1ec1d11b51a0
Read DQS GATE MIN8f7c6341
Read DQS GATE OPT13d12610cf0
*********************************************************
Write DQS MAX97a38c8b
Write DQS MIN0000
Write DQS OPT4b514645
*********************************************************
===== END OF TEST =====
wiki计算结果。

2:  我需要如何修改U-BOOT DDR_DEF_ti816x.h文件里的那些地方。

谢谢!

Louis:

回复 bing zhang6:

1. 具体数值不一样,可能是wiki与你的uboot版本不同,或者别的原因,但方法都是一样的。

2.以下面的为例,说明CCS leveling计算值需要更新的位置。

    黄色为DDR0的数据,绿色为DDR1的数据,另外需要注意DDR3频率,找到对应的宏

#define RD_DQS_GATE_LANE3 ((emif == 0) ? 0x160 : 0x15F) /*BYTE3 OPT values from CCS slave ratio*/ #define RD_DQS_GATE_LANE2 ((emif == 0) ? 0x178 : 0x171) /*BYTE2 OPT values from CCS slave ratio*/ #define RD_DQS_GATE_LANE1 ((emif == 0) ? 0x1B3 : 0x1B5) /*BYTE1 OPT values from CCS slave ratio*/ #define RD_DQS_GATE_LANE0 ((emif == 0) ? 0x1D6 : 0x1D3) /*BYTE0 OPT values from CCS slave ratio*/ #define RD_DQS_LANE3 ((emif == 0) ? 0x37 : 0x35) /*BYTE3 OPT values from CCS slave ratio*/ #define RD_DQS_LANE2 ((emif == 0) ? 0x37 : 0x43) /*BYTE2 OPT values from CCS slave ratio*/ #define RD_DQS_LANE1 ((emif == 0) ? 0x38 : 0x3F) /*BYTE1 OPT values from CCS slave ratio*/ #define RD_DQS_LANE0 ((emif == 0) ? 0x3B : 0x38) /*BYTE0 OPT values from CCS slave ratio*/ #define WR_DQS_LANE3 ((emif == 0) ? 0x7D : 0x6F) /*BYTE3 OPT values from CCS slave ratio*/ #define WR_DQS_LANE2 ((emif == 0) ? 0x8F : 0x87) /*BYTE2 OPT values from CCS slave ratio*/ #define WR_DQS_LANE1 ((emif == 0) ? 0xA2 : 0xA5) /*BYTE1 OPT values from CCS slave ratio*/ #define WR_DQS_LANE0 ((emif == 0) ? 0xB2 : 0xB0) /*BYTE0 OPT values from CCS slave ratio*/

bing zhang6:

回复 Louis:

你好:

    我现在用的U-BOOT是这个样子的,如下:

#if defined(CONFIG_TI816X_DDR3_796)#define EMIF_TIM1 0x1779C9FE#define EMIF_TIM2 0x50608074#define EMIF_TIM3 0x009F857F#define EMIF_SDREF 0x10001841#define EMIF_SDCFG 0x62A73832#define EMIF_PHYCFG 0x00000110

#if defined(CONFIG_TI816X_DDR3_SW_LEVELING)/* These values are obtained from the CCS app */#define RD_DQS_GATE ((emif == 0) ? 0x1B3 : 0x1B3)#define RD_DQS ((emif == 0) ? 0x35 : 0x35)#define WR_DQS ((emif == 0) ? 0x93 : 0x93)

#endif

#endif /* CONFIG_TI816X_DDR_796 */

#if defined(CONFIG_TI816X_DDR3_SW_LEVELING)#define WR_DQS_RATIO_BYTE_LANE3 ((WR_DQS << 10) | WR_DQS)#define WR_DQS_RATIO_BYTE_LANE2 ((WR_DQS << 10) | WR_DQS)#define WR_DQS_RATIO_BYTE_LANE1 ((WR_DQS << 10) | WR_DQS)#define WR_DQS_RATIO_BYTE_LANE0 ((WR_DQS << 10) | WR_DQS)

#define WR_DATA_RATIO_BYTE_LANE3 (((WR_DQS + 0x40) << 10) | (WR_DQS + 0x40))#define WR_DATA_RATIO_BYTE_LANE2 (((WR_DQS + 0x40) << 10) | (WR_DQS + 0x40))#define WR_DATA_RATIO_BYTE_LANE1 (((WR_DQS + 0x40) << 10) | (WR_DQS + 0x40))#define WR_DATA_RATIO_BYTE_LANE0 (((WR_DQS + 0x40) << 10) | (WR_DQS + 0x40))

#define RD_DQS_RATIO ((RD_DQS << 10) | RD_DQS)

#define DQS_GATE_BYTE_LANE0 ((RD_DQS_GATE << 10) | RD_DQS_GATE)#define DQS_GATE_BYTE_LANE1 ((RD_DQS_GATE << 10) | RD_DQS_GATE)#define DQS_GATE_BYTE_LANE2 ((RD_DQS_GATE << 10) | RD_DQS_GATE)#define DQS_GATE_BYTE_LANE3 ((RD_DQS_GATE << 10) | RD_DQS_GATE)

#endif /* CONFIG_TI816X_DDR3_SW_LEVELING */

#endif /* CONFIG_TI816X_EVM_DDR3 */

上面这一块应该就是要修改的。

软件计算出的如下

DDR0:

BYTE0 BYTE1 BYTE2 BYTE3*********************************************************Read DQS MAX 68 6c 64 60Read DQS MIN d 12 12 12Read DQS OPT 3a 3f 3b 39*********************************************************Read DQS GATE MAX 22a 237 209 216Read DQS GATE MIN d1 e3 b2 c3Read DQS GATE OPT 17d 18d 15d 16c*********************************************************Write DQS MAX 120 11b fd 102Write DQS MIN 35 31 17 16Write DQS OPT aa a6 8a 8c

===== END OF TEST =====

DDR1:

BYTE0 BYTE1 BYTE2 BYTE3*********************************************************Read DQS MAX 67 6d 68 65Read DQS MIN d 12 d 12Read DQS OPT 3a 3f 3a 3b*********************************************************Read DQS GATE MAX 220 233 1fb 20cRead DQS GATE MIN d4 e2 a6 bcRead DQS GATE OPT 17a 18a 150 164*********************************************************Write DQS MAX 11c 11d ff fbWrite DQS MIN 31 34 14 12Write DQS OPT a6 a8 89 86

===== END OF TEST =====

我应该如何把我算出的值填充进去呢? 谢谢!

Louis:

回复 bing zhang6:

我的建议是你先升级到最新的DM8168的Uboot和Kernel,下面是DVR RDK的git路径:

http://arago-project.org/git/projects/?p=u-boot-dvr-rdk-dm81xx.git;a=summary

赞(0)
未经允许不得转载:TI中文支持网 » EZSDK 5.05 DDR3 U-BOOT修改
分享到: 更多 (0)