I am working on booting a 6678 DSP which is installed on a custom board via SRIO and it is currently taking 45 seconds to start executing our boot code after writing Core0's Boot Magic Address.
Here is the test sequence / debug steps I am running using the srioboot_ddrinit.bin file provided with the MCSDK
- Connect debugger to Core0 in no-boot mode
- Transfer boot program to core 0 L2SRAM
-Verify with CCS that all boot code successfully transferred over SRIO
- Write Core0 Boot Magic Address from Host via SRIO
- Verify Boot Magic Address is set correctly using CCS
- Load Debug Symbols via CCS and set a breakpoint on the first line of Main()
- Allow Core0 to start executing.
At this point it consistently takes about 45 seconds to reach the first line of Main(). If I then let the Core0 execute for anywhere from a couple seconds up to 30+ seconds and halt Core0 what I see is the program counter looping over a small address range in the vicinity of 0x1080ab80, which according to the .map file corresponds to copy_decompress_rle.obj
What could be wrong that would cause the RBL to spin in the copy_decompress_rle function for 40 seconds? It does eventually exit and boot successfully. One thing worth noting is that our DSP is setup to be Big Endian, and I see that the srioboot example is Little Endian. I believe that the Endian difference is accounted for in srioboot_ddrinit_elf2HBin.bat but I wanted to mention that in case it could be related. Our Boot code must have the right Endianess as when main() does eventually run, it runs correctly, I would expect it to not boot at all if the code endianness was incorrect.