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.

[参考译文] TMS320F28379S:在运行 XDS200调试时、上的代码执行正常、但在未插入 XDS200的情况下执行某些代码时挂起

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1124270/tms320f28379s-code-execution-on-is-fine-when-running-with-xds200-debug-but-hangs-when-certain-code-executes-without-xds200-plugged-in

器件型号:TMS320F28379S

尊敬的 E2E 论坛:

我在数字电源控制应用中使用 TMS320F28379S、遇到了一个奇怪的问题。

我有一个以50kHz 运行的 ISR、它使用驱动程序库函数(如 DCL_runPID_C1)执行控制律的代码、以形成 PID 控制。 一个外部 CANBUS 命令将此控制打开。 当我让系统从 XDS200调试器运行时、这一切都正常。  

当我移除调试器并重启电源时、系统唤醒并运行。 但是、现在当我发送 CANBUS 命令来开启时、代码会挂起。

我已经将这一问题缩小到 ISR 中的代码而不是 CANBUS 中的代码。 如果我注释掉 ISR 中的代码、则仍然会接收到 CANBUS 命令、ISR 会执行、但不会崩溃。

我感觉代码中有一些内容、这意味着当我们在没有调试器的情况下运行时、ISR 中的代码执行速度要慢得多、并且无法在中断再次触发之前在所需的20us 内完成。  

连接的调试器是否会导致一些代码从不同类型的片上存储器中执行。 这可能是存储器链接器文件将代码放入错误的存储器段中的问题吗?

也可以接受其他想法、但这里的关键是、在连接和不连接 XDS200的情况下、程序执行会有所不同。 下面是在 ISR 内部激活的代码抓取、这会导致问题:-

谢谢、

Iain