What a board support package does
A board support package (BSP) is the set of low-level software that adapts an operating system to one specific circuit board. An operating system such as Linux knows how to schedule tasks and manage files, but it knows nothing about the particular processor, memory map, ports and peripherals on a board until the BSP tells it. The BSP supplies the code that starts the board, the kernel built for its processor, the drivers for its interfaces and a description of how the hardware is wired.
BSPs matter most in embedded and Arm-based systems, where every board is different and there is no standard PC-style discovery of hardware. When a carrier board adds its own interfaces, or a capture card or camera is fitted, the BSP needs matching drivers and configuration, and those have to be carried forward to each new release.
BSPs are usually written by the silicon vendor or the board manufacturer. The processor vendor provides a reference BSP for its own evaluation board, and each board maker adapts it to its design. System integrators then build the final operating system image on top, adding application software, security settings and any drivers for fitted options.
What is inside a BSP
The exact contents vary by vendor and operating system, but most embedded Linux BSPs contain the same building blocks.
-
//
Bootloader. Starts the hardware, initialises memory and loads the operating system. U-Boot is common on Arm boards, and NVIDIA Jetson uses UEFI-based boot firmware on current modules.
-
//
Kernel and patches. A Linux kernel built and configured for the processor, often with vendor patches not yet in mainline Linux.
-
//
Device drivers. Code that lets the operating system use the board’s Ethernet, USB, storage, display, camera and serial interfaces.
-
//
Hardware description. A device tree on Arm boards, or ACPI tables on x86, that tells the kernel which devices exist and how they are connected.
-
//
Root file system and tools. A reference file system, flashing tools and build scripts, so the image can be built and written to the board.
BSPs on Arm and x86 systems
The term BSP is used most on Arm and other embedded processors. On x86 industrial PCs, much of the same job is done by standard UEFI firmware and ACPI, so a general-purpose operating system usually installs and runs with ordinary drivers.
| Layer | Typical Arm embedded board | Typical x86 industrial PC |
|---|---|---|
| Boot firmware | U-Boot or vendor UEFI, part of the BSP | UEFI BIOS supplied with the board |
| Hardware description | Device tree, specific to each board | ACPI tables in the firmware |
| Kernel | Vendor kernel, often patched | Standard distribution kernel |
| Drivers | Mostly delivered in the BSP | Mostly in the OS, plus a few vendor drivers |
| Operating system install | Board-specific image flashed to storage | Standard Windows or Linux installer |
Our FAQ on what UEFI is explains the x86 side of that table.
The NVIDIA Jetson BSP
On NVIDIA Jetson, the BSP is Jetson Linux, previously called Linux for Tegra (L4T). It contains the boot firmware, Linux kernel, drivers, device trees and an Ubuntu-based root file system for each Jetson module, and it is delivered as part of JetPack alongside CUDA, TensorRT and the other AI libraries. NVIDIA’s BSP describes its own developer kit carrier boards. A production carrier board with different ports, cameras or power design needs the BSP adapted: new device tree entries, pin configuration and sometimes extra drivers.
Carrier board manufacturers publish a BSP for each JetPack release they support, so the list of supported releases is as important as the ports. Our Jetson carrier boards come from manufacturers that maintain those BSPs, and our guide to choosing a Jetson carrier board covers why BSP support should be checked before the hardware is chosen.
Keeping a BSP current
A BSP is tied to a specific kernel and operating system release, so it has to move when they do. Security fixes, new JetPack versions and new hardware revisions all mean a new BSP build, and drivers for custom hardware must be ported each time. Production fleets often build their image with the Yocto Project, where the BSP becomes a layer that sits under the application; our article on JetPack 7.2 and Yocto on Jetson Orin explains that approach. In our drone detection case study we created drivers for the current BSP in the customer’s software stack and help them migrate to new NVIDIA releases.
Quick answers on board support packages
Board support packages: common questions
What does BSP stand for in embedded systems?
Board support package. In plumbing BSP means British Standard Pipe, a thread type, but in computing it is the software package that makes an operating system run on a board.
What is the difference between a BSP and a HAL?
Scope. A hardware abstraction layer is a thin software interface to peripherals, common on microcontrollers. A BSP is the full set of boot code, kernel, drivers and configuration for a board running an operating system.
Is a BSP the same as an SDK?
No. The BSP gets the operating system running on the hardware. An SDK provides the libraries and tools for building applications on top. JetPack contains both: Jetson Linux is the BSP, and CUDA and TensorRT are the SDK.
What is a BSP layer in Yocto?
A layer of recipes for one board or processor family. It holds the kernel, bootloader, device tree and drivers, so the same application layers can be built for different hardware.
Do x86 PCs need a BSP?
Rarely in the same way. UEFI firmware and ACPI let standard Windows and Linux run on most x86 boards. Specialized embedded x86 builds may still ship a BSP for custom drivers or real-time kernels.
We supply Jetson and Arm systems with the BSP, drivers and operating system image installed and validated as standard, and maintain them across releases for the life of the project.