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.

C2000WARE: Flashing a dualcore project for TMS320F28379D

Part Number: C2000WARE
Other Parts Discussed in Thread: TMS320F28379D

Hello everyone,

I am clueless right now how to successfully flash a dual core project on my microcontroller TMS320F28379D. Attached you can find my two CMD files and my system_init() (inside global.c) function, which I call drectly at the beginning of each cores main(). FO bulding my project I used the empty_project dual core template. For flashing I am using the XDS 110 Debug probe and CCS 20.2.

My work flow looks as follow: Flash CPU2 project -> Flash CPU1 Project. The problem that then arises is that the IPC_sync doesnt work. CPU1 gets stuck waiting for a flag from CPU2. 

I tried multiple adjustments already. What surprised me was that the template assinged the same flash ports to both the CPU1 and CPU2 projects. I gave each CPU project their own ports but it didnt fix my issue, so I reverted back to my initial cmd files. What can I do to get my dual core project working? Thanks for your help in advance.

Best, Lucas

Files:
2837xD_FLASH_lnk_cpu1.txt
2837xD_FLASH_lnk_cpu2.txt
global.c  

  • Lucas,

    The flash available on each core is independent of the other, as such the addresses even though they are the same, access physically different memory on the device.  So there is no issue if each core is using the same flash addresses.

    Global Shared RAM is the only common memory resource that is shared fully between the two cores, and care would need to be taken on how that memory is used within the system to avoid conflicts, etc.

    In terms of running a dual core example, this is a bit tricky with both cores connected.  In practice(i.e. no debugger connected) CPU2 is held in reset until released by CPU1.  However, I believe if you are connected to CPU2 with CCS and "run" it will begin its execution without waiting on CPU1 to release it.  However, it should then get to the IPC section and acknowledge to CPU1 that it is through its boot process.

    After you load both cores with their code, could you try and disconnect CPU2 and then run CPU1 to see if you get the correct IPC commands?  Alternatively, when you have a connection to both cores, I would try to run CPU1 first, then CPU2, or stepping through CPU2 code to confirm the IPC section gets executed, then come back to CPU1 to note if there has been successful communications.

    If you could confirm which C2000 Ware example you are trying, I can see if I can replicate on my LauchPad to help the debug.

    Best,
    Matthew

  • Hey  ,

    everything works now as I hoped for. Thanks a lot for your help.

    Best, Lucas