Development Of Board Support Packages (bsps)

1

How to start working with us.

Geolance is a marketplace for remote freelancers who are looking for freelance work from clients around the world.

2

Create an account.

Simply sign up on our website and get started finding the perfect project or posting your own request!

3

Fill in the forms with information about you.

Let us know what type of professional you're looking for, your budget, deadline, and any other requirements you may have!

4

Choose a professional or post your own request.

Browse through our online directory of professionals and find someone who matches your needs perfectly, or post your own request if you don't see anything that fits!

Some industries have such importance that regulations dictate regulated systems must follow certification requirements. It has been the case in aerospace since the 1990s and automotive and industrial automation. Regulatory authorities handle all aspects of the aviation sector, from engines to airplanes. These include computers embedded in safety-sensitive aircraft components like flight computers and cockpit displays. Electronics must meet the requirements of DO-254. The software assembles the criteria of DO-173.c.

Example filesystem layout

A BSP is constructed for a specific SoC that does not follow a predefined pattern. However, one can identify a set of standard directories:

\System\

\ReservedSpace\

If the sections are used, the partitions must be defined in dedicated directories at the root. In this example, there are five partitions reserved for Linux and three for RTOS2. In addition to these significant areas reserved for software stacks, other filesystems named data, devdata0, etc. These disk images contain the programmer's flash drive content from which it will be copied during the embedded operating system bootstrap process. The physical location onboard may vary from hardware platform to platform but all boards have an embedded SCSI hard drive used to store the software images.

This results in a standard filesystem structure both the software components are stored and are loaded by specialized bootloaders. The directory containing the bootloaders is named \BOOT\. There are two of them, one for Linux and another for RTOS2. However, there could be more than two partitions that contain their dedicated bootloader.

As seen in this example layout, it is possible to have multiple Linux systems running at once on a single board. It can even be possible to run different flavours of Linux on the same board at the same time given enough resources. However, if one tries to run Windows XP it will not work because Microsoft has revoked support on 20 April 2014. This is part of the reason why we can't run current Windows versions in DO-254 applications.

Are you a developer of embedded systems?

Board support packages are meant to be used by people who know the software BSP development process for embedded systems. For this reason, board support package models are not tailored towards developers of personal computers or servers. This makes BSPs easier but also less powerful than Linux distributions released by vendors like Debian, Fedora, Ubuntu, and OpenSUSE.

Geolance is an open-source project that provides a complete set of tools for creating your customized distribution based on Yocto Project technology. It's designed to provide a flexible foundation with which you can create custom images for many types of devices – from small IoT edge gateways to high-end multi-core servers and everything in between! You can use it as the basis for your next product or just as a learning tool so you can get started with building your own Linux distribution today!

Technical Details about Board Support Packages (BSP)

Board support packages contain two types of elements:

Components that are specific to a certain SoC and will not be used on another SoC Components that must be customized for each product or project board support packages can be compiled from source code, binary blobs, or a mixture of both. Some vendors ship BSPs with precompiled kernels while others do it by applying patches to the Linux kernel released by Linus Torvalds. It is not unusual for a board vendor to fix bugs upstream but keep them hidden from users because they cause problems on their boards. This strategy allows them to release new products faster.

Board support packages are meant to be used by people who know the software board support package development process for embedded systems. For this reason, board support package models are not tailored towards developers of personal computers or servers. This makes BSPs easier but also less powerful than Linux distributions released by vendors like Debian, Fedora, Ubuntu, and OpenSUSE.

Linux kernel with Board Support Packages is a system with hard-coded dependencies on specific hardware component patches that can only replace patches sent upstream which results in a lack of maintainability over time

One could argue that BSPs are not always fit for production since they can't evolve as fast as vendor-provided distributions. We will see now the reasons behind this statement.

The definition of the Linux standard is under the GPL v2 which means that it can be used without any limitations by anyone who does not charge for software. For commercial projects, some vendors release their BSPs under an open-source license like Apache 2.0 to avoid legal issues with their customers when they redistribute or modify these packages.

There are two big problems when using binary blobs in kernel space:

You don't know what's inside If you use code that has closed-source components, you must keep up with security updates yourself since upstream won't fix them for you

Board Support Packages (BSP) - Developer's Guide

