
Learning the tools of the trade in embedded Linux
âThe combination of software and electronics has always piqued my interest due to the interaction with the tangible world,â says Johan Oedzes. This interest led him to the University of Twente, where he completed his Bachelorâs degree in electrical engineering and subsequently delved deeper into the field with a Masterâs in embedded systems.
After graduating, Oedzes secured a position at a big company in Hengelo, focusing on C++ software engineering on Linux, albeit not in the embedded sense, he explains. âAlthough I learned a lot there, it started to bother me that I wasnât working on embedded systems. I also felt that I was operating within the constraints that other people had thought out. I wanted to do the innovative and exploratory part of engineering too.â
One of his more experienced colleagues shared Oedzesâ sentiment and moved to Beeliners, based in Hengelo as well. The two kept in touch and his ex-colleague asked Oedzes whether he could share his contact information with the companyâs owners. When commercial director Dennis Wissink called two years ago, Oedzes decided to take the plunge and he joined Beeliners as an embedded software engineer.
E-mobility
Beeliners immediately resonated with Oedzesâ interests, he says. âAll our products combine a hardware design with embedded software engineering to create a prototype or deliver a proof of concept for our clients. Such projects may encompass compact medical appliances, intelligent gym equipment or innovative e-mobility devices. Iâm currently working on a product in the e-mobility sector.â
One of Beelinersâ clients wasnât satisfied with an externally sourced e-mobility control unit and approached the company for a solution. Upon the clientâs request, Beeliners embarked on the venture of creating their own. The control unit links to two external systems: the e-mobility device on the one hand and the internet on the other. The internet connection enables communication with a backend server and reception of firmware updates.
âWe separated the system into two parts,â Oedzes explains. âEverything that needs real-time behavior and has strict timing requirements runs on a subsystem with a microcontroller, interfacing with the e-mobility device. The code for the backend connection, the web interface and the productâs business logic run on an embedded Linux system with a C++ application.â
Flexibility
Despite having some experience in using embedded Linux systems from his studies at the university, setting one up was uncharted territory for Oedzes. It was during the e-mobility project at Beeliners that he self-educated and successfully created a tailored embedded Linux system based on the Yocto project. âYou can find a lot of information about tools to create embedded Linux distributions, such as Yocto and Buildroot. It took some searching and experimenting, but eventually, we had a working system, even including functionality for remote updates.â
âAt that time, Yocto felt like the most widely accepted solution. Renowned companies working on embedded Linux were using it and many software providers offer a Yocto recipe to create packages of their software with Bitbake. Recipes are a powerful concept, and itâs one of the reasons for choosing Yocto for this project.â

Because this was the first time that they created an embedded Linux system, Oedzes and his colleagues had some questions: âHow do I know that my product is good? Does my embedded Linux system do what itâs meant to do? Is it secure?â Beeliners had progressed to initial field testing with a functioning prototype, but they wanted some validation of their approach before finalizing the product.
Initially, Beeliners thought of hiring external expertise for a comprehensive evaluation. However, they wanted a quicker, lighter approach and preferred building this expertise internally, Oedzes emphasizes. âThis quest for knowledge led us to explore training options. Given a prior positive experience by one of our colleagues with High Tech Instituteâs âGood software architectureâ course, we went looking for a similar program for embedded Linux, and we found that they had one.â
As Oedzes wasnât an absolute novice in embedded Linux, he wondered whether the course was relevant for him. âWe engaged in a conference call with Jasper Nuyens, the courseâs trainer, who listened to our questions. He concluded that we were well on our way but had some knowledge gaps on embedded Linux basics and rules of thumb in this domain. He also reassured us of the courseâs flexibility to accommodate our specific questions.â Consequently, Oedzes enrolled in the embedded Linux course.
Better decisions
While attending the embedded Linux course, Oedzes continued to benefit from Nuyensâ experience. It revealed to him that Buildroot wouldâve possibly been more suitable for his use case. âIf I had enrolled in the course earlier, maybe we would have still chosen Yocto, but we would have certainly given more consideration to Buildroot.â
Yocto excels in use cases where various devices each require some hardware-specific configuration as well as a common part. You can then build a Yocto project with various subconfigurations for each device to create a custom Linux image, Oedzes explains. âThis is a powerful approach, but we didnât need this for our use case: it has one device and just a couple of minor hardware revisions. Yocto wasnât a bad choice, but in the course, I learned that Buildroot would have been a better fit.â

The course also allowed Oedzes to discuss various security aspects of his e-mobility project. âJasper asked me the right questions, like: what problem are you trying to solve, what threats do you want to protect against, is your web interface externally accessible? Itâs actually all quite logical, but I learned a lot by reasoning about our product with him.â
In retrospect, Oedzes would recommend potential participants to start earlier with the embedded Linux course than he did. âIf you know that you need an embedded Linux system in your product and have some C/C++ programming experience, the course has immense value. Jasper covers various options and explains for which use cases each of them is suitable.â
Oedzes also found Nuyensâ explanation of cross-compiling software for another target architecture quite good for beginners. âYes, figuring this out yourself is possible, but if youâre starting with embedded Linux, a course like this provides an encouraging head start and warns you about common errors.â
Even though Oedzes had previous experience with embedded Linux, the course armed him with important tips and insights. âI familiarized myself with new tools and gathered Jasperâs valuable advice about our e-mobility project. The experience of our current project coupled with the insights from this course gives me much more confidence for making better decisions for Beelinersâ future embedded Linux projects.â
This article was written in close collaboration with High Tech Institute.