BSP structure and contents
All QNX BSPs use the same basic directory structure, with variations to accommodate the needs of the different supported board architectures and variations, and the components needed for particular QNX implementations.
For most BSP components, QNX provides both the binary files and the source code.
However, if there are restrictions on the distribution of the source code, only the
binary files are made available. The About this BSP
chapter of every
BSP User's Guide lists the BSP components and specifies which
ones are provided as binary files only.
If you use the QNX Momentics IDE to extract the BSP contents, the IDE places the
contents in the directory you specify when you import the BSP archive. Unless you
specify otherwise, the IDE uses a subdirectory in the
ide-version-workspace directory of
your host system (see the IDE User's Guide). If you use the command-line
unzip utility to extract the BSP, the utility places the BSP
contents in the directory where you extract the archive (see Building a BSP
).
BSP directories
The BSP structure and contents aren't affected by the method you use (command line or IDE) to extract the BSP from its archive, or by the location to which you extract it.
All QNX BSPs use the same basic directory structure, and have the same contents: IPL, startup code, IFS, drivers, etc. However, since BSPs are hardware-specific, every BSP is in some way unique, not just in its contents but also in the organization of its directories.
Typically, extracting a BSP's .zip archive creates the following subdirectories in the directory you chose on your host system:
- /images
The /images directory is the location of:
the BSP's default buildfile after the BSP has been built
any boot images (such as the IFS image, the IPL binary, etc.) after they have been generated
- /install
- The /install directory is empty until the BSP is built. When this happens, the contents of the /prebuilt directory are copied into the /install directory.
- /prebuilt
- The /prebuilt directory includes all of the BSP components, prebuilt and ready
to use. When you build the BSP, the contents of the /prebuilt directory are
copied to the BSP's /install directory (see
Prebuilt binaries and libraries
below). - /src
- The /src directory contains all source code that ships with the BSP. Source code is organised into subdirectories, such as /hardware, /lib, /utils, etc. When the BSP is built, all source code in the BSP (including the code in these subdirectories) is built.
Component locations
The table below shows the default locations of common BSP components. ${BSP_ROOT_DIR} is
the name of the directory where you extracted the BSP archive. ${CPU_VARIANT} is the
specific CPU architecture for which this BSP was developed (e.g., x86_64).
| File | Location |
|---|---|
| Prebuilt OS image | ${BSP_ROOT_DIR}/images |
| IPL and/or startup binaries | ${BSP_ROOT_DIR}/install/${CPU_VARIANT}/boot/sys |
| Source code for device drivers, libraries, and utilities |
|
| Prebuilt libraries |
|
| Prebuilt binaries |
|
| Generic header files (not architecture-specific) | ${BSP_ROOT_DIR}/install/usr/include |
File naming conventions
| Prefix | Description | Example |
|---|---|---|
| efs- | Embedded filesystem file; generated by mkefs | efs-board_name.raw |
| ifs- | Image filesystem (IFS) file; generated by mkifs | ifs-board_name.elf |
| ipl- | Initial Program Loader (IPL) file | ipl-board_name.raw |
| Extension | ||
| .bin | Binary format file | ifs-board_name.bin |
| .build | Buildfile | board_name.build |
| .efs | Embedded filesystem file; generated by mkefs | efs-flash_filesystem.efs |
| .efi | UEFI (Unified Extensible Firmware Interface) file | x86_64-uefi.efi |
| .elf | ELF (Executable and Linking Format) file | ipl-ifs-board_name.elf |
| .raw | Raw binary data (no jump-to information) | ifs-board_name.raw |
| .srec | S-record format file | ifs-board_name.srec |
| .ui | User interface (configuration) file | ifs-s32v-evb.ui |
Prebuilt binaries and libraries
Prebuilt binaries and libraries are packaged with the BSP, regardless of whether the source code for these components is also included with the BSP. Starting with QNX SDP 6.6, QNX supplies prebuilt binaries and libraries for all BSP components (device drivers, libraries, utilities, etc.).
The BSP's /images directory includes a prebuilt QNX IFS image. This prebuilt IFS image allows you to quickly verify the operation of the QNX OS on your target board by simply transferring the prebuilt image directly to your target, without first building the BSP.
Because this prebuilt image is overwritten by a new IFS when you build the BSP, you may want to make a copy of the prebuilt image for future reference. If you forget to make a copy of the prebuilt image, you can recover it by extracting the BSP from the original .zip archive into a new directory.
