Hi All,
I would like to ask some questions on GEL files and related initialization issues.

I have noticed that when in debugging mode there is a "Reset" button, which provide three types of reset:
- CPU Reset
- System Reset
- Emulator
A natural question is that: How can CCS properly "reset" the system? By properly, I mean that in addition to reset a CPU, all devices and peripherals on the EVM board needs to be re-initialized. CCS won't know of course, since there are many different EVM providers for TI chips, what devices are placed on a particular EVM, what are their memory mapped address (which part of the whole memory mapped address space is used, which part are not), and how to set the registers on them.
Therefore, if CCS needs to perform a "meaningful" reset in the forgoing regard, information on the details of these clear-and-reinitialization steps (and addresses, waiting time, etc., which can all be found in a typical .GEL file) must be provided to it. Is this the purpose for the creation of .GEL files?
Another question is on EVM board. In a snap of time after power on, it will be able to work and compiled instructions can be downloaded to the board via the emulator. But just as we have discussed previously, in order to properly initialize the whole board with a host of devices and peripherals connected to the DSP chip, information on their configurations must be given. Do we require .GEL file here?
What I have actually found is that even without a .GEL file in the directory the EVM would still be able to work. However, most examples provided with the EVM has in its main() function a call to a specific initialization function: Does this EVMDM6437_init( ) do all the initialization? What is the relationship between ?
And since the DSP chip has its internal ROM,
/* Initialize BSL */
EVMDM6437_init( );
But what is the role of boot ROM here? Is it possible for all code, including initialization part, to be stored entirely in an external storage? How could the CPU know the address of these code? Therefore, I think in case we do wish to put most of the code on an external storage rather than the ROM, at least the starting memory-mapped address of the initialization code needs to be stored in the ROM, which would inform the CPU on where to fetch the initialization code sequence. Therefore, visiting ROM by CPU is always the first (in the most literal sense) step in initialization, regardless of where the majority of initialization code are actually stored. Is this correct?
Could anyone explain these details to me?
Sincerely,
Zheng