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.

280049 cla内核 与.c核共用变量使用问题

Other Parts Discussed in Thread: TMS320F280049

定义一个数组变量,如何在在cla内核中和.c核中都能够使用?我以下操作,发现给数组变量赋值经常出现问题,会把给数组0赋值的变量莫名其妙的给数组1赋值,请问有什么问题?

CMD文件数据空间:

   RAMLS0           : origin = 0x008000, length = 0x000800

   DqDataRam        : > RAMLS0,     PAGE = 1

设置 RAMLS0 为cla内核使用数据空间

MemCfgRegs.LSxMSEL.bit.MSEL_LS0 = 1;
MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS0 = 0;

#pragma DATA_SECTION(fClaView, "DqDataRam ");
float fClaView[21];

在cla内核中给变量

fClaView[0] = 1001;

结果 fClaView[0]未等于1001  fClaView[0]等于1001,fClaView[0]还是等于0,fClaView[3]程序中从未使用过

  • 一.问题描述

    1.1平台描述

    使用TMS320F280049芯片 

    编译器平台ccs8.3.0  

    编译器版本:TI v18.1.4.LTS

    1.2 Cla内核CMD内存分配

              Cla核数据空间:

           RAMLS0_1         : origin = 0x008000, length = 0x001000

                RAMLS2_3         : origin = 0x009000, length = 0x001000

    Cla核程序空间:

       RAMLS4_5_6_7       : origin = 0x00A000, length = 0x002000

         程序空间寄存器配置:

        MemCfgRegs.LSxMSEL.bit.MSEL_LS4 = 1;

        MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS4 = 1;

        MemCfgRegs.LSxMSEL.bit.MSEL_LS5 = 1;

        MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS5 = 1;

        MemCfgRegs.LSxMSEL.bit.MSEL_LS6 = 1;

        MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS6 = 1;

        MemCfgRegs.LSxMSEL.bit.MSEL_LS7 = 1;

        MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS7 = 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;

        MemCfgRegs.LSxMSEL.bit.MSEL_LS2 = 1;

        MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS2 = 0;

        MemCfgRegs.LSxMSEL.bit.MSEL_LS3 = 1;

        MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS3 = 0;

    1.3问题描述

       在Cla内核中定义结构体变量

      Struct_SourceVector              strBypVoltageVector;

              在.c文件中给这个结构体变量的元素赋值:

                  strBypVoltageVector.phaseA         = 1;

                  strBypVoltageVector.alpha          = 2;

                  strBypVoltageVector.alphaPos       = 3;//strBypVoltageVector.phaseA;

                  strBypVoltageVector.beta            = 4;

                  strBypVoltageVector.betaPos        = 5;//strFifoOutputVoltAlpha.beforeOneFourthData;

             程序烧录并调试(通过SCI串口方式把DSP数据用电脑显示,用这种方式查看变量目前为止并未出现过错误,故可以排除通讯与显示造成的问题)

              但是发现变量strBypVoltageVector.alphaPos 和 strBypVoltageVector.betaPos的值并不等于3和5,而是等于0,通过Map文件往结构体strBypVoltageVector变量地址附近查找,发现strBypVoltageVector结构体变量地址000081b4上面的地址 fGridVoltAxisQFliterInteg1  00008186与fGridVoltAxisDFliterInteg1 00008188变量改变并等于3和5(这两个变量程序中从来没有用到), 

           具体结构体定义与相关变量地址如下:

    //电压数据结构体

    typedef struct

    {

        float phaseA;

        float phaseB;

        float phaseC;

        float alpha;

        float beta;

        float axisDpos;

        float axisQpos;

        float axisDneg;

        float axisQneg;

        float alphaPos;

        float betaPos;

        float alphaNeg;

        float betaNeg;

        float vectValuePos;

        float vectSinPos;

        float vectCosPos;

        float prevectSinPos;

        float prevectCosPos;

        float axisD;

        float axisQ;

        float axisDFliter;

        float axisQFliter;

    }Struct_SourceVector;           //电网数据结构

    //相关数据地址

    00008180     206 (00008180)     _fOutCurAxisDFliterInteg

    00008182     206 (00008180)     _fGridVoltAxisQFliterInteg

    00008184     206 (00008180)     _fGridVoltAxisDFliterInteg

    00008186     206 (00008180)     _fGridVoltAxisQFliterInteg1

    00008188     206 (00008180)     _fGridVoltAxisDFliterInteg1

    0000818a     206 (00008180)     _fOutRealPowerP

    0000818c     206 (00008180)     _fSelfAgeCurrSet

    0000818e     206 (00008180)     _fSelfAgeCurrAxisQSet

    00008190     206 (00008180)     _fSelfAgeCurrAxisDRef

    00008192     206 (00008180)     _fSelfAgeCurrAxisQRef

    00008194     206 (00008180)     _fSelfAgeLoopAxisDKpout

    00008196     206 (00008180)     _fSelfAgeLoopAxisDIng

    00008198     206 (00008180)     _fSelfAgeLoopAxisDOut

    0000819a     206 (00008180)     _fSelfAgeLoopAxisQKpout

    0000819c     206 (00008180)     _fSelfAgeLoopAxisQIng

    0000819e     206 (00008180)     _fSelfAgeLoopAxisQOut

    000081a0     206 (00008180)     _fSelfAgeLoopOutAxisD

    000081a2     206 (00008180)     _fSelfAgeLoopOutAxisQ

    000081a4     206 (00008180)     _fSelfAgeLoopOutAlpha

    000081a6     206 (00008180)     _fSelfAgeLoopOutBeta

    000081a8     206 (00008180)     _uiSelfAgingSoftCnt

    000081aa     206 (00008180)     _fSciVoltLoopKp

    000081ac     206 (00008180)     _fSciVoltLoopKi

    000081ae     206 (00008180)     _fSciCurrLoopKp

    000081b0     206 (00008180)     _fSciCurrLoopKi

    000081b2     206 (00008180)     _fSciFeedBackParam

    000081b4     206 (00008180)     _strBypVoltageVector

     

    000081e0     207 (000081c0)     _strGridVoltageVector

  • 一.问题描述

    1.1平台描述

    使用TMS320F280049芯片 

    编译器平台ccs8.3.0  

    编译器版本:TI v18.1.4.LTS

    1.2 Cla内核CMD内存分配

              Cla核数据空间:

           RAMLS0_1         : origin = 0x008000, length = 0x001000

                RAMLS2_3         : origin = 0x009000, length = 0x001000

    Cla核程序空间:

       RAMLS4_5_6_7       : origin = 0x00A000, length = 0x002000

         程序空间寄存器配置:

        MemCfgRegs.LSxMSEL.bit.MSEL_LS4 = 1;

        MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS4 = 1;

        MemCfgRegs.LSxMSEL.bit.MSEL_LS5 = 1;

        MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS5 = 1;

        MemCfgRegs.LSxMSEL.bit.MSEL_LS6 = 1;

        MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS6 = 1;

        MemCfgRegs.LSxMSEL.bit.MSEL_LS7 = 1;

        MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS7 = 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;

        MemCfgRegs.LSxMSEL.bit.MSEL_LS2 = 1;

        MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS2 = 0;

        MemCfgRegs.LSxMSEL.bit.MSEL_LS3 = 1;

        MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS3 = 0;

    1.3问题描述

       在Cla内核中定义结构体变量

      Struct_SourceVector              strBypVoltageVector;

              在.c文件中给这个结构体变量的元素赋值:

                  strBypVoltageVector.phaseA         = 1;

                  strBypVoltageVector.alpha          = 2;

                  strBypVoltageVector.alphaPos       = 3;//strBypVoltageVector.phaseA;

                  strBypVoltageVector.beta            = 4;

                  strBypVoltageVector.betaPos        = 5;//strFifoOutputVoltAlpha.beforeOneFourthData;

             程序烧录并调试(通过SCI串口方式把DSP数据用电脑显示,用这种方式查看变量目前为止并未出现过错误,故可以排除通讯与显示造成的问题)

              但是发现变量strBypVoltageVector.alphaPos 和 strBypVoltageVector.betaPos的值并不等于3和5,而是等于0,通过Map文件往结构体strBypVoltageVector变量地址附近查找,发现strBypVoltageVector结构体变量地址000081b4上面的地址 fGridVoltAxisQFliterInteg1  00008186与fGridVoltAxisDFliterInteg1 00008188变量改变并等于3和5(这两个变量程序中从来没有用到), 

           具体结构体定义与相关变量地址如下:

    //电压数据结构体

    typedef struct

    {

        float phaseA;

        float phaseB;

        float phaseC;

        float alpha;

        float beta;

        float axisDpos;

        float axisQpos;

        float axisDneg;

        float axisQneg;

        float alphaPos;

        float betaPos;

        float alphaNeg;

        float betaNeg;

        float vectValuePos;

        float vectSinPos;

        float vectCosPos;

        float prevectSinPos;

        float prevectCosPos;

        float axisD;

        float axisQ;

        float axisDFliter;

        float axisQFliter;

    }Struct_SourceVector;           //电网数据结构

    //相关数据地址

    00008180     206 (00008180)     _fOutCurAxisDFliterInteg

    00008182     206 (00008180)     _fGridVoltAxisQFliterInteg

    00008184     206 (00008180)     _fGridVoltAxisDFliterInteg

    00008186     206 (00008180)     _fGridVoltAxisQFliterInteg1

    00008188     206 (00008180)     _fGridVoltAxisDFliterInteg1

    0000818a     206 (00008180)     _fOutRealPowerP

    0000818c     206 (00008180)     _fSelfAgeCurrSet

    0000818e     206 (00008180)     _fSelfAgeCurrAxisQSet

    00008190     206 (00008180)     _fSelfAgeCurrAxisDRef

    00008192     206 (00008180)     _fSelfAgeCurrAxisQRef

    00008194     206 (00008180)     _fSelfAgeLoopAxisDKpout

    00008196     206 (00008180)     _fSelfAgeLoopAxisDIng

    00008198     206 (00008180)     _fSelfAgeLoopAxisDOut

    0000819a     206 (00008180)     _fSelfAgeLoopAxisQKpout

    0000819c     206 (00008180)     _fSelfAgeLoopAxisQIng

    0000819e     206 (00008180)     _fSelfAgeLoopAxisQOut

    000081a0     206 (00008180)     _fSelfAgeLoopOutAxisD

    000081a2     206 (00008180)     _fSelfAgeLoopOutAxisQ

    000081a4     206 (00008180)     _fSelfAgeLoopOutAlpha

    000081a6     206 (00008180)     _fSelfAgeLoopOutBeta

    000081a8     206 (00008180)     _uiSelfAgingSoftCnt

    000081aa     206 (00008180)     _fSciVoltLoopKp

    000081ac     206 (00008180)     _fSciVoltLoopKi

    000081ae     206 (00008180)     _fSciCurrLoopKp

    000081b0     206 (00008180)     _fSciCurrLoopKi

    000081b2     206 (00008180)     _fSciFeedBackParam

    000081b4     206 (00008180)     _strBypVoltageVector

     

    000081e0     207 (000081c0)     _strGridVoltageVector