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.

TMS320F28388D: Problem with porting SYS/BIOS to CPU2

Part Number: TMS320F28388D
Other Parts Discussed in Thread: SYSBIOS

Hello all,

I'm trying to use 3 CPUs, CM,CPU1,CPU2. I have 3 projects created and I'm initializing CPU2 and CM in CPU1 main().

I'm able to run CPU1 and CM as you know but I'm trying to boot CPU2 but it is getting stuck in ti_sysbios_hal_Hwi_initStack() function while loop ->    

while (--curStack > ((UArg)(&curStack) + 1)) {
        *((volatile UInt8 *)curStack) = 0xbebe;
    }

I tried increasing stack size but that didnt help either. Can you please guide me how to create a project for CPU2 and make it work and communicate to with Cm and CPU1.

I want to use SYS/BIOS in CPU1 and CPU2 as well

Thanks and regards,

Pranay.

  • If you look at the curStack variable can you figure out why it's failing to leave the loop? Where is it stored? Does CPU2 have access to that memory?

    How have you configured the Boot module in your CPU2 project? Make sure it isn't trying to configure the SYSCLK or do anything that it shouldn't have access to.

    Whitney

  • Hi Whitney,

    curStack variable is continuously getting updated and after a certain time, execution is getting hung in

    How have you configured the Boot module in your CPU2 project? Make sure it isn't trying to configure the SYSCLK or do anything that it shouldn't have access to.

    So in CPU2 .cfg file I ensured that Boot module is inserted and SYSCLK and watch dog is disabled.

    Where is it stored? Does CPU2 have access to that memory?

    I have not understood this part. Do I need to explicitly declare and define memory for CPU2 from CPU1 ? ny documents would be helpful with regards to .cfg file configuration and CPU2 and CPU1 handling.

    --Pranay

  • That __error__ function is used for the ASSERTs in driverlib--it shouldn't be related to that SYS/BIOS initStack function. Does that call stack in the CCS Debug pane show you what function called __error__? If it's not clear, you could also look at the "filename" parameter in the memory browser (set the format to string/character) to see what file it was in.

    Do I need to explicitly declare and define memory for CPU2 from CPU1 ?

    Only for the GSxRAMs since those are shared between CPU1 and CPU2. Have you seen this multicore development guide?

    Whitney

  • Hi Whitney,

    Below is what I'm seeing when I get error.

    Yes I have already gone through multi core development guide, I have allocated required peripherals with the help of that guide. But When I tried to boot CPU2 this is what I'm facing.

    --Pranay

  • You need to check filename in the Memory Browser instead of the Variables window since CCS won't display the whole thing (it has no way of knowing how long the string is). Although, filename doesn't seem to be pointing to a valid address in your screen shot anyway, so it won't work.

    It says filename and line are located in the 0xE000-0xEFFF range which is GS1RAM. Have you assigned ownership of GS1RAM to CPU2? Please go through your cmd files and make sure you're only using the GSxRAMs to which each core has been assigned ownership.

    Whitney