I have a multi-dxe project set up where one running dxe needs to be able to boot into the other. I have been able to do this successfully in the past with another project by following "User-Callable Boot ROM Functions" in the ADSP-BF537 Blackfin Processor Hardware Reference that gives:
#include <defBF537.h> /* provides function entry addresses */
P0.H = HI(_BOOTROM_BOOT_DXE_FLASH) ;
P0.L = LO(_BOOTROM_BOOT_DXE_FLASH) ;
R7.H = HI(0x20100000) ; /* start of async bank 1 */
R7.L = LO(0x20100000) ;
JUMP (P0) ; /* jump to Boot ROM */
The previous project where this method works is a stand-alone application and I shut down all used periphrials first. This new project is a VDK-based application using LwIP and the system services model. I am having getting the above code to work in this VDK project - I keep seeing various EXCAUSE codes. I have tried calling adi_ssl_Terminate() first, VDK_PushUnscheduledRegion(), and have tried turning off cache by writing '0' to IMEM_CONTROL and DMEM_CONTROL. Nothing has worked, but the errors seen have varried. Sometimes I have seen kernel panic errors as well.
So my question is what is the best way of booting into another DXE from a running VDK environment? What do I need to shutdown (and how) first so I can exit my running program cleaning and boot into my new one?
P.S. ADSP-BF537 Silicone 0.3, custom board, Visual DSP++ 220.127.116.11, LwIP 1.4.0, testing with HPUSB-ICE (however I test the reboot process out of emulation).