各位专家好,
最近按照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都没出现问题啊
TI中文支持网