Part Number:SECDEVTOOL-OMAPL138C6748
Hi TI,
I'm writing a DSP secondary boot loader for secure OMAPL138/C6748 and running in trouble after waking up the ARM core. Only the ARM application runs, although the entrypoints for both cores are setup correctly.
My boot sequence can be describe as follow, please help me to figure out the problem.
1. Up on Power up, the DSP Rom boot loader loads and runs the DSP secondary boot loader in SECUREWITHSK mode
2. Secondary boot loader loads encrypted ARM image & DSP image (stored in NAND flash) into two separate regions in memory
3. Secondary boot loader uses Secure Kernel APIs to decrypt the two images
4. Secondary boot loader wakes up ARM core, sets the ARM reset vector to the corresponding ARM entrypoint value
5. Secondary boot loader switch to NONSECURE mode concurrently with setting up the entrypoint of the DSP core (using secure kernel API 'SK_switchNonSec(DSPEntryPoint)')
The ARM enabling procedure is performed the same as in OMAP-L137 EVM (This link provided me with an example code: )
The problem is, if I do not wake up ARM core, I can jump to the new DSP entrypoint and the DSP app will run perfectly. Like this,
// Wake up ARM and setup ARM entry point // DEVICE_enable_ARM(ArmEntryPoint); ----> COMMENT THIS LINE // Transfer control to user application Log("Switch to Non-Secure world and Jumping to the entry point\n"); appEntry = (void (*)(void)) entryPoint; SK_switchNonSec((void*)(unsigned) appEntry);
Howerver, whenever I try to un-comment the above line, only the ARM application works. Is it the problem with the PRUSS (Programable Realtime Unit SubSystem) used in process of enabling ARM core?
Please help me.
Thanks.