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/TMS320F28379D: Unable to start dual core blink example

Part Number: TMS320F28379D

Tool/software: Code Composer Studio

Hi all, I have a TMS320F8379d control card and a experimenter's kit. Recently I am trying to program on the 2nd CPU. I tried the "blinky_dc" example but did not get any success. 

I am using CCS 8.0.0.00016.

Firstly, I set CPU1 and CPU2 using RAM, and entered the debug mode. I can see the program stuck in "IPCBootCPU2(uint32_t ulBootMode)" function. Specifically, it stucks here:

    do
    {
        bootStatus = IPCGetBootStatus() & C2_BOOTROM_BOOTSTS_SYSTEM_READY;
    } while ((bootStatus != C2_BOOTROM_BOOTSTS_SYSTEM_READY));

PICGetBootStatus() returns "0x00B5BB", or "000000001011010110111011b"

Then I tried to flash the program to the MCU. Configuration is: "CPU1_FLASH_STANDALONE", and "CPU2_FLASH". I selected project "blinky_dc_cpu01" and clicked the "load" button. After the loading is complete, seems like only CPU1 is working (the GPIO31 LED blinking). Then I selected project "blinky_dc_cpu02" and hit the "load" button again. After that, both LEDs were on, no blinking.

Is there any special setting I should do? Thanks!

  • When using the RAM configuration, the IPCBootCPU2() function shouldn't be called since it's inside a "#ifdef_STANDALONE." Did you edit the code?

    When you used the CPU1_FLASH_STANDALONE and CPU2_FLASH configurations, where you able to disconnect from CCS, power cycle the board, and see both LEDs start flashing?

    When using the CPU1_FLASH_STANDALONE mode while connected to CCS, you have to make sure CPU2 is runs boot ROM in order to populate the boot status register with the expected value. Just loading and hitting run will skip the boot ROM. Check out Santosh's suggested procedure in this thread:

    e2e.ti.com/.../1227406

    Whitney
  • Hi Whitney,

    Thank you for your reply! Actually I did not modified the code. I also tried to power cycle the MCU after flashing it. I found only one LED is flashing.

    Actually, I noticed that when I click the "load" button, CCS will write the program to both CPUs. Does that mean I flashed two identical program to both CPUs?

    For example, when I flash the blinky_dc_cpu01.out, it will also be written to CPU2.

    I have already set the "predefined symbols".

    Do you have any hints?

    Best,

    Zhaokai

  • When you say "load" button, do you mean the green bug icon? That one does seem to load both CPUs with the same .out which is obviously not what we want in this case.

    Instead you can select the core you want to load, and click the actual Load button which will allow you to select a specific .out file to load to it. That's how you should get the blinky_dc_cpu02.out loaded for CPU2.

    Whitney

  • If you want to learn more about the different ways to do things in a CCS debug session, we have a workshop:

    processors.wiki.ti.com/.../CCS_Fundamentals_Workshop

    There is specifically a multi-core lab that could be helpful for your situation.

    Whitney