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.

[参考译文] 使用 uC/OS-II 的 sl_SelfTest_SRAM 上的安全诊断库错误

Guru**** 2482225 points
Other Parts Discussed in Thread: TMS570LS1227, HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/719288/safety-diagnostic-library-error-on-sl_selftest_sram-with-uc-os-ii

主题中讨论的其他器件:TMS570LS1227HALCOGEN

您好的团队:

 

我们开始将安全诊断库版本2.4.0集成到我们的项目中。 演示项目 TMS570LS1227_Noos 已经被建立并正确运行。 当我们将安全诊断库添加到项目中时(使用 uC/OS-II),在调用时会出现错误:

 

RetVal = sl_SelfTest_SRAM (SRAM_ECC_ERROR_ENCED_2BIT、TRUE、failInfoTCMRAM);

 

在运行指令之后:

 

ramread64 = sramEccTestBuff[2];                    // sl_selftest.c 中的行278

 

程序正确跳转到_expt_vec_abort_data、然后:

 

if (((TCRAM_RAMCTRL_ECCWREN =>(sl_tcram1REG->RAMCTRL & TCRAMCTRL_ECCWREN)))

||(TCRAM_RAMCTRL_ECCWREN ==(sl_tcram2REG->RAMCTRL & TCRAMCTRL_ECCWREN)))

&&(TRUE =sl_FLAG_GET (SRAM_ECC_ERROR_ENCERAING_2BIT)))(

        /*看起来写入 ECC 区域已启用、请检查错误地址是否在测试缓冲区范围内*/

               maskDAbort = true;

   };

 

但之后、程序跳转到无限循环中的这个_exbion_vec_abort_data()、nERROR 引脚为低电平有效。

 

 

 

REFenceuC.OS-II 与德州仪器》的 ARM-Cortex-R 和 HALCoGen 搭配使用、标签为"interrupts"配置、如下所示:

 

 

 

标签"R4-MPU-PMU"标签配置如下所示:

在此处添加例外:

您对我们可能出错的地方有什么看法吗?

 

谢谢、此致  


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

    根据 ARM 架构参考手册、来自数据中止处理程序的返回指令必须使代码执行与导致数据中止的指令相同的指令。 这假定数据中止处理程序纠正了导致中止的问题、以便在问题解决后可以执行指令。

    显然、故意导致数据中止的情况并非如此。 因此、HALCoGen 会生成一个数据中止处理程序、该处理程序会处理返回地址(链接寄存器)、以便代码从引起有意数据中止的指令之后的指令继续执行。 此外、中止处理程序不能针对实际数据中止执行此操作、只能针对故意引起的数据中止执行此操作。

    我将查看 SDL 中的数据中止处理程序、以确保此实施仍然正确。

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

    您好、Sunil Oak:

     感谢你的答复。 我很喜欢这个问题、您的回答让我对"数据中止 "问题有了清晰的了解。

     谢谢、此致