我们自制的DM8168板子, 两个EMIF口各挂载2片 16位DDR3; 完全按官网给的步奏进行 软件 leveling; 软件环境为CCSv5.5, 仿真器为 seed XDS560v2;
调试的过程中, 仿真器连接没问题, A8核 connect target 也没问题。 加载 ti8168_ddr3.gel(也试了evm816x.gel), 选择 CCS 菜单 scripts -> external memory initialization -> DDR3_400MHZ_do_all() ,也会显示 PRCM for OCMCRAM0/1 initilization in Done 的成功信息; 问题出在 继续加载官网 提供的测试 程序 ddr.out 或者 DDR3_slave_ratio_search.out的时候, console 有时会提示 这样的错误:
CS_DAP_Debugss: Trouble Reading Memory Block at 0x48181414 on Page 0 of Length 0x4: (Error -1170 @ 0x48181414) Unable to accesss the DAP. Reset the device and retry the operation . If error persists, confirm configuration, power-cycle the board , and/or try more reliable JTAG settings(e.g. lower TCLK).(Emulation package 5.0.747.0)
CS_DAP_DebugSS: GEL: Error while executing OnTargetConnect(): target access failed at (*((unsigned int *)(0x48180000+0x1414))&0x100) [evm816x.gel:172] at Setup_PRCM()[evm816x.gel:43] at OnTargetConnect().
加载程序的时候这个错误不是会一直出现,不断的重复步骤之后,有时候不会出现错误 程序会运行的,出现的时候,再运行程序会卡住,没任何输出; 正常的时候, 用官网的测试程序 ddr.out 测试DDR3读写 会随机出错误, 即 pdata写入的值跟读出的值 不一致,打印出出错的地址, 出错地址不固定,是随机的; 如果运行 DDR3_slave_ratio_search.out 做 leveling 后, 把得出的 DQS 的值 更改到 .gel 文件,继续测试 ddr.out, 发现还是存在读写错误;
请问一下,为什么会出现上述的错误, 板子时灵时不灵的,并且写入读取数据存在随机错误,一直找不到原因!!!很头痛!! 我们硬件工程师 DQS 0-3 的布线都 不一样长,会不会是这个原因?
如图为我们的 trace length 。
bingjian wang:
目前只进行400MHZ 的leveling, 完全按照官网的步骤来的。 是不是我们漏掉了什么
Chris Meng:
回复 bingjian wang:
Wang Bingjian,
1. 请确认板上的flash上没有烧写程序,或者运行到uboot后停下,再连接仿真器
2. 使用的gel文件里面的DDR时序配置,请按照你们使用的DDR芯片做相应的调整。
bingjian wang:
回复 Chris Meng:
1. 请确认板上的flash上没有烧写
关于第一点,我们目前只是进行ddr3 leveling,这也需要flash上烧写u-boot么?ddr3 leveling了不是u-boot的基础么?
Chris Meng:
回复 bingjian wang:
bingjian wang1. 请确认板上的flash上没有烧写 关于第一点,我们目前只是进行ddr3 leveling,这也需要flash上烧写u-boot么?
不需要烧写uboot,但有客户出现过Linux启动后调用gel文件出错的情况。
bingjian wang1. 请确认板上的flash上没有烧写 关于第一点,我们目前只是进行ddr3 leveling,这也需要flash上烧写u-boot么?ddr3 leveling了不是u-boot的基础么?
有些板子如果不做DDR SW leveling,uboot也可以起来,但是稳定性无法保证。