GET IN TOUCH

Board Support Package 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.


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. 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.

Bootloader and Linux kernel porting

We create a full BSP, including boot loaders (U-Boot, RedBoot). To make Linux work on an embedded platform we adapt the Linux kernel to the target CPU. This involves architecture porting and board porting which involves writing custom drivers and initialization code for devices specific to the board.

Custom device driver development

We build custom drivers to bring up the board, customize drivers with new features, port drivers from one OS to another, and provide updates to support new specifications and hardware.

Root file system building

For building programs to run on the embedded system and configure the device, we generate contents for the root file system. The root file system is required to boot, restore, recover, and/or repair the system.

Boot time optimization

For mission-critical applications that have specific requirements for a system’s boot time we provide boot time optimization services. Some of the methods we use include recompiling the bootloader or kernel, or rebuilding a root file system from scratch.


Check out our recent case study

Kernel and driver development Embedded hardware development IoT Smart home 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.

AREA OF RESPONSIBILITY

PROJECT-BASED OUTSOURCING

DEDICATED DEVELOPMENT TEAM

RESEARCH & DEVELOPMENT

PROJECT REQUIREMENTS

YOU

SHARED

YOU

ENGINEERING

INTEGRA

INTEGRA

INTEGRA

SOFTWARE DEVELOPMENT

INTEGRA

INTEGRA

INTEGRA

DELIVERY MANAGEMENT

INTEGRA

SHARED

TESTING

INTEGRA

SHARED

SHARED

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.