Security vulnerabilities are rarely reported for embedded devices, bng that needs to be taken into consideration by companies that use these products in their infrastructures. Vendors usually point out that they release updates as soon as possible, if not immediately after discovering the security holes themselves. However, nobody knows how many bugs go undetected because patches are only available on request or cannot be applied without invalidating warranties. For this reason, it is much safer to choose a vendor who provides software under open licenses like GPL v2 instead of restricting usage with closed source licenses.

There are other problems related to using a BSP in a project

BSPs may have dependencies on low-level components from the kernel to the filesystem, which means that you must use the same versions as those supported by the vendor. In this scenario, bugs at the lowest levels of the stack might affect functionality throughout your whole system

The Linux distribution with Board Support Package is not designed for configuration and customization per company needs. Creators of BSPs assume users will make their optimizations instead of providing documentation about how to go around doing them

Linux distributions customized according to a particular areuct are more, but they have many drawbacks: You need experience building a distribution from source or binaries. It can be time-consuming if you don't have tools to automate the building process You may need access to all hardware documentation which is usually not provided by the manufacturer. The solution would be reverse engineering but it is a complicated and time-consuming task

Binary blobs in kernel space restrict possibilities of customization and upgrade significantly. If you don't have access to source code, some vendors allow users to download compiled binaries with technical support while others do not provide any information about drivers that are reused inside their BSPs

This is important for embeds that rely on proprietary software such as graphics acceleration or multimedia processing: an upgrade could introduce bugs or performance issues. Some boards might even stop working completely because they lose functionality when migrating from one version of the firmware to another without an upgrade path

An important detail to consider is that some vendors do not open-source their products. If you are using a BSP with GRUB, for example, it will be very difficult or even impossible to run another distribution because these BIOSes come with proprietary code

If the main purpose of your product is to run Linux as an operating system then embedding the kernel space with binary blobs might not be a good idea. The same applies if your project heavily relies on Yocto or any other distribution which includes 100% free software components

Binary blobs in kernel space can also introduce extra security risks since there's no way to audit them nor guarantee they don't contain backdoors. Leaving something closed-source inside an embedded system can be dangerous because it might contain malicious code designed to hack the user's privacy. For example, if you are building a connected device, you should avoid including software components third parties cannot agree on auditories.

Binary blobs in kernel space usually come with licenses that do not allow their redistribution. This is why some companies (such as Facebook) prefer to use Linux distributions without binary blobs like OpenWrt even if this option requires more work on the development side. When using GPL v2 / v3 licenses, embedded engineers can share sources and binaries of the software they rebuild internally which reduces workload significantly

Conclusions

Using Board Support Packages (BSPs) might save time for developers but it also introduces many challenges that need to be addressed. Some of the problems mentioned above might seem easy to solve at first but they are usually difficult to resolve especially for beginners

The Linux distribution with Board Support Package is not designed for configuration and customization per company needs. Creators of BSPs assume users will make their boot time optimization instead of providing documentation about how to go around doing them.

Sharing Board Support Packages internally only works when there's no chance an external party could find out how the product works because once sources & binaries are shared people can copy/paste code without giving credits or linking back to the original project

Binary blobs in kernel space restrict possibilities of customization and upgrade significantly. If you don't have access to source code, some vendors allow users to download compiled binaries with technical support while others do not provide any information about custom device drivers that are reused inside their BSPs

Binary blobs in kernel space can also introduce extra security risks since there's no way to audit them nor guarantee they don't contain backdoors. If you are building a connected device, for example, you should avoid including software components third parties cannot audit-parties

Linux distributions without binary blobs like OpenWrt requires more work on the development side but it allows companies to share sources and binaries of the software without giving credits or linking back to the original project

Using Board Support Packages (BSPs) might save time for developers but it also introduces challenges that need to be addressed. Some of the problems mentioned above might seem easy to solve but they are usually difficult to resolve especially for beginners g from one version of the firmware to another without an upgrade path

An important detail to consider is that some vendors do not open-source their products. If you are using a BSP with GRUB, for example, it will be very difficult or even impossible to run another distribution because these BIOSes come with proprietary code

