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:是否需要为 F2837xD C2000器件的 CLA 手动分配存储器?

Guru**** 2524550 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1001388/tms320f28377d-do-you-need-to-manually-assign-memory-to-cla-for-f2837xd-c2000-devices

器件型号:TMS320F28377D

您好!

我正在调试我的项目、我的代码正卡在一个为 CLA 分配存储器以用于数据和程序段的函数上。 函数代码如下所示:

空 CLA_configClaMemory (空)

//从 F28377D 复位中、没有内存资源分配给 CLA、因此需要在此处完成
EALLOW;

//设置 CPU1 <=>CLA1消息 RAM
MemCfgRegs.MSGxINIT.bit.init_CLA1TOCPU = 1;//初始化 CLA1ToCPUMsgRAM
while (MemCfgRegs.MSGxINITDONE.bit.INITDONE_CLA1TOCPU!= 1){};//等待直到完成

MemCfgRegs.MSGxINIT.bit.init_CPUTOCLA1 = 1;//初始化 CPUToCLA1MsgRAM
while (MemCfgRegs.MSGxINITDONE.bit.INITDONE_CPUTOCLA1!= 1){};//等待直到完成

//设置程序和数据存储器块供 CLA1使用
MemCfgRegs.LSxMSEL.bit.MSEL_LS4 = 1;//将 LS4 RAM 分配给 CLA1
MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS4 = 1;//将 LS4设置为程序存储器

MemCfgRegs.LSxMSEL.bit.MSEL_LS5 = 1;//将 LS5 RAM 分配给 CLA1
MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS5 = 1;//将 LS5设置为程序存储器

MemCfgRegs.LSxMSEL.bit.MSEL_LS0 = 1;//将 LS0 RAM 分配给 CLA1
MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS0 = 0;//将 LS0设置为数据存储器

MemCfgRegs.LSxMSEL.bit.MSEL_LS1 = 1;//将 LS1 RAM 分配给 CLA1
MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS1 = 0;//将 LS1设置为数据存储器

EDIS;

很明显、当尝试向 CLA 分配内存时、代码卡在 while ()循环中。 我不确定是哪种原因导致了问题-我现在可能会检查一下。

有什么想法可以说明它为什么会陷入这一循环? 手动为 CLA 分配存储器是一项要求、对吧?


祝你一切顺利、
Joel

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

    它似乎卡在这小段代码上:

    debugBefore=1;
    MemCfgRegs.LSxMSEL.bit.MSEL_LS5 = 1;//将 LS5 RAM 分配给 CLA1
    MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS5 = 1;//将 LS5设置为程序存储器
    debugAfter = 1;

    注意:最初 debugBefore 和 debugAfter 都为0、我将它们放置在代码周围、以查看代码在何处卡住。 我在这里的输出是 debugBefore=1和 debugAfter =0、所以很明显、这部分代码会导致这个问题! 您是否注意到任何错误!?

    Joel

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

    以下是链接器文件中的 CLA 部分:  

    /*由 JMH 添加的 CLA 部分*/
    Cla1Prog:> RAMLS4,page = 0
    CLADataLS0:> RAMLS0,PAGE = 0
    CLADataLS1:> RAMLS1,PAGE = 0

    Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW,page = 1.
    CpuToCla1MsgRAM:>CLA1_MSGRAMHIGH,PAGE = 1.

    Cpu1ToCpu2RAM:>CPU1TOCPU2RAM,page = 1.
    Cpu2ToCpu1RAM:>CPU2TOCPU1RAM,page = 1.

    CLAscratch:
    {*。obj (CLAscratch)
    。 += CLA_ScratchPad_size;
    *。obj (CLAscratch_end)}> RAMLS1、PAGE = 0

    暂存区:>RAMLS1,页=0
    .bss_cla:> RAMLS1,page = 0
    .const_cla:> RAMLS1,PAGE = 0

    是因为自从 Ive 使用 LS4以来、我实际上没有向 LS5提供任何东西。 这是有道理的、因为它没有卡在 LS4代码上...

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

    您好、Joel、

    是否能够发布完整的链接器命令文件? LS5是否分配给 C28使用的内容?

    谢谢、

    Ashwini