Source code structure
QNX SDP8.0Building Embedded SystemsConfigurationDeveloper
Most of the startup code is stored in the main() function, which follows the _start() and _main() functions in the startup code sequence.
The _start() function is the entry point to the startup program
(e.g., hardware/startup/lib/arm/cstart.S).
This function sets up an environment for executing C code.
Specifically, the _start() function:
- disables interrupts, because the startup module can't handle interrupts
- sets the location of the C stack
- turns off the cache, if required
When it completes its work, _start() calls _main(), which
prepares the environment for the subsequent main() (without the underscore) function.
Specifically, the earlier _main() function:
- sets up startup command-line options, so they can be passed into the main()
function’s argument vector (
argv[]
) - sets up what will happen when the main() function returns (e.g., jump into
procnto
) - calls main()
The pseudo-code below shows the structure of the main() function, with links to the
entries for each called function in the Startup Library chapter:
Global variables
main()
{
// Initialize hardware
Call add_callout_array()
// Parse commandline arguments
Call handle_common_option()
// Remove ram used by modules in the image
Call init_raminfo()
// Initialize the MMU
if (virtual) Call init_mmu()
Call init_intrinfo()
Call init_qtime()
Call init_cacheattr()
Call init_cpuinfo()
// Set hardware machine name
Call init_system_private()
// Print debugging output
Call print_syspage()
}
Note:
You should examine the commented source for each function in the startup library to see if you
need to replace any library functions with your own functions.
Page updated: