From zero to main(): Bootstrapping libc with Newlib | Interrupt

This is the third post in our zero to main() series, where we worked methodically to demystify what happens to firmware before the main() function is called. So far, we bootstrapped a C environment, wrote a linker script from scratch, and implemented our own bootloader.


This is a companion discussion topic for the original entry at https://interrupt.memfault.com/blog/boostrapping-libc-with-newlib

This tutorial series is so beautiful! Thank you so much François. I’d done something similar to this from scratch using 68HC11 when first learned about embedded system. Just simply getting the whole system electronically working was like 75% effort so the remaining 25% was for the software. Yet this 25% was the best part (fun time) when you can somehow get everything setup correctly prior entering main(). Figuring out how to make the transition from the very first setting PC in assembly to a jump to main() was exhilaration.