Startup program

Updated: April 19, 2023

You can customize the QNX Neutrino RTOS for different embedded-system hardware by changing the startup program.

A startup program is the first program to run in a bootable OS image. It performs the following tasks:

  1. Hardware initialization

    Basic hardware initialization is done 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.

  2. System page initialization

    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 query the system for this information is confined to the startup program. This code doesn't occupy any system RAM after it has run.

  3. Kernal callouts initialization

    The startup code must make sure that 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).

  4. Transfer of control to the next program

    As its last task, the startup code loads the next program in the image and transfers control to it.

Note: The startup code is never compressed. However, it does look after decompressing the rest of the code, if that code is compressed.