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.

[参考译文] TMS320F28379D:UC 在 CPU_2中复位时、会对 Fapi_setActiveFlashBank (Fapi_FlashBank0)进行函数调用

Guru**** 2595780 points
Other Parts Discussed in Thread: TMS320F28379D, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/668569/tms320f28379d-uc-resets-when-in-cpu_2-a-function-call-to-fapi_setactiveflashbank-fapi_flashbank0-is-made

器件型号:TMS320F28379D
主题中讨论的其他器件: C2000WARE

尊敬的 TI 支持工程师:

在我们已焊接在我们自己的板上的一个 TMS320F28379D 上、会发生以下情况:

当我们使用调试器运行软件时、不会发生复位、但如果没有调试器、一旦 CPU 2调用函数 Fapi_setActiveFlashBank (Fapi_FlashBank0)、就会进行复位。

这仅发生在该特殊电路板上。 在其他相同的电路板上、无论是否使用调试器、软件都能顺利运行。

问题是 、当我们使用和不使用调试器运行软件时、调用函数 Fapi_setActiveFlashBank (Fapi_FlashBank0)有何区别?

此致

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

    我们下周将邀请我们的闪存 API 专家对此做出响应。 他本周不在办公室。

    我不确定在连接或未连接调试器的情况下会发生这种情况的原因。

    您能否向我们解释一下您如何知道这是导致复位的函数? 复位可能是由于 NMI 和 NMI 安全装置所致。 您能否记录任何有用的信息以了解导致重置的原因?

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

    谢谢您的回复、

    让我更好地描述一下观察结果:调试是不可能的、因为当我们使用调试器跟踪 C 代码的执行时、这种现象不会发生。 由于电路板上有三个 LED (红色、绿色和蓝色)、我已检测到 C 代码、以便在 uC 开始执行 C 代码时点亮红色 LED、CPU 2应在指定的闪存 API 函数之后点亮绿色 LED。 结果是、当 CPU 通电时、红色 LED 以非常高的频率闪烁、绿色 LED 根本不会亮起。 当注释掉对命名函数的调用时、不会发生复位->红色 LED 保持亮起、绿色 LED 也保持亮起。

    我知道、这个问题只出现在一个具有上述 UC 的板上(目前)。 在同一设计的另一个电路板上、我测试了相同的 C 代码、没有任何问题。  当我在具有相同 uC 的评估板上测试相同的 C 代码时、也没有问题。 我以某种方式确信、这一特定的 Boar/UC 也会造成同样的损坏。 但是、尽管如此、我只想知道为什么当我使用调试器运行代码时会出现与输出代码相同的行为。

    此致、

    伊凡

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

    伊万

    请检查此主题: https://e2e.ti.com/support/microcontrollers/c2000/f/171/p/651633/2394043 

    在 F2837xD 闪存 API 参考指南(http://www.ti.com/lit/pdf/spnu629)中,请查看  部分中 Fapi_setActiveFlashBank()函数说明中提供的注释  3.2.1.   

    http://processors.wiki.ti.com/index.php/Flash_FAQ:在这个 wiki 中提供了更多解释,搜索“为什么在 F2837xD CPU2上调用 Fapi_setActiveFlashBank()时会发生 NMI (由于双位错误)?”

    谢谢、此致、

    Vamsi

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

    您好、Vamsi、

    谢谢、这解决了。

    但我仍然不明白在使用调试器和不使用调试器的情况下运行代码的区别。

    此致、

    伊凡

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

    很高兴它能为您提供帮助。 连接调试器时、GEL 文件禁用 ECC -因此您没有注意到这个问题。

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

    一个简单的问题:您是否不使用 C2000Ware 中的闪存初始化函数? 它启用闪存 ECC 检查、因此即使在调试器连接的情况下、您也应该看到 ECC 错误(复位)。 请注意、初始化函数配置闪存等待状态和闪存组的回退模式等 因此您需要使用它(除非您有自定义代码来执行相同的操作)。

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

    我要关闭此主题。 如果您还有其他问题、可以打开新主题。

    谢谢、此致、
    Vamsi