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.

[参考译文] TMS320F28377S:CLA 在任务后不停止执行、变量"change"请勿更改。

Guru**** 2483895 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/768068/tms320f28377s-cla-does-not-stop-executing-after-task-variables-changed-do-not-change

器件型号:TMS320F28377S

你好。 首先、我认为我遇到的问题与 此主题类似、但他们的解决方案似乎对我没有帮助。

那么、有关我的项目的信息。 我会尽量做到彻底。

下面是我的链接器 CMD 文件的设置方式。

根据 F28377S 数据表第6.3.1节的下表6-1、我应该处于 CLA 的访问范围内。

以下是主循环的相关部分:

和 CLA_configClaMemory CLA_initCpu1Cla1这两个函数

我最初不是初始化 RAM 块、但我想尝试一下它是否起作用。

我还跟着 CLA 实践技术讲座、尝试消除访问违规问题。

下面看一下我的代码、标题的相关部分:

我的.c 文件的相关部分

我的.cla 文件的相关部分

我注意到的一件事是、现在我正在初始化 RAM、但我似乎没有在_mdebugstop 处停止、而是在以前发生过这种情况。 我也尝试过使用和不使用 asm (" MSTOP ")的函数、它看起来没有什么不同。

从我的地图上看,似乎事物都是他们应该去的地方。 我知道我的 Prog RAM 很大、尽管我现在几乎没有使用任何一个。 我已经评论了我的绝大多数程序代码、以处理这个(应该是)简单的问题。  

现在、通过全面了解我的代码的结构、我们可以了解我面临的问题。 在不进行 RAM 初始化的情况下运行时、我几乎立即进入非法地址空间、完全绕过_mdebugstop。 在运行 RAM 初始化时也会发生同样的情况。

在创建这些屏幕截图时、我还注意到 CLA 上有一个寄存器 MMEMCFG、C28和编译器似乎无法访问该寄存器。 在 TRM 和数据表的修订版 R 中、它似乎也没有记录。 我不确定如何编辑这些内容。 我尝试了与 此类似的解决方案 (我知道它用于不同的处理器、但我想我会尝试它)、没有骰子。

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

    首先、您要在将代码加载到 RAM 后对其进行初始化。 因此、您的代码不再驻留在 CLA 程序 RAM 中。

    第二、您正在加载到闪存中、因此您需要在项目中定义_flash、以便调用两个 memcpy()函数调用;一个用于.TI.ramfunc、另一个用于 CLA1Prog 段。

    请删除 LS 存储器的初始化、仅对 msgRAM 执行此操作、并确保为 memcpy()函数定义了_flash。

    此致、
    SAL