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.

RBL execution

Hi,

Case1: DSP is loaded with single core application on Core0 and the application on core0 issues local reset to secondary corepacs. On core local reset, the RBL executes an IDLE command on the secondary CorePacs and keeps the secondary CorePacs waiting for an interrupt.

Case2: Same single core application for core0 is built using MAD utility by keeping remaining cores empty. DSP is loaded with application combined with MAD on Core0 and the application on core0 issues local reset to secondary corepacs. On core local reset, NML in MAD utility is executing as RBL start address in “DSP_BOOT_ADDRESS” is overwritten with NML start address by MAD utility. So before local reset, we overwrite “DSP_BOOT_ADDRESS” with RBL address (0x20B00001). After reset, the RBL instead of “executing IDLE command and waiting for an interrupt” executes some instructions and jumps to L2SRAM address on secondary CorePacs.

So we could not load and execute on secondary CorePacs from core0.

Regards,

Senthil Kumar G

  • Hi Senthil,

    Please try below procedure in EVM and get back to me if you have any issues.

    1. Set the EVM in "No Boot" mode, connect to core0 and use gel file to initialize the core0.

    2. Go to memory browser, read the address 0x118FFFFC and make a note of it.

    3. Build the attached source and load and run on core0.

    4. After completion of execution, core0 will wait in busy loop(while(1)). Pause the debugging.

    5. Go to memory browser, enter the address 0x118FFFFC.=> 0xBABEFACE

    /cfs-file/__key/communityserver-discussions-components-files/791/5482.srioboot_5F00_helloworld.c

    This means that core0 wakes up  core1 successfully. The value 0xBABEFACE  has been written by core1 from function "write_boot_magic_number()".

    Note:

    Based on the device part number MAGIC_ADDR, step 2 & 5 address will change. 

    #ifdef _EVMC6657L_
    #define MAGIC_ADDR 0x8ffffc
    #endif
    
    #ifdef _EVMC6678L_
    #define MAGIC_ADDR 0x87fffc
    #endif
    
    #ifdef _EVMC6670L_
    #define MAGIC_ADDR 0x8ffffc
    #endif
    
    #define BOOT_MAGIC_ADDR(x) (MAGIC_ADDR + (1<<28) + (x<<24))  //Whereas x is the core number.
    

    Thank you.