I created this guide with only one ultimate goal:

To make you understand and familiar with how a professional develop firmware.

Yes, that’s it.

Now, if you want to hear my story. Read on.

I started developing firmware professionally from 2016. Back then, I was naive, young, and definitely not wise. I learn bit by bit and make a little bit of notes here and there.

I bet you also know this: I realize that looking tutorial for beginners are damn too easy.

I’ve read too many tutorials on the internet, and I noticed something. The more advanced concept I want to learn, the rarer the tutorial.

When I want to know how Apple firmware engineers work? Googling “Apple firmware engineer workflow” will give me zero relevant results.

I want to know what “a modular firmware project” looks like? Nope, you’re out of luck.

Yes, we can look for advanced open source project like Linux kernel or popular Embedded libraries. But where’s the explanation? Where’s the documentation of firmware design decision? Can we apply it to our project?

Afaik, It’s scattered at best.

I want to fill that gaps.

I’m happen to be a senior embedded engineer and I have 7 years of experience building firmware for various industries. I spent thousands of hours to learn and apply many concepts, make (silly) mistakes, and create notes.

And now, I create this guide to distill my experience doing development, as best as I can do, so you can see some real example of how a professional do the firmware development, end to end.

So, if you’ve read until this point. I want to thank you for giving me a chance to help you learn better!

Next, I want to show you the usual workflow I use to develop firmware. Go to page The Workflow As Compact As Possible (with Diagrams).