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.

C6472 Ethernet boot does not enter loaded program

I am trying to load a C6472 EVM using Ethernet.

I can do this without problems on a C6678 module, but the C6472 refuses to enter the loaded program.

The program I am using is:

   mvkl 0x12345678, a0
   mvkh 0x12345678, a0
   b    $
   nop  5
   nop  5
   nop  5
   nop  5
   nop  5

I have an example that sends the following Ethernet packets to the C6472 following receipt of the BOOTP packet:

Packet 1
544b0100 10800000
00000020 10800000 002b3c28 00091a68 00000112 00008000
                  00008000 00008000 00008000 00008000

Packet 2
544b0101 00000000

After this, I can see the code correctly loaded at 0x800000 in core 0, but the processor is still executing the bootloader at 0x100000.

I can see both packets in memory at 0xF00000 & 0xF00640, so I know both have been read correctly.

I then change the first packet to set DSP_BOOT_ADDR0 (0x02ab0204) explicitly to the (bizarrely shifted) start address 0x2000, everything works correctly.

Packet 1
544b0100 10800000
00000020 10800000 002b3c28 00091a68 00000112 00008000
                  00008000 00008000 00008000 00008000
00000004 02ab0204 00002000

Packet 2
544b0101 00000000

Why is the bootloader misbehaving like this?

  • I have more information.

    I have changed the loading of my actual code (not the trivial example) to set DSP_BOOT_ADDR0 explicitly as mentioned above.

    If I start CCS but leave core#0 disconnected, then load the program (reset DSP, start sender, warm reset on DSP), when I connect the core in CCS I find it is sitting at the correct entry point (PC=0x800000) but not executing. Running the code then gives the expected result. The code is such that it cannot execute twice, so I know that the loaded code had not been executed after having been loaded, yet the PC is pointing at it.

    If, instead, I reset the DSP, connect core#0 and run it, then send the program and do the warm reset, suspending the program shows that the code is executing correctly.

    So,

    • if CCS has core#0 connected and running, everything works as expected.
    • if CCS has core#0 disconnected, the code is loaded and the PC is pointed at it, but it does not execute.

    Any suggestions?

  • I managed to solve the problem by reinstalling CCS.

  • Hi Peter,

    Thank you for the update and contribution to e2e. It would help others.