Skip to content
Inovasense

BSP (Board Support Package)

BSP (Board Support Package) — Hardware abstraction layer bridging PCB design to an RTOS, including startup code, drivers, and peripheral config.

BSP — Board Support Package

A Board Support Package (BSP) is the foundational software layer that makes a specific hardware board work with an operating system or RTOS. It’s the bridge between your custom PCB and the software that runs on it — containing everything needed to initialize the processor, configure peripherals, and provide a hardware abstraction layer for application code.

What a BSP Contains

ComponentPurposeExample
Startup codeCPU initialization, vector table, stack setupstartup_stm32f407xx.s
Linker scriptMemory map (Flash, RAM, stack, heap regions)STM32F407VG_FLASH.ld
Clock configurationPLL setup, bus dividers, peripheral clockingsystem_init(), Devicetree
Peripheral driversGPIO, UART, SPI, I²C, ADC, PWM, DMAHAL/LL drivers, Zephyr drivers
Pin multiplexingMapping MCU pins to board-specific functionsDevicetree overlays, CubeMX
Board-specific configLED mappings, button assignments, sensor connectionsBoard DTS files
Debug configurationJTAG/SWD probe settings, flash programming algorithmsOpenOCD configs, pyOCD

BSP Development Workflow

When Inovasense develops a BSP for a custom board:

  1. Schematic review — Verify pin assignments, voltage domains, clock sources
  2. Devicetree / config creation — Map every MCU pin to its board function
  3. Startup bring-up — Clock init, serial console, LED blink (“hello world” for hardware)
  4. Peripheral verification — Test every bus (SPI, I²C, UART) with logic analyzer
  5. Driver integration — Sensor drivers, radio modules, display controllers
  6. Power management — Sleep mode configuration, wake-up source setup
  7. Production test firmware — Manufacturing test sequence for every peripheral

BSP vs. SDK vs. HAL

LayerScopeExample
HAL (Hardware Abstraction Layer)Vendor-provided register-level wrappersSTM32 HAL, nrfx
BSP (Board Support Package)Board-specific configuration using HALCustom board Devicetree + drivers
SDK (Software Development Kit)Complete framework with RTOS + middlewarenRF Connect SDK, ESP-IDF

Why BSP Quality Matters

A poorly written BSP causes problems that are extremely difficult to debug later:

  • Wrong clock configuration → intermittent UART corruption at high baud rates
  • Incorrect pin mux → SPI bus conflict that only appears when a specific peripheral is active
  • Missing pull-up configuration → I²C works on the bench but fails at temperature extremes
  • Wrong flash wait states → HardFault crashes that only occur after the chip warms up
  • RTOS — The BSP provides the hardware layer that the RTOS kernel runs on.
  • SoC — The System-on-Chip that the BSP targets.
  • PCB Design — BSP development starts with the schematic and PCB layout.

BSP development for custom boards is one of our core embedded services. See our Embedded Systems Development capabilities.