Cortex‑M7 without hardware part 8: shared library

This is Part 8 of my Cortex‑M7 without hardware series. Part 7 was supposed to be the last post. The infrastructure was complete with identical outputs, and there was nothing left to build. However, an obvious problem remained: most of the code was duplicated. Each of the projects, Renode and the QEMU, carried their own copy of the startup code, the linker script, the syscall stubs, and the C++ runtime shims. ...

March 27, 2026 · 10 min · Hannupekka Sormunen

Cortex‑M7 without hardware part 6: QEMU

This is Part 6 of my Cortex‑M7 without hardware series. Parts 1–5 used Renode to emulate an STM32F746 and GDB to poke around the running firmware. Renode is excellent — full peripheral models, scripted test benches, a rich ecosystem — but it is not small. The installer pulls in Mono, a pile of .NET assemblies, and a handful of native libraries. If all you want is “does my firmware boot and produce the right output?”, that is a lot to install. ...

March 7, 2026 · 8 min · Hannupekka Sormunen

Cortex‑M7 without hardware part 3: build

This is the third post in my Cortex‑M7 without hardware series. Parts 1 and 2 already explained the two pieces that differs from standard C/C++ -projects: the linker script and startup. So this part is building for embedded target also known as “get an ELF”. ...

December 20, 2025 · 10 min · Hannupekka Sormunen

Canonical Project Structure

If you’ve ever stared at a blank folder wondering where do I even start?, you’re not alone. I’ve been there—more than once. ...

September 21, 2025 · 3 min · Hannupekka Sormunen