When is the Right Time to Engage an OS Engineer?
Your project will use or is already using Linux. You “just” need the operating system to work. So, what do you do?
From where I sit, the smartest answer is to engage an OS engineer, pronto!
You knew I would say that, right?? So, to back up this statement I’ll explain why it makes sense to get an OS engineer involved early on certain types of development projects. But first, I want to take a step back and outline what exactly it is that OS engineers do.
The Role of the OS Engineer
OS engineers design and develop operating systems and their components, such as kernels, file systems, memory management, process scheduling, and device drivers. They write code that interacts directly with OS APIs, handling system calls, interrupts, memory management, and optimizing performance. They also diagnose and resolve system-level issues, and contribute to OS design, performance analysis and security. And of course, they play a crucial role in bridging the gap between software and hardware.
How can an OS engineer help your project run more smoothly? Let’s suppose you’re starting from scratch. You have an idea for your next project, and you want to test it out with a prototype. Maybe you start with some basic software development, create some simulations. Regardless of where you begin, at some point you need to jump to a board running Linux.
So the first question is obvious: Which board should you use?
You might have a board at hand, say a Raspberry Pi. Could work – though will it really represent what your final project is intended to be? Does that board cover all your needs? Don’t take for granted that just any developer board will do. It might – but it might not.
When working with embedded systems there are choices to make. Lots of them! Here are just some of the many factors to take into account:
Processing power – You need enough for the project to work. You can always spec the most powerful System on Chip (SoC) but is it really necessary when every penny counts?
MCUs – Does your project require microcontrollers?
External connectivity – Do you need Ethernet, WiFi, serial, CAN, etc.?
Artificial intelligence – Will AI acceleration hardware be required?
Displays – How many, and what type, do you need?
GPIOs – Are they available for free?
Cybersecurity – What level of protection does your device require?
Budget – Target product price impacts your board selection
Feeling overwhelmed? In an ideal world this is exactly when it makes sense to contact someone who can help you make an informed decision.
As an OS expert, here’s a word of advice: Unless you expect to build thousands of units per year, you’re probably best served by choosing a System on Module (SoM). With that decided, you can start coding and testing, and then select your custom board once you have something functional.
Designing a Custom Board is Complicated
After a successful first prototype on a developer board you’re ready to create your custom board. Sometimes an off-the-shelf board will do. Other times, not so much. For instance: You only use a few of the peripherals provided in the developer kit. In this case, an off-the-shelf board will likely cost you a premium to produce. Or, you’re creating a board that will go into a regulated market, for example a medical device. In this case you need to account for everything your board has and ensure you’re not using deprecated integrated circuits. The less hardware you have, the easier it will be to comply with the regulatory requirements.
My point is this: Creating a custom board for a Linux-based OS is so complex and fundamental to the success of your project that you need the advice of a platform specialist who deeply understands the operating system side of things. By bringing one on board early in your development process – from the very first schematic draft, or better yet during the initial discussions between your hardware designers and your software engineers – you can avoid a lot of development pitfalls.
Real-World Issues an OS Engineer Can Help You Quickly Address
The Mighty Real Time Clock
Do you need the Real Time Clock (RTC)? And if so, which integrated circuit should you buy for that role? Not every RTC will be supported by the Linux kernel right out of the box! If you go with one that’s already supported you will definitely reduce the total cost of creating your device, as you will avoid having to provide support for a new one.
The Safe GPIO
Not all the GPIOs are created the same. Let’s suppose your GPIO will control a huge electric engine. You don’t want that engine briefly starting when the system boots, right? If that’s the case, you need to ensure that the GPIO behavior is correct upon boot time. If you’re wondering why not just any GPIO would be able to handle this, here’s the answer: SoCs are complex machines. Extremely complex. Not all GPIOs are powered at the same time; in fact they are normally divided into “power domains.” And SoCs are normally placed in a SoM that, for financial reasons, might have things like bi-directional voltage level adapters. Therefore, not all the GPIOs will be suitable for the work you need them to do.
Hidden Microcontrollers
Yes, there are some microcontrollers on your board that might be hidden. A simple example is an SD card, which has its own internal microcontroller to handle communications and memory. As with everything in the hardware and software world, things just might not work from time to time. So what can the Linux kernel do to handle a misbehaving SD card? Reset it! Ah, but for that to happen you would need to have added the right circuitry in your board, as well as have told the kernel which GPIO can handle that.
SoM Pre-Selection
It is not unusual for me and my colleagues to first engage with a customer that has already chosen an SoM. I have to be honest here: most of the time, it is prudent for customers to make this vital decision after consulting with an OS expert. But I realize that in the real world we work with what we have – so when we get a project, we understand that changing the SoM may or may not be possible. When we hear “my system is already designed, I just need the OS” – if changing the SoM would benefit the project but is simply not an option – we still make the best of it! As OS experts, we have a “bag of tricks” to pull from to help you create the best product with the board you’ve selected. (But don’t be surprised if we give you a lot of feedback for your next PCB revision!)
The Takeaway
Engaging an OS engineer early – especially if your project involves low-level OS interactions, multiple platform support, performance optimizations, security considerations, or real-time/embedded systems – can go a long way toward easing the development process. Their expertise is essential for developing robust and scalable software systems, and their input can significantly impact the efficiency, reliability, security – and success – of your project.
If you need an OS engineer, get in touch. We specialize in embedded Linux, RTOS and multicore/multi OS, and have developed hundreds of regulated and mission-critical applications.