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.

[参考译文] TMS570LS1114:CPU 自检期间处理器挂起+ ADC_PIN_Undetermined>

Guru**** 2455360 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/634215/tms570ls1114-processor-hangs-during-cpu-self-test-adc_pin_undetermined

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

大家好、

为同事发布。 我们有两个问题:

1) 1)我们看到一个问题、即处理器在 CPU 自检期间挂起、同时处理 ESM 错误。 如果在初始化期间完成、则不会发生这种情况、只有在主循环中调用时才会发生。 您是否知道为什么会发生这种情况? 另外、您是否建议使用任何有关如何处理 ESM 错误的文档? 安全手册中没有我们想要了解的所有详细信息。  

2) 2)测试 ADC 时、我们通常会看到"ADC_PIN_Undetermined"。 我们将使用具有低通滤波器的单位增益运算放大器进入 ADC。 有些电路的引脚状态良好、但有些电路具有相同的运算放大器配置、这种情况还有待确定。 您能否提供有关此测试工作原理以及可能发生此情况的原因的更多详细信息?

谢谢、

不需要

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

    你好、Nate、

    您能否提供有关您的第一个问题的更多信息? 在 CPU BIST 期间、CPU 被脱机、并且在完成时、CPU 被复位。 因此、您的问题让我对您所指的 CPU 自检感到好奇? 您是指 CCMR4自检吗? 如果是、在处理 ESM 错误时、您的自检意思是什么? 即、如果您运行 CCM 自检、CPU 不一定要执行任何其他操作、因为这是一个前台函数。 您是否意味着在执行 CCMR4自检时存在 ESM 错误? 这是在客户代码、Halcogen 代码中还是在 SafeTI 诊断库函数调用中? 您能否发布代码、或者、如果与 SDL 相关、发布导致代码中断的函数调用以及 ESM 处理程序挂起的行号?

    对于第二个问题、您提到了每个 ADIN 引脚上的同一电路? 我假设它们向 ADIN 引脚提供不同的电压和负载? 由于此测试依赖于内部分压器网络和电源以及到引脚的连接、因此输入电压可能会移动中间计算的某些结果、从而导致不确定的结果。 这确实意味着输入是不确定的。 在大多数情况下、这是可以的、但可以肯定的是、您能否在获得此结果的引脚上提供输入电压/负载、而不是在这些引脚上提供输入电压/负载? 这可能有助于理解结果。

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

    你(们)好、Chuck。 我是 Nate 一直在工作的人。

    我一直在学习曲线、试图了解由于锁步处理器检查发现的运行时故障而导致的 ESM 生成中断的正确处理。 我还一直在使用 SafeTI 诊断库来了解其工作原理、或许可以对我的安全算法中使用的模块的加电进行一些自检。

    动画演示(http://www.ti.com/ww/en/functional_safety/safeti/safeTI-animation.html

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    出于某种原因、我在网络闪烁后的帖子未发布。 重新过帐:

    动画显示了运行 CPU 自检的 ESM 中断处理程序。 如果通过、则清除 nERROR、复位并继续。
    此 CPU 自检与 Halcogen 生成的自检相同? 应该针对任何 ESM 中断执行这个自检?

    我只能在引导加载程序工程中使用 CPU 自检、而不能在应用程序工程中使用 CPU 自检。 在应用程序项目中、代码挂起。 由于您无法将其与调试器配合使用、因此我无法确定其为何挂起。

    至于使用 SafeTI DL 进行的 ADC 引脚测试、我一直在尝试弄清楚 ADC 引脚输入端可以有哪些信号调节电路、以获得一致的测试结果。 它似乎检测到 ADC Vref H/L 短路 如果可以确定 ADC 引脚是否正常、如果自检返回 ADC_PIN_GOOD 或 ADC_PIN_Undetermined>、那么我将使用这个前提。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    James 您好:

    [引用 USER="Jamesburra4]动画 显示了运行 CPU 自检的 ESM 中断处理程序。 如果通过、则清除 nERROR、复位并继续。
    此 CPU 自检与 Halcogen 生成的自检相同? 应针对任何 ESM 中断进行此自检?[/QUERP]

    该演示显示了 CCM 在运行时而不是 CPU 自检期间检测到的 CPU 故障。 如果两个锁步内核中的任何一个发生 CPU 故障、CCM 将通过 ESM 通知系统、并且由于 CCM 故障类型是组2错误、它会导致 NMI 并自动将 nERROR 引脚置为有效。 这就要求以某种方式对其进行服务。 在这种类型的 CPU 故障的情况下、正常操作是强制进行复位、这将导致应用程序再次启动、包括引导时间 LBIST (CPU 逻辑内置自检) 如果故障是永久性故障、而不是瞬态故障、则可识别故障。 如果它是永久性的、那么可能的结果是让系统进入/转换到安全状态、这可能是关闭 MCU 电源、将其保持在复位状态、或者以某种方式使 MCU 脱机、因为 CPU 由于某种内部故障而无法信任。 请注意、对于故障的反应是100%、最高为系统级需求和要求、同时注意、由于已识别的内部故障、CPU 运行是有问题的。

    请注意、这是为了响应发生的特定类型的故障。 对于其他故障类型、确定正确响应也取决于系统要求。 因此、如果在上电时出现 LBIST 故障、则可能只希望在由于先前识别的 CPU 故障(例如我们在介绍的情况)而运行时进入安全状态、 如果在正常上电复位执行 LBIST (CPU 自检)时没有发生 CPU 故障、您可以选择重复 CPU 自检、以确认故障是暂态故障还是永久故障。 如果是永久性的、则像以前一样进入安全状态。

    如果、我们将讨论一些其他类型的故障、例如 RAM 或闪存双位错误/不可纠正的错误、通信通道错误、NHET 错误、时钟错误等。 您将需要评估对系统操作的影响、并确定要采取的措施以及错误是可恢复/可纠正的还是不可恢复的、并且需要移至安全状态或器件复位。

    ADC 自检和未确定返回状态。 这可能是由于测试时 ADC/输入电压上的负载所致。 如果您可以在转换时提供一些有关您的 ADIN 电路的附加信息(原理图快照是理想的)以及输入电压、我们应该能够确定状态报告的原因、然后决定它是否可以接受。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我对使用的典型热敏电阻输入信号调节电路进行了更多测试。 以下是结果。

    OPAMP 为 OPA2171AIDR。

    ADREFHI 为4.5V。 ADREFLO 为0V。 VCCAD 为5V。 VSSAD 为0V。

    电路用于热敏电阻输入、在 VIN 和 GND 之间放置热敏电阻。

    对于 VIN<3.1V、ADC_Pinstatus 返回 ADC_PIN_Good。

    对于 VIN>3.1V、ADC_Pinstatus 返回 ADC_PIN_Undetermined>。

     

                 adcConfig.adc_channel = 12;

                 adcConfig.adcbase = sl_adcREG1;

     

                 RetVal = sl_SelfTest_ADC (ADC_seltest_all、false、&adcConfig、&ADC_pinstatus);

     

                 如果(1 = RetVal)

                 {

                        if (ADC_PIN_Good = ADC_Pinstatus)

                        {

                              selftest_passcnt++;

                        }

                        其他

                              selftest_failcnt++;

     

                 }