Ask HN: Why does STM32 (or embedded generally) development suck?

4 halfmatthalfcat 7 6/30/2025, 2:49:36 PM
I'm getting into embedded development. Got me a STM32F3Discovery (recommended by Embedded Rust). Started going down the embedded rust rabbit hole before I got tired of the complexity (though do like the idea of Embassy), wanted to look for something simpler.

Started looking into embedded Zig. Looks promising but still not there, not a ton of hardware support yet.

Allergic to getting close to C++ due to all it's baggage, decide to start getting into C. Learning C was easy so started to look into getting my stuff onto a chip, again using the Discovery as my base board.

Have a slew of IDE choices, STM32CubeMX, Keil uV, various VSCode extensions. All of them are quite complex and when you get them working, they lay down A TON of files that seem somewhat irrelevant (and noisy) to creating simple programs.

The HALs are confusing so want to just leverage CMSIS and bit bang my way to greatness. ARM has system CMSIS but vendors have vendor-specific CMSIS, so (finding them) and piecing them together sucks.

Oh then you need linkers and startup scripts, where are those? Again, vendor specific that the CubeMX or uV basically pull from STM32's Github org. That org btw, tons of repos of stuff that isn't super obvious what is what, what should be used with what, etc.

Now you have what you need but you need to then flash the chip, again a couple different ways to do this.

I just want a utility that plunks down the necessary CMSIS, linker and startup so I can get my base level bearing and actually do development...why is there so much noise and cruft everywhere?

Comments (7)

steveklabnik · 3h ago
Hardware companies care about hardware, not software. Simple as that.

You’ve picked one of the better ones, even. It’s only downhill from here.

npalli · 4h ago
You should try PlatformIO. It solves exactly the problem (last line) for known boards. I did some hobby work but your mileage might vary. Caution that it is C++ first platform (rather than C), so if you are having allergic reaction* might try some other toolkits.

*Given you initially chose Rust for this, I would have tagged you as someone who is into vibes/feeling good rather than getting things done, and the suggestion would have been wasted on you, but you seem to have learned your lesson so rather than dismiss C++ out of hand, take a look.

halfmatthalfcat · 4h ago
Doesn't PlatformIO do the exact same thing as CubeMX/uV? It pulls Keil Packs and lays down the same files? I don't want any of that if that's the case. The PlatformIO configuration looks saner but I still want a "minimally viable embedded environment" without any of the extra stuff.
actionfromafar · 5h ago
You can use Zig in a less ambitious way, by using the regular C or C++ interface for the SDK, but your own Zig code for the rest.
sinenomine · 5h ago
TLDR: the whole embedded dev is a cost center, very underfunded compared to normal SWE. I say it from position of compassionate interest.
halfmatthalfcat · 5h ago
It's sad because I would have thought the opposite before getting into it but it really is somewhat of a wasteland of options.
actionfromafar · 5h ago
Every branch down the sprawl of SDKs and hardware is it's own microcosm, unfortunately.