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.

[参考译文] TMS320TCI6616:MSMC 错误检测和校正机制

Guru**** 2611005 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/574078/tms320tci6616-msmc-error-detection-and-correction-mechanism

您好!

在报告 MSMC SRAM 不可纠正的 EDC 错误后、无法访问特定的子组(驻留错误)。 您知道这种行为的原因吗?

此外,是否有可能为 MSMC 中报告的故障行清除/重新计算奇偶校验? 如果错误影响数据段(不会导致 DSP 崩溃)、我想让 DSP 有机会继续执行。

报告 EDC 时的 MSMC 寄存器:

[smcerrar=0x00000000、smcerrxr=0x00000000、smncerrar=0x0c000800、smncerrxr=0x00000190、smsecc=0x80b60000]
[smitstat=0x00000004、smirstat=0x00000005、smedcc=0x44000001]

CIC0用于 MSMC SRAM 不可纠正的 EDC 错误处理。

BR/Ante

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

    我已将此内容转发给存储器专家。 他们的反馈应发布在此处。

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

    您是否使用 SYS BIOS 或裸机代码? 我认为在 SYS BIOS 中、当发生异常时、有一个异常例程捕获此错误并进入无限循环

    根据您的回答、我们将继续进行下一步

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

    您好!

    从我的角度来看、我们使用裸机编程。
    我们有 OS_Process (异常处理程序)、它将在异常发生时调用。
    它将验证异常状态、清除 EXC 位、检查报告的中断类型、执行特定于中断的操作...

    我们实施的 MSMC 中断服务序列:
     cic0_channel = 5u;
     System_int = CSL_INTC0_MSMC_DEDC_NC_ERROR;
     CSL_CPINTC_Handle CSL_Handle = CSL_CPINTC_OPEN (0);
     
     CSL_CPINTC_DisableAllHostInterrupt (CSL_Handle);
     CSL_CPINTC_setNestingMode (CSL_Handle、CPINTC_NO_Nesting);
     CSL_CPINTC_mapSystemIntraToChannel (CSL_Handle、system_int、channel);
     CSL_CPINTC_clearSysInterrupt (CSL_Handle、system_int);
     CSL_CPINTC_enableSysInterrupt (CSL_Handle、system_int);
     CSL_CPINTC_enableHostInterrupt (CSL_Handle、channel);
     CSL_CPINTC_enableAllHostInterrupt (CSL_Handle);

     发生中断时:
     将被调用的 OS_Process (异常处理程序)
     检查 CIC0系统中断状态启用/清除寄存器
     清除 CIC0系统中断状态启用/清除寄存器标志
     CSL_CPINTC_clearSysInterrupt (CSL_Handle、system_int);
     CSL_CPINTC_enableSysInterrupt (CSL_Handle、system_int);

    BR/Ante

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的、您的问题非常有趣。 我是否可以要求您进行以下实验?

    将异常例程更改为无限循环、然后尝试从 CCS (存在问题的同一组)和 MSMC 寄存器访问 MSMC 存储器。 如果您能够访问内存、请在此处发帖

    我假设您已经阅读 了 www.ti.com/.../sprugw7a.pdf 的第2.5章和2.6章 、并且您没有操作任何 MPAX 寄存器

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

    首先、我没有 CCS。
    在任何异常特定操作之前或之后、您希望在哪里创建无限循环?

    我已经阅读过上述文档、我们不会在异常处理例程中使用 MPAX 寄存器进行操作。


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

    那么、如何调试 DSP 代码呢?

    我建议在异常例程内有一个无限循环、 这样您可以在从异常返回之前查看内存。  我知道如何使用 CCS 实现它、但我不确定如何使用您使用的调试器对它进行调试。

    已运行

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

    很难解释我的调试方法。

    同时、您能否就第二个问题向我提供一些建议:"是否有可能为 MSMC 中报告的故障行清除/重新计算奇偶校验?"。


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

    您好!


    我已经尝试了您的建议、其中有几种在异常处理程序中实现无限循环的方案。

    1) EDC 异常被清除;从 MSMC (在 DSP 代码中)获取值:

    再次引发 EDC 异常。

    2) EDC 异常被清除但未启用;从 MSMC (在 DSP 代码中)获取值:

    检测到访问冲突异常

    3) EDC 异常被清除但未启用;从 MSMC (DSP 代码之外)获取值:

    检测到 SRIO 事件(直接 IO 读取失败)

    4) EDC 异常未清除;从 MSMC (在 DSP 代码中)获取值:

    检测到访问冲突异常

    BR/Ante

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我不确定您是否回答了自己的问题

    已运行