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.

[参考译文] TMS320F28075:DCSM OTP 中不可纠正的 ECC 错误会停止程序和#39;s 运行

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/587566/tms320f28075-uncorrectable-ecc-error-in-dcsm-otp-stops-program-s-running

器件型号:TMS320F28075
Thread 中讨论的其他器件:controlSUITE

大家好、香榭丽舍、

我的客户正在使用 F28075、他们的产品将大规模生产、但最近他们发现5块电路板在加载闪存映像后无法独立运行程序(在加载后连接仿真器、它可以完全运行)。

我支持在连接仿真器的情况下进行现场调试、发现代码卡在引导 ROM (地址:0x3FE444)中、其中是 interrupt void c1brom_handle_NMI ()函数、用于处理 c1brom_interrupts.c 源文件中文件夹 C:\ti\controlSUITE\libs\utilities\boot_rom\f2807x\bootx\rom\from\bootx\sources\f281b\boot\bootx\bootx_rom\bootx\rom\bootx\rom\powers\powers\powers\bootx\bootx\

if (c1brom_NMI_STATUS & NMI_INT_FLLUNCERR)/*检查 C28FLLUNCERR NMI *

c1brom_status |= C1_BootROM_GK_A_FLASH_UNCHERR_NMI;

//if debugger connected -为用户提供了解情况的机会

asm (" ESTOP0");

//让 NMIWD 复位器件

while (1);

然后、我们确定 NMIFlG.bit.FLLUNCERR=1、ERR_STATUS.BIT.UNC_ERR_L=1和 UNC_ERR_ADDR_L=0x78010、这意味着在128位内存对齐数据的低64位中会出现不可纠正的错误。

客户软件会将0xFFFE 的值写入该位置、我们观察到其中的内容、它也是0xFFFE、但为什么 ECC 会将其检测为不可纠正的错误? 以及我们应该如何处理它、因为每次上电时、它不能单独运行、但会始终停留在引导 ROM 中。

由于客户的软件是相同的、并且他们的大多数控制板都可以在0x78010中的相同内容下正常工作、您认为这与器件有什么关系吗?  

此致、

张卫健

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

    1) 1)客户在对地址0x78010上的 Z1-PSWDLOCK 进行编程时是否对 ECC 进行了编程?
    2) 2)如果是、他们是将其编程为 COFF 文件的一部分、还是使用某些编程工具的 GUI 字段?
    3) 3)它们使用哪种工具对闪存进行编程?

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

    您好 Ricky、

    如果客户在每个器件上编程相同的程序、并且只有少数器件无法正常工作、那么我假设客户正在为这些位置对 ECC 进行编程、但在某些情况下、这种情况并未按预期发生。 但正如 Vamasi 所提到的、请确认相同。

    此外、我建议 将工作设备和非工作设备上该位置的 ECC 值进行比较。 您需要将工作中和不工作中的器件连接到 CCS、然后解锁器件以查看内容和相应的 ECC 值。

    请 告诉我们您的发现。

    此致、

    Vivek Singh   

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

    它在连接调试器的情况下工作的原因可能是 GEL 文件造成的。 GEL 文件的 OnReset()函数禁用 ECC-check。

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

    Vamsi、

    感谢您的快速响应。

    [引用 user="Vamsi Gudivada"]
     
    1) 1)客户在对地址0x78010上的 Z1-PSWDLOCK 进行编程时是否对 ECC 进行了编程?
    2) 2)如果是、他们是将其编程为 COFF 文件的一部分、还是使用某些编程工具的 GUI 字段?
    3) 3)它们使用哪种工具对闪存进行编程?

    [/报价]

    是的、他们通过自己的基于 SCI 的编程工具对 ECC 进行编程。 明天我将再次检查这个问题。

    实际上、真正的过程是、他们使用自己的工具对器件进行编程、当问题发生时、我们使用仿真器连接了目标以重新编程和调试、但我们将 GUI 保持在默认状态。 这对这个问题有很大影响吗?

    此致、

    张卫健

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

    Vivek、

    这是一个好主意、我们可以在两个器件上进行比较。

    我们如何计算特定闪存或 OTP 地址的 ECC 位置?

    DS 提供了 DCSM OTP ECC 的地址范围、我认为我们需要位置0x78010的确切 ECC 地址。

    此致、

    张卫健

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

    Vamsi、

    幸运的是,在连接调试器之前,我在 GEL 文件中禁用了 OnTargetConnect()函数内的 OnReset()函数,因为我想查看代码在连接后滞留在引导 ROM 中的位置。

    此致、

    张卫健

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

    每个64位(对齐) OTP 数据将对应于 ECC 空间中的8个 ECC 位。 由于 C28x 是16位可寻址的、ECC 空间中的每个地址将有两个 ECC 字节-一个用于对齐的128位 OTP 存储器地址的低64位、另一个用于高64位。 现在您已经知道如何将给定的 OTP 地址映射到给定 ECC 空间起始地址的相应 ECC 地址。

    对于地址0x78010、相应的 ECC 地址将为0x01071002。 您需要在此处检查 LSB。

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

    关于该工具:我想知道这是否可以通过 TI 工具重现、因此我问了。 如果使用 TI 工具进行编程时无法重现、则可能是它们的工具问题。 但是、您提到并非所有器件都出现此问题。 因此、您需要进一步进行调试、以了解为什么只有这些特定器件才会出现此问题-可能是它们使用不同版本的工具对这些器件进行了编程

    在比较发生故障的器件与通过器件上的 ECC 后、您将能够更好地理解。

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

    Vamsi、

    谢谢您的理解。

    遗憾的是、我仍然没有收到客户的反馈、也许我们明天需要做出回应。

    客户还有两个问题:

    1. 是否必须为 DCSM OTP 启用 ECC?  包括 链接指针在内的所有位置?

    2. 他们告诉他们在所有修订版芯片中使用自己的存储器复制函数而不是 TI 提供的安全复制函数、但没有问题、这有道理吗? 请注意:A.修订版 B 之前的芯片似乎可以这样做吗? B.尽管客户启用了安全性、但他们仅使用 Z1。

    此致、

    张卫健

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

    第一。 我想您询问是否为 DCSM OTP 对 ECC 进行编程。 除了链路指针位置外、ECC 也必须针对 DCSM OTP 进行编程。

    2:我将请我们的安全专家查看您的问题2。

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

    Vamsi、

    [引用 user="Vamsi Gudivada"]
     
    第一。 我想您询问是否为 DCSM OTP 对 ECC 进行编程。 除了链路指针位置外、ECC 也必须针对 DCSM OTP 进行编程。  

    [/报价]

    是的、我理解。

    [引用 user="Vamsi Gudivada"]
     
    2:我将请我们的安全专家查看您的问题2。

    [/报价]

    他们没有使用 EXEONLY 函数、所以他们自己的 memorycopy 函数应该起作用吗?

    此致、

    张卫健

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

    在#2上-是、如果他们不使用 EXEONLY 功能、则必须使用他们自己的 memcopy 函数。

    此致、

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

    您是否从客户那里获得了有关此调试的任何更新?

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

    谢谢、Vivek。

    他们现在使用自己的 memcopy 函数。

    此致、

    张卫健

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

    Vamsi、

    感谢您的关注。

    是的,我昨天在这里举行了 FAE 峰会周之后,在现场支持了他们(因为会议和 BU 拜访客户而占用了很长时间:)对其进行调试,发现一切都是正确的,而客户在他们的引导加载程序代码中禁用了 ECC 功能。 这就是它不匹配然后报告错误的原因。

    我们现在可以解决此问题、感谢您的支持。

    此致、

    张卫健

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

    很高兴问题得到解决。

    您是否说客户没有对 ECC 进行编程、因此在您最初报告时出现错误? 现在、他们决定禁用 ECC 检查以解决该问题?

    或者、您是否说他们错误地没有在该器件上对 ECC 进行编程、现在通过对 ECC 进行编程来修复它?

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

    Vamsi、

    是的、这是第二种情况。

    他们在过去启用了 ECC 并对其进行了编程、这是没有问题的。

    虽然最近他们遇到了另一个问题、当他们调试该问题时、他们错误地没有对 ECC 进行编程、但仍然使 ECC 功能保持启用状态。

    感谢您的帮助、让我们关闭这个帖子。

    此致、

    张卫健

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

    Ricky、

    感谢您在此处添加详细信息。  这很有帮助。

    谢谢、此致、
    Vamsi