Initialization of the execution environment
and execution of the application
The entry point of a program is at __main in
the C library where library code:
Copies
non-root (RO and RW) execution regions from their load addresses
to their execution addresses. Also, if any data sections are compressed,
they are decompressed from the load address to the execution address.
Zeroes ZI regions.
Branches to __rt_entry.
If you do not want the library to perform these actions, you
can define your own __main that branches
to __rt_entry. For example:
IMPORT __rt_entry
EXPORT __main
ENTRY
__main
B __rt_entry
END
The library function __rt_entry() runs
the program as follows:
Sets up the
stack and the heap by one of a number of means that include calling __user_setup_stackheap(),
calling __rt_stackheap_init(), or loading the
absolute addresses of scatter-loaded regions.
Calls __rt_lib_init() to initialize
referenced library functions, initialize the locale and, if necessary,
set up argc and argv for main().
For C++, calls the constructors for any top-level objects
by way of __cpp_initialize__aeabi_.
Calls main(), the user-level
root of the application.
From main(), your program might call,
among other things, library functions.
This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.
ARM websites use two types of cookie: (1) those that enable the site to function and perform as required; and (2) analytical cookies which anonymously track visitors only while using the site. If you are not happy with this use of these cookies please review our Privacy Policy to learn how they can be disabled. By disabling cookies some features of the site will not work.