The following list outlines what happens when you invoke the linker with the --ram_model or --rom_model option.
- The symbol _c_int00 is defined as the program entry point. The _c_int00 symbol is the start of the C boot routine in boot.c.obj. Referencing _c_int00 ensures that boot.c.obj is automatically linked in from the appropriate run-time-support library.
- For COFF, the .cinit output section is padded with a termination record to tell the boot routine (autoinitialize at run time) or the loader (initialize at load time) when to stop reading initialization tables.
- When you use the ROM model to autoinitialize at run time (--rom_model option):
- For EABI, the linker defines a special symbol called __TI_CINIT_Base that points to the beginning of the initialization tables in memory. When the program begins running, the C boot routine copies data from the tables (pointed to by .cinit) into the run-time location of the variables.
- For COFF, the linker defines cinit as the starting address of the .cinit section. The C boot routine uses this symbol as the starting point for autoinitialization.
- When you use the RAM model to initialize at load time (--ram_model option):
- For EABI, the linker sets __TI_CINIT_Base equal to __TI_CINIT_Limit to indicate there are no .cinit records.
- For COFF, the linker sets cinit to -1. This indicates that the initialization tables are not in memory, so no initialization is performed at run time. The linker sets the STYP_COPY flag (0010h) in the .cinit section header. STYP_COPY is a special attribute that tells the loader to perform initialization directly and not to load the .cinit section into memory. The linker does not allocate space in memory for the .cinit section.
Note: LoaderA loader is not included as part of the TMS320C28x C/C++ compiler tools. Use Code Composer Studio as a loader.