Board support package
This article does not cite any sources. (December 2009) (Learn how and when to remove this template message)
In embedded systems, a board support package (BSP) is the layer of software containing hardware-specific drivers and other routines that allow a particular operating system (traditionally a real-time operating system, or RTOS) to function in a particular hardware environment (a computer or CPU card), integrated with the RTOS itself. Third-party hardware developers who wish to support a particular RTOS must create a BSP that allows that RTOS to run on their platform. In most cases the RTOS image and license, the BSP containing it, and the hardware are bundled together by the hardware vendor.
BSPs are typically customizable, allowing the user to specify which drivers and routines should be included in the build based on their selection of hardware and software options. For instance, a particular single-board computer might be paired with any of several graphics cards; in that case the BSP might include a driver for each graphics card supported; when building the BSP image the user would specify which graphics driver to include based on their choice of hardware.
Some suppliers also provide a root file system, a toolchain for building programs to run on the embedded system, and utilities to configure the device (while running) along with the BSP. Many RTOS providers provide template BSP's, developer assistance, and test suites to aid BSP developers in bringing up the RTOS on a new hardware platform.
The term "BSP" has been in use since 1981 when Hunter & Ready, the developers of the VRTX, first coined the term to describe the hardware-dependent software needed to run VRTX on a specific hardware platform. Since the 1980s it has been in wide use throughout the industry. Virtually all RTOS providers now use the term BSP.
The Wind River board support package for the ARM Integrator 920T single-board computer contains, among other things, the following elements:
- A config.h file, which defines constants such as ROM_SIZE and RAM_HIGH_ADRS.
- A Makefile, which defines binary versions of VxWorks ROM images for programming into flash memory.
- A bootrom file, which defines the boot line parameters for the board.
- A target.ref file, which describes board-specific information such as switch and jumper settings, interrupt levels, and offset bias.
- A VxWorks image.
- Various C files, including:
- flashMem.c—the device driver for the board's flash memory
- pciIomapShow.c—mapping file for the PCI bus
- primeCellSio.c—TTY driver
- sysLib.c—system-dependent routines specific to this board
- romInit.s—ROM initialization module for the board; contains entry code for images that start running from ROM
Additionally the BSP is supposed to perform the following operations
- Initialize the processor
- Initialize the bus
- Initialize the interrupt controller
- Initialize the clock
- Initialize the RAM settings
- Configure the segments
- Load and run bootloader from flash