You can customize the QNX Neutrino RTOS for different embedded-system hardware by changing the startup program.
A startup program is the first program in a bootable QNX Neutrino image. It performs the following tasks:
Initialize the hardware.
You do basic hardware initialization at this time. The amount of initialization performed by the startup code depends on what was done in the IPL (see the Initial Program Loaders (IPLs) chapter).
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.
Initialize the system page.
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 (see the System Page chapter).
The kernel and applications can access this information as a read-only data structure. The hardware/system-specific code used 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.
Initialize kernel callouts.
Another key function of the startup code is to make sure the system page kernel callouts are bound in. These callouts are used by the kernel to perform various hardware- and system-specific tasks. Specifying these tasks is the responsibility of the systems integrator. See the Kernel Callouts chapter.