The first program in a bootable QNX Neutrino image is a startup program whose purpose is to:
You do basic hardware initialization at this time. The amount of initialization done here will depend on what was done in the IPL loader.
Note that you don't need to initialize standard peripheral hardware such as an IDE interface or the baud rate of serial ports. This will be done by the drivers that manage this hardware when they're started.
Information about the system is collected and placed in an in-memory data structure called the system page. This includes information such as the processor type, bus type, and the location and size of available system RAM.
The kernel as well as applications can access this information as a read-only data structure. The hardware/system-specific code to interrogate the system for this information is confined to the startup program. This code doesn't occupy any system RAM after it has run.
Another key function of the startup code is that the system page callouts are bound in. These callouts are used by the kernel to perform various hardware- and system-specific functions that must be specified by the systems integrator.
You can customize QNX Neutrino for different embedded-system hardware by changing the startup program.