您好,
我在自定义 imx8m 板上运行监视程序时遇到了问题。
我们的主板不使用 WDOG_B 信号进行 PMIC RESET,我们无法对此进行更改。
在 u-boot 中重置主板的工作原理与参考手册中给出的相同:
将 0x3028000 寄存器设置为 e.g.0x14 重置了 SOC,我的监视程序超时也是状态寄存器中重置的来源。此外,断言 SRS 位还会重置 SOC 并在状态寄存器中提供正确的重置源。
启动 Linux 后,这不再起作用——在强制监视程序超时后,SOC 就死机了。
电压源是 SOC 启动所需的,因此不会有问题。我们从 EMMC 和 RST 启动
引脚连接。
是否有其他提示可以检查,或者是否有人有相同的设置(没有 WDOG_B 信号到 PMIC)?
谢谢、
沃尔夫冈
添加此回复是因为我设法通过软件解决了同样的问题:
就我而言,有两个问题:
if (of_property_read_bool(i2c->dev.of_node, "nxp,wdog_b-warm-reset"))
reset_ctrl = WDOG_B_CFG_WARM;
else
reset_ctrl = WDOG_B_CFG_COLD_LDO12;我最近遇到了这个问题,发现它与 PSCI cpu-idle 有关。如果你禁用 CONFIG_ARM_PSCI_CPUIDLE,或者使用 cpuidle.off=1 启动这通常会禁用 cpuidle 我发现系统正在按预期进行热RESET。不过,我不确定是什么原因造成了这种情况。
@siva_prabhakara你找到解决这个问题的固件了吗?
你好,我在基于 imx8mm 的自定义板上遇到了同样的问题。Uboot “RESET” 命令按预期运行,但是linux的 “重启” 命令挂起,没有任何特定的错误输出。
有人知道如何在不修改硬件的情况下解决这个问题吗?
提前感谢!
Justin D.
你好,西瓦、
就像沃尔夫冈一样。在我们"修复了" ,或者让我说是优化了硬件之后,我们就没有再调查这个问题了。我们仍然使用内核 5.4.47。与此同时,还推出了更新的版本。也许其中包含一个修复程序。但老实说,我并不指望它。
如果你能找到任何软件修复方案,那就更有意思了。
顺祝商祺!
塞德里克
@cedric_starke 我在 imx8mm (5.4) 上也遇到了同样的问题kernel),您或其他人是否能够找出这里的软件问题?
你好,沃尔夫冈、
谢谢您的回答。我们也是用这种方法来完成重启工作的。幸运的是,我们已经 打算幸运的是,我们在电路板布局中已经考虑到了这一点,即使用一个未配备的电桥。在下一个版本中,我们将插入这座桥梁。
但在我看来,这是imx8m迷你软件包的软件问题。因为 uboot 可以在没有 POR_B 信号的情况下进行 RESET,而且 imx8m nano 也可以在 uboot 和 linux 中进行 RESET。
我们使用 4.14.98 和 5.4.47 版本对此进行了测试。在这两个"问题中," 。这只是为阅读本主题的其他人提供信息。
如果有人发现了软件错误,请随时发布,因为我们仍然对正确的解决方案感兴趣。
顺祝商祺!
塞德里克
你好,塞德里克、
我们没有找到/搜索解决方案,但在下次重新设计中通过 100k PU 将 WDOG_B 引脚连接到
SOC RESET 引脚 (POR_B)。这样我们就可以在不触摸 PMIC 的情况下通过
看门狗 RESET SOC。
此致,
沃尔夫冈
我知道,这个问题其实并不新鲜,但我们的 imx8m mini 也遇到了同样的问题,我只想请教你们解决这个问题的办法。
此外,我们还发现,IMX8M mini 也会出现这种情况。我们为 imx8m nano 使用了相同的印刷电路板,该 SOC 能够正确重启。
因此,如果您能与我们分享您最后的状态,我们我们将不胜感激.
顺祝商祺!
塞德里克
你们好
试着退出 SRSR RESET 状态寄存器 (0x3039005c)。它可以工作,但看起来状态从未改变过。无论我如何启动/重启/重置/关机/wdog/,i.mx8mm src_reg srsr 每次都是 0x01。
是否存在无法正常工作的已知问题?
还是我做错了什么?
u-boot-imx_2019.04
u32 get_imx_reset_cause(void)
{
struct src *src_regs = (struct src *)SRC_BASE_ADDR;
i@@ f (reset_cause == -1) {
printf (" 0 src_regs %.8x\n ", src_regs);
printf (" 0 src_regs %.8x\n ", & src_regs);
printf (" 0 src_regs-> srsr %.8x\n ",src_regs - > srsr);
printf (" 0 src_regs-> srsr %.8x\n ", & src_regs-> srsr);
reset_cause = readl (& src_regs-> srsr);pr
intf (" 1 重置原因 %.8x\n ", reset_cause);
/* 保留 U-Boot 的值 */
#if! 已定义 (CONFIG_SPL_BUILD) & &! defined (CONFIG_ANDROID_BOOT_IMAGE)
/* 稍后我们将读取安卓的 ssrs 状态,因此我们不会
* 在此处 清除状态。
*/
writel (reset_cause,& src_regs-> srsr);printf
(" 2 写入RESET原因 %.8x\n ", & src_regs-> srsr);
printf (" 2 读取RESET原因 %.8x\n ",src_regs-srsr);printf (2
读取RESET原因 %.8x\n,src_regs-srs r) > srsr); #endif writel(reset_cause,&
src_regs-> srsr); printf(" 3 2写入RESET原因
%.8x\n ",& src_regs-> srsr); printf(" 3read RESET原因 %.8x\n ", src_regs->
srsr);}
返回 reset_cause;
}
感谢您的帮助。
嗨,雷哈尼、
对不起--没有。我还没有找到解决这个问题的办法。
基本上,恩智浦表示要RESET PMIC——但这对我们来说也是行不不通的。
如果我们找到了解决方案,我会在这里报告。
此致,
沃尔夫冈
你好,沃尔夫冈、
我也有同样的问题。你找到答案了吗?
此致,
Reyhaneh
你好
让我看看原理图。我会提出申请。
此致,
尤里。
你好,尤里、
是的,我们使用的是最新版本的 DDR 工具(V2.10)和最新的 LPDDR4 Excel 表(v23)。
压力测试可以在我们的板上正常运行。
如果我禁用 WDOG_B 断言功能,我还能在 EVK 板上看到同样的效果:
-看门狗在 u-boot 提示符下工作-> 它会重置设备
-启动到 linux 提示符后-> 同样的监视程序调用只会使设备停止/冻结
此致,
沃尔夫冈
你好
由于 i.MX8M 的 SPL 包含用于 DDR PHY 和 DDR 控制器初始化
以及 DDR PHY 培训的代码,因此通常建议使用 DDR 工具中的最新固件;
它应提供所有必要的初始化。
此外,让压力测试生效是有意义的。
https://community.nxp.com/docs/DOC-340179
此致,
尤里。
你好,尤里、
在 u-boot 中对内存进行一次简单的 mtest 显示没有错误。
此外,在板启动期间进行的DDR工具压力测试现在显示出错误。
关于您在第一个帖子中提到的内存命令的文档/更改,您有什么提示吗?
谢谢!
沃尔夫冈
你好
是否可以对U-boot进行简单的内存测试-以排除内存问题?
此致,
尤里。
你好,尤里、
感谢您的快速回复。我知道有人建议断电,但如前所述,我们目前没有选择。
关于记忆。您的意思是在 SPL 中的 LPDDR4 初始化代码中执行上述命令吗?
您是否有关于这些命令的文档提示,因为我目前只是在 SPL DDR 初始化中使用 DDR 工具生成的
初始化代码。
你是否也知道为什么它能在 u-boot(命令提示符下)运行,但在加载 Linux 之后不行?
记忆方面有什么不同?
谢谢,非常感谢你们的帮助、
沃尔夫冈
你好
建议断开板上所有元器件的电源(电压),
即使处理器RESET,因为某些外部设备,例如eMMC,SD,
QSPI、DDR)可能处于不可预测的状态;因此系统启动不起作用。
我认为,在您的案例中,记忆就是原因。也许有必要发布
在 LPDDR 初始化开始时使用 preCharge All 命令并 RESET
读取 FIFO 指针。
祝您愉快,
Yuri
-------------------------------------------------------------------------------
注:
- 如果本帖回答了您的问题,请点击"标记正确" 按钮。谢谢!
- 我们会在最后一次发帖后的 7 周内跟踪主题,之后的回复将被忽略
如果您以后有相关问题,请另开新主题并参考已关闭的主题。