Reference BSP for QNX Product
The BSP project manages the development of BSPs and device drivers.
A BSP, or board support package, is the name given to the software responsible for hardware specific operations required to get an RTOS up and running. This typically consists of the following components:
- An optional IPL. This program is run from the reset vector, and is responsible for minimal hardware initialization, such as memory controller, clocks, serial port, and boot device initialization (NOR flash, NAND flash, etc.). This program then loads the next program, called the startup. The startup is usually loaded from flash, but can also be downloaded over the serial or network connections, depending on the capabilities of the IPL. If a BSP does not provide an IPL, then this function will normally be performed by an on board ROM Monitor, such as u-boot, which is typically provided by the hardware manufacturer. Often an IPL will be provided with a BSP, but the user can decide whether to use the IPL, or the stock bootloader that ships with the board.
- The startup program is responsible for completing the hardware initialization, binding in interrupt callouts and initializing hardware specific information which is passed to the operating system (via the syspage), and then transferring control to the kernel.
- Device drivers for most or all of the peripherals on the SoC and board that need to be supported. In addition to serial and network drivers, these typically include block, I2C, SPI, USB , graphics, audio,and perhaps other proprietary device drivers.
What's in it for developers?#
The BSP project is intended to give developers access to all the resources required to write and modify BSPs for new hardware platforms. This includes:
- Access to all of the packaged and tested BSPs supporting QNX Neutrino for wide variety of reference platforms
- Access to the source for BSPs which can be used to develop support for custom HW platforms (source code for each BSP's IPL, startup, and device drivers are contained within the BSP itself, except where otherwise noted).
- Experimental device drivers and utilities that allow developers to keep up to date with the latest QNX technology
- Documentation and training material to help you get familiar and be able to modify QNX BSPs
- Discussion forums for developers to exchange information about BSPs, and to request assistance from QNX developers and support staff
Complete listing and pointers for download of BSPs and drivers available for the QNX Neutrino RTOS:
QNX Board Support Packages (BSPs) are generally published under one of two main licenses: (1) Apache License, Version 2.0 (Apache 2.0) ), or (2) one of (QSS's QNX Development Suite licenses ).
Apache 2.0 licensed code is available for unrestricted use under the Apache 2.0 terms. QNX Development Suite licensees are also entitled to download non-Apache BSPs for use in association with the QNX Neutrino RTOS. These non-Apache BSPs were originally packaged and released under various versions of the former Momentics End User License Agreement (“MEULA”) and their associated License Guides (see 6. QNX Board Support Packages and Driver Development Kits section ). As new versions of these software packages are released, they will be published under Apache 2.0 whenever possible. If, due to third party licensing or confidentiality restrictions, we are unable to do so, then we will integrate the licensing of the non-Apache BSPs into the then-current version of the QNX Development Suite licenses. Until then, please refer to the appropriate MEULA, as indicated in the current version of the QNX Development Suite License Guide.