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

AM335X的ddr2调试问题

各位专家好,

最近按照beaglebone的小系统部分做了个板子,载入starterware的2.0.0.7的mlo,mlo部分的串口打印正常,显示拷贝完成开始执行。但后续的打印就没有了。

链接jtag看到,程序内容,也就是地址为0x80000000部分的内容,所有A3和A7数值为1的地址部分都是0.pc指针指向不存在的地址。

比如A3数值为1的地址部分是0,就是每隔两个长字的内容,就有两个长字的全0.

修改这些为0的内容,有时候改到旁边去了,有时候不知道改到哪里去了。不停读取内存,发现有时候有的数值在自动改变。

这应该是DDR2的配置问题吧?

lei lu1:

我的板子上没有EEPROM的芯片来标示板信息,不过没什么关系吧,载入starterware的2.0.1.1的mlo,发现直接在内部ram中死循环了,因为几次连接jtag,pc指针一直在变化,但都在内部内存的范围。去掉用I2C读取EEPROM的代码,现象依旧。

用示波器去量A3和A7脚,发现在写操作时有电压变化;但WEN脚,也就是写信号一直是高电平,不知是否正常?

http://processors.wiki.ti.com/index.php/AM335x_board_bringup_tips说内存的不稳定,很可能是配置问题。

我的内存就是beaglebone的那款,还专门按照芯片上的字符在内存的官方网站上确认过型号,不过用了工业级温度的,应该没区别的啊。我看了http://processors.wiki.ti.com/index.php/AM335x_EMIF_Configuration_tips,用datasheet上的参数重新填入AM335x DDR Calculation tool (.zip)计算AC timing registers,现象依旧。

这篇文档的另一篇内存参数计算,Ratio Seed Spreadsheet,是要计算线长。我看了下除了这个表中用不到的两个数据线,是D4还是多少,比其他短了300mil左右,其他的线长差距都最多在十几mil,而且数据线应该不会导致内存不稳定的吧

Jian Zhou:

回复 lei lu1:

如果你用的DDR2和beaglebone上的一样,都是128M16b的,那么实际上EMIF配置这块不用改什么东西。

根据我的经验,DDR2不通,请注意一下以下几个方面:

1.请仔细检查原理图,可对照Beaglebone的原理图再仔细检查一遍,包括电阻阻值。

2.要对照beaglebone的PCB layout,以及datasheet中的布线规则,检查PCB布线是否存在较大的问题。

3.如果原理图和布线都没有大的问题,那么焊接导致的不稳定也是有的,确定一下是手摆还是贴片机焊的,镁光的DDR2肯定是不建议手摆焊接。

lei lu1:

回复 Jian Zhou:

1原理图检查过,ddr部分的区别应该就是把匹配电阻从33欧换成了27欧,这个应该没什么有影响吧?

2如果想确认是否信号布线等信号完整性问题,是否可以降低DDR2的频率来试验呢,如果可以的话需要修改的参数是否就只是上面提到的excel中的AC timing registers就可以了?

lei lu1:

回复 lei lu1:

顶下,望高手解答…

Jian Zhou:

回复 lei lu1:

串联电阻值的变化影响不大。

降频测试无需改动timming。

你仔细检查过地址线和高低地址使能线吗?

Steven Liu1:

建议从两个方面检查排查下问题:

软件配置方面:1. 你使用的MLO是针对Beaglebone板子的MLO吧,确认一下,是在beaglbone目录下的吧(StarterWare_02_00_00_07\binary\armv7a\cgt_ccs\am335x\beaglebone\bootloader),其他目录下的一些配置是DDR3的么;2. 在使用你修改的配置时,使用的EMIF和DDR PHY配置excel的时候,确定你的table页都是DDR2的吧?里面有些table页是DDR3,mDDR的。

硬件方面:根据你前面的描述,目前只要确定follow了我们布线准则,主要就是排查下焊接问题,靠谱的方式,还是量下信号线吧

leo chen:

因为是自制的板子,出线这种问题,不能排除硬件走线的问题哦

同时需要确认所用的内存颗粒是否和beaglebone上的一模一样,要不然也可能存在参数配置的问题

lei lu1:

回复 Jian Zhou:

那请问降低内存频率的话应该修改哪些参数呢?我是想试下看是否高频导致的时序问题。

 

地址线是A3和A7的数值为1的内存的内容为全0:

这点是从jtag的读取内存并依靠地址推算而来的,比如A3数值为1的地址部分是0,就是说每隔两个长字的内容,就有两个长字的全0

 

但量了下A3和A7引脚的电平变化,在用jtag写入相关地址时都是有跳变的:

A3平时是低,写入时很短时间变为2V再恢复;

A7平时是2V,写入时很短时间变为低再恢复;

 

高低地址使能线好像牵涉到好几根线吧,如何确认正常呢?

而且高低地址是8bit和8bit的,而我这个现象是每隔两个长字的内容,就有两个长字的全0;还有第7bit的地址线为0的内容也为0.

lei lu1:

回复 Steven Liu1:

你说的软件部分,我刚才重新确认了一遍,没发现问题

焊接问题用X光检查过CPU和DDR,都没发现问题。

匹配的排阻也检查过,没发现几根线串了的问题。

 

那我如何确认是否布线的问题呢?

用信号完整性分析,还是降频试下呢?貌似降频比较直接,所以想问下降频的参数该如何配置,多谢!

lei lu1:

回复 leo chen:

根据板子上内存颗粒的印字,我专门在镁光内存的官网查了一下,发现和beaglebone的内存型号只有“IT”也就是工业级温度的区别。

那应该如何确认是否硬件走线的问题呢?

排版的人说reference manual 上的规则无法完全遵循,不过他排了很多板子包括600M乃至更高的ddr都没出现问题啊

赞(0)
未经允许不得转载:TI中文支持网 » AM335X的ddr2调试问题
分享到: 更多 (0)