TI专家,各位朋友:
问题描述:
自己做的OMAPL138的板子遇到一个问题,使用同样的UBL,UBOOT,Linux系统可以启动起来,并且在Linux下测试所有外设(SD卡,SATA,Uart,I2C,SPI,网口,RTC,USB OTG ,USB HOST等)都是可用的。但是vxWorks却启动不起来,卡在如下图的地方:
问题分析:
vxWorks中启动中所使用的外设,只有DDR2和UART2,内核是放在DDR2启动的,UART2用于打印内核启动信息。同样的vxWorks内核,同样的UBL,UBOOT在A板卡(之前某项目的板卡)上是可以启动起来的。A板卡,OMAPL138的型号,NAND FLASH型号,DDR2的型号和B板卡(目前有问题的板卡)都是相同的。
几乎可以认为板卡是兼容的,却结果截然相反。
推断我们公司自己做的板卡,或许DDR2有问题,工作可能不够稳定,虽然在Linux下可用,可能Linux的运行速度远没有vxWorks高,vxWorks启动的时候内存有错误导致启动失败。
注:以上红色字体描述的内容仅仅是自已主管推断。
调试思路及结果:
尝试降低DDR2的工作频率,DDR2的配置是在UBL中进行,具体的做法就是通过AISgen_d800k008.exe修改DDR2的工作频率,同时修改了DDR2/mDDR控制器的参数,其中DDR2/mDDR2控制器的参数是由mDDR_DDR2_Memory_Controller_Register_Calc_Rev4.xls自动计算出来的,我只是根据DDR2的datasheet填充了一些具体的参数值。
在B板卡(目前有问题的板卡)上,DDR2降低到138M Hz时,UBL还可以启动uboot,但是降低到132 MHz时,UBL已经无法启动uboot了,uboot是在DDR2中运行的,推断此时DDR2已经工作异常了。132 M Hz的情况下,A板卡(之前某项目的板卡)上,同样的UBL,同样的UBOOT都是可以正常工作的,甚至在DDR2工作在102M Hz时,工作同样正常。
其他说明:
B板卡(目前有问题的板卡),DDR2布线只做了等长,没有做阻抗匹配,目前首批只做了三块样板,问题都是一致的。
最后:
请TI专家,各位朋友帮分析下,这个问题该怎么解决,在硬件暂时不动的情况下,有没有其他的调试方法来进一步定位问题。
非常感谢!
Tony Tang:
是不是内核的串口号不对啊,如果是DDR的问题,没道理Linux能起来,Vxworks不行啊。
wei lee1:
回复 Tony Tang:
Vxworks在其他板子上启动起来过,UBL,Uboot ,Vxworks调试信息都是从UART2打印出来,这个是不存在问题的。