Hi, All ADI experts
My question: how to boot dual-core application from non-default location in SPI Flash?
Environment: BF607 , CCES 2.8.3 , emulator ICE1000, the flash is wired to SPI0.
A non-recoverable error or exception has occurred.
Description: An instruction CPLB miss has occurred without a corresponding CPLB entry.
General Type: RunTimeError
Specific Type: ICPLBMissWithoutReplacement
Error PC: 0xffa00000
after, core0 boots failure.
I checked several times and got the same result:
The L1 Instruction SRAM in core0 seems have been overwritten after core1 boot.
So I am surprise why the same file of dual-core works properly from default location but doesn't work from any other?
Why does only core0 run if the ssl is used to load the dual-core application?
Is the method of ssl booting the dual-core application not correct?
Where is the problem? Could anybody help me, please?
Thank you in advance
Hi,I would suggest you to refer the EE-364 note for "How to write a SSL for ADSP-BF609 processors to selectively boot one of multiple executable files (DXEs) from SPI flash memory using basic GPIO push-buttons during system start-up". The example code provided in the associated .ZIP file, which has tested in ADSP-BF609 Ezkit.www.analog.com/.../EE-364.pdfwww.analog.com/.../EE-364.zipWhile looking into your query, you are trying to boot up the dual core BF609 application/project from the non default location using SSL where the each cores sharing a memory to each others.Please find the below basic steps to use SSL to call the main application:1) We would recommend you to create a single .ldr from the Dual core main application project with two .dxe's by using "-Nofinaltag" flag.2) Load your main application .ldr to 0th sector and verify both the core's were running properly upon reset by using the various LED program into each core.3) After verifying both the core's were working for your application, then you can load the application .ldr into any location.4) Create a SSL project with Dual core and use the SSL calling function in the Core 0. You can have your additional codes or programs to run (Like sharing memory and LED) for the SSL project of the dual core should be executed before the calling SSL function.Once the SSL function (ROM-API) is executed, the main dual core application is loaded into the first memory location in L1 instruction SRAM of the each core accordingly from the flash. Then, it performs whatever tasks it is intended to do, and it finally completes the boot process.(Mainly overwriting SSL application with the actual end application(main) which you stored in the FLASH's non default location.Please note that the SSL would load the main application code into dual core's of the processor if the .ldr has dual core application. In this case, kindly make sure to Enable core 1 before calling the SSL, since this is required to load the core1's program from into core1 L1 instruction SRAM.5) After, you can generate a single .ldr for the dual core SSL project and load it to 0th sector.6) Upon Power up reset, the SSL will boot up your main application of dual core the ADSP-BF609 processor.Regards,Lalitha S
Thanks for your reply!
My problem has been solved owing to your detailed steps to boot a dual core application.
I modified two points in my dual core ssl and dual core application.
1) Combinning two ldr files of dual core application to a single ldr file, I only let core0 call rom_Boot function, not let core1 call rom_Boot function in ssl project.
2) Using adi_core_1_enable() instead of adi_core_enable(ADI_CORE_1) in main function of core0 in application project.
After doing this, the dual core ssl could boot the dual core application normally.
Thanks a lot again!Regards,Williams