Linux

About Linux

‘The’ OS for Advanced Embedded Devices

In general terms, “Linux” refers to the combination of the Linux operating system “kernel” and collections of system applications and libraries which are distributed as open source and referred to as “distributions”.

This combination of software has proved absolutely unbeatable for use with embedded devices which require a powerful general purpose (non-realtime) operating system.

The Linux Kernel

The Linux kernel is the operating system core. It is the lowest level software that runs on the device, providing support for the device’s unique hardware capabilities while at the same time providing access to that hardware along with other services to higher level software like system applications.

The development project behind the Linux kernel is a massive collective effort from hundreds of people that has over a long period of time built up support for a vast array of hardware platforms and devices. Being the centre of so much focused development effort and continuous improvement allows it to be an increadibly solid foundation for an embedded device’s software stack.

Linux Distributions

Linux distributions bundle together collections of applications and libraries along with a mechanism to easily install them in order to form fulling functioning systems. For embedded Linux, the installation mechanism generally takes the form of a build system that combines the applications and libraries into software ‘images’ that can be installed on the device’s storage.

There are two well-used embedded Linux distributions - Buildroot and Yocto. Where possible, we recommend the use of Buildroot due to its developer centric nature, simplicity and ease of customisation leading to better development efficiency relative to Yocto.


Using Linux In Your Product

Many hardware vendors provide a Linux based BSP (board support package) that runs on a development kit or reference design board. This is an essential starting point but it is only the very first step in developing your product.

While the BSP may work well enough to demonstrate some basic functionality on the reference board, often a lot of work is still needed to create a platform that is suitable for functioning as the basis of a final product.

This work can include: adapting bootloader support, extending core hardware platform support, new device driver support, application and library selection, working through software bugs and early hardware issues, various software optimisation and build system improvements.

We can help with navigating the work required to get Linux working suitably on your hardware.


Our Linux Knowledge

How We Can Help

We can work with you at a level that best suits your company’s immediate and long-term development needs, including:

  • Providing a complete platform and application development service - we can cover all software areas and develop a turn-key product to your specifications.

  • Providing lower-level platform development support - working with your chosen hardware, we can give you a stable operating system and free up your development team to focus on the application.

  • Working alongside and aiding your development team - we can directly assist with any challenging issues while also easing their learning-curve. We can help establish strong development and maintenance practices as a core competency of your team.

Key Linux Tech Areas

  • Support for new hardware platforms

  • U-Boot bootloader support

  • Device driver development & device tree configuration

  • System app & library selection refinement

  • Original system app development

  • Interfacing with cloud infrastructure

  • Boot speed optimisation

  • Image size optimisation

  • Simulators and build options for improved development efficiency

  • Build system & CI customisation and improvement


Our Experience

Our work with SmallHD on their range of on-camera and production field monitors is a great example of how we can assist with Linux development. We’ve worked closely with their team on a wide range of Linux development areas - from low-level software support for new hardware to advanced high speed image processing pipelines.

Read more about how we’ve assisted with their development.

 

Tech Areas

Our Key Areas of Strength


Next Steps

More Software Capabilities

Find out more about our other capabilities and how we can help.

 

Contact

If you are looking for help with a project or product idea, we'd love to talk.