If the main purpose of your product is running Linux as an operating system then embedding the kernel space with binary blobs might not be a good idea. The same applies if your project heavily relies on Yocto or any distribution which includes 100% free software as its base

If you are looking for low-level software to use in your product, one option is to look for alternatives such as BusyBox, Contiki or QtC which open-source low-level software and let the user decide what they want to do with it. Another approach is directly getting a copy of the source code from LiteX and providing a link back to the original project if possible

OpenWrt will not be able to distribute binaries compiled outside the build system because this would require building Linux from scratch which is why it can be difficult or even impossible to run another distribution on top of an embedded Linux distribution created with OpenWrt

A good solution might be using Yocto since this system allows users to quickly build a custom Linux distribution without building the kernel from scratch. This solution is also good for companies that want to share their custom builds with third-party parties since using Yocto provides an upgrade path

Limitations of this research include lack of documentation from vendors which affect the accuracy of some data presented in this article. Details were also not considered for each vendor because it would increase the length of the paper significantly

A drawback mentioned above was the lack of information provided by some vendors about software components reused inside BSPs. A reason for this lack of information could be linked to performance problems some developers have while working with Yocto thanks to its large size and complexity. A possible workaround suggested by one developer is splitting your customization into layers and hiding them by using more layers. Keeping this in mind, I tried to get the most accurate data about each embedded Linux distribution but lack of documentation from vendors made it impossible for me to get 100% accurate information

I want to thank all developers involved with these projects since they work hard on creating new technologies that can help both professionals and amateurs improve their workflow. I hope more people will start working on low-level software which would allow companies, researchers, and enthusiasts to enjoy faster and easier development while keeping original BSPs secure and auditable at the same time.

Choosing the 'Right' Board Support Package

Choosing the 'Right' Board Support Package is challenging, but not impossible - Embedded Software Engineering - Development Of Board Support Packages (bsps)

Embedded software engineering in embedded operating systems development

An alternative approach is using BusyBox which provides low-level system utilities in a single binary

It's possible to reduce firmware size by getting rid of certain features that are not needed or that might be replaced with custom software solutions

The main drawback when it comes to Yocto focused on its complexity and large size since this distribution uses more than 12000 packages

This solution is also good for companies that want to share their custom builds with third-party parties since using Yocto provides an upgrade path

Limitations of this research include lack of documentation from vendors which affect the accuracy of some data presented in this article. Details were also not considered for each vendor because it would increase the length of the paper significantly

OpenWrt will not be able to distribute binaries compiled outside the build system because this would require building Linux from scratch which is why it can be difficult or even impossible to run another distribution on top of an embedded Linux distribution created with OpenWrt

A good solution might be using Yocto since this system allows users to quickly build a custom Linux distribution without building the kernel from scratch. This solution is also good for companies that want to share their custom builds with third-party parties since using Yocto provides an upgrade path

Limitations of this research include lack of documentation from vendors which affect the accuracy of some data presented in this article. Details were also not considered for each vendor because it would significantly increase the paper's length.

A drawback mentioned above was the lack of information provided by some vendors about software components reused inside BSPs. A reason for this lack of information could be linked to performance problems some developers have while working with Yocto thanks to its large size and complexity. A possible workaround suggested by one developer is splitting your customization into layers and hiding them by using more layers. Keeping this in mind, I tried to get the most accurate data about each embedded Linux distribution but lack of documentation from vendors made it impossible for me to get 100% accurate information

OpenWrt will not be able to distribute binaries compiled outside the build system because this would require building Linux from scratch which is why it can be difficult or even impossible to run another distribution on top of an embedded Linux distribution created with OpenWrt

A solution used by Yocto and OpenEmbedded called BitBake allows creating custom software stacks without building the whole system, but there is a major drawback - these distributions require large amounts of RAM, which makes them less suitable for low-power devices. Another advantage compared to OpenEmbedded involves refactoring existing code thanks to its 'Eclipse-based Integrated Development Environment' called Eclipse Yocto Plug-in

A drawback mentioned above was the lack of information provided by some vendors about software components reused inside BSPs. A reason for this lack of information could be linked to performance problems some developers have while working with Yocto thanks to its large size and complexity. A possible workaround suggested by one developer is splitting your customization into layers and hiding them by using more layers. Keeping this in mind, I tried to get the most accurate data about each embedded Linux distribution but lack of documentation from vendors made it impossible for me to get 100% accurate inforCompanies can reduce size is by minimizing the use of package managers since many packages bring along dependencies that complete the package manager grow over time. Another solution is removing anything not used since this can lead to removing unused software components

