Part Number:TMS320C6418
Tool/software: Code Composer Studio
Hello,
I develped a second bootloader for a custom board. Target C6418, CCS5.2 and the application is a NON bios application. It is not fully working. I stored the binary file into the flash, cs1, 8 bit. I see that the first 1k of the image is correctly copied at boot and then I was able to confirm that the boot.asm routine correctly copies the application image from the external flash into the onchip ram (in order to debug this I added an infinite loop at the end of the boot.asm code and loaded the symbols with the debugger and finally with the memory viewer I was able to see at ram 0x400 the app image bytes correctly copied). The problem seem to be at the _c_int00 call, infact once the .asm routine is ended and the c_int00 is called nothing else happen. What I don't understand is that I see the app correctly working if I:
1) connect the target with the emulator;
2) Reset the cpu with the code composer menu Run-> ResetCpu
3) Let the application run (F8)
Why if I am connected with the emulator and I simply perform a Cpu reset command followed by run command I see the app correctly loaded from the flash and executed but if I turn on the board (without the emulator) it doesn't work? Is it something related with the linker configuration? I made sure that no hardware bug is showing at board startup. I even added to the boot.asm routine a long delay (30sec) in order to be sure that something related with startup clud affect the bootloader.
I see that the _c_int00 for my target (C6418) is managed by the rst6400.lib and looking at the map file I see it placed at address 0x1864. I linked the rts6400 library on the project properties at "Runtime Support library" filed on "General" project properties.
I used this commands:
MyApp.out
-b
--image
--map MyApp.map
--entrypoint _c_int00
--zero
ROMS
{
ROM1: org = 0x000000000, len = 0x001C00, romwidth=8,memwidth=8
files={MyApp.bin}
}
Do you have any suggestion about how to understand this?
Is "Load Symbol" actually the best way to debug what is happening at boot time?
Since I see it working in one I connect the target with the emulator (load symbols), what is the difference on this setup compared to the typical boot sequence?
Thank you
Regards