This is a continuation of previous threads dealing with booting an OMAP-L138 from SPI Flash.
I am now trying to add my DSP/BIO application to the boot image, but the DSP application does not run. The ARM initialization runs properly and releases the DSP from reset. It also properly programs HOST1CFG. Here's the ARM initialization code (uses Logic BSL).
void AMX_init( )
{
PSC_All_On_Full_EVM();
Core_300MHz_mDDR_150MHz();
DEVICE_kickUnlock();
HOST1CFG = (0xC0000000 & 0xFFFFFC00);
Wake_DSP();
}
I can see the code properly loaded in DDR memory, but the DSP/BIO application does not run properly
However, I am confused about the location of the DSP/BIO startup code. Based on a suggestion by another member, I created a memory section called "Vectors" at the beginning of DDR memory (0xc0000000). Using the DSP/BIO Graphic Config tool, in the DSP/BIO Memory Manager I allocated the "startup code section (.sysinit) to the Vectors memory section. Here's a snapshot of the Memory Manager window.
After compiling, the .map file shows this allocation.
******************************************************************************
TMS320C6x Linker PC v7.0.3
******************************************************************************
>> Linked Sun Jan 23 10:53:00 2011OUTPUT FILE NAME: <DSP_BIOS.out>
ENTRY POINT SYMBOL: "_c_int00" address: c0000380
MEMORY CONFIGURATIONname origin length used unused attr fill
---------------------- -------- --------- -------- -------- ---- --------
IRAM 11800000 00030000 00012a54 0001d5ac RWIX
CACHE_L2 11830000 00010000 00000000 00010000 RWIX
CACHE_L1P 11e00000 00008000 00000000 00008000 RWIX
CACHE_L1D 11f00000 00008000 00000000 00008000 RWIX
L3_CBA_RAM 80000000 00020000 00008000 00018000 RWIX
Vectors c0000000 00008000 00000580 00007a80 RWIX
DDR c0008000 04000000 001acadc 03e53524 RWIX
But, notice that c_int00 is not at 0xc0000000, but 0xc0000380. I assume this is because there is some additional DSP/BIOS initialization code that runs before c_int00.
Looking at the code actually loaded into memory at 0xc000000, I see this:
BIOS_init, BIOS_init, $DSP_BIOS_dspcfg.s62:2442:2480$:
0xC0000000: 02410106 PLD.D2 *-A16(8),4
0xC0000004: 018D0040 MVK.D1 8,A3
0xC0000008: 11202088 .word 0x11202088
0xC000000C: 008C0040 MVK.D1 0,A1
0xC0000010: 02400008 EXTU.S1 A16,0,0,A4
0xC0000014: 00000008 EXTU.S1 A0,0,0,A0
0xC0000018: 00800000 NOP
versret$291$:
0xC000001C: 02443218 ADDSP.L1X A1,B17,A4
which clearly shows BIOS init code located at 0xc0000000.
However, if I set the DSP program counter to 0xc0000000 and try to run the application from this location, the program bombs (usually with a ccs debug error) and does not run properly.
QUESTION:
1. Have I properly allocated the correct BIOS startup code (.sysinit) to my entry point (0xc0000000)?
2. Should the DSP program run properly with the above initialization? Perhaps something else is contributing to the program not running?
Guidance is appreciated.
Thx,
MikeH