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:BIST 时间

Guru**** 2481465 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/858860/tms570lc4357-bist-time

器件型号:TMS570LC4357

大家好、

客户 使用安全库进行自检、发现在所有 ROM 存储器上运行 PBIST 时执行时间有很大差异、这使得软件初始化时间过长。 因此、客户希望了解这方面的原因并进行一些研究。

目前客户发现、对于当前软件版本、在调用 PLL 自检函数并完成自检后、clk 不会改回 PLL1并保持在 OSC 中、因此时间更长。

但他们没有找到 引发问题的根本原因。 他们有两个问题:1. 它们会更改 主函数中的初始化代码(IO 翻转) 、该代码应该与此没有关系、但会触发问题2。 对于这个软件版本、当分步执行或者在检查 PLL1slip 时执行一次时、针对 clk 变化的操作不相同。

关于当前的 PLL 自检功能、数据表中提到如果要清除转差位、需要先禁用 PLL、但在 自检功能中 CLK 改回 PLL1后会清除转差。  基于这一点、客户在   代码"恢复 PLL 乘法器值"之后添加了38us 延迟(延迟函数在正常时基中、在此工作条件下应为~400us)、并在代码将 clk 源更改为原始时钟之前添加了38us 延迟、 那么、在  分步执行或没有仿真器的情况下都不会出现任何问题、并且预期会出现结果。 请检查问题是否由该功能引起、以及上述解决方法是否合理。

谢谢。

BRS

假设

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

    您好、

    在 PLL 差异发生后、PLL 时钟切换到 OSC。 在 PLL 自检(PLL 跳周)后、请按照程序(TRM、从 PLL 故障中恢复14.5.4)来恢复 PLL。

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

    您好 QJ、

    感谢您的回复。 但似乎仍然无法解决客户的问题。

    客户之前已经阅读过您在回复中提到的器件、然后在检查 PLLSLIP 时进行调试。

    因此、请检查问题"请检查问题是否是由功能引起的、以及上述解决方法是否合理。" 。 谢谢。

    BRS

    假设

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

    您好、


    权变措施看起来不错、但可能不适用于所有 PLL 设置。 当 PLL 跳周发生时、请按照恢复程序进行恢复。 客户应使用 while ()检查标志,而不是添加延迟函数。

    1、将所有时钟域从 PLL1切换到振荡器

    HL_systemREG1->GHVSRC = 0x0U;

    2.禁用 PLL1

    HL_systemREG1->CSDISSET = 0x2U;

    3.等待 PLL1被禁用

     while ((hl_systemREG1->CSDIS & 0x2U)=0U){

     }/*等待*/

    4.恢复 PLL 倍频值

    HL_systemREG1->PLLCTL1 ^= 0x8000U;

    5.启用 PLL1

    HL_systemREG1->CSDISCLR = 0x2U;

    6.等待 PLL1启用

    while ((hl_systemREG1->CSDIS & 0x2U)!= 0U){

     }/*等待*/

    7.切换回初始时钟源

    hL_systemREG1->GHVSRC = ghvsrc_backup_value;

    8.清除 PLL 转差标志

    HL_systemREG1->GBLSTAT = 0x300U;

    9.清除 ESM 标志

    hl_esmREG->SR1[0U]= 0x400U;

    10.恢复 PLLCTL1寄存器

    hl_systemREG1->PLLCTL1 = pllctl1_backup_value;

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

    您好、清军、

    感谢您的回复。 客户反馈很难在{}时应用。  

    客户的主要请求是  

    答:支票薄单功能是否有问题?  

    b.更改初始化中的代码为什么会触发该问题?  

    谢谢。  

    BRS

    假设

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

    您好、

    安全库没有 PLL 差异自检。 它具有 ESM 应用程序回调函数来处理 ESM 错误。 但是、如果自检失败、则不会进行 ESM 回调。

    如果您手动触发 PLL 差异(请告诉我您是如何执行的)、时钟源会自动切换至 OSC、ESM 回调函数不会从 PLL 差异中恢复 PLL。 发生 PLL 跳周后、您需要按照我之前的帖子中列出的步骤来恢复 PLL。

    您能告诉我安全诊断库中的哪个函数用于您的 PLL 自检吗?

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

    您好 QJ、

    感谢您的回复。

    关于您的问题、客户只需致电 checkPLL1slip 并检查 PLLslip2功能。 它们位于 safelib 库 demo_app - common-source file - faultinject.c 中

    谢谢。

    BRS

    假设

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

    您好、

    谢谢。 我刚刚检查了 PLL 差异函数、除了这个指令外、一切看起来都很好:

    我认为 while ()循环不应被注释掉。

    此函数在 PLL 跳周后(预期)恢复 PLL。

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

    您好 QJ、

    感谢您的回复。

    但是、客户反馈在他们收到的发布版本中、这句话 实际上不会注释掉。 请仔细检查。 谢谢。

    BRS

    假设

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

    您好、

    我刚刚测试了 PLL1滑动功能、它按预期工作。 我监控了输出 VCLK/10 (7.5MHz)的 ECLK。 当 PLL 跳周发生时、ECLK 输出400kHz 波形、该波形来自16MHz OSC。 在 PLL 自检后、ECLK 恢复到7.5MHz。

    BTW、请勿逐步执行自检代码。