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.

[参考译文] TMS320F28P650DK:SysConfig 无法正确地分配 RAMLS8和 RAMLS9中的 CLA 程序。

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1401491/tms320f28p650dk-the-sysconfig-can-not-assigns-cla-program-in-ramls8-and-ramls9-correctlly

器件型号:TMS320F28P650DK
主题中讨论的其他器件:SysConfigC2000WARE

工具与软件:

您好、 尊重 TI 的 SysConfig 团队。

  我在使用 SysConfig 在 RAMLS8和 RAMLS9中分配 CLA 程序时发现一个错误、因为在.cmd 文件中、我将 RAMLS8和 RAMLS9的值设置为0x04000和0x06000 (如图1所示)。 表示。 但 SysConfig 自动生成的.c 文件无法  在正确的地址中分配程序、因为 CPU 和 CLA 关于 RAMLS8和 RAMLS9的存储器映射不同、如图2所示。 那么、 您能修复这个错误吗?

谢谢。

宋明波

  

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

    您好!

    用户需要使用 CPU 地址进行加载、使用 CLA 地址进行运行。 您是否尝试过运行生成的代码并发现了问题。  

    Vivek Singh

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

    您好、Vivek。

    是的、我确信是这样。 我曾尝试使用 SysConfig 配置 CLA、 无论 CLA 存储器配置还是 CLA 任务地址寄存器都是如此。 SysConfig 生成的代码存在此问题。 由于 SysConfig 会自动生成配置代码、因此该工具不建议开发人员修改代码、因此我会尝试其他方法来解决此问题。 首先、取消使用 SysConfig 来配置 CLA、但手动、在 memcpy 从闪存组到 RAMLS8和 RAMLS9的 CLA 任务代码之前、我让这两个 RAM 从 CLA 返回 CPU 的 W/R 访问(因为 SysConfig 的代码在用户配置代码之前运行、此时 W/R 访问为 CLA)、然后 memcpy 形成加载运行、否则 CPU 将无法成功运行。 如以下 代码段所示。  但我仍然希望能够仅对所有器件 配置使用 SysConfig。

    谢谢。

    宋明波

    空 cla_init()

    #ifdef _flash
    #ifndef CMDTOOL //未使用链接器命令工具

    extern Uint32_t Cla1ProgRunStart、Cla1ProgLoadStart、Cla1ProgLoadSize;
    extern Uint32_t Cla1ConstRunStart、Cla1ConstLoadStart、Cla1ConstLoadSize;

    //
    //选择 LS8RAM 和 LS9RAM 作为 CLA 的编程空间
    //首先将 CLA 配置为 LS8、LS9的控制器、然后
    //将空间设置为程序块
    //
    MemCfg_setLSRAMControllerSel (MEMCFG_SEC_LS8、MEMCFG_LSRAMCONTROLLER_CPU_ONLY);
    MemCfg_setCLAMemType (MEMCFG_SECT_LS8、MEMCFG_CLA_MEM_PROGRAM);

    MemCfg_setLSRAMControllerSel (MEMCFG_SEC_LS9、MEMCFG_LSRAMCONTROLLER_CPU_ONLY);
    MemCfg_setCLAMemType (MEMCFG_SECT_LS9、MEMCFG_CLA_MEM_PROGRAM);

    //
    //在配置之前将程序和常量从闪存复制到 RAM
    // CLA
    //
    memcpy ((uint32_t *)((uint32_t)&Cla1ProgRunStart +(0x1E000U))、(uint32_t *)&Cla1ProgLoadStart、
    (uint32_t)&Cla1ProgLoadSize);
    memcpy ((uint32_t *)&Cla1ConstRunStart、(uint32_t *)&Cla1ConstLoadStart、
    (uint32_t)&Cla1ConstLoadSize );

    //
    //选择 LS8RAM 和 LS9RAM 作为 CLA 的编程空间
    //首先将 CLA 配置为 LS8、LS9的控制器、然后
    //将空间设置为程序块
    //
    MemCfg_setLSRAMControllerSel (MEMCFG_SEC_LS8、MEMCFG_LSRAMCONTROLLER_CPU_CLA1);
    MemCfg_setCLAMemType (MEMCFG_SECT_LS8、MEMCFG_CLA_MEM_PROGRAM);

    MemCfg_setLSRAMControllerSel (MEMCFG_SEC_LS9、MEMCFG_LSRAMCONTROLLER_CPU_CLA1);
    MemCfg_setCLAMemType (MEMCFG_SECT_LS9、MEMCFG_CLA_MEM_PROGRAM);


    #endif // CMDTOOL
    #endif //_flash

    CLAInvCtrlLaw_init();
    }

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

    好的、谢谢。 我们将检查此内容并返回给您。

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

    您好!

    我们的软件团队已确认这是已知问题、他们将在下一个版本中修复。 意味着、您可以参考 C2000Ware 中的示例(C2000Ware\driverlib\f28p65x\examples\c28x\cla\cla_asin_LS8_9)进行任何手动更改。

    Vivek Singh

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

    您好、Vivek。

    非常感谢。 期待您的下一个发布版本。

    宋明波