Embedded Software

With more and more complex and powerful Processor cores included in recent FPGAs, we have developed a deep competence in Embedded Systems and Embedded Software. It covers from embedded soft cores to ARM High Performance Systems. And indeed, beyond bare metal, we are clearly focused on Embedded Linux.

Custom board support packages

One of the biggest challenges when developing software targeting a soft core embedded in an FPGA (such as the Nios II) or a hardened ARM application-class processor (such as in the SoC-FPGA components) is taking into account the flexibility of the FPGA, which allows to implement a completely custom system on chip.

ALSE can develop a board support package (BSP) tailor-made for any custom system based on those technologies in a matter of days. Such a BSP is typically composed of a bootloader (U-Boot) and a Linux-based custom distribution, including a software development kit allowing the customer to develop in-house applications on top of this BSP.

We usually use the Buildroot integration tool to generate our BSPs, as its set of features and ease of use are a good fit for a lot of small to medium-scale embedded Linux projects. However, we’re also familiar with the Yocto Project.

Custom peripherals and drivers

As highlighted above, an FPGA-based system is bound to contain some custom-made peripherals. To properly access those peripherals from a running Linux system, custom drivers are needed. Developing such a driver (including, of course, device tree awareness) is well within ALSE’s competence range.

One example of a driver we commonly integrate is one which provides an easy and clean way for the applications running on the processor to exchange data with the FPGA.

The main appeal of our GEDEK IP is to be able to use Ethernet communication without any processor. However it also features a raw port, allowing a processor to use it as a “standard” MAC device, alongside the normal GEDEK operation. We’ve developed a driver allowing this feature.

Remote update

There is a common need in embedded systems to be able to update the application software. The usual embedded constraints mean that this is a non-trivial problem.

We implemented a generic solution to this need, with the following features:

  • Robustness against power cuts and failed upgrades;
  • Whole-system image updates;
    • In contrast with a package manager, not safe in most embedded systems.
    • In order to keep user data intact, overlay filesystem support can easily be added.
  • Customizable way to deliver the upgrade payload (through a web-server or any custom application);
  • Based on open-source components;
  • Able to validate signed images with OpenSSL.