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.

[参考译文] TMS320F28377D:在 RAM 中执行代码时、ISR 非法

Guru**** 2522770 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1185567/tms320f28377d-illegal-isr-when-executing-code-in-ram

器件型号:TMS320F28377D

您好!

我正在使用 CPU1和 CPU2来控制直流/直流转换器的复杂项目。  

CPU1专用于调节、而 CPU2专用于与系统的其他部分进行通信。

为了增加更多的调节周期执行、我决定转移 CPU1 CLA 上调节的代码。

这样、我就必须重写我的驱动程序(PWM)、以便为 CLA 进行编译。 它强制我更改两个处理器的 CMD 文件以定义 CLA 段(代码和程序)。

由于使用 LSRAM 执行 TI 函数(包括 CRC)、因此这些函数在此 RAM 中没有足够的空间来放置 CLA 以及代码和程序。

因此、我必须在 GSRAM 中映射 TI 函数.ebss .esysmem 和.cio。 完成此操作后、我在调试时观察到 CPU2上存在执行问题。  

在初始化期间、我使用 VCU CRC 模块、它进入非法 ISR 中断。

相同的代码以前运行良好。

请帮我解决这个问题吗?

我只能提供 少量的源代码以进行机密性。

谢谢、

Arthur

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

    尊敬的 Arthur:

    请注意、GSRAM 在 CPU1和 CPU2之间共享。 您可以为每个 GSRAM 分配一个所有者、并且只有所有者内核具有对其的写入访问权限。 所有权需要 由 CPU1内核分配。

    需要注意的另一点是 、.stack 段必须链接到低64K 的数据存储器中。 SP 是一个16位寄存器、不能访问超过64K 的地址。

    此致、

    Veena

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

    我想我通过在初始化过程开始时移动 CLA 存储器访问配置(LSMSEL 寄存器)来解决这个问题。