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.

[参考译文] CCS/TMS320F28375D:无法定义多个"CpuToCla1MsgRAM"变量

Guru**** 2422790 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/832219/ccs-tms320f28375d-can-not-define-more-than-one-cputocla1msgram-variable

器件型号:TMS320F28375D

工具/软件:Code Composer Studio

这允许我引用 CLA 中的最大变量:

//#pragma DATA_SECTION (min、"CpuToCla1MsgRAM");
#pragma DATA_SECTION (max、"CpuToCla1MsgRAM");
//int min;
int max; 

这将不允许我引用 CLA 中的任一变量:

#pragma DATA_SECTION (min、"CpuToCla1MsgRAM");
#pragma DATA_SECTION (max、"CpuToCla1MsgRAM");
int min;
int max; 

有什么想法为什么?

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

    您好!

    您在执行此操作时遇到任何编译器/链接器错误吗?

    此致、

    Veena

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

    您好、Veena、我不是。

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

    此外、这仅适用于 CLA、变量可在 CPU 上使用。 我使用其中一个示例中的这个函数来配置 CLA 存储器。

    void CLA_configClaMemory (void)// CLA_configClaMemory -配置 CLA 存储器段
    {
    extern uint32_t Cla1funcsRunStart、Cla1funcsLoadStart、Cla1funcsLoadSize;
    EALLOW;
    
    #ifdef _FLASH
    //
    //将代码从闪存复制到 RAM
    //
    memcpy (((uint32_t *)&Cla1funcsRunStart、(uint32_t *)&Cla1funcsLoadStart、
    (uint32_t)&Cla1funcsLoadSize);
    #endif //_flash
    
    //
    //初始化并等待 CLA1ToCPUMsgRAM
    //
    MemCfgRegs.MSGxINIT.bit.init_CLA1TOCPU = 1;
    while (MemCfgRegs.MSGxINITDONE.bit.INITDONE_CLA1TOCPU!= 1){};
    
    //
    //初始化并等待 CPUToCLA1MsgRAM
    //
    MemCfgRegs.MSGxINIT.bit.init_CPUTOCLA1 = 1;
    while (MemCfgRegs.MSGxINITDONE.bit.INITDONE_CPUTOCLA1!= 1){};
    
    //
    //选择 LS4RAM 和 LS5RAM 作为 CLA 的编程空间
    //首先将 CLA 配置为 LS4和 LS5的主器件,然后再配置
    //将空间设置为程序块
    //
    MemCfgRegs.LSxMSEL.bit.MSEL_LS4 = 1;
    MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS4 = 1;
    MemCfgRegs.LSxMSEL.bit.MSEL_LS5 = 1;
    MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS5 = 1;
    
    //
    //接下来将 LS0RAM 和 LS1RAM 配置为 CLA 的数据空间
    //首先将 CLA 配置为 LS0 (1)的主器件、然后
    //将空格设置为代码块
    //
    MemCfgRegs.LSxMSEL.bit.MSEL_LS0 = 1;
    MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS0 = 0;
    
    MemCfgRegs.LSxMSEL.bit.MSEL_LS1 = 1;
    MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS1 = 0;
    
    EDIS;
    } 

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

    嗯、我不想承认、但我在这个问题上花了几天时间、我才记得我几年前读到的关于 CLA 数据类型处理方式不同的东西。 我搜索了论坛、网址是 :https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/795567

    我将 int 切换到 uint16_t、一切都正常。 讽刺的是、我有一个从不使用 int 的个人政策、我只是从这里的一个示例中复制它、而没有考虑两次。