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.

[参考译文] J784S4XEVM:基于 CSL 的看门狗和 ICU 应用

Guru**** 2912410 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1616371/j784s4xevm-csl-based-watchdog-and-icu-application

器件型号: J784S4XEVM

TI 是否有基于 CSL 的看门狗和 ICU 应用?  我只在 SDK 中找到了 mcusw 应用程序。 还欢迎 CCS 应用示例链接到 CSL 库

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jim Zhang:

    TI 为 PDK 中的 J784S4 提供了基于 CSL 的看门狗示例、但 PDK 中没有独立的基于 CSL 的 ICU 示例

    对于看门狗:

    J784S4 上的看门狗在 RTI(实时中断)模块内作为数字窗口式看门狗 (DWWD) 实现。

    • TI 在 PDK 下提供了一个名为 CSL_RTI_dwwd_test_app 的 CSL 示例。
    • 此示例演示了在裸机环境中使用 CSL API 配置和服务 RTI DWWD。
    • 它可以使用 PDK 编译系统进行编译并通过 CCS 加载。

    您可以在以下 PDK 路径和 PDK 文档中找到该设计
    /packages/ti/csl/example/rti

    此致、
    Karthik
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您是否有其他独立的 ICU 应用程序(如 CCS 应用程序)?  我不喜欢 mcusw 应用程序代码样式,尝试找到另一个应用程序

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jim Zhang:
    目前、TI 未为 J784S4 提供基于 CSL 的独立 ICU 示例(CCS 样式裸机工程)。 ICU 驱动程序是 MCUSW (AUTOSAR MCAL) 软件包的一部分、可用示例 (ICU_APP) 是按照 AUTOSAR MCAL 架构实现的。  CSL 中没有单独的裸机 ICU 示例。

    请参阅此处的 ICU 用户指南:
    https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-j784s4/latest/exports/docs/mcusw/mcal_drv/docs/drv_docs/ug_icu_top.html 

    此致、

    Karthik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我遵循了这个应用 CSL_RTI_dwwd_test_app、并配置了 MCU_RTI1 看门狗计时器、当我调试该应用时、DWDCNTR 会持续计时。 是否有方法在调试模式下冻结 DWDCNTR?

    DWDCNTR 使用哪个时钟或时基?  MCU_RTI1 使用的时钟?

    如果我使用 RTI1 作为纯看门狗计时器、我是否需要启用 UC0/FRC0 计数器或 UC1/FRC1 计数器?  我假设我不需要这些计数器、只需仔细检查即可  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jim Zhang:

    我将对此进行更多的研究、并返回给您。

    此致、

    Karthik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我还有更多需要您调查的问题:我注意到 WD_STATUS = 0x3A、触发了看门狗违例、但我的内核未按预期复位。 我将 ESM 配置为复位该内核。 你有私人共享箱我可以直接加载我的代码给你吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jim Zhang:
    该看门狗使用 MCU_RTI1 功能时钟、并且不受 CPU 时钟的影响工作。 因此、即使在调试期间 CPU 暂停、它也可以继续运行。

    请确认:
    您在哪个核心上运行?
    您期望进行哪种类型的重置? (仅内核复位或完全 SoC 复位?)

    我们没有专用文件上传系统。 但是、您可以共享相关代码(必要时压缩)、因为它将帮助我分析我这边的问题

    此致、
    Karthik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    来自 TRM spruj52d:

    RTI_GCTRL.COS 位应保存 DWD 计数器而不是递减、但实际上仅保存 UC 计数器、不保存 DWD 计数器。 您可能会要求开发人员进行验证。 如果我无法按住 DWD 计数器、则无法进行任何故障排除

    我在 J784S4 MCU R5(辅助内核)上运行。  Dawdy、Luke 有私人共享框、我会在那里上传我的代码 (OEL_RTOS_RTI_WATCHDOG_CONFIG.s) 并分享给您。 您可以向他发送电子邮件以获取访问权限。  我不想公开我的代码

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想先解决的问题:

    应该有一种方法可以将 DWD 计数器保持在调试模式下、如 TRM (spruj52) 所述

    否则、任何人都无法对任何模块进行故障排除、因为看门狗会重置系统: 计数器不断减少、且未对密钥进行维护、将发生看门狗违规

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jim Zhang:
    Luke Dawdy 之前共享的私人共享框似乎已过期。 当我尝试访问它时、我收到以下消息:
    “找不到共享项目。 该链接已被移动或删除、或者该链接已过期。“
    同时、我会在内部检查与 RTI_GCTRL.COS 位相关的 DWD 计数器行为、并会向您回复更新。

    此致、

    Karthik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    链接已过期,再次与他核实,他发送了一个新的链接。 我取得了一些进展、 但即使 wd_status 不为 0、系统仍然未复位

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我上传了一个 C 文件来替换.s、请查看 C 文件

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jim Zhang:

    我已请求 Luke Dawdy 提供更新的链接。 但是、我尚未收到内部团队的回复。 收到他们的更新后、我会立即回复您。

    此致、

    Karthik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在等待期间、能否提供从 MCU RTI 违规事件到 ESM 事件组寄存器位的映射文档 ?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jim Zhang:
    TRM 中的单个合并表中未提供 MCU RTI 看门狗违例事件与相应 ESM 事件组/位之间的映射。 以下官方文档和 SDK 标头中对此进行了描述。

    1.J784S4 技术参考手册 (TRM)
    RTI 模块一章介绍了数字窗口式看门狗 (DWWD) 违例生成的错误事件被路由到错误信令模块 (ESM)。
    相关章节:
    RTI(实时中断)一章 — 数字窗口式看门狗
    “错误信令模块 (ESM)“一章 — 事件输入和错误处理

    软件诊断库 (SDL) 文档
    SDL 文档 还介绍了 RTI 看门狗违例生成 ESM 错误事件以触发中断或系统安全响应的功能流程。

    此致、

    Karthik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您有机会查看我上传的代码吗? 为什么即使 wd_status=0 也要重置?

    我浏览了您上面提到的文档、仍然无法在 ESM 寄存器中找到哪个事件位用于 RTI 窗口式看门狗违例。 你能帮我弄清楚吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jim Zhang:

    我目前正在处理此问题、明天将向您提供更新。

    此致、

    Karthik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我正在取得进展、 我现在遇到的问题是:发生看门狗违例 (wd_status 从 0x0 更改为 0x3A、ESM 事件寄存器中的任何位均未设置、ESM 事件模块未接收到该事件。  

    0x40800420 处的 ESM_ERR_GRP0_RAW) 为 0x00C0000。 当 wd_status 为 0 时、设置这些位。 它们不是由其他事件引起的、而不是由看门狗违例引起的。  关于我从一开始就提出的问题:看门狗违规事件如何映射到 ESM 事件寄存器? 哪个文档提供了映射信息?

    对我来说、RTI 违例事件和 ESM 模块之间的硬件链路似乎缺失

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、

    软件诊断库 (SDL) 提供 API、使用一组可监测的特定事件来初始化 ESM。 可以参考以下常见问题解答来初始化您要监测的 ESM 事件- 【常见问题解答】TDA4VL-Q1:ESM 中断配置

    以下 RTI ESM 事件-

    MCU ESM:

    #define SDLR_MCU_ESM0_ESM_PLS_EVENT0_MCU_RTI0_INTR_WWD_0 (104U)
    #define SDLR_MCU_ESM0_ESM_PLS_EVENT0_MCU_RTI1_INTR_WWD_0 (105U)

    主 ESM:

    define SDLR_ESM0_ESM_PLS_EVENT0_RTI32_INTR_WWD_0 (685U)
    #define SDLR_ESM0_ESM_PLS_EVENT0_RTI33_INTR_WWD_0 (686U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI15_INTR_WWD_0 (687U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI0_INTR_WWD_0 (688U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI1_INTR_WWD_0 (689U)
    #define SDLR_ESM0_ESM_PLS_EVENT0_RTI2_INTR_WWD_0 (690U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI3_INTR_WWD_0 (691U)
    #define SDLR_ESM0_ESM_PLS_EVENT0_RTI4_INTR_WWD_0 (692U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI5_INTR_WWD_0 (693U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI6_INTR_WWD_0 (694U)
    #define SDLR_ESM0_ESM_PLS_EVENT0_RTI7_INTR_WWD_0 (695U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI28_INTR_WWD_0 (696U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI29_INTR_WWD_0 (697U)
    #define SDLR_ESM0_ESM_PLS_EVENT0_RTI30_INTR_WWD_0 (698U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI31_INTR_WWD_0 (699U)
    #define SDLR_ESM0_ESM_PLS_EVENT0_RTI16_INTR_WWD_0 (700U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI17_INTR_WWD_0 (701U)
    #define SDLR_ESM0_ESM_PLS_EVENT0_RTI18_INTR_WWD_0 (702U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI19_INTR_WWD_0 (703U)

    您可以在 — SDL/TEST/RTI 中参考实现

    此致、

    Josiitaa

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    SDLR_MCU_ESM0_ESM_PLS_EV0_MCU_RTI1_INTR_WWD_0 (105U) 表示组 3、位 9、但在我的测试中、wd_status=0x3A、 ESM_ERR_Grp3_raw (0x40800460)/ESM_ERR_Grp3_STS (0x40800464) 不应设置这些位、但不应设置这些位。 我的实施基于 SDL/TEST/RTI

    我将 最新的代码上传至 包装盒、将 HD_WR_REG32 包装到我们自己的宏中、但宏名称告诉哪个寄存器可以访问。 应该很容易理解我为哪个寄存器配置了详细注释

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jim Zhang:

    在偏移 A4h 处写入 RTI_RTIDWWDRXNCTRL 寄存器的值是多少? 是否已配置为生成中断?

    此致、

    Josiitaa

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    #define RTI_DWWDRXNCTRL_DWWDRXN_RESET                         (0x5U)

    将值 RTI_DWWDRXNCTRL_DWWDRXN_RESET 写入寄存器、而不是中断。 我们需要复位、而不是中断

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jim Zhang:

    SDL 专家目前不在办公室、将在星期一上回复您。

    此致、

    Karthik

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jim Zhang:

    RTI 不会复位 SOC、它只是提供中断以及如何处理该中断、由代码决定。 当 RTI 计数器到期时、将触发一个 ESM 事件。 因此、一个选择是可以通过对来自 RTI 的此错误事件使用 ESM 错误引脚来生成 SOC 复位。 外部监控器可以根据 ERROR 引脚进行复位。

    请将 RTI_RTIDWWDRXNCTRL 设置为 RTI_RTIDWWDRXNCTRL_DWWDRXN_INTERRUPT、并检查是否收到 ESM 中断。

    此致、

    Josiitaa

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好 Josiitaa:

    我不需要中断、RTI 会向 ESM 错误引脚生成复位事件。 TRM 中提到的 RTI 可以生成复位事件。  重置事件是否映射到 ESM?

    我的问题仍然没有得到解答:RTI 事件、无论它是中断事件还是重置事件、ESM 组事件中的哪个位是映射到的事件?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    另一个问题:

    watchdog0 在器件树的主域中定义、如下所示:

           watchdog0:看门狗@2200000{
                   兼容=“ti、j7-RTI-WDT“;
                   REG =<0x00 0x2200000 0x00 0x100>;
                   Clocks =<&K3_CLKS 348 0>;
                   电源域=<&K3_PDS 348 TI_SCI_PD_EXCLUSTED>;
                   Assigned-clocks =<&K3_CLKS 348 0>;
                   assigned-clock-parament=<&k3_CLKS 3484>;
           };

    我的问题是:哪个核心拥有 watchdog0 的所有权?   

    哪个内核将为该看门狗配置时钟?  Linux 内核(比如 A72)?

    哪个内核将为 RTI 寄存器配置周期和超时操作?

    哪个内核应该选通它?

    TI 关于设置、配置和选通的内核分配的建议是什么?

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jim Zhang:

    [引述 userid=“346969“ url=“~/support/processors-group/processors/f/processors-forum/1616371/j784s4xevm-csl-based-watchdog-and-icu-application/6289137

    我不需要中断、RTI 会向 ESM 错误引脚生成复位事件。 TRM 中提到的 RTI 可以生成复位事件。  重置事件是否映射到 ESM?

    [/报价]

    是的、您必须将其设置为生成 NMI、这将在计数器到期时触发 ESM 事件。 然后、SW 事件处理程序可以根据 ESM 事件触发一个复位。

    我的问题仍然没有得到解答:RTI 事件、无论它是中断还是重置事件、ESM 组事件中的哪个位是映射到的事件?

    我已经分享了每个 RTI 的 ESM 事件以及将它们映射到 ESM 组事件的过程-

    [报价 userid=“543431“ url=“~/support/processors-group/processors/f/processors-forum/1616371/j784s4xevm-csl-based-watchdog-and-icu-application/6270552

    软件诊断库 (SDL) 提供 API、使用一组可监测的特定事件来初始化 ESM。 可以参考以下常见问题解答来初始化您要监测的 ESM 事件- 【常见问题解答】TDA4VL-Q1:ESM 中断配置

    以下 RTI ESM 事件-

    MCU ESM:

    #define SDLR_MCU_ESM0_ESM_PLS_EVENT0_MCU_RTI0_INTR_WWD_0 (104U)
    #define SDLR_MCU_ESM0_ESM_PLS_EVENT0_MCU_RTI1_INTR_WWD_0 (105U)

    主 ESM:

    define SDLR_ESM0_ESM_PLS_EVENT0_RTI32_INTR_WWD_0 (685U)
    #define SDLR_ESM0_ESM_PLS_EVENT0_RTI33_INTR_WWD_0 (686U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI15_INTR_WWD_0 (687U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI0_INTR_WWD_0 (688U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI1_INTR_WWD_0 (689U)
    #define SDLR_ESM0_ESM_PLS_EVENT0_RTI2_INTR_WWD_0 (690U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI3_INTR_WWD_0 (691U)
    #define SDLR_ESM0_ESM_PLS_EVENT0_RTI4_INTR_WWD_0 (692U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI5_INTR_WWD_0 (693U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI6_INTR_WWD_0 (694U)
    #define SDLR_ESM0_ESM_PLS_EVENT0_RTI7_INTR_WWD_0 (695U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI28_INTR_WWD_0 (696U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI29_INTR_WWD_0 (697U)
    #define SDLR_ESM0_ESM_PLS_EVENT0_RTI30_INTR_WWD_0 (698U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI31_INTR_WWD_0 (699U)
    #define SDLR_ESM0_ESM_PLS_EVENT0_RTI16_INTR_WWD_0 (700U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI17_INTR_WWD_0 (701U)
    #define SDLR_ESM0_ESM_PLS_EVENT0_RTI18_INTR_WWD_0 (702U)
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI19_INTR_WWD_0 (703U)

    [/报价]

    [引述 userid=“346969“ url=“~/support/processors-group/processors/f/processors-forum/1616371/j784s4xevm-csl-based-watchdog-and-icu-application/6289744

    watchdog0 在器件树的主域中定义、如下所示:

           watchdog0:看门狗@2200000{
                   兼容=“ti、j7-RTI-WDT“;
                   REG =<0x00 0x2200000 0x00 0x100>;
                   Clocks =<&K3_CLKS 348 0>;
                   电源域=<&K3_PDS 348 TI_SCI_PD_EXCLUSTED>;
                   Assigned-clocks =<&K3_CLKS 348 0>;
                   assigned-clock-parament=<&k3_CLKS 3484>;
           };

    我的问题是:哪个核心拥有 watchdog0 的所有权?   

    哪个内核将为该看门狗配置时钟?  Linux 内核(比如 A72)?

    哪个内核将为 RTI 寄存器配置周期和超时操作?

    哪个内核应该选通它?

    TI 关于设置、配置和选通的内核分配的建议是什么?

    [/报价]

    我已经邀请了我们的 Linux 专家来帮助解决这个问题。

    此致、

    Josiitaa

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    [报价 userid=“543431“ url=“~/support/processors-group/processors/f/processors-forum/1616371/j784s4xevm-csl-based-watchdog-and-icu-application/6290429

    哪个核心拥有 watchdog0 的所有权?   

    哪个内核将为该看门狗配置时钟?  Linux 内核(比如 A72)?

    哪个内核将为 RTI 寄存器配置周期和超时操作?

    哪个内核应该选通它?

    TI 关于设置、配置和选通的内核分配的建议是什么?

    [/报价]

    在 Linux 方面:

    SOC ESM、PMIC ESM 在引导时由 R5 SPL 配置一次。 这可确保在出现看门狗事件时正确路由 ESM 信号、并且 PMIC 准备就绪。

    Linux RTI 驱动程序启用时钟并启用 RTI 看门狗。

    - Keerthy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果是这种情况、我们将考虑以下使用场景:

    1:  Linux RTI 驱动器配置/启用 RTI 时钟

    2:  Linux RTI 驱动器 配置 WWDT 看门狗超时周期、选通窗口和超时操作

    3: Linux RTI 驱动程序 启用 WWDT 看门狗

    4:main0 R5 应用程序将选通看门狗、Linux 应用程序不选通看门狗

    5:如果 main0 R5 应用程序未在右周期和右窗口选通 WWDT、将触发看门狗超时操作

    这种情况是否可以接受?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jim、

    SoC ESM 配置和 PMIC ESM 配置是谁? R5 应用程序应该执行该操作、否则不会进行复位。

    此致、

    Keerthy  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    因此、我可以从 Linux 配置看门狗;但 R5 应用程序需要配置 ESM 和 PMIC ESM、以便在发生看门狗超时事件时执行本地复位。 R5 应用程序需要选通看门狗以避免复位、对吧?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Josiitaa:

    我有一些问题:

    问题 1: RTI0 有 3 个事件、EVENT0/EVEN1/EVENT2 定义了哪些事件 ?
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI0_INTR_WWD_0 (688U)
    define SDLR_ESM0_ESM_PLS_EVEN1_RTI0_INTR_WWD_0 (688U)
    define SDLR_ESM0_ESM_PLS_EVENT2_RTI0_INTR_WWD_0 (688U)

    问题 2:数字窗口式看门狗的反应。 如果在配置定义的时间窗口之外维护看门狗、或者根本没有维护看门狗、窗口化看门狗将导致复位。  此系列 J784S4 是否支持看门狗复位?

    问题 3:如果我不想在发生看门狗违规中断时执行任何操作、只需将事件传递到 ESM 即可进行本地复位、没有任何操作的虚拟 ISR 应该可以工作、对吧?

    问题 4: 我无法直接从域 main0 R5 core0 访问 RTI 看门狗寄存器。 当我尝试选通看门狗时发生异常。  您是否有从 main0 R5 访问 RTI 寄存器的示例?

    问题 5: 我有 soc ESM 配置的示例、但没有任何配置 PMIC ESM 的示例。 SDK 中的哪个示例配置 PMIC ESM?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    为了能够从 Linux 配置看门狗;但 R5 应用程序需要配置 ESM 和 PMIC ESM、以便在发生看门狗超时事件时执行本地复位。 R5 应用程序需要选通看门狗以避免复位、对吗?

    最好由单个主设备控制一个 IP。 例如、如果 Linux 正在初始化看门狗、那么最好在使用 Linux 应用来宠物看门狗时使用。

    - Keerthy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我的 R5 应用需要一个看门狗、但它没有任何 RTI。  我在这里提到的使用场景是我能想到的最好的。 您是否有任何其他更好的解决方案来实施 R5 应用程序的看门狗? u-boot 或系统固件或设备管理器是否可以更新防火墙以允许 main0 R5 读取/写入 RTI 寄存器?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、

    R5 也可以访问 MPU 域 TI。

     您能否介绍在 R5F 上使用 RTI 的指南?

    - Keerthy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    太棒了! 我可以从 MCU 域 R5(而不是 main0 R5)配置 RTI。 当我尝试选通看门狗时、我遇到了异常。 如果可以从 R5F 写入 RTI 寄存器、这会非常有用。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、  

    问题 1: RTI0 有 3 个事件、EVENT0/EVEN1/EVENT2 定义了哪些事件 ?
    define SDLR_ESM0_ESM_PLS_EVENT0_RTI0_INTR_WWD_0 (688U)
    define SDLR_ESM0_ESM_PLS_EVEN1_RTI0_INTR_WWD_0 (688U)
    define SDLR_ESM0_ESM_PLS_EVENT2_RTI0_INTR_WWD_0 (688U)

    它们是 ESM 事件的 3 个来源。 尽管如此列出、但从 SW 角度没有区别、只有一个 ESM 事件编号(例如 688)、并且全部 3 个都是相同的源中断。 因此您无需担心多个事件。

    问题 2:数字窗口式看门狗的反应。 如果在配置定义的时间窗口之外维护看门狗、或者根本没有维护看门狗、窗口化看门狗将导致复位。  此系列 J784S4 是否支持看门狗复位?

    窗口化看门狗计时器 (WWDT) 会在一个可编程周期后生成复位(如果在该周期内未提供服务)。 此超时边界是可配置的、并且窗口功能允许启动时间边界可配置。 如果未在由开始时间和超时边界定义的窗口(开放窗口)内处理、WWDT 可以生成中断。 此外、如果在开放窗口期(封闭窗口内)外提供服务、WWDT 也会生成中断。 中断的生成取决于 WWDT 反应配置。  TI J784s4 SDK 支持看门狗计时器的配置。 它还支持通过 ESM 中断通知错误。 此外、还提供用于检查看门狗计时器状态的 API。

    问题 3:如果我不想在看门狗违规中断发生时执行任何操作、只需将事件传递给 ESM 即可进行本地复位、没有任何操作的虚拟 ISR 应该起作用、对吧?

    是的、可以根据 SW 用例修改 ESM 事件上的操作。

    问题 4: 我无法直接从域 main0 R5 core0 访问 RTI 看门狗寄存器。 当我尝试选通看门狗时发生异常。  您是否有从 main0 R5 访问 RTI 寄存器的示例?

    您可以 在 SDL\SDL\TEST\RTI\UNIT\中引用 SDL RTI 测试应用程序。 此测试对所有 RTI 实例进行配置。 您可以采用相同的方法。 SDL\SDL\examples\RTI 中的 SDL RTI 示例 包含使用 ESM 事件执行错误注入和验证的步骤。

    此致、

    Josiitaa

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我似乎需要以不同的方式提出相同的问题:

    问题 1: EVENT0、EVENT1、EVENT2 的 3 个来源是什么?  我知道他们有相同的 ID

    问题 2:操作 5h 是否受 J784S4 支持?  这是从 J721E TRM 复制而来

    问题 3: 看门狗计时器超时后需要本地复位、我是否应该使用软件从 ISR 触发复位? 或者 ESM 会根据硬件中的事件触发重置、我不需要从软件启动重置?

    问题 4:SDL RTI 应用程序适用于 MCU_RTI。 我能够在 MCU 域上执行、但不能在 main0 域上执行。 如何从 main0 域访问 RTI 寄存器?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、  

    问题 1: EVENT0、EVENT1、EVENT2 的 3 个来源是什么?  我知道他们有相同的 ID

    如前所述、源也相同。  

    问题 2:J784S4 是否支持操作 5h?  这是从 J721E TRM
    复制而来

    J784s4 不支持此功能。  我们有一个看门狗 IP 限制、即不复位内核、如果看门狗未得到处理、则会触发 ESM 中断。 此 ESM 中断应向 PMIC 发送信号进行复位。

    问题 3: 看门狗计时器超时后需要本地复位、我是否应该使用软件从 ISR 触发复位? 或者 ESM 将根据该事件从硬件触发重置、并且我不需要从软件启动重置?

    您可以执行以下任一操作。 ESM 可以配置为在发生特定事件时触发复位、也可以通过 SW 事件处理程序触发复位。

    Question4:SDL RTI 应用适用于 MCU_RTI。 我能够在 MCU 域上执行、但不能在 main0 域上执行。 如何从 main0 域访问 RTI 寄存器?

    在这种情况下是否启用了 RTI 实例? 您是否在浏览时看到防火墙例外以及例外?

    此致、

    Josiitaa

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    未启用 RTI0、但当我尝试启用 RTI0 时、收到总线错误:

    我使用的活动 MPU 区域:

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、

    您是否能够共享用于从主 R5F 启用 RTI0 的代码?

    此致、

    Josiitaa

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我有 MCU R5 的代码、尚未转换为 main0 R5F。  我在 main0 R5F 中的测试方式是使用调试器写入寄存器。  如果您需要 MCU r5F 代码、我已经上传到私人共享框 Dawdy、Luke 可以为您提供 SharePoint 和访问方法

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、

    您是否可以尝试将 SW 代码移植到主 R5F 并进行测试? 如果出现电源/时钟问题、防火墙等、调试器可能会显示总线错误 我们将能够在移植的 SW 测试中更好地了解情况。

    此致、

    Josiitaa

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    上传了代码_main.c。读取/写入 RTI 寄存器时、我收到了相同的总线错误、并且寄存器仍然是 0、与我上次粘贴的屏幕截图相同。 这不是程序逻辑问题;它是 RTI 寄存器访问权限问题

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jim、

    1. RTI0 是否处于工作功耗状态? RTI 时钟是否已启用?
    2. 发生总线错误时、所访问的确切内存地址是多少?  
    3. 您是否看到任何防火墙例外?
    4. 是否有正在使用的 RAT 映射区域?

    此致、

    Josiitaa

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我正在检查 SDK 中的中断向量:

    CSL/INTR/j784s4/INTR$ soc grep -r --include=“cslr_intr_*.h““INTR_RTI“ src。

    只有 RTI28/29 可用于域 0

    .cslr_intr_r5fss1_core0.h:#define CSLR_R5FSS1_CORE0_INTR_RTI30_INTR_WWD_0 (2U)
    .cslr_intr_r5fss1_core0.h:#define CSLR_R5FSS1_CORE0_INTR_RTI31_INTR_WWD_0 (3U)
    .cslr_intr_r5fss2_core0.h:#define CSLR_R5FSS2_CORE0_INTR_RTI32_INTR_WWD_0 (2U)
    .cslr_intr_r5fss2_core0.h:#define CSLR_R5FSS2_CORE0_INTR_RTI33_INTR_WWD_0 (3U)
    .cslr_intr_r5fss2_core1.h:#define CSLR_R5FSS2_core1_INTR_RTI32_INTR_WWD_0 (2U)
    .cslr_intr_r5fss2_core1.h:#define CSLR_R5FSS2_core1_INTR_RTI33_INTR_WWD_0 (3U)
    .cslr_intr_r5fss0_core0.h:#define CSLR_R5FSS0_CORE0_INTR_RTI28_INTR_WWD_0 (2U)
    .cslr_intr_r5fss0_core0.h:#define CSLR_R5FSS0_CORE0_INTR_RTI29_INTR_WWD_0 (3U)
    .cslr_intr_r5fss1_core1.h:#define CSLR_R5FSS1_Core1_INTR_RTI30_INTR_WWD_0 (2U)
    .cslr_intr_r5fss1_core1.h:#define CSLR_R5FSS1_Core1_INTR_RTI31_INTR_WWD_0 (3u)
    .cslr_intr_r5fss0_core1.h:#define CSLR_R5FSS0_CORE1_INTR_RTI28_INTR_WWD_0 (2U)
    .cslr_intr_r5fss0_core1.h:#define CSLR_R5FSS0_CORE1_INTR_RTI29_INTR_WWD_0 (3U)

    ./cslr_intr_esm0.h:#define CSLR_ESM0_ESM_PLS_EVENT0_RTI28_INTR_WWD_0 (696U)
    ./cslr_intr_esm0.h:#define CSLR_ESM0_ESM_PLS_EVEN1_RTI28_INTR_WWD_0 (696U)
    ./cslr_intr_esm0.h:#define CSLR_ESM0_ESM_PLS_EVENT2_RTI28_INTR_WWD_0 (696U)

    CSL/j784s4/rtic$ soc grep -r --include=“cslr_intr_*.h“ src “。

    RTI0 和 RTI1 仅可由 MCU 访问
    ./cslr_intr_comput_cluster0_clec.h:#define CSLR_COMPUTE_CLUSTER0_CLEC_SOC_EVENTS_IN_RTI0_INTR_WWD_0 (240U)
    ./cslr_intr_esm0.h:#define CSLR_ESM0_ESM_PLS_EVENT0_RTI0_INTR_WWD_0 (688U)
    ../cslr_intr_esm0.h:#define CSLR_ESM0_ESM_PLS_EVEN1_RTI0_INTR_WWD_0 (688U)
    ./cslr_intr_esm0.h:#define CSLR_ESM0_ESM_PLS_EVENT2_RTI0_INTR_WWD_0 (688U)
    .cslr_intr_mcu_r5fss0_core1.h:#define CSLR_MCU_R5FSS0_CORE1_INTR_MCU_RTI0_INTR_WWD_0 (42u)
    ./cslr_intr_comput_cluster0_gic500ss.h:#define CSLR_COMPUTE_CLUSTER0_GIC500SS_SPI_RTI0_INTR_WWD_0 (240U)
    ./cslr_intr_mcu_r5fss0_core0.h:#define CSLR_MCU_R5FSS0_CORE0_INTR_MCU_RTI0_INTR_WWD_0 (42u)
    ./cslr_intr_mcu_esm0.h:#define CSLR_MCU_ESM0_ESM_PLS_EV0_MCU_RTI0_INTR_WWD_0 (104U)
    .cslr_intr_mcu_esm0.h:#define CSLR_MCU_ESM0_ESM_PLS_EVEN1_MCU_RTI0_INTR_WWD_0 (104U)
    ./cslr_intr_mcu_esm0.h:#define CSLR_MCU_ESM0_ESM_PLS_EVENT2_MCU_RTI0_INTR_WWD_0 (104U)

    现在我使用的是用于 main0 R51 的 RTI28、我有以下问题:

    看门狗超时操作为 RTI_DWWDRXNCTRL_DWWDRXN_INTERRUPT

    有 2 个中断:

    RTI 模块的看门狗超时中断

    ESM 模块的看门狗超时事件中断

    我需要在软件中启用和处理哪个中断?  我的目的是通过 ESM 硬件复位内核;如果我不需要处理中断、我将跳过它;

    我应该向 ESM_EN 写入什么以启用复位?   ESM_en = 0xF 或 ESM_en=0xFFFFFFFF?

    我首先通过写入 0xFFFFFFFF 来启用 ESM_en(实际上我尝试了 0xF、0xFFFFFFFF,相同的结果)、启用复位引脚;我配置了看门狗、在启用之前、我检查 ESM_en 仍为 0xFFFFFFFF。 但在让它运行并等待看门狗超时:2s) 后、没有发生复位。 i stopped、并检查 ESM_en 是否清除为全 0、wd_status=0x32。 我不明白为什么 ESM_en 更改为全 0

    我正在 TI EVM 电路板上进行测试、2 个新文件上传至共享框中

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Jim Zhang:

    [引述 userid=“346969“ url=“~/support/processors-group/processors/f/processors-forum/1616371/j784s4xevm-csl-based-watchdog-and-icu-application/6311990

    只有 RTI28/29 可用于域 0

    .cslr_intr_r5fss1_core0.h:#define CSLR_R5FSS1_CORE0_INTR_RTI30_INTR_WWD_0 (2U)
    .cslr_intr_r5fss1_core0.h:#define CSLR_R5FSS1_CORE0_INTR_RTI31_INTR_WWD_0 (3U)
    .cslr_intr_r5fss2_core0.h:#define CSLR_R5FSS2_CORE0_INTR_RTI32_INTR_WWD_0 (2U)
    .cslr_intr_r5fss2_core0.h:#define CSLR_R5FSS2_CORE0_INTR_RTI33_INTR_WWD_0 (3U)
    .cslr_intr_r5fss2_core1.h:#define CSLR_R5FSS2_core1_INTR_RTI32_INTR_WWD_0 (2U)
    .cslr_intr_r5fss2_core1.h:#define CSLR_R5FSS2_core1_INTR_RTI33_INTR_WWD_0 (3U)
    .cslr_intr_r5fss0_core0.h:#define CSLR_R5FSS0_CORE0_INTR_RTI28_INTR_WWD_0 (2U)
    .cslr_intr_r5fss0_core0.h:#define CSLR_R5FSS0_CORE0_INTR_RTI29_INTR_WWD_0 (3U)
    .cslr_intr_r5fss1_core1.h:#define CSLR_R5FSS1_Core1_INTR_RTI30_INTR_WWD_0 (2U)
    .cslr_intr_r5fss1_core1.h:#define CSLR_R5FSS1_Core1_INTR_RTI31_INTR_WWD_0 (3u)
    .cslr_intr_r5fss0_core1.h:#define CSLR_R5FSS0_CORE1_INTR_RTI28_INTR_WWD_0 (2U)
    .cslr_intr_r5fss0_core1.h:#define CSLR_R5FSS0_CORE1_INTR_RTI29_INTR_WWD_0 (3U)

    ./cslr_intr_esm0.h:#define CSLR_ESM0_ESM_PLS_EVENT0_RTI28_INTR_WWD_0 (696U)
    ./cslr_intr_esm0.h:#define CSLR_ESM0_ESM_PLS_EVEN1_RTI28_INTR_WWD_0 (696U)
    ./cslr_intr_esm0.h:#define CSLR_ESM0_ESM_PLS_EVENT2_RTI28_INTR_WWD_0 (696U)

    CSL/j784s4/rtic$ soc grep -r --include=“cslr_intr_*.h“ src “。

    RTI0 和 RTI1 仅可由 MCU 访问
    ./cslr_intr_comput_cluster0_clec.h:#define CSLR_COMPUTE_CLUSTER0_CLEC_SOC_EVENTS_IN_RTI0_INTR_WWD_0 (240U)
    ./cslr_intr_esm0.h:#define CSLR_ESM0_ESM_PLS_EVENT0_RTI0_INTR_WWD_0 (688U)
    ../cslr_intr_esm0.h:#define CSLR_ESM0_ESM_PLS_EVEN1_RTI0_INTR_WWD_0 (688U)
    ./cslr_intr_esm0.h:#define CSLR_ESM0_ESM_PLS_EVENT2_RTI0_INTR_WWD_0 (688U)
    .cslr_intr_mcu_r5fss0_core1.h:#define CSLR_MCU_R5FSS0_CORE1_INTR_MCU_RTI0_INTR_WWD_0 (42u)
    ./cslr_intr_comput_cluster0_gic500ss.h:#define CSLR_COMPUTE_CLUSTER0_GIC500SS_SPI_RTI0_INTR_WWD_0 (240U)
    ./cslr_intr_mcu_r5fss0_core0.h:#define CSLR_MCU_R5FSS0_CORE0_INTR_MCU_RTI0_INTR_WWD_0 (42u)
    ./cslr_intr_mcu_esm0.h:#define CSLR_MCU_ESM0_ESM_PLS_EV0_MCU_RTI0_INTR_WWD_0 (104U)
    .cslr_intr_mcu_esm0.h:#define CSLR_MCU_ESM0_ESM_PLS_EVEN1_MCU_RTI0_INTR_WWD_0 (104U)
    ./cslr_intr_mcu_esm0.h:#define CSLR_MCU_ESM0_ESM_PLS_EVENT2_MCU_RTI0_INTR_WWD_0 (104U)

    [/报价]

    主 ESM 事件可以路由到 MCU ESM 和 MCU R5F。

    [引述 userid=“346969“ url=“~/support/processors-group/processors/f/processors-forum/1616371/j784s4xevm-csl-based-watchdog-and-icu-application/6311990

    有 2 个中断:

    RTI 模块的看门狗超时中断

    ESM 模块的看门狗超时事件中断

    我需要在软件中启用和处理哪个中断?  我的目的是通过 ESM 硬件复位内核;如果我不需要处理中断、我将跳过它;

    [/报价]

    您可以启用 ESM 中断并从 ESM 中断处理程序执行复位操作。

    [引述 userid=“346969“ url=“~/support/processors-group/processors/f/processors-forum/1616371/j784s4xevm-csl-based-watchdog-and-icu-application/6311990

    我应该向 ESM_EN 写入什么以启用复位?   ESM_en = 0xF 或 ESM_en=0xFFFFFFFF?

    我首先通过写入 0xFFFFFFFF 来启用 ESM_en(实际上我尝试了 0xF、0xFFFFFFFF,相同的结果)、启用复位引脚;我配置了看门狗、在启用之前、我检查 ESM_en 仍为 0xFFFFFFFF。 但在让它运行并等待看门狗超时:2s) 后、没有发生复位。 i stopped、并检查 ESM_en 是否清除为全 0、wd_status=0x32。 我不明白为什么 ESM_en 更改为全 0

    [/报价]

    您可以参阅这些常见问题解答、详细了解如何启用 ERROR 引脚以通过 PMIC 触发复位。

    另一种方法是通过 SW API 从 ESM 事件处理程序触发复位。

    此致、

    Josiitaa

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我需要明确回答以下问题:

    我应该向 ESM_EN 提供什么来启用该模块?  0xF 或 0xFFFFFFFF?

    我不必启用 RTI 看门狗超时中断、对吧?

    如果我只需要硬件复位、我不需要启用 ESM 看门狗超时中断、对吗?  

    如果我启用错误引脚触发 PMIC 复位、它将仅在该内核上复位、而不是在域或 soc 级复位上复位、对吗?

    当我在 EVM 板上进行测试时、ESM_en 复位为全 0、我的应用在初始化后不会触摸此寄存器。 这可能是什么原因?

    在 SDK 示例 CSL/example/RTI/dwwdtest_app 中、ESM 似乎会生成系统复位

    /*步骤 4:配置重置类型*/
    if (esmConfig->ResetType == ESM_RESET_TYPE_SYSTEM)

    /*启用 ESM 引脚输出以生成系统复位*/
    if (esmConfig->enablePinOutput)

    esmBaseAddr[ESM_PIN_EN_SET / 4]= errorEventBit;
    }
    暴露

    esmBaseAddr[ESM_PIN_EN_CLR/4]= errorEventBit;
    }
    }
    else /* ESM_RESET_TYPE_CORE_LOCAL */

    /*禁用内核本地复位的 ESM 引脚输出*/
    esmBaseAddr[ESM_PIN_EN_CLR/4]= errorEventBit;
    /*内核本地复位将由软件处理*/
    }

    如果我希望 ESM 生成一个本地重置、如何配置 ESM 来实现?

    在示例中、对于 main0 RTI、它将事件定义为 2、为什么它使用 2?

    #define ESM_MAIN_RTI0_DWWD_EVENT       (2U)  /*主 RTI0 DWWD 超时事件*/

    不应该是 696U 吗?

    ./cslr_intr_esm0.h:#define CSLR_ESM0_ESM_PLS_EVENT0_RTI28_INTR_WWD_0 (696U)

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、  

    让我看看代码和您的问题、然后返回给您。

    此致、

    Josiitaa  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很棒! 将等待您的答复!

    我对以下功能有更多疑问:

    void ESM_J784S4_InitRTIConfig (esmConfig_t *esmConfig、uint32_t rtiInstance)

    如果(esmConfig !=空)

    /*根据 RTI 实例确定 ESM 实例*/
    if ((rtiInstance == CSL_MCU_RTI0_CFG_BASE)||(rtiInstance == CSL_MCU_RTI1_CFG_BASE))

    esmConfig->esmInstance = ESM_J784S4_default_mcu_instance;
    }
    暴露

    esmConfig->esmInstance = ESM_J784S4_default_main_instance;
    }

    esmConfig->errorEvent = ESM_GetRTIErrorEvent(rtiInstance);

    问题: 我在 main0 R51 上使用 RTI 28、RTI28 看门狗到 main0R51 的超时的 errorEvent 代码是什么?

    esmConfig->errorEvent 使用值


    esmConfig->enableErrorDetection = ESM_J784S4_default_error_detection;
    esmConfig->ERRORSTEL = ESM_J784S4_DEFAULT_LEVEL;
    esmConfig->enablePinOutput = ESM_J784S4_DEFAULT_PIN_OUTPUT;
    esmConfig->ResetType = ESM_J784S4_DEFAULT_RESET_TYPE;/*默认情况下系统复位*/
    esmConfig->targetCore = MCU_R5_CORE0;/*默认为内核 0 */
    }
    }

    int32_t ESM_J784S4_ConfigureRTIRouting (const esmConfig_t *esmConfig)

    易失性 uint32_t *esmBaseAddr;
    uint32_t regValue;
    uint32_t errorEventBit;

    /*参数验证*/
    if (esmConfig == NULL)

    返回 CSL_EFAIL;
    }

    esmBaseAddr =(volatile uint32_t *) esmConfig->esmInstance;
    errorEventBit =(1U << esmConfig->errorEvent);

    /*步骤 1:执行 ESM 软复位以确保清除状态*/
    esmBaseAddr[ESM_SFT_RST/4]= 0x0000000FU;

    /*等待复位完成(简单延迟)*/
    易失性 uint32_t 延迟= 1000;
    while (delay--){/* wait */}

    /*步骤 2:启用错误事件检测*/
    if (esmConfig->enableErrorDetection)

    esmBaseAddr[ESM_EN1_SET / 4]= errorEventBit;
    }
    暴露

    esmBaseAddr[ESM_EN1_CLR/4]= errorEventBit;
    }

    /*步骤 3:配置错误级别(高/低优先级)*/
    if (esmConfig->ERRORLEVEL == ESM_HIGH_LEVEL_EVENT)

    esmBaseAddr[ESM_LVL1_SET / 4]= errorEventBit;
    }
    暴露

    esmBaseAddr[ESM_LVL1_CLR/4]= errorEventBit;
    }

    /*步骤 4:配置重置类型*/
    if (esmConfig->ResetType == ESM_RESET_TYPE_SYSTEM)

    /*启用 ESM 引脚输出以生成系统复位*/
    if (esmConfig->enablePinOutput)

    esmBaseAddr[ESM_PIN_EN_SET / 4]= errorEventBit;
    }
    暴露

    esmBaseAddr[ESM_PIN_EN_CLR/4]= errorEventBit;
    }
    }
    else /* ESM_RESET_TYPE_CORE_LOCAL */

    /*禁用内核本地复位的 ESM 引脚输出*/
    esmBaseAddr[ESM_PIN_EN_CLR/4]= errorEventBit;
    /*内核本地复位将由软件处理*/
    }

    对于步骤 4:我只需要对本地内核 main0 R51 进行硬件复位;甚至可以对 domain0 进行硬件复位。  但我不想重置其他域。 如何配置步骤 4 来实现此目标?  

    /*通过读回使能寄存器来验证配置*/
    regValue = esmBaseAddr[ESM_EN1_SET / 4];
    if (((regValue & errorEventBit)!=(esmConfig->enableErrorDetection? errorEventBit:0))

    返回 CSL_EFAIL;
    }

    返回 CSL_Sok;
    }

    如果我必须使用软件 API 来执行本地复位、但不想使用 sciclinet API、是否有办法实现?