NXP LS1043/1046 DDR调试

项目上用到了LS1043芯片,硬件自己画了板子,使用到了镁光5片DDR2G8,拼成8GB,剩余一片做ECC。

整个过程调试了近一个月,板子期间就是起不来,后面出奇意料的成功跑起来。

<调试环境>

需要买一个CodeWarrior TAP,NXP FSL系列仿真器,可以用来辅助寻找DDR配置参数。不便宜,大几千。

下载一个CW套件,NXP官方提供,可以试用,有一个月license。

其它的,要确认DDR接线是不是对的,我和硬件工程师对了好几遍确认,1043 DDR bus只有32位,我们起初怀疑是不是需要双CS来完成64位寻址,后面发现不需要。

<CW配置>

创建带有DDR的工程:

 

 显然  我们不是DIMM类型DDR。

Clock setting里,选择自己适用的DDR频率,这里要和RCW配置的时钟吻合。

DRAM setting里面,选择DDR类型、DDR频率(这个感觉没用,我按照DDR手册选择3200MT)。

Skews,这里填入布线差。实际上我没填,感觉没用。

完成后创建工程,配置DQ map。如果DDR与CPU数据线是一一对应的,这个可以不用配置,使用默认map。

我们的是抄的NXP参考电路,数据线是混乱的,方便布线。

 到此,可以先生成一组参数。在文件ddrTfa_1.c中有个结构体。

这个参数可以放到ATF工程中使用。ATF中的DDR配置需要打开STATIC配置,关闭DIMM。将结构体中的参数与ATF结构体一一对应修改即可。(这个结构体里没有包含DQ map配置,需要自己补上。)

编译,烧录。这时候板子没有起来,提示D_INIT超时。

 <仿真脚确认>

在扫描DDR之前呐 先确认下JTAG10 pin线有没有问题。第10脚是个RST,这个需要用到复位电路中。

点击甲虫进入debug窗口,激活LS1043A芯片(右侧),需要编辑下它的配置:

我这里关闭了SAFE_RCW,修改了BOOT_CHIP_SELECT。

随后点击对号位置得按钮,CW开始进行一系列得检查。一般JTAG脚有问题得话会卡在IR Scan。

只要过去后DDR扫描得环境就具备了。

<DDR扫描>

现在可以使用CW扫描,寻找一个最配置: 

只要能全扫过,可以确认DDR硬件基本没问题。

此时再生成一次参数,修改、编译。

按照正常逻辑此时就该起来了,但总有点意外,板子停留在BL2。

现在的板卡启动引导逻辑是BL1->BL2->Uboot,BL2基本是DDR操作,所以我还是怀疑DDR问题,查了许久,没有结果。当时现象很迷惑,CW的DDR测试完全没有问题。最后,我抛开DDR怀疑,排查CPU部分,发现cpu频率从1.6G降为1.5G时 uboot起来了。

最终确认到内核电压使用的不对,在0.9V时内核可以跑在1.2G,1V时1.6G。板子刚好用的0.9V内核电压,调整完电压后1.6G cpu运行正常。

 

 

<<<<<<end

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值