Embedded programming on Linux

Thread Starter


Joined Oct 12, 2022
I have taken several embedded programming courses on the STM32 microcontroller (on Windows I download and used STM32CubeIDE etc.) .. however, I was considering a couple of courses on with Linux on Beaglebone Black.

1) How important is it for an embedded programmer to know how to program a embedded uController with Linux? For example, knowing how to program a Beaglebone Black board ... i.e. learning ARM Linux systems, Embedded Linux building blocks ,Busybox, Beaglebone interfacing Projects, NFS booting, TFTP booting and much more.

2) What are the differences between programming a Beaglebone Black board or a STM32F4xx? Surely being two different boards they will have different specifications, different registers, different APIs etc. ... but you're on two different operating systems, isnt't it? When is one or the other better? Practical work examples where one is needed rather than another?

My question is not "when is Linux better and when is Windows better" or "what are the differences between Linux and Windows" (there are thousands of explanations on the web), but it is inherent exclusively to embedded programming ... in fact to understand us clearly I mentioned two famous cases: STM32 microcontroller and Beaglebone Black.



Joined Aug 27, 2009
Most programmers on Linux are programming at the application level so it's pretty easy to get up to speed using languages like Python, using the userland API and standard program utilities because they apstract most of the messy hardware details. To program at the Linux system level you need to kernel level programming to write things like custom device drivers to interface hardware directly like on a typical controller. That takes very specific and specialized programming skills that take years to get good at low level embedded programming. The same goes for low level windows embedded programming.


Joined Oct 2, 2009
You are confusing OS on the host computer and OS on the embedded system.
It does not matter much if you use Windows or Linux on your PC. What matters is the code generated to run on your target MCU.

On the MCU in most embedded systems you will either be running "bare bones" with no OS or you will be running RTOS, i.e. neither Windows or Linux.

Running Linux on an embedded MCU such as rPi is a different thing altogether.


Joined Oct 6, 2013
Scratch what I had earlier... I reread the original post a couple times and realized the answer is really it depends on what you want to do with it. I don't have any experience with the Beaglebone, but from what I can tell it is similar to a PI and part of a different breed altogether.

For most micrcontrollers the only OS is the one you program so unless you plan on working with a specific board capable of running an OS then there really is no point in learning all of it.
Last edited: