器件型号: AM625
大家好:
我们希望启用看门狗、以便在电路板挂起时在 Linux 中设置电路板复位。
您能告诉我们如何在 Linux 中启用它吗?
谢谢你。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
器件型号: AM625
大家好:
我们希望启用看门狗、以便在电路板挂起时在 Linux 中设置电路板复位。
您能告诉我们如何在 Linux 中启用它吗?
谢谢你。
您好、Tom、
您使用的是什么 Linux SDK?
AM62x 看门狗在较新的 Foundational_Components 上启用(我相信是 Kernel_Drivers 10.0 或更高版本): https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/11_01_05_03/exports/docs/linux/SDK/Kernel/SDK/Watchdog.html
此致、
Nick
您好 Nick:ö m
是的、我们使用 SDK 10.0。
我按照步骤更改 DTS 并启用内核配置和 RTI_WDT.c、将超时设置为 30s。
有/dev/watchdog、 /dev/watchdog0、 /dev/watchdog1、 /dev/watchdog2、 /dev/watchdog3、 /dev/watchdog4。
然后、我编译了 watchdog-simple.c 以测试看门狗。
不运行看门狗应用程序时、电路板不会重新启动。
当我运行 看门 狗应用程序时,我添加了登录 Whid(1) 当做馈送时,它也显示了成功馈送的日志,但主板仍然重新启动,直到 30s。
为什么?
您好、Tom、
我是不在办公室,直到星期三。 您可以期待之后的下一个响应。
此致、
Nick
您好、Tom、
对此处答复的持续拖延深表歉意。 我再次度假、直至 12 月 1 日的星期一。 请在星期一或星期二上再次 ping 该线程、确保我看到通知。
如果您使用的是 30 秒超时、那么我希望在检测看门狗时有一个 15 秒的窗口可以重新启动计数器。 我希望看门狗简单、可以正常工作、因为它会每 10 秒尝试宠物一次看门狗。
您是否每次都看到重新启动? 还是随机发生?
此致、
Nick
您好、Tom、
看门狗(或实时中断/RTI)是 AM62x 内部的硬件计数器。 每个 A53 内核都有一个关联的 RTI。 主域中还有第五个通用 RTI、MCU 域中有一个 RTI、WKUP 域中有一个 RTI。
这意味着、如果您使用的是少于 4 个 A53 内核的 AM62x 器件型号、则您将看到 MAIN 域中显示的 RTI 实例更少(假设您使用的是更高版本的 Linux SDK — 如果您使用的是早期版本的 Linux SDK、则需要在 Linux 器件树文件中手动禁用 RTI 和未使用的内核)
通常、如果 MCU M4F 内核需要看门狗、它将使用 MCU 域中的看门狗、Linux 将在 MAIN 域中使用看门狗等 但我已经看到有些人在不同电源域中使用 Linux 看门狗之一。
有关更多信息、请参阅技术参考手册 (TRM) 部分
模块集成>计时器模块> RTI
外设>计时器模块> RTI
此致、
Nick
您好 Nick:ö m
我使用 watchdog-simple.c 进行测试。 并且馈送时间小于 timeout-sec
但电路板仍会重启。
DTS 中的 RTI 时钟是否错误? 您能请我检查一下吗?
main_rti0:watchdog@e000000{ 兼容=“ti、j7-RTI-WDT“; reg =<0x00 0x0e000000 0x00 0x100>; Clocks =<&K3_CLKS 125 0>; 电源域=<&K3_PDS 125 TI_SCI_PD_EXCLUSTE>; Assigned-clocks =<&K3_CLKS 125 0>; - assigned-clock-parter =<&k3_CLKS 125 2>;
+ assigned-clock-parter =<&k3_CLKS 125 4>;
};
我将它从 2 更改为 4、如果我总是喂狗、则我的板不会重新启动。
Tom、
当您将 2 更改为 4 时、这更改了 RTI0 父时钟。
这是时钟信息。 则原始设置为 2、即 32K RC 时钟。 无论您如何更改、RTI 寄存器值都应正确设置。
| 时钟 ID | Name | 测量输出 |
|---|---|---|
| 0 | DEV_RTI0_RTI_CLK | 输入多路复用时钟 |
| 1. | DEV_RTI0_RTI_CLK_PARENER_GLUELOGIC_HFOSC0_CLKOUT | Dev_RTI0_RTI_CLK 的父级输入时钟选项 |
| 2. | DEV_RTI0_RTI_CLK_PARENER_CLK_32K_RC_SEL_OUT0 | Dev_RTI0_RTI_CLK 的父级输入时钟选项 |
| 3. | DEV_RTI0_RTI_CLK_PARENER_GLUELOGIC_RCOSC_CLKOUT | Dev_RTI0_RTI_CLK 的父级输入时钟选项 |
| 4. | DEV_RTI0_RTI_CLK_PARAME_MAIN_WWDTCLKN_SEL_OUT0_DIV_CLKOUT | Dev_RTI0_RTI_CLK 的父级输入时钟选项 |
| 5. | DEV_RTI0_VBUSP_CLK | 输入时钟 |
您好、Tom、
您可以查看寄存器 0x00108380 并在此处提供反馈。
对于位 1:0、 此处提供了 WWD0_CLKSEL_CLK_SEL 描述。
窗口化看门狗计时器功能时钟输入选择多路复用器控制字段值(其他保留):2'b00 - HFOSC0_CLKOUT 2'b01 - DEVICE_CLKOUT_32K 2'b10 - CLK_12M_RC 2'b11 - CLK_32K
根据我的理解、我们需要弄清楚 2 和 4 之间的区别。
根据 TRM、CLK_32K_RC 不稳定、说明如下。
CLK_12M_RC 的输出时钟会进一步分频以生成 32kHz 时钟 (CLK_32K_RC)。
SMS 和计时器模块使用该时钟。
推导出的 CLK_32K_RC 的实际值将随 PVT 的变化而变化。
谢谢。
Linjun
您好 Linjun、
感谢您的评分!
您好、Tom、
对于 32k RC 时钟、Linjun 是正确的。 该时钟用作“回退“时钟源。 因此、如果电路只需要一个时钟信号、以便它可以继续传输电路的状态、那么可以使用该时钟。 但是、RC 时钟的实际频率可能会有很大差异。 我认为在某些情况下、频率可能高达 32KHz 的+/- 50%。 我不会使用这个时钟源来驱动需要保持准确时间的东西。
我会在下个星期中回来度假的。
此致、
Nick
您好 Tom、
在 DTS 中将时钟设置为 2 时、 0x00108380 的值为 0x1、、表示时钟源为“DEVICE_CLKOUT_32K",“,</s>、
在 DTS 中将时钟设置为 4 时、 0x00108380 的值 为 0x3、这意味着时钟源为“CLK_32K"</s>“
请查看 TRM spruiv7c.pdf 第 579 页、我想“CLKOUT_32K"是“是“HFOSC0_CLKOUT_32K"</s>“
关于“DEVICE_CLKOUT_32K",“, 有、有两个“DEVICE_CLKOUT_32K"源“源、一个是 HFOSC0_CLKOUT_32K、另一个是 CLK_32K_RC。 这取决于您的系统配置。
根据我的理解、 根据时钟稳定性的考虑、更改 2 到 4 应该是合理的。
谢谢。
Linjun
您好、Tom、
关于 DEVICE_CLKOUT_32K 源、请转储寄存器 CFG0_DEVICE_CLKOUT_32K_CTRL (0x4508058) 以检查正在使用哪个源。下面是寄存器说明。
关于 CLK_32K、寄存器数据库中没有提到其他字、我想是 HFOSC0_CLKOUT_32K、源是 HFOSC0。
CLK_32K_RC 源是 12.5MHz RC。
请帮助检查和确认。
谢谢。
Linjun
Nick Saulnier (4768119)、 您能按照这张票吗? 当客户将 RTI0 时钟源设置为 CLK_32K_RC 时、 据我理解寄存器 0x00108380 应该为 2、但客户回读为 1。 我们需要团队为根本原因提供支持。 Mukul Bhatnagar
我将在 AM62-SK 上附加一个带有 AM62x Linux SDK 11.1.5.3 的示例 RTI 测试日志以供您参考。
此致、
- Hong
亲爱的汤姆。
请检查 Hong 的参考日志吗? 它是否与您的测试用例类似?
为了进行澄清、请提供重现问题的测试步骤、特别是如何使用 watchdog-simple.c 进行测试? 如果可以、请共享测试代码。
[引述 userid=“658153" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1583417/am625-am625-watchdog-enable/6155229我使用 watchdog-simple.c 进行测试。 并且馈送时间小于 timeout-sec
但电路板仍会重启。
DTS 中的 RTI 时钟是否错误? 您能请我检查一下吗?
[/报价]非常感谢!
Yong
您好、Tom、
- RTI0 时钟是在内核 dts 中配置的
https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/arch/arm64/boot/dts/ti/k3-am62-main.dtsi?h=v6.12.66#n857
- AM62X 时钟标识符
https://software-dl.ti.com/tisci/esd/latest/5_soc_doc/am62x/clocks.html
器件:AM62X_DEV_RTI0 (ID = 125)
我在 RTI0 时钟上使用“k3conf"附加“附加了一个示例日志。
此致、
- Hong
您好、Tom、
"Md.l 0x43018170“ 0x43018170 3“和“Md.l 0x04518170 3“、您是否读取了 REGS 的值? 您读取了哪些寄存器?
“RTI_WDT 倒计时超时=> ESM ERRORSTz => SoC 复位“之后、主域和 MCU 域的 RST_CTRL/RST_STAT/RST_SRC 上的 CTRLMMR 寄存器
此致、
- Hong
尊敬的 Hong:
我在 TEST_WATCHDOG 重新启动电路板后读取它们。
“MD.l 0x43018170 3“的值为
000200ff 00000000 c0010000
“MD.l 0x04518170 3“的值为
00400fff 00000000 c0010000
不同的位是 0x43018178 和 0x04518170 的位 16。 在我的板上,他们是 1.
您好、Tom、
在我的早期回复中、RTI_WDT 测试日志中的 CTRL_MMR_CFG0_RST_SRC 读数是正确的。
关于:AM625:am625 看门狗启用
此致、
- Hong
尊敬的 Hong:
是的、之前、我按照您的说明 在 RTI 看门狗重新引导后读取 uboot 中的这些寄存器、但 在运行 RTI_WDT 测试之前未读取
“MD.l 0x43018170 3“的值为
000200ff 00000000 c0010000
“MD.l 0x04518170 3“的值为
00400fff 00000000 c0010000
不同的位是 0x43018178 和 0x04518170 的位 16。 在我的板上,他们是 1.