Embecosm are able to provide a wide range of embedded system development services, spanning from resource-limited 8-bit devices to fully-featured 64-bit systems. We offer a full end-to-end service providing development and support from initial prototypes right through to production ready systems.

Technical Details

Embedded Operating Systems

Embecosm specialize in a variety of open source Embedded Operating Systems including Embedded Linux systems, FreeBSD and real-time operating systems (RTOS). Based on your specifications, we are able to provide the following Embedded Operating System services:

  • porting to new boards. This involves porting the bootloader and operating system to your hardware and making any adjustments necessary
  • custom kernel configurations. Stripping down the kernel so that it only supports your hardware. This provides a number of benefits such as faster boot time, lower memory usage and additional hardware support
  • device driver development. Creating custom device drivers, to fully utilize your chosen operating system’s ability to interact with the peripherals of your hardware
  • filesystem generation and customization. Generic filesystem images produced by vendor-supplied board support packages will typically need customizing for production-ready systems. Customizations could include the following:
    • generation of images of a suitable size and type for the target memory media
    • addition of custom users and passwords
    • generation of the appropriate directory structure for your application environment
    • customization of boot scripts to, for example, mount specific filesystems or partitions, load hardware drivers or start custom processes etc.
    • addition of application specific configuration files and settings, e.g. network interface settings, firewall rules, etc.

Hardware modeling and porting

We frequently work with customers during the pre-silicon phase of chip development, to produce code for emulators (e.g.QEMU) of new designs.

Once the hardware becomes available we will then verify the porting of your chosen bootloader and operating system.

Development Tools

Successful embedded system development requires the selection of the right tools for the hardware’s intended application. This includes the choice of build environment and tool chain, for example.

The build environment for your board is important, but customizing it in order to fit your exact specifications and aims is often necessary. We are experienced in customizing build systems, specializing in Buildroot, Linux Target Image Builder (LTIB) and Yocto.

Embecosm are established compiler tool chain experts and can utilize expertise in GCC and LLVM cross-tool chains to provide robust development tools whatever the target. For more information on our GCC and LLVM expertise please look at our services page.

Bootloaders

The bootloader is the first code to run after power up and runs before any other software starts. It is unique to the architecture of your embedded processor and includes specializations to your particular board and environment. Open source bootloaders that we specialize in include RedBoot, BBL and U-Boot.

We can provide an implementation of the bootloader of your choice and make any relevant customization that you need for your hardware.

Low-level Development

Resource limited systems can often provide constraints when developing new hardware. In order to assist with your development, we can provide services including:

  • board bring-up. Including processor/controller setup, software set up, operating system set up, application start up, etc. These can all be customized to fit the needs of your hardware.
  • bare metal systems programming. Our assembly and low-level C programming expertise enables us to write very compact and efficient hardware drivers or system configuration routines for targets that cannot support an operating system.

Writing efficient low-level code that is tightly coupled to the hardware in deeply embedded applications is critical, when working on resource limited systems. Our developers have particular low-level expertise with Arm and RISC-V architectures.

Optimization and Enhancement

Your hardware specifications may also require additional optimizations and enhancements. Embecosm are able to offer a range of system optimization and enhancement services including:

  • boot time optimization. When developing the operating system for your hardware, we will discuss with you what are the critical tasks that need to boot immediately.
  • code size reduction. Code size can be reduced by looking at both the kernel and the root filesystem. For example, Linux kernel code size can be reduced by disabling unused features and removing driver support for unused hardware.
  • power management. There are broadly two areas where a devices power consumption can be optimized, when it is use and when it is idle.
  • performance optimization. Speed is an example of performance optimization for the Embedded Operating System.
  • addition of custom features or packages. In order to fully support your application environment we can add additional packages, libraries or utilities to your system as required. We can draw on the thousands of available of open source packages to produce a filesystem that meets your needs.