Other Parts Discussed in Thread: OMAP-L138
I'm trying to boot both the ARM and the DSP in the OMAP-L138 from a SPI flash device on SPI1.
The program data for the ARM all resides in external mDDR. The program data for the DSP all resides in the L2 RAM internal to the DSP Megamodule.
I'm using the AISgen tool to generate a single binary image for the SPI flash from the ARM and DSP output files (the ARM's is an ELF and the DSP's is a COFF). But, when I load that binary image into SPI flash and try to boot, the ARM starts executing code and the DSP doesn't.
I have the AISgen tool set to configure the PLLs and clocks, the DDR controller, and place the DSP in SynReset state. I have code running on the ARM that sets the DSP's boot address and then wakes up the DSP (by transitioning it to the Enable state).
After the ARM boots from the SPI flash, I connect the debugger (without executing any GEL scripts or code) and I can see that the code that was supposed to be loaded into L2 RAM by the AIS isn't there.
I've verified that the AISgen output does indeed contain segment load commands for the DSP's program data in L2 RAM. I did this by having it generate a .h file instead of a binary file and deciphering the contents using information in Application Report SPRAB41C - Using the OMAP-L1x8 Bootloader. All looks to be in order there. It executes commands to configure the PLLs and Clocks, to configure the DDR controller, and to configure the PSC controller (to place the DSP in SynReset state). It then follows those with segment load commands to load all of the ARM segments in DDR and then segment load commands to place all of the DSP segments in L2.
Anyone have any idea why this isn't working? Could it be that the AIS can't load segments into L2 RAM?! It seems like as long as the DSP Megamodule is being clocked (which it is by being placed in SynReset state), that this should work.
Thanks,
Arthur