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.

[参考译文] TMS570LC4357:WFI 指令未启动 LBIST 或互连自检

Guru**** 2399305 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1332900/tms570lc4357-wfi-instruction-not-starting-lbist-or-interconnect-self-test

器件型号:TMS570LC4357

您好、专家!

MEM8A 存在一些问题:互连自检的引导时间执行和 CPU2A:LBIST STC 诊断的引导时间执行。
两种实现在最初都运行良好、但现在测试似乎在达到 WFI 指令时停止。
达到 WFI 指令后、SW 会停止响应。 未触发预期的 CPU 复位。

根据我的理解、这种情况只会在 WFI 指令被触发时发生、但自检没有开始。

那么我的问题是:什么会阻止 WFI 指令正确执行?

谢谢、此致、
最大值

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

    您好、Max:

    请参阅任何异常、例如 UNDEF 或中止?  能否检查是否有任何挂起的 CPU 中断? 如果您有异步中止、但 CPU 已使用 CPSR 中的 A 位屏蔽异步中止、则 CPU 即使在执行 WFI 后也不会进入待机状态。

    有关更多详细信息、请参阅以下主题:

    (+) RM57L843:SL_SelfTest_STC 不生成 CPU 复位-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    我们尝试了以下方法:

    1.禁用 VIM 和 CPU 中的中断
    2.清除 VIM 中的所有挂起中断


    是否有一种方法可以检查 VIM 之外的挂起中断/中止?

    谢谢、此致、
    最大值

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

    您好、Max:

    对于延误、道歉、我也遇到了其他问题。

    是否有方法可以检查 VIM 之外的挂起中断/中止?

    我不知道这一点。

    --
    谢谢。此致、
    Jagdish。

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

    Jagadish、您好!

    在调用 WFI 指令前、我们检查了 VIM 寄存器、但在 VIM 中找不到任何会导致测试无法开始的内容。
    下面显示了 VIM 寄存器的状态:

    ADDR:0xFFFFFE00值:0x00000000
    ADDR:0xFFFFFFE04值:0x00000000
    ADDR:0xFFFFFE08值:0x00000000
    ADDR:0xFFFFFE0C 值:0x00000000
    ADDR:0xFFFFFE10值:0x00000003
    ADDR:0xFFFFFE14值:0x00000000
    ADDR:0xFFFFFE18值:0x00000000
    ADDR:0xFFFFFE1C 值:0x00000000
    ADDR:0xFFFFFE20值:0x00000000
    ADDR:0xFFFFFE24值:0x00000000
    ADDR:0xFFFFFE28值:0x00000000
    ADDR:0xFFFFFE2C 值:0x00000000
    ADDR:0xFFFFFE30值:0x00000003
    ADDR:0xFFFFFE34值:0x00000000
    ADDR:0xFFFFFE38值:0x00000000
    ADDR:0xFFFFFE3C 值:0x00000000
    ADDR:0xFFFFFE40值:0x00000003
    ADDR:0xFFFFFE44值:0x00000000
    ADDR:0xFFFFFE48值:0x00000000
    ADDR:0xFFFFFFE4C 值:0x00000000
    ADDR:0xFFFFFE50值:0x00000000
    ADDR:0xFFFFFE54值:0x00000000
    ADDR:0xFFFFFE58值:0x00000000
    ADDR:0xFFFFFE5C 值:0x00000000
    ADDR:0xFFFFFE60值:0x00000000
    ADDR:0xFFFFFE64值:0x00000000
    ADDR:0xFFFFFE68值:0x00000000
    ADDR:0xFFFFFE6C 值:0x00000000
    ADDR:0xFFFFFE70值:0x00000000
    ADDR:0xFFFFFE74值:0x00000000
    ADDR:0xFFFFFE78值:0x00000000
    ADDR:0xFFFFFFE7C 值:0x00000000
    ADDR:0xFFFFFE80值:0x00010203
    ADDR:0xFFFFFE84值:0x04050607
    ADDR:0xFFFFFE88值:0x08090A0B
    ADDR:0xFFFFFE8C 值:0x0C0D0E0F
    ADDR:0xFFFFFFE90值:0x10111213
    ADDR:0xFFFFFE94值:0x14151617
    ADDR:0xFFFFFE98值:0x18191A1B
    ADDR:0xFFFFFFE9C 值:0x1C1D1E1F
    ADDR:0xFFFFFEA0值:0x20212223
    ADDR:0xFFFFFEA4值:0x24252627
    ADDR:0xFFFFFEA8值:0x28292A2B
    ADDR:0xFFFFFEAC 值:0x2C2D2E2F
    ADDR:0xFFFFFFB0值:0x30313233
    ADDR:0xFFFFFEB4值:0x34353637
    ADDR:0xFFFFFEB8值:0x38393A3B
    ADDR:0xFFFFFFBC 值:0x3C3D3E3F
    ADDR:0xFFFFFFEC0值:0x40414243
    ADDR:0xFFFFFFEC4值:0x44454647
    ADDR:0xFFFFFEC8值:0x48494A4B
    ADDR:0xFFFFFECC 值:0x4C4D4E4F
    ADDR:0xFFFFFED0值:0x50515253
    ADDR:0xFFFFFED4值:0x54555657
    ADDR:0xFFFFFED88值:0x58595A5B
    ADDR:0xFFFFFEDC 值:0x5C5D5E5F
    ADDR:0xFFFFFEE0值:0x60616263
    ADDR:0xFFFFFEE4值:0x64656667
    ADDR:0xFFFFFEE8值:0x68696A6B
    ADDR:0xFFFFFEEC 值:0x6C6D6E6F
    ADDR:0xFFFFFEF0值:0x70717273
    ADDR:0xFFFFFEF4值:0x74757677
    ADDR:0xFFFFFEF8值:0x78797A7B
    ADDR:0xFFFFFEFC 值:0x7C7D7E7F

    是否有其他任何因素可以阻止执行 WFI 或自检?

    谢谢、此致、
    最大值

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

    您好、Max:

    您能与本期分享一个示例项目吗、以便我在最后进行调试吗?

    --
    谢谢。此致、
    Jagadish。

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

    您好 Jagadish:
    很遗憾、我们无法分享我们的项目。

    该过程如下。
    -系统正常启动
    - VIM 中的所有中断被停用
    - RTI 被关闭
    -互连自检开始(将 SDC 控制寄存器中的位24 (MASK_SOFT_RESET)设置为0x0、将 SCM 控制寄存器中的位8-11 (DTC_SOFT_RESET)设置为0xA)。
    -然后执行 WFI
    -试验仍然在一个无限循环中。


    你有任何关于调试的提示或其他想法吗?

    谢谢、此致、
    最大值

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

    您好、Max:

    感谢您执行这些步骤、让我尝试相同的操作并在最后重现问题。

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    您是否能够重现问题?

    谢谢、此致、
    最大值

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

    您好、Max:

    我也可以在我的终端上看到您所讨论的问题。

    我只是在尝试纠正它,我会尽快提供我的更新。

    --
    谢谢。此致、
    Jagadish。

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

    您好、Max:

    我创建了一个用于 STC 自检运行的示例工程:

    我认为调试工程不是监控 STC 状态的理想方式、因此在这里、我使用 SCI 外设将状态发送到串行端口:

    如上所示、我将在主循环启动并打印状态后立即验证 STC 运行状态。 如果测试未完成、我将通过打印"测试"进行测试、并在 while (1)的开始处打印"loop"

    下面是我的测试结果:

    按下上电按钮后、我将测试状态设置为 false、因此代码进入测试、测试后控制器自动复位、然后再次打印状态、这次状态设置为 true、无故障。 现在代码命中该循环、即 while (1)。

    我随附代码供您参考、请仔细阅读:

    e2e.ti.com/.../STC_5F00_SelfTest_5F00_LC4357.zip

    --
    谢谢。此致、
    Jagadish。

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

    Jagadish、您好!

    我们在做与您相同的事情、但测试仍不起作用。

    我们将旧的软件版本与新的软件版本进行了比较、后者同样的测试无法运行。

    我们会注意到 CPU 以不同的模式运行。 工作版本的 CPU 处于管理模式(CPSR 寄存器 M 域)、而不工作版本的 CPU 处于系统模式。

    我的问题是:

    是否可能因为处理器处于系统模式而没有执行 WFI 指令或执行 WFI 指令但未启动测试?

    谢谢、此致、
    最大值

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

    您好、Max:

    对于我们的响应出现延迟、深表歉意、实际上我们上周五在 TI 印度有假期。 同时,我在这段时间内一直被很多悬而未决的问题所困扰。

    我们注意到的一件事是 CPU 以不同的模式运行。 工作版本的 CPU 处于管理员模式(CPSR 寄存器 M 字段),而不工作版本的 CPU 处于系统模式。

    我认为这不会是问题、因为在我的工作代码中、模式是仅系统模式。

    --
    谢谢。此致、
    Jagadish。