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/TMS320F28377D: Problems with debugging example program epwm_updown_aq_cpu01

Part Number: TMS320F28377D
Other Parts Discussed in Thread: C2000WARE

Tool/software: Code Composer Studio

Hi all,

I am facing the following trouble with debugging the example program epwm_updown_aq_cpu01 for delfino F28377D device. Can you please tell me why am I having this?

Regards

Haque

<Linking>

"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 7: error #10263:
BEGIN memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 7: error #10264:
BEGIN memory range overlaps existing memory range BEGIN
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 8: error #10263:
RAMM0 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 8: error #10264:
RAMM0 memory range overlaps existing memory range RAMM0
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 9: error #10263:
RAMD0 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 9: error #10264:
RAMD0 memory range overlaps existing memory range RAMD0
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 10: error #10263:
RAMLS0 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 10: error #10264:
RAMLS0 memory range overlaps existing memory range RAMLS0
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 11: error #10263:
RAMLS1 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 11: error #10264:
RAMLS1 memory range overlaps existing memory range RAMLS1
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 12: error #10263:
RAMLS2 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 12: error #10264:
RAMLS2 memory range overlaps existing memory range RAMLS2
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 13: error #10263:
RAMLS3 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 13: error #10264:
RAMLS3 memory range overlaps existing memory range RAMLS3
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 14: error #10263:
RAMLS4 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 14: error #10264:
RAMLS4 memory range overlaps existing memory range RAMLS4
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 15: error #10263:
RESET memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 15: error #10264:
RESET memory range overlaps existing memory range RESET
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 19: error #10263:
BOOT_RSVD memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 19: error #10264:
BOOT_RSVD memory range overlaps existing memory range BOOT_RSVD
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 20: error #10263:
RAMM1 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 20: error #10264:
RAMM1 memory range overlaps existing memory range RAMM1
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 21: error #10263:
RAMD1 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 21: error #10264:
RAMD1 memory range overlaps existing memory range RAMD1
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 23: error #10263:
RAMLS5 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 23: error #10264:
RAMLS5 memory range overlaps existing memory range RAMLS5
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 25: error #10263:
RAMGS0 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 25: error #10264:
RAMGS0 memory range overlaps existing memory range RAMGS0
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 26: error #10263:
RAMGS1 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 26: error #10264:
RAMGS1 memory range overlaps existing memory range RAMGS1
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 26: error #10264:
RAMGS1 memory range overlaps existing memory range RAMGS2
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 28: error #10263:
RAMGS3 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 28: error #10264:
RAMGS3 memory range overlaps existing memory range RAMGS3
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 28: error #10264:
RAMGS3 memory range overlaps existing memory range RAMGS4
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 28: error #10264:
RAMGS3 memory range overlaps existing memory range RAMGS5
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 28: error #10264:
RAMGS3 memory range overlaps existing memory range RAMGS6
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 28: error #10264:
RAMGS3 memory range overlaps existing memory range RAMGS7
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 28: error #10264:
RAMGS3 memory range overlaps existing memory range RAMGS8
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 28: error #10264:
RAMGS3 memory range overlaps existing memory range RAMGS9
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 28: error #10264:
RAMGS3 memory range overlaps existing memory range RAMGS10
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 36: error #10263:
RAMGS11 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 36: error #10264:
RAMGS11 memory range overlaps existing memory range RAMGS11
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 37: error #10263:
RAMGS12 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 37: error #10264:
RAMGS12 memory range overlaps existing memory range RAMGS12
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 38: error #10263:
RAMGS13 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 38: error #10264:
RAMGS13 memory range overlaps existing memory range RAMGS13
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 39: error #10263:
RAMGS14 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 39: error #10264:
RAMGS14 memory range overlaps existing memory range RAMGS14
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 40: error #10263:
RAMGS15 memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 40: error #10264:
RAMGS15 memory range overlaps existing memory range RAMGS15
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 42: error #10263:
CPU2TOCPU1RAM memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 42: error #10264:
CPU2TOCPU1RAM memory range overlaps existing memory range CPU2TOCPU1RAM
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 43: error #10263:
CPU1TOCPU2RAM memory range has already been specified
"C:/ti/C2000Ware_1_00_03_00_Software/device_support/f2837xd/common/cmd/2837xD_RAM_lnk_cpu1.cmd", line 43: error #10264:
CPU1TOCPU2RAM memory range overlaps existing memory range CPU1TOCPU2RAM
"../2837x_RAM_lnk_cpu1.cmd", line 54: error #10099-D: program will not fit into
available memory. placement with alignment/blocking fails for section
".TI.ramfunc" size 0x4 page 0. Available memory ranges:
RAMM0 size: 0x2de unused: 0x0 max hole: 0x0
error #10010: errors encountered during linking; "epwm_updown_aq_cpu01.out" not
built

  • Haque,

    When I see a series of messages about overlapping memory ranges that usually means that there is more than 1 linker command file in the project.  I just imported this example from Resource Explorer and it builds fine.  It has 2 linker command files in it but one is excluded.

    You can see the 2837xD_FLASH_lnk_cpu1.cmd file has a line through it.  Did you happen to change that file to not be excluded?  Do you see more than 1 linker command file in your project?

    Regards,

    John

  • Hi John,

    Thank you for your response. Yes exactly that happens and I found two same linker file was in operation at the same time. 

    This helps me a lot and resolve my issue.

    However I am writing code for generating three phase shifted PWM signals using EPWM1, EPWM2 and EPWM3 channels like this.   

    I have wriiten the following code but I did not see any signals from the EPWM channels. Could you please help me finding what wrong am I doing with the code?

    main.c


    #include "F28x_Project.h"
    //#include "adc_new.h"
    #include "pwm.h"


    int main (void)
    {

    InitSysCtrl();

    pwm_init();
    // ADC_init();


    while (1) {
    asm ("NOP");
    }

    return (1);
    }

    pwm.c

    #include "pwm.h"
    //#include "modulator_instance.h"
    //#include "adc_new.h"
    //#include "PLL.h"
    //#include "measurement.h"
    //unsigned int comp;

    float duty_p1;
    float duty_p2;
    float duty_p3;

    void pwm_init()
    {
    //enable PWM modules+ for three converter

    CpuSysRegs.PCLKCR2.bit.EPWM1 = 1;
    CpuSysRegs.PCLKCR2.bit.EPWM2 = 1;
    CpuSysRegs.PCLKCR2.bit.EPWM3 = 1;

    //Configure output pins for three converter

    InitEPwm1Gpio();
    InitEPwm2Gpio();
    InitEPwm3Gpio();


    //configure interrupt
    DINT;

    InitPieCtrl();

    // Disable CPU interrupts and clear all CPU interrupt flags:
    IER = 0x0000;
    IFR = 0x0000;

    InitPieVectTable();

    EALLOW;
    PieVectTable.EPWM1_INT = &pwm_interrupt;
    EDIS; // This is needed to disable write to EALLOW protected registers

    //setup PWM channels...
    EALLOW;
    CpuSysRegs.PCLKCR0.bit.TBCLKSYNC =0;
    EDIS;

    configure_pwm1();
    configure_pwm2();
    configure_pwm3();


    EALLOW;
    CpuSysRegs.PCLKCR0.bit.TBCLKSYNC =1;
    EDIS;

    // enable PIE interrupts
    IER |= M_INT3;
    PieCtrlRegs.PIEIER3.bit.INTx1 = 1;

    // configure a pin for interrupt usage...
    EALLOW;
    GpioCtrlRegs.GPADIR.bit.GPIO13 = 1;
    EDIS;

    // enable interrupts, openloop will start...
    EINT; // Enable Global interrupt INTM
    ERTM; // Enable Global realtime interrupt DBGM


    }

    void configure_pwm1()
    {
    EPwm1Regs.TBPRD = 1250; // Set timer period
    EPwm1Regs.TBPHS.bit.TBPHS = 0x0000; // Phase is 0
    EPwm1Regs.TBCTR = 0x0000; // Clear counter

    // Setup TBCLK
    EPwm1Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up
    EPwm1Regs.TBCTL.bit.PHSEN = TB_DISABLE; // Disable phase loading
    EPwm1Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
    EPwm1Regs.TBCTL.bit.CLKDIV = TB_DIV2;

    EPwm1Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Load registers every ZERO
    EPwm1Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm1Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    EPwm1Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;

    }

    void configure_pwm2()
    {
    EPwm2Regs.TBPRD = 1250; // Set timer period
    EPwm2Regs.TBPHS.bit.TBPHS = 0x009C; // Phase is 45 degree (TBPHS 156)
    EPwm2Regs.TBCTR = 0x0000; // Clear counter

    // Setup TBCLK
    EPwm2Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up
    EPwm2Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Enable phase loading
    EPwm2Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
    EPwm2Regs.TBCTL.bit.CLKDIV = TB_DIV2;

    EPwm2Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Load registers every ZERO
    EPwm2Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm2Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    EPwm2Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;


    }

    void configure_pwm3()
    {
    EPwm3Regs.TBPRD = 1250; // Set timer period
    EPwm3Regs.TBPHS.bit.TBPHS = 0x0138; // Phase is 90 degree (TBPHS 312)
    EPwm3Regs.TBCTR = 0x0000; // Clear counter

    // Setup TBCLK
    EPwm3Regs.TBCTL.bit.CTRMODE = TB_COUNT_UPDOWN; // Count up
    EPwm3Regs.TBCTL.bit.PHSEN = TB_ENABLE; // Enable phase loading
    EPwm3Regs.TBCTL.bit.HSPCLKDIV = TB_DIV1; // Clock ratio to SYSCLKOUT
    EPwm3Regs.TBCTL.bit.CLKDIV = TB_DIV2;

    EPwm3Regs.CMPCTL.bit.SHDWAMODE = CC_SHADOW; // Load registers every ZERO
    EPwm3Regs.CMPCTL.bit.SHDWBMODE = CC_SHADOW;
    EPwm3Regs.CMPCTL.bit.LOADAMODE = CC_CTR_ZERO;
    EPwm3Regs.CMPCTL.bit.LOADBMODE = CC_CTR_ZERO;


    }

    __interrupt void pwm_interrupt (void)
    {


    GpioDataRegs.GPASET.bit.GPIO13 = 1;

    // doall measurement()
    // pll tick
    // series volt reg tick
    // shunt reg tick
    // dc bus reg tick

    //set duty cycles for series converter
    duty_p1 = (float)PWM_PERIOD / 2;
    EPwm1Regs.CMPA.bit.CMPA = (int) duty_p1;
    EPwm1Regs.CMPB.bit.CMPB = (int) duty_p1;

    // Set actions
    EPwm1Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A on Zero
    EPwm1Regs.AQCTLA.bit.CAD = AQ_CLEAR;

    EPwm1Regs.AQCTLB.bit.CAU = AQ_CLEAR; // Set PWM1B on Zero
    EPwm1Regs.AQCTLB.bit.CAD = AQ_SET;


    duty_p2 = (float)PWM_PERIOD / 2;
    EPwm2Regs.CMPA.bit.CMPA = (int) duty_p2;
    EPwm2Regs.CMPB.bit.CMPB = (int) duty_p2;

    // Set actions
    EPwm2Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A on Zero
    EPwm2Regs.AQCTLA.bit.CAD = AQ_CLEAR;

    EPwm2Regs.AQCTLB.bit.CAU = AQ_CLEAR; // Set PWM1A on Zero
    EPwm2Regs.AQCTLB.bit.CAD = AQ_SET;


    duty_p3 = (float)PWM_PERIOD / 2;
    EPwm3Regs.CMPA.bit.CMPA = (int) duty_p3;
    EPwm3Regs.CMPB.bit.CMPB = (int) duty_p3;

    // Set actions
    EPwm3Regs.AQCTLA.bit.CAU = AQ_SET; // Set PWM1A on Zero
    EPwm3Regs.AQCTLA.bit.CAD = AQ_CLEAR;

    EPwm3Regs.AQCTLB.bit.CAU = AQ_CLEAR; // Set PWM1B on Zero
    EPwm3Regs.AQCTLB.bit.CAD = AQ_SET;

    EPwm1Regs.ETCLR.bit.INT = 1;
    PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;

    GpioDataRegs.GPACLEAR.bit.GPIO13 = 1;

    }

    pwm.h

    #ifndef PWM_H_
    #define PWM_H_


    #include "F28x_Project.h"
    //#include "sine_modulator.h"

    #define PWM_PERIOD 1250
    extern float duty_p1;
    extern float duty_p2;
    extern float duty_p3;

    void pwm_init();

    // PWM 1~3 for three converters
    void configure_pwm1();
    void configure_pwm2();
    void configure_pwm3();

    __interrupt void pwm_interrupt (void);


    #endif /* PWM_H_ */

    I would be glad if anyone of you can help me with this issue.

    Regards

    Haque

  • Haque,

    Unfortunately that is beyond my expertise.  If you post in the C2000 forum here: https://e2e.ti.com/support/microcontrollers/c2000/

    They will be able to assist.

    Regards,

    John