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. More specifically, a custom embedded systems PCB with a lot of application-specific peripherals and hardware components.
In other words, it is a necessary code that translates to drivers and other routines created for specific hardware that, without it, the RTOS will not be able to function in that environment.
What is the cost of a BSP development? That depends on many factors. We will cover them in this article.
Understanding the development costs
The Board Support Package (BSP) development cost is determined by the required number of OS low-level custom components that need to be adapted or developed from scratch. An additional main factor is the required certifications that the system must have, which significantly increases the required robustness of the Board Support package, thus generating a higher development effort.
The board/hardware itself represents the starting point of any BSP development cost.
The more complex the board and peripherals are (such as USBs, graphic cards, or high-speed peripherals), the bigger the costs.
Further, let’s see how the type of BSP can highly impact the cost. Custom BSP or Certified BSP?
Custom Board Support Package (BSP)
As the name suggests, it is a custom-made BSP for a standard system based on a list of requirements from a client.
The number of components that require customization directly impact the BSP development cost. Custom components could be anything from platform-specific hardware accelerators, peripherals that require device drivers, low-level initialization code up to custom architecture porting of the entire OS to a new architecture that the OS did not previously support.
Let us take a case study for a better understanding.
Medical Device System
Scope: Port a legacy BSP from a 16-bit platform to a new 32-bit microcontroller.
Key development areas:
– OS Architecture porting
– Device driver development
– Bootloader development
– Low-level initialization code (system clocks, caching modes, memory partitioning)
– System testing
The porting of the new BSP to a new hardware platform represented the most demanding part of the development effort. The reason behind this is the characteristics of the new hardware:
- Lots of custom peripherals
- SoC architecture not supported by the OS
- Microcontroller being a medical standard, required exigent testing (unit module and integration testing)
In addition, because of the proprietary OS, the client could not benefit from the open-source community support, which led to a lot of custom low-level development and a need for a long-term maintenance plan.
Certified Board Support Package (BSP)
Compared to the Custom BSP, the difference with the Certified BSPs is that it is being developed by following the specifications and customizations of the desired certification.
Certified BSPs enter into the category where the dominant word is strictness. There is no room for mistakes in specific industries, such as medicine, automotive, aeronautics, or the military. Therefore, the systems and equipment used here alongside the components must comply with particular standards. Also, the same rules apply to the BSP.
The international standard ISO 26262 applies to the safety and automotive industry. Any BSPs developed for any components/subsystems here must respect the standard. For that reason, the development costs compared between a BSP for a standard system and a custom BSP made for a safety-relevant system are much higher. The same applies to ISO 13485, in the medical industry.
DO-254 Design Assurance for Airborne Electronic Hardware is the certification for manufacturing airborne electronic hardware. It is well-linked with the DO-178C Software Considerations in Airborne Systems, and Equipment Certification applied for all commercial software-based aerospace systems. Compared to the other certified systems, the development cost can double, triple, or even go higher.
So why is a BSP for a certified system much more expensive than a custom BSP for a standard one?
- It involves extra development effort because from the start, not only the board is custom. The OS is also tailored to respect the rigorous certified rules. Therefore the BSP also needs to be customized almost entirely. Existing open-source parts cannot apply here.
- The list of custom features and demands is much higher, and it also implies a strict development process according to the specific industry standard which includes everything from requirements traceability, detailed design documentation, and so on.
- The development process of each part is highly rigorous. It involves heavy-weight processes, from high-level software requirements to branches in the machine code. All are needed to ensure that every piece of the software in the system is essential in the first place, correctly written, and adequately tested.
- Each software component must be rigorously tested. It implies unit testing, module testing, and integration testing.
- It implies static code analysis. Written code must respect the MISRA compliance (2020 being the current latest one).
- It implies memory partitioning in safety and non-safety relevant partitions.
- It implies reliability and redundancy. In case of a failure, the system must have subcomponents that can take over the tasks done by the faulty component.
Aspects to consider
System on a Chip (SoC) and Operating System
The link between the Operating System and the SoC for what the BSP is purposed impacts the costs. The BSP development requires lower effort if the SoC is highly integrated into the OS. Therefore the expenses for development will be lower.
Another aspect to consider is how widespread the Operating System is and how outdated the SoC is. Existing on the market for quite some time and being popular means that open-source components can be reused in the process of BSP development. It also translates to an easier development process and therefore a lower development cost.
Maintenance and support
You buy the BSPs now, but what happens in the future? You want to make sure you receive support for it. The RTOS might update to a newer version, which must be considered for long-term board functionality. If the board is not that popular, it will be incompatible over upgrade.
An additional cost that needs to be considered is buying a maintenance & support plan. This is a must-have if you are planning to stay up to date, and you do not want any unpleasant times if there is a malfunction in the system. An effective way to tackle long-term maintenance support is to use a popular open-source OS when possible. That way you can benefit from the community support. The open-source community could maintain the custom features for your product once upstreamed and approved by the community/respective maintainer.
List of custom demands
The more custom demands a client has, the more effort a development team must make. Many additional features applied to the BSP development will also require more development effort. That being the case, the amount of development directly impacts the cost here.
Conclusion
To sum up, there is no direct answer on how much a BSP development costs. It is all up to what you are trying to achieve and your short- or long-term needs.
Get in touch with us. Our professional team of consultants is ready to listen to your requirements, give you a quote and deliver the best solution!
See other articles:
Proc file system in Linux
The Proc file system is one of the most used simulated file systems in the Linux operating system. When the system reboots, this file
OpenRC
OpenRC is a dependency-based init system that was designed to work with Unix-like computer operating systems. It keeps compatibility with the system-provided init system,
Yocto Project
Yocto Project is an open source community project that helps developers to create customized systems based on Linux. It has an accessible toolset that
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
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
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