你好:
我现在应经用.out文件在CCS里把DRR基本的值算了出来如下:
DDR0:
*********************************************************
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 =====
*********************************************************
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 =====
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