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/TMS320F28377S: ePWM SETUP

Part Number: TMS320F28377S


Tool/software: Code Composer Studio

Hello, Cottier

Thank you for your guidance.

We tested some registers of the ePWM module, including EPwmxRegs.TZFLG.all, EPwmxRges.TZCTL.all, EPwmxRges.DBCTL.all, EPwmxRges.AQCTL.all, EPwmxRges.AQCTLA.all, EPwmxRges.TBCTL.all, (x=1/2/3.The values of these registers are all expected. During the test, we found that when the ePWM module is not working properly, some function calls are not executed, especially the FLASH program calls the function running in RAM, or the RAM program calls the function running in FLASH. Is it a CMD file error? The following is the CMD file. Please help to see if there is any error or inappropriateness.

// The user must define CLA_C in the project linker settings if using the

// CLA C compiler

// Project Properties -> C2000 Linker -> Advanced Options -> Command File

// Preprocessing -> --define

#ifndef CLA_C

#define CLA_C

#endif //CLA_C

#ifdef CLA_C

// Define a size for the CLA scratchpad area that will be used

// by the CLA compiler for local symbols and temps

// Also force references to the special symbols that mark the

// scratchpad are.

CLA_SCRATCHPAD_SIZE = 0x100;

--undef_sym=__cla_scratchpad_end

--undef_sym=__cla_scratchpad_start

#endif //CLA_C

 MEMORY

{

PAGE 0 :

   /* BEGIN is used for the "boot to SARAM" bootloader mode   */

 

   BEGIN            : origin = 0x080000, length = 0x000002

   RAMM0            : origin = 0x000122, length = 0x0002DE

   RAMD0            : origin = 0x00B000, length = 0x000800

   RAMLS0_1         : origin = 0x008000, length = 0x001000

   RAMLS3_5     : origin = 0x009800, length = 0x001800

   //RAMLS3       : origin = 0x009800, length = 0x000800

   //RAMLS4       : origin = 0x00A000, length = 0x000800

   //RAMLS5           : origin = 0x00A800, length = 0x000800

   RAMGS14          : origin = 0x01A000, length = 0x001000

   RAMGS15          : origin = 0x01B000, length = 0x001000

   RESET            : origin = 0x3FFFC0, length = 0x000002

    /* Flash sectors */

   FLASHA           : origin = 0x080002, length = 0x001FFE /* on-chip Flash */

   FLASHB           : origin = 0x082000, length = 0x002000 /* on-chip Flash */

   FLASHC           : origin = 0x084000, length = 0x002000 /* on-chip Flash */

   FLASHD           : origin = 0x086000, length = 0x002000 /* on-chip Flash */

   FLASHE           : origin = 0x088000, length = 0x008000 /* on-chip Flash */

   FLASHF           : origin = 0x090000, length = 0x008000 /* on-chip Flash */

   FLASHG           : origin = 0x098000, length = 0x008000 /* on-chip Flash */

   FLASHH           : origin = 0x0A0000, length = 0x008000 /* on-chip Flash */

   FLASHI           : origin = 0x0A8000, length = 0x008000 /* on-chip Flash */

   FLASHJ           : origin = 0x0B0000, length = 0x008000 /* on-chip Flash */

   FLASHK           : origin = 0x0B8000, length = 0x002000 /* on-chip Flash */

   FLASHL           : origin = 0x0BA000, length = 0x002000 /* on-chip Flash */

   FLASHM           : origin = 0x0BC000, length = 0x002000 /* on-chip Flash */

   FLASHN           : origin = 0x0BE000, length = 0x002000 /* on-chip Flash */   

 

PAGE 1 :

    BOOT_RSVD        : origin = 0x000002, length = 0x000120     /* Part of M0, BOOT rom will use this for stack */

   RAMM1            : origin = 0x000400, length = 0x000400     /* on-chip RAM block M1 */

    //RAMLS0           : origin = 0x008000, length = 0x000800

   //RAMLS1           : origin = 0x008800, length = 0x000800

   RAMLS2       : origin = 0x009000, length = 0x000800

   //RAMLS3       : origin = 0x009800, length = 0x000800

   RAMGS0           : origin = 0x00C000, length = 0x001000

   RAMGS1           : origin = 0x00D000, length = 0x001000

   RAMGS2           : origin = 0x00E000, length = 0x001000

   RAMGS3           : origin = 0x00F000, length = 0x001000

   RAMGS4           : origin = 0x010000, length = 0x001000

   RAMGS5           : origin = 0x011000, length = 0x001000

   RAMGS6           : origin = 0x012000, length = 0x001000

   RAMGS7           : origin = 0x013000, length = 0x001000

   RAMGS8           : origin = 0x014000, length = 0x001000

   RAMGS9           : origin = 0x015000, length = 0x001000

   RAMGS10          : origin = 0x016000, length = 0x001000

   RAMGS11          : origin = 0x017000, length = 0x001000

   RAMGS12          : origin = 0x018000, length = 0x001000

   RAMGS13          : origin = 0x019000, length = 0x001000

    CPU2TOCPU1RAM    : origin = 0x03F800, length = 0x000400

   CPU1TOCPU2RAM    : origin = 0x03FC00, length = 0x000400

   CLA1_MSGRAMLOW   : origin = 0x001480, length = 0x000080

   CLA1_MSGRAMHIGH  : origin = 0x001500, length = 0x000080

}

 

SECTIONS

{

   /* Allocate program areas: */

   .cinit           : > FLASHE      PAGE = 0, ALIGN(4)

   .pinit           : > FLASHE,     PAGE = 0, ALIGN(4)

   .text            : >> FLASHF      PAGE = 0, ALIGN(4)

   codestart        : > BEGIN       PAGE = 0, ALIGN(4)

   ramfuncs         : LOAD = FLASHD,

                      RUN = RAMLS0_1,

                      LOAD_START(_RamfuncsLoadStart),

                      LOAD_SIZE(_RamfuncsLoadSize),

                      LOAD_END(_RamfuncsLoadEnd),

                      RUN_START(_RamfuncsRunStart),

                      RUN_SIZE(_RamfuncsRunSize),

                      RUN_END(_RamfuncsRunEnd),

                      PAGE = 0, ALIGN(4)

    /* Allocate uninitalized data sections: */

   .stack           : > RAMM1       PAGE = 1

   .ebss            : > RAMGS5      PAGE = 1

   .esysmem         : > RAMGS6      PAGE = 1

    /* Initalized sections go in Flash */

   .econst          : > FLASHB      PAGE = 0, ALIGN(4)

   .switch          : > FLASHB      PAGE = 0, ALIGN(4)

      .reset           : > RESET,     PAGE = 0, TYPE = DSECT /* not used, */

   Filter_RegsFile  : > RAMGS0,    PAGE = 1

   .sysmem          : > RAMGS7,    PAGE = 1

   .cio             : > RAMGS8,    PAGE = 1

   /* CLA specific sections */

   Cla1Prog         : LOAD = FLASHC,

                      RUN = RAMLS3_5,

                      LOAD_START(_Cla1funcsLoadStart),

                      LOAD_END(_Cla1funcsLoadEnd),

                      RUN_START(_Cla1funcsRunStart),

                      LOAD_SIZE(_Cla1funcsLoadSize),

                      PAGE = 0, ALIGN(4)

    CLADataLS0 : > RAMLS2, PAGE=1

    Cla1ToCpuMsgRAM  : > CLA1_MSGRAMLOW,   PAGE = 1

   CpuToCla1MsgRAM  : > CLA1_MSGRAMHIGH,  PAGE = 1

 #ifdef __TI_COMPILER_VERSION

   #if __TI_COMPILER_VERSION >= 15009000

    .TI.ramfunc : {} LOAD = FLASHD,

  RUN = RAMLS0_1,

  LOAD_START(_RamfuncsLoadStart),

  LOAD_SIZE(_RamfuncsLoadSize),

  LOAD_END(_RamfuncsLoadEnd),

  RUN_START(_RamfuncsRunStart),

  RUN_SIZE(_RamfuncsRunSize),

  RUN_END(_RamfuncsRunEnd),

  PAGE = 0, ALIGN(4)

   #endif

#endif

    /* The following section definition are for SDFM examples */

   Filter1_RegsFile : > RAMGS1, PAGE = 1, fill=0x1111

   Filter2_RegsFile : > RAMGS2, PAGE = 1, fill=0x2222

   Filter3_RegsFile : > RAMGS3, PAGE = 1, fill=0x3333

   Filter4_RegsFile : > RAMGS4, PAGE = 1, fill=0x4444

   #ifdef CLA_C

   /* CLA C compiler sections */

   //

   // Must be allocated to memory the CLA has write access to

   //

   CLAscratch       :

                     { *.obj(CLAscratch)

                     . += CLA_SCRATCHPAD_SIZE;

                     *.obj(CLAscratch_end) } >  RAMLS2,  PAGE = 1

    .scratchpad      : > RAMLS2,       PAGE = 1

   .bss_cla     : > RAMLS2,       PAGE = 1

   .const_cla     :  LOAD = FLASHC,

                       RUN = RAMLS2,

                       RUN_START(_Cla1ConstRunStart),

                       LOAD_START(_Cla1ConstLoadStart),

                       LOAD_SIZE(_Cla1ConstLoadSize),

                       PAGE = 1

#endif //CLA_C

    /* The following section definitions are required when using the IPC API Drivers */

    GROUP : > CPU1TOCPU2RAM, PAGE = 1

    {

        PUTBUFFER

        PUTWRITEIDX

        GETREADIDX

    }

 

    GROUP : > CPU2TOCPU1RAM, PAGE = 1

    {

        GETBUFFER :    TYPE = DSECT

        GETWRITEIDX :  TYPE = DSECT

        PUTREADIDX :   TYPE = DSECT

    }

}

 /*

//===========================================================================

// End of file.

//===========================================================================

*/

 

The following is PAGE 0 of the.MAP file:

         name            origin    length      used     unused   attr    fill

----------------------  --------  ---------  --------  --------  ----  --------

PAGE 0:

  RAMM0                 00000122   000002de  00000000  000002de  RWIX

  RAMLS0_1              00008000   00001000  00000870  00000790  RWIX

  RAMLS3_5              00009800   00001800  00001598  00000268  RWIX

  RAMD0                 0000b000   00000800  00000000  00000800  RWIX

  RAMGS14               0001a000   00001000  00000000  00001000  RWIX

  RAMGS15               0001b000   00001000  00000000  00001000  RWIX

  DCSM_OTP_Z1_LINKPOINT 00078000   0000000c  00000000  0000000c  RWIX

  DCSM_OTP_Z1_PSWDLOCK  00078010   00000004  00000000  00000004  RWIX

  DCSM_OTP_Z1_CRCLOCK   00078014   00000004  00000000  00000004  RWIX

  DCSM_OTP_Z1_BOOTCTRL  0007801c   00000004  00000000  00000004  RWIX

  DCSM_ZSEL_Z1_P0       00078020   00000010  00000000  00000010  RWIX

  DCSM_OTP_Z2_LINKPOINT 00078200   0000000c  00000000  0000000c  RWIX

  DCSM_OTP_Z2_GPREG     0007820c   00000004  00000000  00000004  RWIX

  DCSM_OTP_Z2_PSWDLOCK  00078210   00000004  00000000  00000004  RWIX

  DCSM_OTP_Z2_CRCLOCK   00078214   00000004  00000000  00000004  RWIX

  DCSM_OTP_Z2_BOOTCTRL  0007821c   00000004  00000000  00000004  RWIX

  DCSM_ZSEL_Z2_P0       00078220   00000010  00000000  00000010  RWIX

  BEGIN                 00080000   00000002  00000002  00000000  RWIX

  FLASHA                00080002   00001ffe  00000000  00001ffe  RWIX

  FLASHB                00082000   00002000  0000025d  00001da3  RWIX

  FLASHC                00084000   00002000  00001598  00000a68  RWIX

  FLASHD                00086000   00002000  00000870  00001790  RWIX

  FLASHE                00088000   00008000  0000001a  00007fe6  RWIX