969911_zh-CN

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

969911_zh-CN

969911_zh-CN

imx8m 在不使用 WDOG_B 信号的情况下 RESET<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

您好,

我在自定义 imx8m 板上运行监视程序时遇到了问题。

我们的主板不使用 WDOG_B 信号进行 PMIC RESET,我们无法对此进行更改。

在 u-boot 中重置主板的工作原理与参考手册中给出的相同:
将 0x3028000 寄存器设置为 e.g.0x14 重置了 SOC,我的监视程序超时也是状态寄存器中重置的来源。此外,断言 SRS 位还会重置 SOC 并在状态寄存器中提供正确的重置源。

启动 Linux 后,这不再起作用——在强制监视程序超时后,SOC 就死机了。

电压源是 SOC 启动所需的,因此不会有问题。我们从 EMMC 和 RST 启动

引脚连接。

是否有其他提示可以检查,或者是否有人有相同的设置(没有 WDOG_B 信号到 PMIC)?

谢谢、

沃尔夫冈

i.MX 8M | i.MX 8M Mini | i.MX 8M NanoYocto ProjectRe: imx8m reset without WDOG_B signal usage

添加此回复是因为我设法通过软件解决了同样的问题:

  • 带有 IMX8MN + PCA9450 的定制板
  • 使用 KConfig 自定义 Linux 发行版
  • RESET cmd 在 U-Boot 中起作用
  • 任何 Linux 监视程序命令(重启等)都会挂起但不会 RESET 系统
  • GPIO2 (WDOG-B) 引脚不响应 Linux 看门狗命令

就我而言,有两个问题:

  1. 我没有在 KConfig(CONFIG_IMX2_WDT/imx2_wdt.c)中启用正确的 WDT 驱动程序。因此,内核无法正确处理看门狗命令。
  2. 主线内核中的 PCA9450 驱动程序(pca9450-regulator.c)无法正确处理重置控制寄存器选项——特别是无法进行完全的冷重置。我的设计要求 PCA9450 重启所有功能域的电源,但即使在 RESET 期间,驱动器也不会重启 LDO1/2 域的电源。PCA6450 数据手册提供了在所有功能域中循环电源的选项,只是主线内核驱动程序中没有处理这个问题。下面是探针函数的代码片段:
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;
 
"WDOG_B_CFG_COLD 缺少一个选项。" 就我而言,我只是将其硬编码到我自己版本的驱动程序中,然后手动将其转入编译树。 虽然超级笨拙,但作为概念验证还是行之有效的。 我不确定是否有人是内核维护者,但我只是一个前端人员...
 
tl;dr:
1) 确保你在内核中编译了正确的 WDT 驱动程序,2) 如果你使用的是 PCA9450 PMIC,请检查稳压器驱动程序以确保它能给你完整的冷RESET流程。
 
希望对大家有所帮助!
Re: imx8m reset without WDOG_B signal usage

我最近遇到了这个问题,发现它与 PSCI cpu-idle 有关。如果你禁用 CONFIG_ARM_PSCI_CPUIDLE,或者使用 cpuidle.off=1 启动这通常会禁用 cpuidle 我发现系统正在按预期进行热RESET。不过,我不确定是什么原因造成了这种情况。

Re: imx8m reset without WDOG_B signal usage

@siva_prabhakara你找到解决这个问题的固件了吗?

Re: imx8m reset without WDOG_B signal usage

你好,我在基于 imx8mm 的自定义板上遇到了同样的问题。Uboot “RESET” 命令按预期运行,但是linux的 “重启” 命令挂起,没有任何特定的错误输出。

有人知道如何在不修改硬件的情况下解决这个问题吗?

提前感谢!

Justin D.

Re: imx8m reset without WDOG_B signal usage

你好,西瓦、

就像沃尔夫冈一样。在我们"修复了" ,或者让我说是优化了硬件之后,我们就没有再调查这个问题了。我们仍然使用内核 5.4.47。与此同时,还推出了更新的版本。也许其中包含一个修复程序。但老实说,我并不指望它。


如果你能找到任何软件修复方案,那就更有意思了。


顺祝商祺!

塞德里克

Re: imx8m reset without WDOG_B signal usage

@cedric_starke 我在 imx8mm (5.4) 上也遇到了同样的问题kernel),您或其他人是否能够找出这里的软件问题?

Re: imx8m reset without WDOG_B signal usage

你好,沃尔夫冈、

谢谢您的回答。我们也是用这种方法来完成重启工作的。幸运的是,我们已经 打算幸运的是,我们在电路板布局中已经考虑到了这一点,即使用一个未配备的电桥。在下一个版本中,我们将插入这座桥梁。

但在我看来,这是imx8m迷你软件包的软件问题。因为 uboot 可以在没有 POR_B 信号的情况下进行 RESET,而且 imx8m nano 也可以在 uboot 和 linux 中进行 RESET。

