Docker-based toolchain for embedded software development

The diversity of customer-specific requirements that konplan, as a service provider, handles daily requires a flexible, easily expandable, and convenient toolchain. Thus, ensuring a consistently high quality. A well-designed setup enables us to identify problems at an early stage, respond to changes in the requirements, and provide complete customer satisfaction.

The diversity of hardware supplied by various manufacturers presents a challenge for the toolchain. Also, a tested and executable version of the corresponding software must always be available. Furthermore, it should always be possible to build and modify the software for many years after a project is completed.

Structure, overview, and the tools used

Although Docker has long been a standard in various areas of software development, its potential and the possibilities of using this virtualized development environment for embedded software is only slowly being discovered. This is especially true for the development of software for smaller microcontrollers.

konplan has long been using Docker for virtualized development environments which rely on the well-known, platform-independent Makefile Generator CMake as well as the open source compiler GCC. The build process is supported by konplan’s own Python library, which allows setting up the project and starting the build process. Software versioning and management is done by Git. Automation and preparation for the various developers – as well as for the customer – is ensured with the support of Azure DevOps. Both remote repositories and pipelines are used. The modular structure means individual components can be expanded or exchanged at any time.

The advantages of a virtualized, cloud-based CI/CD toolchain

The advantages of this setup are obvious:

  • Easily expandable, platform-independent, flexible, and open source
    The tools used make it possible to compile the software for a wide variety of platforms. Due to the modular structure, individual components of the toolchain can be expanded or exchanged. In addition, the Python library is structured in such a way that an extension for new hardware is very simple.
  • Identical output – locally and in the cloud
    The virtualization by Docker makes it possible to precisely define the versions of the tools used and to freeze the state by building an image. The image can be used both locally and, in the cloud, (Azure DevOps). This guarantees an identical build output regardless of the platform used – even with a small code extension in perhaps ten years.
  • Setup versioning enables the restoration of various states at any time
    Especially for medical technology, consistent and meaningful versioning of software is very important for traceability (ISO 62304). In addition to the software, the toolchain setup and the Python library used can also be versioned. By creating a Docker image, the identical setup can be restored with just a few clicks at any time, regardless of the host system used. This makes it very easy for new developers to install the entire toolchain including the IDE.
  • Independent from the integrated development environment (IDE)
    Due to the internally developed Python library, the build process is outsourced and no longer takes place in the IDE’s code editor. This means that every developer can use their favorite editor.

Thanks to the setup used, we can respond to customer requests and modified requirements at any time without major additional effort. The numerous advantages enable extremely pleasant and flexible work methods which result in the development of high-quality software. This brings satisfaction for both the customer – and the developers.

If you would like to benefit from the flexible and reliable konplan solution or if you need support in creating a similar build environment, please do not hesitate to contact us.


______________________________________________________________________________

Authors:

Roland Wiget, Embedded Systems Engineer
Burak Kizilkaya, Embedded Systems Engineer

We are here for you – send us your request!

Developing together! We put your ideas into practice and accompany your projects until they are ready for the market. Get in touch with our experts now.