| |||
| Home > Embedded Software Development > Default compilation tool behavior > Application startup | |||
In most embedded systems, an initialization sequence executes to set up the system before the main task is executed. Figure 3.4 shows the default RealView Compilation Tools initialization sequence.
__main is responsible for setting up the
memory and __rt_entry is responsible for setting
up the run-time environment.
__main performs code and data copying,
decompression, and zero initialization of the ZI data. It then branches
to __rt_entry to set up the stack and heap,
initialize the library functions and static data, and call any top
level C++ constructors. __rt_entry then branches
to main(), the entry to your application. When
the main application has finished executing, __rt_entry shuts
down the library, then hands control back to the debugger.
The function label main() has a special
significance. The presence of a main() function forces
the linker to link in the initialization code in __main and __rt_entry.
Without a function labeled main() the initialization
sequence is not linked in, and as a result, some standard C library
functionality is not supported. See --startup=symbol,
--no_startup in the Linker Reference
Guide for more information on using alternative C libraries
with a startup symbol different to __main.