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.

[参考译文] TMS320F28388D:关于 TMS320F28388D:CPU1在上电后卡住

Guru**** 2581625 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1175865/tms320f28388d-re-tms320f28388d-cpu1-gets-stuck-after-power-on

器件型号:TMS320F28388D

您好!

 六个月前,我们在另一条线程中讨论了这种异常现象,最近又重新出现了这种现象。 自从上一个线程被锁定后、我必须重新启动一个新的线程。

在上一次分析中、Vamsi 建议我检查是否存在 ECC 错误。 当时我使用的方法是读取 ITRAP 中断内的闪存寄存器、没有发现任何问题。 这次、在异常发生后、我直接通过 JTAG 检查闪存寄存器内容并发现 ECC 错误。

但这是一件奇怪的事情:

1.如果我再次尝试断电,异常不是不可避免的,但有一定的可能性(大约80%的可能性)。

2.如果我在程序中添加或减去一些代码、则可以消除异常(不会出现50次重复加电)

3.这种异常出现在几个特定的电路板上,使用相同程序的其他电路板也不会出现异常。

我还能做些什么来缩小问题的范围?

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

    您好、Shawn、

    我们将在几天内进行审核并返回给您。

    谢谢、此致、

    Vamsi

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

    您好、Shawn、

    您是否检查了应用程序的哪个部分映射到该地址位置?  何时执行呢?   

    您能否启用 ECC 检查并读取整个闪存(读取闪存的代码应位于 RAM 中)并查看是否存在 ECC 错误?   

    谢谢、此致、
    Vamsi

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

    您好、Vamsi、

    感谢你的答复。

    对于您的问题:

    您是否检查了应用程序的哪个部分映射到该地址位置? 何时执行呢?

    1.本节包含库函数"memset();

    2.在应用程序初始化期间多次调用"memset"、当触发 ITRAP 时、不是第一次调用 memset。 因此、我认为这个闪存区域没有问题、但是其他因素会导致获取指令时出现异常、因为我曾经尝试将"memset"更改为 for loop、但也有异常的可能性。

    您能否启用 ECC 检查并读取整个闪存(读取闪存的代码应位于 RAM 中)并查看是否存在 ECC 错误?

    关于 ECC 检查、您说过、您是不是说我添加一些由 RAM 执行的检查函数、并在系统启动后检查整个闪存的 ECC?

    需要注意的一点是、即使我不重新写入闪存、只需关闭并重新启动它、应用程序也有可能正常工作。 如果闪存的 ECC 有故障、它是否应该总是无法启动?

    谢谢、此致、
    肖恩

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

    您好、Shawn、

    谢谢你。   

    请注意:我在接下来的4天内不在办公室。  

    我将能够在本周结束前进行回顾并返回给您。

    此致、
    Vamsi

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

    您好、Shawn、

    1. memset()是否映射到闪存以进行加载,是否映射到 RAM 以进行执行?  如果是、当您注意到 ITRAP 时、您能否检查 RAM 内容是否完整?

    您的应用中使用了什么 SYSCLK 和闪存等待状态配置?

    3、这可能不是 ECC 问题。  它可能是应用程序执行期间的 RAM 损坏。  但是、是的、我建议通过从 RAM 中执行一个简单的代码来检查整个闪存 ECC 的有效性(出于这个调试目的)。   

    谢谢、此致、
    Vamsi

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

    您好、Vamsi、

    感谢你的答复。

    对于您的问题:

    1. memset()是否映射到闪存以进行加载,是否映射到 RAM 以进行执行?  如果是、当您注意到 ITRAP 时、您能否检查 RAM 内容是否完整?

    memset()函数直接从闪存中执行、不会分配给 RAM。  

    您的应用中使用了什么 SYSCLK 和闪存等待状态配置?

    SYSCLK 为200MHz、FRDCNTL.RWAIT = 0x03。

    3、这可能不是 ECC 问题。  它可能是应用程序执行期间的 RAM 损坏。

    请进一步解释 RAM 损坏?

    谢谢、此致、

    肖恩

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

    您好、Shawn、

    RAM 损坏的一些原因 是 发生栈溢出、发生内存泄漏或使用未初始化的变量。 您是否有与引导加载程序或应用程序代码相关的任何警告?

    谢谢、

    查尔斯

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

    您好、Charles、

    非常感谢您的回复。 除了软件之外、是否存在可能导致这些现象的硬件或外部因素? 由于异常现象集中在少数电路板上、其他电路板不会出现此问题。 此外、当我反复使用故障电路板重新启动时、我只能进入 ITRAP。 大多数时候、它启动正常、因此它看起来不是一个纯粹的软件问题。

    谢谢、此致

    肖恩

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

    您好、Shawn、

    我不确定器件的硬件/外部因素、因此我必须邀请其他专家参与。 我们将在第二天内返回给您。

    谢谢、

    查尔斯

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

    您好、Shawn、

    是的、这也可能是硬件问题: 在您看到此问题的电路板上、如果您只是从 RAM 读取闪存、您是否总是遇到错误?

    您使用的工作频率和闪存等待状态组合是多少?   

    谢谢、此致、

    Vamsi

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

    您好、Shawn、

    由于我们在过去3周没有收到您的回复、我假设此问题已得到解决。

    我要关闭此帖子。  如果您有进一步的问题、请打开一个新的问题。

    谢谢、此致、
    Vamsi