embedded toolchain

Our toolbox for embedded development

Having the right tools at your fingertips increases efficiency and quality. It focuses your mind on your craftsmanship, making your work enjoyable.

For a craftsman, a well-equipped tool trolley is fundamental to success. This is not unlike the way in which software development works; tools have to be configured and updated and, in the worst case, support has to be discontinued.

 

Figure 1 depicts the lifecycle of a typical piece of software in detail, using the example of code development. From this, we can see that certain activities and tasks crop up over and over again. To perform these tasks, we need the correct versions of suitable tools. These tools also have to be configured correctly. Some of them have interfaces which are relevant to certain activities and phases, or even across phases. Keeping track of everything is not always easy. In the code development phase, the main activities are writing, verifying, building, testing and documenting the code; for these activities, our Embedded Software team uses a platform developed in-house, which provides a set of tools for our core business.

Figure 1: Detailed SDLC using the example of code development

 

This platform uses Visual Studio Code, enabling us to implement the concept of “Developing inside a Container”. For this we use Docker containers, which we start on Windows Subsystem for Linux (WSL). Thanks to containerisation, we can manage and carry out version control on all tools, as well as their versions and configurations, via a centralised system. This allows us to retrieve old versions of our toolbox as needed, without having to rely on external resources.

We use our specially developed “C++ framework for embedded applications” as the basis for development. When it comes to STM32-specific applications and HAL configuration, STM32CubeMX is an important, integrated component of our tool set.

It goes without saying that we carry out version management of our source code with Git.

Using pre-commit, we manage various tools for static code analysis and uniform formatting of the source code according to our coding guidelines.
With regard to tools that interact with the source code (compilers, code generators, source code documentation, etc.), we use CMake as a build system. Azure DevOps supports us with seamless code integration, whilst, thanks to Azure Pipelines, we can ensure stable levels of development as well as reproducible and consistent deliverables.
A development process without unit tests is like a toolbox without measuring equipment – there's no way of knowing whether something will work. This is why the unit testing library Google Test forms part of our standard equipment. We check code coverage with gcovr.

To make it easier to maintain and reuse software components, good documentation of the source code is essential, which is why we use Doxygen.

 

The platform enables us to write, verify, build, test and document efficiently, all in a clearly and neatly managed manner. We have already combined our expertise with the benefits the platform brings as part of various customer projects.

 

We are constantly striving to adapt this platform to new requirements and opportunities, to integrate new tools where necessary and to remove unused tools.
This makes it possible for us to ensure our tool trolley is ready for whenever your next project requires an efficient solution.

 

Contact us