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/F28M35H52C: Ethernet boot doesn't work

Part Number: F28M35H52C


Tool/software: Code Composer Studio

Hi,

I generated the code for m3 core using RAM configuration. The program works perfect in the debug mode. When I load the .bin file generated using LMFlash, it doesn't work. But I can see that C2000 core is started because I put a code in its flash and it blinks when I load the program by Ethernet port. It's like some modules or configurations doesn't work in Ethernet boot mode for m3. I'm using the DMA, ethernet port with uip and UART communications.

  • zmeira,
    the entry point requirements for the application when using EMAC boot are different from other scenarios. Please take a look at the documentation and update the linker command file as needed.

    This is also discussed in the below forum post

    e2e.ti.com/.../511134

    Best Regards
    Santosh Athuru
  • Hi Santosh,

    thank you for your fast respose. I already did that. This is my cmd file. I think I have a problem in my vector table because is where my code breaks. I put a IPC command in many places of the code and it stopped running when I put it after this commands:

    // Enable and register the Ethernet interrupt.
    IntEnable(INT_ETH);
    IntRegister(INT_ETH, EthernetIntHandler);

    This is my cmd file:

    MEMORY
    {
    C0 (RWX) : origin = 0x20000000, length = 0x2000
    C1 (RWX) : origin = 0x20002000, length = 0x2000
    BOOT_RSVD (RX) : origin = 0x20004000, length = 0x1000
    RESETISR (RWX) : origin = 0x20005000, length = 0x0008
    C2 : origin = 0x20005008, length = 0x0FF8
    INTVECS (RWX) : origin = 0x20006000, length = 0x01B0
    C3 (RWX) : origin = 0x200061B0, length = 0x1E50
    S0 (RWX) : origin = 0x20008000, length = 0x0400
    S1 (RWX) : origin = 0x20008400, length = 0x3C00
    S2 (RWX) : origin = 0x2000C000, length = 0x2000
    S3 (RWX) : origin = 0x2000E000, length = 0x2000
    S4 (RWX) : origin = 0x20010000, length = 0x2000
    S5 (RWX) : origin = 0x20012000, length = 0x2000
    S6 (RWX) : origin = 0x20014000, length = 0x2000
    S7 (RWX) : origin = 0x20016000, length = 0x2000
    CTOMRAM (RX) : origin = 0x2007F000, length = 0x0800
    MTOCRAM (RWX) : origin = 0x2007F800, length = 0x0800
    }

    /* Section allocation in memory */

    SECTIONS
    {
    .intvecs: > INTVECS
    .resetisr: > RESETISR

    .text : >> C3 | C2 | S1 | S2
    .const : > C3 | C2 | S1 | S2
    .cinit : > C3 | C2 | S1 | S2
    .pinit : > C3 | C2

    .vtable : > S0
    .data : >> C3 | C2 | S1 | S2
    .bss : >> C3 | C2 | S1 | S2
    .sysmem : >> C3 | C2 | S1 | S2
    .stack : > C3 | C2 | S1 | S2
  • Hi,

    I don't know why but I had to comment this to make my code work:

    At main program:
    InitPieVectTable();

    At InitAdc1() function:
    DELAY_US(ADC_usDELAY); // Delay before converting ADC1 channels

    Now I can generate a bin file that will be correctly executed.