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.

[参考译文] TMS570LC43x SAFETI 诊断

Guru**** 2401285 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1236515/tms570lc43x-safeti-diagnostic

您好!

我尝试使用  TMS570LC43x Hercules 开发套件中的演示代码2.4.0来运行 SAFETI 库。

第一次被裁减  "sl_Init_ResetReason ()"函数是 RESET_TYPE_DEBUG 。 这似乎没问题。

当代码跳转到   SL_Init_Memory (RAMTYPE_RAM); 检查功能 CPU RAM 也完成了 表明第8个 MINIDONE 位为高电平、这也看起来不错

但在执行它之后、 SL_Init_Memory (RAMTYPE_RAM);  函数 resetReason 的值将从  RESET_TYPE_DEBUG 至 RESET_TYPE_UNKNOWN。

 

您能告诉我为什么 resetReason 的状态发生了变化吗?

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

    大家好!

    我对它进行了更多的研究、并且已经看到初始值 SL_systemREG1->SYSESR;寄存器为0x00000800、resetReason 为 RESET_TYPE_DEBUG。

    当我们进入  SL_Init_Memory (RAMTYPE_RAM); 执行后的函数  sl_systemREG1->MSINENA = ramSet;指令 低于   sl_systemREG1->SYSESR; 寄存器已更改" 0x00000000 "因此,复位重置也将从 "RESET_TYPE_DEBUG"至"RESET_TYPE_UNKNOWN"。

    为什么 SL_systemREG1->SYSESR 的值在执行后发生变化   sl_systemREG1->MSINENA = ramSet 指令

     

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

    尊敬的 Pankaj:

    我们已着手解决您的问题、并将很快提供更新。

    --

    谢谢。此致、
    Jagadish。

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

    尊敬的 Pankaj:

    在将原因复制到函数"sl_Init_ResetReason"的"RetVal"后、相应 ESR 寄存器中的复位原因将立即被清除。

    您可以看到上面的屏幕截图。 在上面的屏幕截图中 、SYSESR 寄存器写入以说明原因。 这是因为下一次复位可以随时进行、所以它们在立即复制原因后清除 ESR 寄存器。 因此、一旦 SYSESR 寄存器传递函数"SL_Init_ResetReason"、我们就不应考虑该寄存器值。

    如果要将重置原因传递给应用程序、我在下面的主题中建议了一种方法。 请参阅

    (+) RM46L852:sys_startup.c 生成的代码阻止我们知道系统复位。 -基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    --

    谢谢。此致、
    Jagadish。

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

    你好、 

    感谢您的回复  Jagadish。
    非常感谢 您的努力。

    我有一个问题:

    问题1:

    器件内部   在 STC 后变为空(空)  停止。 如果我得到任何一个" RAMTYPE_MIBSPI2_RAM "失败。  

    /*初始化 MIBSPI SRAM */
    SL_Init_Memory (RAMTYPE_MIBSPI1_RAM);
    SL_Init_Memory (RAMTYPE_MIBSPI2_RAM);
    SL_Init_Memory (RAMTYPE_MIBSPI3_RAM);
    SL_Init_Memory (RAMTYPE_MIBSPI4_RAM);
    SL_Init_Memory (RAMTYPE_MIBSPI5_RAM);

    如果  MSTDONE 的状态位未设置为 我们将如何解决该问题?

    我们希望再次运行该测试用例。 我们必须要做什么?

    如果您有任何关于解决特定测试故障的错误的文档、请告知我们。 它将对我们非常有帮助。

    问题2.  10个周期后在主域中  

    if (maintaskcount>10)

    {

    #ifdef __TI_Compiler_version__
    __ asm (" b #-8 ");                             <- 代码在这条内联指令"这一行为什么要使用?"中挂起。
    #endif
    #ifdef __IAR_SYSTEMS_ICC__
    asm (" B .");
    #endif

    #if function_profiling_enabled
    fptests = fopen ("Profile_tests.txt"、"w+");         <--我们可以从这里获取此文件。

    感谢并尊重

    V·潘卡

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

    你好、 

    Q2 -->已解决

    Q1仍待处理。

    您还能告诉我、在哪里 可以找到  ___ TI_auto_init ()的指令或函数定义;?   

    感谢并尊重

    V·潘卡

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

    尊敬的 Pankaj:

    您能否告诉我,在哪里 可以找到  __TI_auto_init ()的指令或函数定义;?   [/报价]

    TI_auto_init ()用于执行全局/静态变量的 C 自动初始化以及处理 binit 复制表。

    这是一个编译器函数、因此可以在编译器的以下路径中找到其定义:

    这就是定义:

    甚至您也可以在调用函数时设置断点、 在解汇编中打开代码并在解汇编代码中执行分步调试、然后您可以在此函数中查看执行情况。

    --

    谢谢。此致、
    Jagadish。

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

    你好、 

    感谢您的回复 Jagadish。
    非常感谢 您的努力。  

    我还面临着其他一些问题。

    您能否告诉我、在 safeTI 诊断库中、所有函数都在监控器模式(即"0x13")下工作。 即使也在主循环中也是如此。

    如果我想将模式从监控模式更 改为主函数中的系统模式"0x1F"。 如何改变模式?

     

    是否可以在系统模式下以主循环运行所有 safeTI lib 函数?

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

    尊敬的 Pankaj:

    我想您重新打开了一个有关上述问题的新主题:

    (+) Hercules_safety_mcu_demos:TMS570LC43x SAFETI 诊断-基于 Arm 的微控制器论坛-基于 Arm 的微控制器- TI E2E 支持论坛

    因此、我将关闭该主题、并将对上述主题提供支持。

    --

    谢谢。此致、
    Jagadish。