What is a Board Support Package (BSP)?

A board support package (BSP) is the collection of software components that initialise, configure, and abstract the hardware of a specific embedded board or SoM (System-on-Module) for an operating system or real-time OS. The board support package sits between the hardware and the OS, providing the OS with a consistent interface to every peripheral — without a BSP, the OS cannot access the CPU, memory, clocks, GPIO, UART, SPI, I2C, Ethernet, USB, display, or any other hardware component on the board.

Every embedded product that runs an OS requires a board support package tailored to its exact hardware configuration. Porting a Linux BSP to a new board is typically the first major engineering milestone in an embedded product development project.

BSP Development for Embedded Linux: Components

A complete board support package for embedded Linux consists of several layers:

hardware-software stack

1. Bootloader (U-Boot)

U-Boot is the most widely used bootloader in embedded Linux products. BSP development for the bootloader includes:

  • Board configuration file defining memory map, clock speeds, DRAM training parameters
  • SPL (Secondary Program Loader) for boards with DRAM that must be initialised before loading the main bootloader
  • Boot sequence configuration (eMMC, SD card, NAND flash, network boot)
  • Device Tree Blob (DTB) loading and passing to the kernel
  • Secure boot chain setup (verified boot, HAB for NXP, TF-A for ARM64)

2. Linux Kernel Board Port

The Linux kernel board support package includes:

  • Device Tree (DTS): The hardware description file that describes the board's peripheral connections, memory addresses, interrupt assignments, and clock frequencies to the Linux kernel. The device tree replaces board-specific C code in the kernel — the same kernel binary can boot multiple hardware variants if their device trees are correct.
  • Board-specific kernel configuration: Selecting which kernel features, file systems, and drivers to enable for the target product.
  • Out-of-tree driver integration: Kernel drivers for peripherals not yet mainlined — custom sensors, proprietary displays, carrier board-specific I/O expanders.

3. Hardware Abstraction Layer (HAL) and Device Drivers

The hardware abstraction layer in a board support package provides OS-independent interfaces to hardware peripherals:

  • GPIO driver — digital input/output control
  • UART, SPI, I2C, CAN bus drivers
  • Ethernet MAC/PHY driver and network configuration
  • Display/GPU drivers — especially complex for multimedia-capable SoCs (NXP i.MX8, Rockchip RK3588, Qualcomm)
  • Audio CODEC drivers
  • Camera/ISP drivers for vision applications
  • Power management drivers (PMIC configuration, suspend/resume)

4. Root Filesystem and Package Configuration

The BSP defines the root filesystem structure (built using Yocto or Buildroot), including system configuration, network settings, startup scripts, and the runtime libraries needed by the application.

BSP Development for Bare-Metal and RTOS Systems

For microcontroller-based products (ARM Cortex-M, RISC-V) running without an OS or with a lightweight RTOS (FreeRTOS, Zephyr, ThreadX), the board support package serves the same hardware abstraction purpose but is simpler:

  • Startup code: Vector table, stack/heap initialisation, clock system setup (PLL configuration)
  • CMSIS-based peripheral access: ARM's standardised hardware abstraction layer for Cortex-M peripherals
  • HAL drivers: Vendor-provided (STM32 HAL, NXP MCUXpresso SDK, Renesas FSP) or custom peripheral drivers for all on-chip and external peripherals
  • RTOS porting layer: Adapting the RTOS to the specific MCU's architecture (interrupt nesting, critical sections, tick timer)

BSP Development Best Practices

  • Validate each BSP component incrementally: bootloader → kernel boot → peripheral drivers → application.
  • Use device tree overlays for hardware variant management — avoids maintaining multiple kernel configurations.
  • Implement a manufacturing test mode in the BSP that validates all hardware interfaces before shipping.
  • Document all out-of-tree patches to track what will need rebasing when the kernel version is updated.

Embien's BSP Development Services

Embien Technologies provides expert board support package development services for embedded Linux and bare-metal/RTOS products. Our BSP engineers have brought up Linux and RTOS on NXP i.MX6/i.MX8/i.MX9, Renesas RZ/G2, Qualcomm QCS, Xilinx/AMD Zynq, Rockchip, and custom FPGA-based platforms.

Our BSP development services cover U-Boot porting, device tree authoring, Linux kernel driver development, Yocto/Buildroot integration, hardware abstraction layer design, and full embedded Linux BSP validation. As an NXP IDH partner and Renesas partner, Embien has early access to silicon and BSP reference code for accelerated board bring-up.

« YOCTO VS BUILDROOT: WHICH EMBEDDED LINUX BUILD SYSTEM SHOULD YOU CHOOSE?
HOW DOES SECURE BOOT WORK ON EMBEDDED LINUX? A TECHNICAL DEEP DIVE »

Related Content

Digital Transformation Services
insight image

Embien's Digital Transformation Services help modernize embedded products through connected technologies, software integration, and scalable digital solutions.

Read More


Embedded OS Porting and BSP Development
insight image

Embien's Embedded OS Porting and BSP Development services cover OS porting, board bring-up, kernel customization, device drivers, and BSP integration.

Read More


Production-Grade BSP Development for a Secure Cortex-M7 MCU
insight image

A case study on developing a production-grade BSP for a secure Cortex-M7 MCU, covering hardware bring-up, peripheral drivers, RTOS integration, and secure boot support.

Read More


Subscribe to our Insights