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:为测试处理程序生成一个 ESM 组2事件

Guru**** 2470720 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/656015/tms570ls1114-generating-an-esm-group-2-event-for-testing-handler

器件型号:TMS570LS1114

代码中有什么简单的方法可以使 ESM 组2事件测试 ESM 组2处理程序是否正常工作?  

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

    您可以使用 CCM-R4F 错误强制生成组2 ESM 错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 James、

    不幸的是,我对这一点没有即时的意见。 我认为有些 CCM 测试模式会导致锁步比较误差并触发 G2 Ch2、但目前我并不是100%确定、也无法访问 TRM。 我必须仔细检查、然后再与您联系。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已经尝试使用 safeTI 诊断测试来生成一个 ESM 2事件、但运气不好。 我已尝试在 SAFERTI 中针对 CCMR4提供的每个测试。 下面是我尝试的其中一项测试的示例代码。 我在这里做了些什么问题吗?  

    SL_CCMR4F_FailInfo failInfoCCMR4F;

    RetVal = sl_SelfTest_CCMR4F (CCMR4F_selfTest_error_Forcing、true、&failInfoCCMR4F);

    此代码是我在 main()内部运行的第一个代码。  

    请注意、我实时运行代码、而不是调试器模式。 我有一个在 ESM 处理程序内部递增的简单计数器、这些计数器被发送到终端以供查看。 此接口工作正常、我能够以这种方式跟踪 esm1和 ESM3事件。  

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

    您好 James、

    生成 ESM 组2错误的一种简单方法是向 RTIWDKEY 寄存器写入错误的密钥、或者不在时间窗口内给看门狗(DWWD)馈送。

    我刚刚经过测试、并设置了 ESM2.24。 以下是我的测试代码:

    1.启用 RTI compare0 INT,并将 RTI 比较周期设置为200ms

    /*包含文件*/

    #include "sys_common.h"

    /*用户代码开始(1)*/

    #include "rti.h"

    #include "ESM.h"

    /*用户代码结束*/

    /**@fn void main (void)

    * @应用程序主函数简介

    * @请注意、默认情况下、此函数为空。

    *

    * 此函数在启动后调用。

    * 用户可以使用此函数来实现应用程序。

    *

    /*用户代码开始(2)*/

    INT CTR = 0;

    /*用户代码结束*/

    int main (空)

    /*用户代码开始(3)*/

      _enable_IRQ ();

      /*初始化 RTI */

      rtiInit();

      /*启用 RTI 比较0通知*/

      rtiEnableNotification (rtiNOTIFICATION_COMPARE0);

      /*开始计数器*/

      rtiStartCounter (rtiCOUNTER_BLOCK0);

      /*初始化并启动 DWD */

      dwwdInit (generate_NMI、4095、size_100_percent);

      dwdCounterEnable();

      /*在 RTI 中断中为 DWD 提供服务*/

      /*延迟*/

      while (CTR < 5);

      /*停止服务 DWD */

      rtiDisableNotification (rtiNOTIFICATION_COMPARE0);

      while (1);

    /*用户代码结束*/

      返回0;

    /*用户代码开始(4)*/

    void rtiNotification (uint32通知)

      CTR ++;

      dwdReset();

    /*用户代码结束*/