A Board Support Package (BSP) is a set of source files to create a usable operating system (OS). BSPs usually consist of multiple things: low-level hardware description files, proprietary firmware, bootloader source code, the code of the OS itself, and user space applications, which run on top of the OS. Together, they form the BSP of a specific OS version for a specific type of hardware.
Android BSPs are less common than Linux ones. Linux has a longer history in embedded systems for IoT (Internet of Things) devices, so it has a much broader ecosystem of available BSPs.
As demand for embedded Android solutions increases, the need for Android BSPs grows.
Let's take a look at what an Android BSP is, and how to find and customize Android BSPs for your specific hardware platform.
What is an Android BSP?
An Android Board Support Package (BSP) refers to the package of device drivers, kernel customizations, bootloaders, and any necessary patches or tweaks to build the whole Android OS and ensure that it can run on the hardware you're targeting.
Using an existing Android BSP significantly speeds up development for a specific Android board. Developers are freed up from the challenging task of kernel programming and driver development, and can instead focus on more product-related features.
Developing a BSP from scratch can take months—sometimes years—of development. In some cases, it isn't even possible to develop because some peripheral devices might rely on proprietary drivers or firmware, which can't be developed easily.
Developing an Android BSP when your team isn't familiar with it can be a herculean task, requiring immense amounts of learning. You'll significantly speed up your time-to-market by relaying on an existing Android BSP and customizing it to your needs, instead of writing it yourself.
Once you're ready to develop the final hardware product, partnering up with a team who is familiar with Android BSP customizations is boosting your time-to-market even further.
Although fewer options exist for board support packages in Android than in Linux, it is indeed possible to obtain Android BSP board support packages for evaluation and development boards. Every reputable hardware manufacturer will provide a BSP for their hardware. The option exists mostly for volume orders, but it should still be possible to request a functioning BSP for the hardware of your choice.
However, it's important to evaluate several technical quality indicators for these BSPs. For example, the Android and kernel version should be at least 11, although 13 and 14 are preferred. Some BSPs also lack Android's Verified Boot feature, which cryptographically verifies the integrity of the Android OS and kernel before executing it. If Android Verified Boot is missing from the BSP, it will need to be added during customization.
Further quality aspects also need to be verified by a team experienced in Android BSP quality assessment and customization to ensure that the BSP is secure and works with the hardware configuration you're targeting.
If you want to dive into the world of Android BSP development and hope to build a team of in-house Android BSP developers, your team will need knowledge of:
Technical skills aside, the other requirement is budget. Creating an Android BSP from scratch can cost hundreds of thousands of dollars, with maintenance and updates not included.
The different layers involved in Android BSP architecture might feel confusing. People talk about firmware, kernels, HALs, and BSP in Android architecture which aren't the same, but whose meanings intersect.
Let's dive into the meanings of these terms:
What is the difference between BSP and OS?
A BSP is an integrated collection of components required to make an OS function on a given hardware platform, including the OS, drivers, and low-level kernel code. Whereas OS code alone might contain abstraction APIs to access underlying hardware, the BSP must actually implement those calls.
What is the difference between BSP and drivers?
Drivers are a core element in any BSP. Drivers let the operating system communicate with and control hardware devices. In addition to drivers, BSPs also contain bootloader code, config files for that specific hardware device, and sometimes diagnostic and test utilities.
Other important questions when working with BSPs are:
We can help with all these questions. Whereas emteria doesn't develop Android BSPs from scratch, we can help to manage and customize BSPs for your specific product. You keep all rights to the final package, and we can maintain it for you and take care of updates.
To learn more about how we can help you customize your Android BSPs, contact us for a no-obligation chat.