Other Parts Discussed in Thread:AM3352
问题描述:
1、AM3352板子烧录固件后执行reboot导致系统卡死无法重启;上电启动正常。
2、AM335x固件中linux下的reboot命令和uboot下的reset命令的底层操作都是向0x44e00f00寄存器写1进行热复位,热复位失败。
3、在uboot中执行mw 0x44e00f00 1 1,写热复位寄存器时复位失败;执行mw 0x44e00f00 2 1进行冷复位成功;
4、在电路板上将热复位引脚HRESET接地,设备复位失败卡死。
问题排查:
1、335x-b4-uboot/common/spl/spl.c中的board_init_r函数中,在串口初始化之前有执行串口打印操作 puts("lin : ####spl:board_init_r()####\n");因此推测未初始化串口进行puts操作导致了问题;屏蔽该代码编译烧录后,设备热复位正常。
2、按上述1中的排查应该是算找到问题了,但同样的固件在我们V4.0的板子上,使用新的DDR HYNIX:H5TQ4G63EFR-RDC上出了问题,在V3.0的板子上使用老的DDR HYNIX:H5TQ4G63AFR-H9C没有问题,这样就不能确定上述1中的排查是否找到问题的根源,
请帮着分析该问题的根本原因,谢谢。
Shine:
请问这两块板子硬件上只是DDR不同?这两块DDR具体由什么不一样?
,
user5884970:
这两块版本没有大的改动,只是外设的接口做了一些调整,比如串口,SPI会有一些区别,核心的电源、复位、晶振、eMMC都是一样的,DDR只是升级换代,主要的区别:HYNIX:H5TQ4G63AFR-H9C是2代片子,时钟最高支持DDR3-1333 9-9-9;HYNIX:H5TQ4G63EFR-RDC,是6代片子,时钟最高支持DDR3-1866 13-13-13
,
Shine:
如果可以的话,建议把DDR片子做个交叉实验,看老版本的板子用新的DDR片子是否可以,看一下是不是DDR芯片的问题。
,
user5884970:
经确认,我们在老的板子上使用新的DDR芯片也是存在问题的,处理的办法就是“335x-b4-uboot/common/spl/spl.c中的board_init_r函数中,在串口初始化之前有执行串口打印操作 puts("lin : ####spl:board_init_r()####\n");因此推测未初始化串口进行puts操作导致了问题;屏蔽该代码编译烧录后,设备热复位正常。”,但是不能想明白的是DDR的升级换代跟这里有什么关系,我们是否找到问题的根源了,请帮着分析一下