Board Support Package (BSP) Development

Start up and run the embedded target processor.
What we do What’s included?

What we do

We build Board Support Packages (BSPs) that initialize the processor, communication buses, memory, and peripherals and start up the bootloader. We also set some environmental parameters for working with a given embedded operating system (OS). The BSPs we create operate with minimal modifications on similar target boards. With our deep experience in BSP porting services, we ensure the successful performance of the operating system, all the peripherals and the board support package in embedded systems.

What's included?

Our BSPs contain low-level operating system code and device driver code as well as other files with directives, compilation parameters, and hardware parameters used to configure the operating system. In addition to professional BSP development, we also include related support services such as networking, security, storage, graphics, and input/output to the set of BSP libraries. This will extend the possibilities of your embedded system’s custom hardware. Based on this collection of files you can build the operating system and applications.

Check out our recent case study

IoT Embedded hardware development Smart home Kernel and driver development Linux

A Control Panel for IoT-Based Smart Home Automation System

The project consisted of hardware development for three printed circuit boards, embedded software development for a custom Linux image, and driver development for different modules of the smart home system.

Our clients include enterprise companies, research centers, and innovative startups from all over the world

How we work

Check out the areas of responsibility in embedded software development.
























Frequently Asked Questions

Read this information to better understand the process of board support package development.

When do I need to build a BSP?

A BSP is used for compiling a custom image of the operating system. For example, when you need to build a development kit, or when you need to build a new board.

What is a bootloader?

A bootloader is program that starts the device by activating an operating system. It turns on the RAM, voltage controller, and multimedia card (MMC). Most computer architectures including ARM, MIPS, and x86 use U-Boot, an open source primary bootloader.

What kernel can be used with BSP?

The mainstream solution is Linux. Usually, SoC manufacturers provide a compatible Linux kernel version or a modified version. Some SoCs are fully supported by the mainline Linux kernel version. There is a possibility to run an alternative OS like WinCE, Windows 10 or any other if it is required.

Can I use the mainline version of the kernel?

SoC manufacturers don’t always provide driver source code, and drivers can’t be ported to the mainline kernel version. This is most true for the GPU drivers. So if your platform is fully supported by the mainline kernel, then you can surely use the mainline version of the kernel. If this isn’t the case, then we can prepare a set of patches and include them in your board support package.

What distributions do you use to create a file system?

To build rootfs we use the following distributions:

  • Buildroot
  • The Yocto Project
  • OpenWrt / LEDE
  • The most popular desktop distributions (Debian based, Arch, Gentoo).

A file system isn’t a part of the kernel and is produced separately from kernel development. But some libraries must be compatible with device drivers. For example, the OpenGL library must be compatible with the GPU driver.

How can boot time be optimized?

To optimize the boot time, we need to work on the following parts of the system: bootloader, kernel, and userspace. To speed up the boot time, we can tweak the system settings, clean up programs that launch at startup, disable unused hardware, upgrade the operating system, and more.

How can a bootloader be optimized?

Removing the drivers of unused devices may decrease the boot time. For example, we can disable the network booting mechanism. The kernel can be optimized just like the bootloader – by removing the unused drivers. This will lead to decreasing the size of the bootloader and kernel, and the read time from the SD card or other boot device. To optimize the userspace, we can configure the service run order. For example, network services can be loaded after the main screen has been shown.

We use cookies to improve your experience on our website. Our Cookies Policy explains what cookies are, how we use cookies and how third-parties we may partner with may use cookies. Please find more information here.