ADSP-SC587 adi_rom_boot() for Second Stage Load

HI,

I just start to develop a new firmware platform with ADSP-SC587, there are so many questions that i cannot figure it out.

For now, i foucsed on the program upgraded, here i met some issues, i wondered if anyone famaliar with ADSP-SC587 SSL function adi_rom_boot() ?

I have two project, one is Main code means APPLICATION, another one is Bootloader(bootloader is used to do the second stage load). I try to use the Bootloader code to flash the APPLCAITON code in the flash. In order to realize that, when the main code executes in some part, it was commanded to jump to Bootloader, i used function adi_rom_boot:

Here below part of my code:

/*Configuring the SPU secureP registers for boot peripheral to do secure access to memory*/

*pREG_SPU0_SECUREP106=0x3;

*pREG_SPU0_SECUREP82=0x3;

*pREG_SPU0_SECUREP5=0x3;

*pREG_SPU0_SECUREP162=0x3;

*pREG_SPU0_SECUREP88=0x3;

*pREG_SPU0_SECUREP89=0x3;

adi_rom_boot((void*) 0x60800000,0,0,0,0x80207);

return 0;

the pAddress is ox60800000, because i flashed the bootloader code with cldp.exe through ICE-1000 with an offset 0x800000. And the main code(APPLICATION) was flased into the same section, but the start address is 0x60000000.

the two project code was flashed into the same flash, but they have different spac.

In addition, the adi_rom_boot() was invoked in Core2, and the Bootloader code was also realized in Core2.

However, i have no idea why the main code cannot jump to the bootloader with fucntion adi_rom_boot((void*) 0x60800000,0,0,0,0x80207) ?????

i am not sure if there are some system file should be added into the project or there are some mistake in my code ?

Plus, i am not sure it necessary that the adi_rom_boot() should be invoked in Core0 ?

Please kindly to suppor new starter for ADI  DSP

Parents
  • 0
    •  Analog Employees 
    on Jul 18, 2018 11:52 PM over 2 years ago

    Hello,

    This issue is handled through private support. To avoid duplication of efforts, you can continue the discussions through private support and we will post the final resolution here.

    Best Regards,

    Jithul

  • +1
    •  Analog Employees 
    on Sep 17, 2018 3:24 PM over 2 years ago in reply to Jithul_Janardhanan

    Hello,

    As this query is closed in the private support, post the final resolution for others to get benefit.

    Seems that you call the adi_rom_boot function from SHARC core 2. In that case, as mentioned in EE-384, "If the ROM API is invoked from the secondary SHARC (core2), then the boot kernel can only boot the core2 SHARC (not the core 0 ARM nor the core1 SHARC)."

     

    On the other hand, if you want to boot application from all the three cores, it is mandatory that adi_rom_boot command is called from ARM core. 

     

    We are attaching two projects namely "ADSP_SC589_LED_Blink.zip" and "SC589_SSL_test.zip". The two projects contains three cores each. The adi_rom_boot function is called from SHARC core 2. The LED application is also built on SHARC core 2. Please modify the same code for ADSP-SC587.

     

    The loader file for LED is created only for SHARC core 2. In addition, you need not add init code while creating loader stream.

    Thanks,

    Jithul

    SC589_SSL_test.zipADSP_SC589_LED_Blink.zip

Reply
  • +1
    •  Analog Employees 
    on Sep 17, 2018 3:24 PM over 2 years ago in reply to Jithul_Janardhanan

    Hello,

    As this query is closed in the private support, post the final resolution for others to get benefit.

    Seems that you call the adi_rom_boot function from SHARC core 2. In that case, as mentioned in EE-384, "If the ROM API is invoked from the secondary SHARC (core2), then the boot kernel can only boot the core2 SHARC (not the core 0 ARM nor the core1 SHARC)."

     

    On the other hand, if you want to boot application from all the three cores, it is mandatory that adi_rom_boot command is called from ARM core. 

     

    We are attaching two projects namely "ADSP_SC589_LED_Blink.zip" and "SC589_SSL_test.zip". The two projects contains three cores each. The adi_rom_boot function is called from SHARC core 2. The LED application is also built on SHARC core 2. Please modify the same code for ADSP-SC587.

     

    The loader file for LED is created only for SHARC core 2. In addition, you need not add init code while creating loader stream.

    Thanks,

    Jithul

    SC589_SSL_test.zipADSP_SC589_LED_Blink.zip

Children
No Data