我们使用 4.14.98 和 5.4.47 版本对此进行了测试。在这两个"问题中," 。这只是为阅读本主题的其他人提供信息。

如果有人发现了软件错误,请随时发布,因为我们仍然对正确的解决方案感兴趣。


顺祝商祺!

塞德里克

Re: imx8m reset without WDOG_B signal usage

你好,塞德里克、

我们没有找到/搜索解决方案,但在下次重新设计中通过 100k PU 将 WDOG_B 引脚连接到
SOC RESET 引脚 (POR_B)。这样我们就可以在不触摸 PMIC 的情况下通过
看门狗 RESET SOC。


此致,

沃尔夫冈

Re: imx8m reset without WDOG_B signal usage

你好@wolfgang_baer

我知道,这个问题其实并不新鲜,但我们的 imx8m mini 也遇到了同样的问题,我只想请教你们解决这个问题的办法。

此外,我们还发现,IMX8M mini 也会出现这种情况。我们为 imx8m nano 使用了相同的印刷电路板,该 SOC 能够正确重启。

因此,如果您能与我们分享您最后的状态,我们我们将不胜感激.


顺祝商祺!

塞德里克

Re: imx8m reset without WDOG_B signal usage

你们好

试着退出 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;
}

感谢您的帮助。


Re: imx8m reset without WDOG_B signal usage<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

嗨,雷哈尼、

对不起--没有。我还没有找到解决这个问题的办法。

基本上,恩智浦表示要RESET PMIC——但这对我们来说也是行不不通的。

如果我们找到了解决方案,我会在这里报告。

此致,

沃尔夫冈

Re: imx8m reset without WDOG_B signal usage<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

你好,沃尔夫冈、

我也有同样的问题。你找到答案了吗?

此致,

Reyhaneh

Re: imx8m reset without WDOG_B signal usage<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

你好

让我看看原理图。我会提出申请。

此致,

尤里。

Re: imx8m reset without WDOG_B signal usage<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

你好,尤里、

是的,我们使用的是最新版本的 DDR 工具(V2.10)和最新的 LPDDR4 Excel 表(v23)。

压力测试可以在我们的板上正常运行。

如果我禁用 WDOG_B 断言功能,我还能在 EVK 板上看到同样的效果:

-看门狗在 u-boot 提示符下工作-> 它会重置设备

-启动到 linux 提示符后-> 同样的监视程序调用只会使设备停止/冻结

此致,

沃尔夫冈

Re: imx8m reset without WDOG_B signal usage<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

你好

由于 i.MX8M 的 SPL 包含用于 DDR PHY 和 DDR 控制器初始化
以及 DDR PHY 培训的代码,因此通常建议使用 DDR 工具中的最新固件;

它应提供所有必要的初始化。

此外,让压力测试生效是有意义的。

https://community.nxp.com/docs/DOC-340179

此致,

尤里。

Re: imx8m reset without WDOG_B signal usage<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

你好,尤里、

在 u-boot 中对内存进行一次简单的 mtest 显示没有错误。

此外,在板启动期间进行的DDR工具压力测试现在显示出错误。

关于您在第一个帖子中提到的内存命令的文档/更改,您有什么提示吗?

谢谢!

沃尔夫冈

Re: imx8m reset without WDOG_B signal usage<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

你好

是否可以对U-boot进行简单的内存测试-以排除内存问题?

此致,

尤里。

Re: imx8m reset without WDOG_B signal usage<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

你好,尤里、

感谢您的快速回复。我知道有人建议断电,但如前所述,我们目前没有选择。

关于记忆。您的意思是在 SPL 中的 LPDDR4 初始化代码中执行上述命令吗?
您是否有关于这些命令的文档提示,因为我目前只是在 SPL DDR 初始化中使用 DDR 工具生成的
初始化代码。

你是否也知道为什么它能在 u-boot(命令提示符下)运行,但在加载 Linux 之后不行?
记忆方面有什么不同?

谢谢,非常感谢你们的帮助、

沃尔夫冈

Re: imx8m reset without WDOG_B signal usage<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

你好

  

建议断开板上所有元器件的电源(电压),

即使处理器RESET,因为某些外部设备,例如eMMC,SD,

QSPI、DDR)可能处于不可预测的状态;因此系统启动不起作用。

 

我认为,在您的案例中,记忆就是原因。也许有必要发布

在 LPDDR 初始化开始时使用 preCharge All 命令并 RESET

读取 FIFO 指针。

 


祝您愉快,
Yuri

-------------------------------------------------------------------------------
注:
- 如果本帖回答了您的问题,请点击"标记正确" 按钮。谢谢!

- 我们会在最后一次发帖后的 7 周内跟踪主题,之后的回复将被忽略
如果您以后有相关问题,请另开新主题并参考已关闭的主题。

タグ(1)
評価なし
バージョン履歴
最終更新日:
‎02-16-2026 02:24 AM
更新者: