Home » BSP Development Process

BSP Development Process

  • by
Hardware

Every board comes with a base BSP (Board Support Package) from the manufacturers. However, in most of the cases, different levels of customization are required to meet the strict application requirements in real-life scenarios, thus implicitly demanding the development
of a custom BSP.

 This article will cover the main aspects of the Board Support Package development process when creating custom BSPs for embedded systems.

Main BSP Development Steps

The development process of a BSP starts with the hardware and the Operating System that is supposed to be used on the given embedded platform, in general, the hardware platform is chosen according to the application needs and the target OS that needs to run on it, the OS ecosystem for embedded applications is divided into two main categories UNIX Like Operating systems and Real-Time Operating Systems. The BSP development process is highly dependent on the target OS being used, but there are as well few main steps in the development process that are common for both types of operating systems:

Choosing the OS Open-Source vs Proprietary

Depending on specific requirements for the application at hand the OS is chosen, this choice is motivated by considerations as varied as safety-relevant vs nonsafety relevant application, required certifications for the system, real-time requirements, and application software stacks that need to run under the OS, etc.

Bootloader & Boot scheme Development

Irrespective of the chosen OS, the first initialization of the system is done by the bootloader, in general depending on the chosen OS a Bootloader will be customized starting from scratch or from an Open-Source implementation. In addition to the development and configuration of the individual Bootloaders used in each boot stage, the boot scheme/strategy needs to be implemented, such that the system can boot up according to strict application requirements and be in sync with other SoC or cores present on the same Board/SoC

Hardware Abstraction

Depending on the chosen OS there are different techniques to abstract/describe the hardware/SoC on which the OS is running, such that the kernel of the OS can work with an abstract description of the hardware components – peripherals CPU cores, hardware accelerators, interrupt lines, etc. For Unix Like Operating Systems such as VxWorks, Linux, etc. there is the tree structure data format called Device Tree that is used to describe the hardware in a format that can be compiled as a binary blob and at boot time loaded by the Kernel, although not so popular in applications where RTOS’s are used Device Tree starts to gain popularity also with Real-Time Operating Systems, other common hardware abstraction methods for hardware in  RTOS applications includes writing standardized C routines that are well documented and the specification/documentation of the various APIs acts as a todo list for developers that implement the hardware abstraction layers that will, later on, be used in the upper kernel layers/device drivers,  a widespread specification is Common Microcontroller Software Interface Standard (CMSIS) which is implemented by many silicon vendors

Device Driver Development

Once the bootloader and the low-level hardware abstractions are done the OS is ready to boot on the custom platform and the Kernel customization development can start, new functionality is added in terms of device drivers such that the various OS software stacks can be reliably interfaced with the various hardware peripherals, on-chip hardware accelerators, etc. As well as customization for existing drivers, depending on the type of OS Opensource vs proprietary, the amount of work will be centered around customization of existing opensource drivers or development of new ones from scratch based on guidelines and sample drivers from the OS supplier.

OS Stacks Development & Integration

For the OS to be able to reliably provide the application services the needed functionalities in terms of hardware and software resources, various software stacks such as networking, USB, video, audio, etc. need to be integrated or further developed such that they met the requirements of the application at hand, in general, most OS’es, proprietary and Open-Source, have already well tested standard software stacks that can provide all required functionalities for the application layer, the only need in terms of custom development is isolated customization and integration work, such that only the required components are integrated and properly configured according to the needs of the overall application.

Root File System Customization

Embedded applications rely in general on a whole suite of tools that are needed along them such that they can reliably provide the needed functionalities, thus demanding that the rotfs are custom configured to include the various packages that the application needs.

Testing

As with any custom development, the developed BSP also needs to be tested and benchmarked according to the specific application KPIs such that the overall software platform has a solid foundation on which it can function properly at the expected performance. To reliably perform all the tests the infrastructure needs to be seated up in such a way that tests from unit to system test can be developed and integrated on a continuous integration pipeline.

Conclusion

In conclusion, the development of a custom Board Support Package is a complex development work that is highly dependent on the type of OS being chosen and the underlying characteristics of the hardware and the application that is supposed to run on top of the OS, as it dictates the features that need to be developed at both kernel/BSP level and OS Middleware level.

See other articles:

Software testing

The investigation of artifacts and the behavior of the software under test is known as software testing. It also determines whether the actual results match

Read More »
services

Component placement  

Component placement is one of the most critical parts of PCB design. First, you must understand the fundamental criteria for arranging components on a printed

Read More »

Linux System Programming

This article focuses on Linux system calls and other low-level operations, such as the C library’s functions. System programming is the process of creating system software, which is

Read More »
emc

EMC Testing

When an electrical product is tested for electromagnetic compatibility (EMC), it is determined whether or not it will perform satisfactorily in the electromagnetic environment in

Read More »
Hardware

BSP Development Process

Every board comes with a base BSP (Board Support Package) from the manufacturers. However, in most of the cases, different levels of customization are required

Read More »

BSP Development Costs

The Board Support Package (BSP) represents the software link layer that allows, traditionally a real-time operating system (RTOS), to run on a particular hardware environment.

Read More »

Leave a Reply

Your email address will not be published.