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.

[参考译文] RM48L952:存储器初始化和诊断

Guru**** 2858300 points

Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/798865/rm48l952-memory-initialization-and-diagnostics

器件型号:RM48L952
主题中讨论的其他器件:HALCOGEN

我正在尝试在启动时运行 PBIST、但正如预期的那样、此测试具有破坏性、这意味着我的堆栈在运行 PBIST 之后被破坏。 我知道我可以通过复位 CPU 来恢复、但是在这个 CPU 复位后、我如何确定我之前运行过 PBIST、这样我就不会再次运行它并进入无限 PBIST 复位 PBIST-PBIST-复位... 周期?

此外、对于需要存储器初始化的测试、PC 复位为0x00000000、因此当我完成测试时、我无法返回到调用堆栈。 如何在这些测试完成后恢复并继续执行?

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

    大家好、

    STC 在每个测试完成后生成一个 CPU 复位。 但 PBIST 不会导致 复位。 请使用 HALCoGen 生成的启动代码。如果 复位源是 CPU 复位、启动代码将检查复位源、并且不会执行 CPU 自检。

    存储器初始化使用 系统模块的硬件来自动初始化存储器及其 相关的保护方案。  它将初始化整个 CPU RAM 和相应的 ECC 位置。 但它不会清除 MCU 寄存器(PC、CPSR 等)。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢。 我已经在使用检查复位原因的启动代码、因此我可以使用 STC。 您确认了我的观察结果、即 PBIST 不会导致复位。 这意味着我必须在 PBIST 结束时生成 CPU 复位、然后依靠我的启动复位处理程序来确保 PBIST 不会再次执行(就像它是如何针对 STC 完成的)。 这是一种合理的方法吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    PBIST 不会生成复位、因此停止运行不会解决问题。 请检查无限周期的根本原因是什么:PBIST-复位- PBIST-复位... 周期?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    cpuSelfTest (STC_INTERVAL、STC_MAX_TIMEOUT、TRUE)和 SL_SelfTest_STC (STC_COMPARE_SELFCHECK、TRUE、&stcSelfTestConfig)之间有何差异? 它们似乎都在进行 STC 自检。

    此外、您能否回答我的另一个问题:
    ...我的观察结果是 PBIST 不会导致复位。 这意味着我必须在 PBIST 结束时生成 CPU 复位、然后依靠我的启动复位处理程序来确保 PBIST 不会再次执行(就像它是如何针对 STC 完成的)。 这是一种合理的方法吗?

    我仍然不确定如何在诊断期间从内存自动初始化中恢复、因为它会将我的 PC 复位为0
    谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    让我澄清一下 PBIST 复位周期的含义。 PBIST 不会产生实际复位。 但是、我发现一些 PBIST 测试需要调用内存自动初始化。 发生这种情况时、PC 在堆栈底部设置为零、因此在弹出堆栈后返回到复位矢量。 这会导致执行从开始开始、因此会重复 PBIST 运行。  如何处理此问题以退出周期?

    此外、 cpuSelfTest (STC_INTERVAL、STC_MAX_TIMEOUT、TRUE)和 sl_SelfTest_STC (STC_COMPARE_SELFCHECK、TRUE、&stcSelfTestConfig)之间有何差异? 根据其余原因、一个或另一个在启动时调用、但它们似乎都在执行 STC 自检。

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

    我一直希望对我在这里重复的两个问题作出答复:

    1. 我发现一些 PBIST 测试需要调用内存自动初始化。 发生这种情况时、PC 在堆栈底部设置为零、因此在弹出堆栈后返回到复位矢量。 这会导致执行从开始开始、因此会重复 PBIST 运行。  如何处理此问题以退出周期?
    2. 此外、 cpuSelfTest (STC_INTERVAL、STC_MAX_TIMEOUT、TRUE)和 sl_SelfTest_STC (STC_COMPARE_SELFCHECK、TRUE、&stcSelfTestConfig)之间有何差异? 根据复位原因、一个或另一个在启动时调用、但它们似乎都在执行 STC 自检。

    我的第三个新问题是:

    当我以默认间隔24U 和 SelfTest_STC 运行 cpuSelfTest 时、由于多次复位、我的启动被延迟约40秒。 这是预期行为吗?

    谢谢。

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

    不需要、在执行 PBIST 测试之前不需要内存初始化。 并非所有算法都设计为在所有 RAM 组上运行。 如果选择了在不兼容的存储器上运行算法、则会导致故障。 PBIST 控制器中没有执行看门狗功能。 如果执行了错误代码、PBIST 将永远运行。 如果您使用旧的修订版器件(修订版 A 或修订版 B)、请针对错误 PBIST#4运行 pbist 变通办法。 此权变措施通过 HALCoGen 4.07.01生成。:errata_PBIST_4 ();

    所选存储器的内容将完全丢失。 如果需要、用户代码必须负责数据备份。

    STC 是用于测试 CPU 内核 LBIST 的 CPU 自检控制器。 STC 能够运行完整测试并一次运行几个间隔。

    cpuSelfTest (STC_INTERVAL、STC_MAX_TIMEOUT、TRUE)用于执行 CPU 自检。
    您可以使用 SDL API 进行 CPI 自检:sl_SelfTest_STC (STC_run、...)。

    STC 具有对 STC 本身进行自检的功能。 此 STC 自检仅通过在 CPU 内插入卡在故障状态来完成 STC 间隔0。
    SL_SelfTest_STC (STC_COMPARE_SELFCHECK、TRUE、&stcSelfTestConfig)

    CPU 自检执行所选数量的测试间隔、然后引起一个 CPU 复位(而不是系统复位)。