I'm a 23-year-old who has a decent grasp of higher-level programming languages and I've spent a lot of time with web development using Rails, CLI work, and Linux. However, I've never studied programming in a formal setting as I went into the trades instead. I really enjoy creating things and find that developing embedded firmware requires knowledge of C or a low-level language, which I'm now trying to learn. But honestly, I'm feeling overwhelmed—terms like stack, heap, push, macro, and hexadecimal are throwing me for a loop! I would love some recommendations for good starting points to learn embedded-focused C, ideally from someone with experience in programming microcontroller or SoC firmware. Thanks for any guidance!
5 Answers
Check out the 'Embedded-engineering-roadmap' on GitHub! It really helps in structuring your learning path. Also, I found the FreeCodeCamp series on pointers quite helpful—it's around 4 hours but it's a good dive into the basics you need.
Don’t forget to explore forums and subreddits dedicated to C programming and embedded systems. Places like those often have great resource lists in their wikis that could really guide you in your learning journey!
I’d recommend starting with learncpp.com to cover the foundations applicable to both C and C++. Once you're comfortable with manual memory management and similar concepts, you'll be better prepared to tackle the design patterns specific to embedded programming.
Since you have experience with Java, why not leverage that? Try building your own stack data structure in Java to understand the stack vs. heap better. You can also create a tool that converts between different numeral systems, like decimal and hexadecimal—this will help clarify those concepts as you move to C! Focus on one topic at a time, and build your knowledge gradually.
You're on the right track, but the first step is to become really comfortable with the C programming language itself before diving into embedded systems. It’s like trying to understand quantum mechanics without any math—it's just going to frustrate you! Once you've got a solid grasp on C, you can start tackling embedded programming more effectively.

Exactly! If you're struggling with concepts like hexadecimal now, take the time to master C first.