OpenWrt will not be able to distribute binaries compiled outside the build system because this would require building Linux from scratch which is why it can be difficult or even impossible to run another distribution on top of an embedded Linux distribution created with OpenWrt

One drawback mentioned above was the lack of information provided by some vendors about software components reused inside BSPs. A reason for this lack of information could be linked to performance problems some developers have while working with Yocto thanks to its large size and complexity. A possible workaround suggested by one developer is splitting your customization into layers and hiding them by using more layers. Keeping this in mind, I tried to get the most accurate data about each embedded Linux distribution but lack of documentation from vendors made it impossible for me to get 100% accurate information

A solution used by Yocto and OpenEmbedded called BitBake allows creating custom software stacks without building the whole system, but there is a major drawback - these distributions require large amounts of RAM, which makes them less suitable for low-power devices in a particular hardware environment. Another advantage compared to OpenEmbedded involves refactoring existing code thanks to its 'Eclipse-based Integrated Development Environment' called Eclipse Yocto Plug-in.

BSP Support & Maintenance

Embedded Linux distributions provide developers with a platform to build custom embedded target processor systems. This article provides information about the most used and best-documented BSPs for specific hardware platforms. The main intention is not to promote any particular vendor but rather to help companies in their decision-making process when choosing between different BSPs or vendors. Also, we wanted our comparison table and content, in general, to be as transparent and objective as possible to avoid misinterpretations in future.

The main reason why we think it is important to compare these embedded Linux distributions lies in their targets - companies make business decisions based on the knowledge they have from the previous exp; therefore, herefore getting familiar with the market before starting a new project saves a lot of time and money. As an example, some companies may be used to working with Yocto and want to use it as a starting point for their new project but the lack of documentation about software components reused inside BSPs could lead them to errors during development which will eventually lead to delays. In this case, if they knew Embedded Linux distributions provide developers with a platform to build custom embedded systems. Therefore, this article provides information about the most used and best-documented BSPs for specific hardware platforms. The main intention is not to promote any particular vendor but rather to help companies in their decision-making process when choosing between different BSPs or vendors. Also, we wanted our comparison table and content, in general, to be as transparent and objective as possible to avoid misinterpretations in future.

The main reason why we think it is important to compare these embedded Linux distributions lies in their targets - companies make business decisions based on the knowledge they have from the previous exp; therefore, herefore getting familiar with the market before starting a new project saves a lot of time and money. As an example, some companies may be used to working with Yocto and want to use it as a starting point for their new project but the lack of documentation about software components reused inside BSPs could lead them to errors during development which will eventually lead to delays. In this case, if they knew that each package brings along dependencies making OpenWrt package manager grow over time vendors do not document some packages vendors, they could avoid this kind of problem.

Linux Kernel Version

At the core, all embedded Linux distributions are based on the Linux kernel, therefore choosing one which is updated frequently and has good support for various hardware platforms is key to your project's success. Most vendors list their supported kernel versions within documentation but it can be difficult to compare them because some vendors provide custom patches while others include stable upstream releases only. To get an accurate idea about vendor support, we tested each distribution by compiling its latest stable release (at the time 3.10) using GCC version 4.8 and then checking if both built-in Ethernet device drivers were working without issues or required modifications.

BSP Layers

Most embedded Linux distributions provide their own set of BSP layers for specific hardware architectures. These separate layers are used to group common reusable components which can be reused across different product lines thus simplifying the development process. At first glance, many of these may seem similar but it is not that easy: some include just drivers and kernel modules while others include a full toolchain and other cross-compiled applications. This affects the time required to reuse software components for further products and we advise you to read each article carefully before selecting one.

Size and Development Cycle

Companies usually work with stable mainline or long-term support (LTS) kernels because this guarantees bug fixes and security patches by upstream maintainers without requiring frequent updates from your side - even if your product is not yet fully stable. However, some dors provide their development branches containing new features and hardware that could be integrated into the next releases. Since companies' requirements vary, we decided to list both types of available kernels in our comparison table while providing information about each vendor's policy regarding kernel maintenance.

