Reset and initialization
The entry point to the C library initialization routine is
. However, an embedded application on your target hardware performs some system-level initialization at startup.
Embedded system initialization sequence
The following figure shows a possible initialization sequence for an embedded system based on an ARM architecture:
Figure 2-9 Initialization sequence
If you use a scatter file to tailor stack and heap placement,
the linker includes a version of the library heap and stack setup
code using the linker defined symbols,
for these region names. Alternatively you can create your own implementation.
The reset handler is normally a short module coded in assembler
that executes immediately on system startup. As a minimum, your
reset handler initializes stack pointers for the modes that your
application is running in. For processors with local memory systems,
such as caches, TCMs, MMUs, and MPUs, some configuration must be
done at this stage in the initialization process. After executing,
the reset handler typically branches to
begin the C library initialization sequence.
There are some components of system initialization, for example,
the enabling of interrupts, that are generally performed after the
C library initialization code has finished executing. The block of
$Sub$$main() performs these tasks
immediately before the main application begins executing.