我们配备 LS1043AXN8QQB 和 2GB DDR4 的定制板无法正常开机RESET。
硬件架构:LS1043A 2GB DDR4(512MB x8bit),eMMC 启动模式。eMMC 是闪存的,里面装有所有启动映像(uboot、内核等)。
上电复位由一些逻辑门控制,用于检查一些电源状态,RESET信号,这些信号遵循RDB参考设计,详细设计,请参考所附电路。
故障:开机后,主板无法以随机故障率正确开机 RESET。如果开机RESET失败,我们可以定期捕获PORESET_B、RESET_REQ_B 和 HRESET_B。我们也可以捕获到,从 LS1043A 到 eMMC 芯片总是有 SDHC_CLK 的输出。如下所示、
并放大波浪,如下图所示、
可以发现 HRESET_B 在启动后被 LS1043A 拉高,这意味着系统已经完成了 PLL 锁定操作,并开始停止驱动 HRESET_B,但是在 [PBL 从 SD 卡中获取 PBI 命令,PBI 写入 CCSR 空间并使用 SPL 编程 OCRAM] 操作失败,然后 GPP 以 0x0000_0000 跳到启动 ROM,因为没有驱动程序的 SLEEP 根据启动过程顺序设置为LOW,如下所示,
是否有任何建议来调试和修复这个问题?谢谢。
在调试阶段,RESET_REQ_B需要能与PORESET 断开,防止MPU工作不正常是,持续reset CPU。
RESET电路的设计请参考AN5012, LS1043A Design Checklist - Application Note,Figure 18. JTAG interface connection 和LS1043ARDB 板卡。
请先找到PORESET变低的原因,PORESET触发,CPU无法正常工作。
PORESET_B的控制逻辑并没有参考RDB参考设计中用CPLD控制,而是用如下图的看门狗,以及前述的逻辑线路组合进行上电复位,
在首次上电启动时,系统上电后TPS3828这颗看门狗芯片内部自带200ms延时输出,控制释放PORESET_B,通过前述逻辑门线路,与电源检测逻辑进行与门逻辑,输出CPU_PORESET_B给到LS1043A处理器开始复位。
进入uboot或系统后,可通过reset或reboot命令,最终控制RESET_REQ_B来控制看门狗芯片,进行系统软复位重启。
这样的复位控制是否存在可能影响系统正常上电启动,目前分析下来怀疑是LS1043A启动后进入OCRAM进行初始化失败。
似乎是 PORESET 导致重复 POR。
请检查是哪个信号导致 PORESET 从高电平变为低电平。
在此步骤中,DDR 部分不会影响 POR。
您可以用中文回复。
补充更多信息,我们在板上使用的 DDR4 芯片是 MT40A512M8SA-062E IT,版本为 3200MT/s,使用了 ddr_init.c 中的 LS1043ARDB (LS2108) 默认设置。在 OCRAM 中初始化 DDR 控制器期间,DDR 芯片或 DDR 设置是否会影响系统开机 RESET?
我遇到了类似的问题,一个偶现故障(上千次重启出现1次):软件在uboot启动过程中卡死,故障现场是:"Synchronous Abort" handler, esr 0x02000000,根据反汇编查看具体调用,发现是:initr_pci→pci_init→dm_pciauto_config_device(pci_auto.c:371)→ dm_pci_hose_probe_bus(pci-uclass.c:607)→dm_pciauto_prescan_setup_bridge → bl dm_pci_get_bdf 后 ret 返回时取指 0x8202fc20 发生异常。问题出在ret到了不正确的地址,而调用的asr只是寄存器移位,它本身没有任何可能出错的地方(不访问内存、不跳转)。
软件使用cpld主动喂狗(外部看门狗),外部看门狗使用PORESET进行复位,但未能成功,请教一下其中的问题。
这个问题建议新开一个话题,谢谢
开启新的话题“软件启动已时出现Synchronous Abort” handler, esr 0x02000000 ”