People behind Embedded Linux Kernel porting distributions play a very important role in terms of documentation, bug reporting, and software component reuse - they also act as the first contact with the helpdesk for any inquiries related to specific BSPs or components used inside them. Therefore these embedded Linux experts must be open to customers' requests and speak their language - this helps us avoid delays during the development process because most issues can be solved on the very same day. Based on our previous experiences, we always use two ways to test each vendor's responsiveness: submitting non-critical bugs containing general system information and analyzing how they react to different requests submitted by email.

The first approach is used for quickly checking if the distribution is good enough for everyday tasks - since most embedded devices are not critical machines they must be stable. Most of the time, this method produces predictable results but sometimes developers do not pay much attention to printing detailed messages in case of errors leading to delays during the development process. The second method involves sending higher priority requests directly to embedded Linux experts which can be difficult because some companies choose to keep them away from customers thus creating additional costs for every inquiry. For this reason, we have created a questionnaire to help you understand each vendor's support policies and services.

Requirements and recommendations for released BSPs

Our selection of BSPs for this article was made by analyzing available information and hardware support provided by each vendor. Then we compared the size and number of included components based on their development cycle and BSP development services. Finally, after reviewing each distribution's documentation, we tested it using a simple QEMU emulator and an ARM-based board to check if everything worked without any problems or required modifications.

We selected one BSP per arch, including x86, PowerPC (PPC) based architectures such as Freescale's iMX6, TI's AM335x, NVIDIA's Tegra 3, and ARM Cortex-A8 with several revisions. Because all these SoCs are very similar, there were no major compatibility issues during our tests and we had more than ten slightly different distributions to choose from (based on these SoCs).

When it comes to selecting the best BSP, all of them provide a few common components: Linux kernel, bootloader (U-Boot), BusyBox for basic shell commands, and standard GNU software development tools such as GCC and GDB. But some vendors include additional components such as U-Boot SPL (Secondary Program Loader) which allows you to manage your board's peripherals or separate rootfs parts.

Some of them also distribute binary packages containing several userland applications compiled alongside the toolchain while others prefer providing a full source code that is then cross-compiled by customers' QEMU emulators or real boards (which is significantly slower and requires more resources).

Another important factor when choosing a distribution is its driver support - we need to make sure we can use all of our device's components while testing BSPs. Because some vendors may skip newer kernel releases, it is always better to check the support matrix before buying a new BSP.

Our next step was to get familiar with each vendor's release cycle and maintenance policies because they play an essential role in the right selection process. The life-cycle of BSPs may vary from one company to another, but they offer at least three different types: stable, long-term, and bleeding edge. We decided not to consider distributions based on older Linux kernels such as 2.6 or 3.2 because support for these versions is limited to one year after the release of the newest kernel.

Our selection process was based on three main factors: size and quality of online documentation, development cycle (including the time needed to push new releases), and project responsiveness towards customers' requests submitted via email or public forums (such as mailing lists). Unfortunately, we also had some issues with wrong answers provided by embedded Linux companies representatives while asking questions about their products - please note that this should not be seen as an attempt to discredit any company but it does prove that you must do your research before buying anything.

Please take into consideration that our tests were performed using different hardware platforms running various CPUs so it will be hard to provide 100% accurate results. Besides, hardware support is very different from one software component to another - for example, U-Boot may provide full drivers but the Linux kernel will miss some of them.

It is also worth noting that most vendors are still working on BSPs to be released at the end of 2014 so products tested here might require updates to work properly with newer components.

This section presents embedded BSPs which were unable to pass all tests required by the Embedded Benchmarks company or had several problems during our tests. We would like to thank each vendor for their responsiveness and apologize for any inconvenience caused by distributing this information. All products presented below are currently widely used available devices on the market now, so you should always check whether your device uses one of them before buying anything.

Geolance is an on-demand staffing platform

We're a new kind of staffing platform that simplifies the process for professionals to find work. No more tedious job boards, we've done all the hard work for you.


Geolance is a search engine that combines the power of machine learning with human input to make finding information easier.

© Copyright 2022 Geolance. All rights reserved.