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.

rtos on TMS320F28377D

Other Parts Discussed in Thread: TMS320F28377D

Hi

I am using TI-RTOS on TMS320F28377D successfully so far on CPU-1 (one of the cores on 377D) but am not able to get the other cpu (cpu-2) to work with TI-RTOS loaded onto it. I was able to get the dual core example from control suite (which doesn't have RTOS working). Can some one share their experiences or any code snippet. 

Greatly appreciate that.

Thanks

Ram

  • Hi Ram,
    You'll need to enable CPU-2 from CPU-1 which is the master, before you load and run your application on CPU-2. You can do this by setting Boot.bootCPU2 = true in your cfg file for CPU-1. Let me know if this helps.

    Thanks,
    Moses
  • Moses

    Thanks a lot for your kind reply.

    I tried the one which you have mentioned in your email but no luck. Surprisingly with out that it works. Like I took swi28_TMS320F28377D and task28_TMS320F28377D examples from TI Explorer and I loaded them on to CPU- 1 and CPU-2 respectively and I was able to get both the CPUs working. But I know that thats not the right way of doing as CPU-1 has to send the boot command to cpu-2 . Do you by any chance have a code that can run on both CPUs with RTOS that you can share?

    Thanks
    Ram
  • Moses

    I have also noticed that after loading CPU-2 code into CPU-2, CPU-1 ClkcfgRegs are being rewritten to default values. Can you please explain me why this happens?

    Thanks
    Ram
  • Hi Ram,
    The clkCfgRegs being updated when you load code on CPU2 can be solved by setting Boot.configureClock = false in your cfg for the CPU2 application. This will ensure that are clock doesn't get reset by CPU2 as well.
    Another thing you should think about is the shared RAM between both CPUs. In your linkercmd files make sure that you do not have sections in both CPUs that overlap the same region of shared memory.

    Thanks,
    Moses
  • 5417.swi28_TMS320F28377D.zip7127.task28_TMS320F28377D.zipHi Moses

    Thanks a lot for your prompt response.

    By following your suggestion, the issue that i have mentioned before has been fixed. But now I am running into a different issue. Neither of the CPU is booting up. If I have them executed individually on CPU-1, they run fine with no issues. I have the code snippets attached. Can you please take some time to execute these on your controller and post me the feedback. One thing i have noticed is that, when having the dual cores loaded with 2 different projects, after reset the controller is sitting in Boot ROM location. I dont understand this.

    Thanks and have a great holiday.

    Ram

  • Moses

    I forgot to mention that I loaded swi28_TMS320F28377D on CPU-1 and task28_TMS320F28377D on CPU-2.
  • Hi Ram,
    Just looking at your linker cmd file I can see issues regarding your use of shared memory that might lead to the booting problem you're seeing. I know that M0 RAM and GS RAM are both shared. Your linker cmd file should not have overlapping GSRAM or M0 RAM. I see you took out some part of GS RAM in one of your linker cmds (say for CPU-2) but that's not enough, you also have to ensure that the remaining part that you intend to use in CPU-2 should not be in CPU-1 as well. For M0 RAM you'll have to edit the symbol in both linker cmds and ensure that their range does not overlap. I'll recommend checking the data sheet for other shared memory and ensuring the same regions aren't used in both linker cmds.

    Thanks.
    Moses
  •  Moses

    Thanks a lot for your info.

    As far as global shared RAM (GS) is concerned, i followed the dcblinky code which has GS0 and GS1 shared on both CPU-1 and CPU-2.

    For M0 RAM, I think its not shared. I have the screen shot attached.