Customizing Image Startup Programs

The first program in a bootable QNX Neutrino image is a startup program whose purpose is to:

  1. Initialize the hardware.

    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.

  2. 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.

    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.

  3. Initialize callouts.

    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.

  4. Load and transfer control to the next program in the image.

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