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:CLA 调试和 MPC 越界

Guru**** 2466550 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1491057/tms320f28379d-cla-debugging-and-mpc-out-of-bounds

器件型号:TMS320F28379D

工具与软件:

你好。



我正在将 f28379D 的一些单核代码修改为利用 CLA 的多核设计。 我当前正在调试由 ISR (在 CPU2中)触发用于 ADC EOC 中断的 CLA 任务。   


我能够成功调试这两个内核、并且我正在使用此处提到的步骤(CCS/TMS320F28377S:如何调试 CLA 代码- C2000微控制器论坛- C2000 ︎ 微控制器- TI E2E 支持论坛)调试我的 CLA 代码。

而任务似乎正确触发(第一次) n。 在 CCS 上点击"resume"不会导致 CLA 继续、并使任务重新触发并运行到`mdebugstop`。 而是跳转到下一条指令。 这会继续超出任务的范围、因为 MPC 每个周期都会递增。 我想知道是否有一个诊断为什么这可能发生。  


在 CPU2被 CPU1唤醒后、我正在从 CPU2正确地初始化 CLA 和任务(据我所知)、并对外设所有权进行一些检查(我已验证其正确)。


此致!
Prakhar

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

    尊敬的 Prakhar:  

    您能否确认您是否已经执行了 CLA 用户指南的调试提示一节中详述的步骤:

     https://software-dl.ti.com/C2000/docs/cla_software_dev_guide/debugging.html 

    此致、

    Ozino

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

    嗨、Ozino、是的、我有。  


    配置好变量。 我注意到一个奇怪的问题、这可能表明我的内存配置存在问题。



    我的内存配置如下:

    -闪存配置
    - LS4是 CLA 的数据存储器
    - LS5是 CLA 的程序内存
    我已经验证变量和任务代码已加载到调试器中的正确内存块。 claprog 正被正确地从闪存复制到 RAM 中。

    但是、我没有 使用 memcfg.h 中的 API 配置 LSXRAM 块  现在、我在 CPU2子系统中启用 CLA 之前包含以下说明

    ```μ A
       //为 CLA 配置内存
       {
         MemCfg_setLSRAMControllerSel (MEMCFG_SEC_LS0、MEMCFG_LSRAMCONTROLLER_CPU_ONLY);
         MemCfg_setLSRAMControllerSel (MEMCFG_SEC_LS1、MEMCFG_LSRAMCONTROLLER_CPU_ONLY);
         MemCfg_setLSRAMControllerSel (MEMCFG_SEC_LS2、MEMCFG_LSRAMCONTROLLER_CPU_ONLY);
         MemCfg_setLSRAMControllerSel (MEMCFG_SEC_LS3、MEMCFG_LSRAMCONTROLLER_CPU_ONLY);
         MemCfg_setLSRAMControllerSel (MEMCFG_SEC_LS4、MEMCFG_LSRAMCONTROLLER_CPU_CLA1);
         MemCfg_setLSRAMControllerSel (MEMCFG_SEC_LS5、MEMCFG_LSRAMCONTROLLER_CPU_CLA1);
         
       
         MemCfg_setCLAMemType (MEMCFG_SECT_LS4、MEMCFG_CLA_MEM_DATA);
         MemCfg_setCLAMemType (MEMCFG_SECT_LS5、MEMCFG_CLA_MEM_PROGRAM); //--注--
       }

    ```μ A


    这导致我的 CLA 尝试在0x0B00处执行代码-就在 LS5之后-我的 CLA 程序存储器结束。


    删除最后一行
    ```μ A

          MemCfg_setCLAMemType (MEMCFG_SECT_LS5、MEMCFG_CLA_MEM_PROGRAM); //--注--
    ```μ A

    似乎可以解决此问题、因为调试器现在在 LS5中显示 MPC。 我似乎能够正确地逐步完成任务。 任务中的变量未被写入(我正在链接器脚本中分配暂存区和 CLA BSS -被分配给 LS4数据存储器)。 我怀疑这是由于未正确配置程序存储器造成的。  


    请告诉我可以执行哪些进一步的调试步骤来找出问题
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果 此信息有用-当我运行时
    ```μ A

          MemCfg_setCLAMemType (MEMCFG_SECT_LS5、MEMCFG_CLA_MEM_PROGRAM); //--注--
    ```μ A

    我能够查看 LSxMSEL 和 LSxCLAPGM 寄存器。 对于 MSEL_LS5和 CLAPGM_LS5、它们看起来设置为1、而对于其余的器件、它们设置为0
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我尝试在启用 CLA 及其任务后执行内存配置(而不是以前那样做)-似乎解决了这个问题。 我不知道为什么会这样。

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

    尊敬的 Prakhar:

    很高兴看到它可以正常工作。

    请注意、启用 CLA 的顺序正确。 您可以查看此文档、了解如何在现有示例中启用 CLA。

    /cfs-file/__key/communityserver-discussions-components-files/171/CLAProjectStructureUG.pdf

    CLA 中的用户指南介绍了需要配置存储器的顺序。

    此致、

    Ozino