Skip to content
Awesome Embedded Learning StudioAwesome Embedded Learning Studio

Awesome Embedded Learning StudioThe Embedded Learning Hut

The official site of AELS! — a one-stop hub for systems-software learning.

Welcome to AELS — project-based engineering notes on embedded systems, modern C and C++, Linux and OS work. New here? Scroll to the About section below.

🚀🚀🚀 About AELS

AELS (Awesome Embedded Learning Studio) is an engineering-notes studio built around learning embedded systems and modern C++ through real projects — though I've always liked calling it the a little hut. It was started by CharlieChen114514 (yeah, that's me, the main maintainer of AELS), and is being built out in the open, together with friends. We warmly welcome anyone who is interested in systems software, embedded development, or C/C++ — anyone who, in today's restless software-engineering climate, still wanders over here to listen to us grumble a bit!

You're currently at the central repository and official site of the organization — the heart of the little hut where we lay down the engineering notes that come out of actually building things. From here, head off in any direction to find the corner you like best.

🧐 It says "Awesome", but this isn't just another awesome list

It's true — wherever you're visiting from, you've surely noticed the internet already has plenty of good link collections. In fact, the author has been deeply influenced by these Awesome-Lists; even today I still flip through them now and then, checking out the tutorial repos and open-source libraries they recommend.

But AELS firmly refuses to reinvent this wheel. What we focus on is the part those collections tend to skip: the eureka moments that flash by while you're grinding through books and open-source code at all hours; the learning paths that twist and turn and appear only for an instant; the correct line of code you finally land on after countless HardFaults, having tracked down a memory-stomp bug; the engineering trade-offs you commit to only after going back and forth on them; the joy of finally seeing the Linux 7.1 banner print in your redirected logs after tweaking the device tree left and right when it just wouldn't boot. This is our daily learning — and the tutorials here genuinely grow out of that sweat. Knowledge on its own is inert; it's people who are alive, and knowledge comes alive through them.

I have to admit — the age of LLMs has come and smashed our lives. Acquiring knowledge has become extraordinarily cheap; with a little care you can pick it up in whatever way suits you. But an LLM can't learn for you. With embedded and systems software especially, there will always be situations you simply have to handle yourself, leaning on the experience you've settled out of your own study and engineering practice. That, more than anything, is my honest answer when people ask: why do this?

This site covers a lot of ground, centered on a few areas: embedded systems, modern C++, Linux, and operating systems. It's project-driven combined with topic-driven — most of the writing grows out of real repos we're actively working on, and extends outward from there.

📊 As of June 24, 2026 — how's the project doing?

So far, the organization's most successful project is Tutorial_AwesomeModernCPP — one of the best-received repos, a systematic modern C++ tutorial that runs from C and C++98 all the way to C++23, still under active construction, and it's picked up some genuine attention. Alongside it is other solid work: imx-forge, representing the NXP i.MX6ULL embedded-Linux BSP and application-layer development tutorials, and the newly rising Cinux operating-system tutorial series written in C++17: Cinux-Book.

But I also have to be serious about this: these repositories are still under continuous construction. Quite a few of them are early, experimental, or just ideas being explored. In truth, from the end of December 2025 to today, only about half a year has passed. A lot of the content hasn't yet stood the test of time, and still needs the precious feedback and active participation of the author and our enthusiastic friends. That way AELS can help more people enjoy learning — maybe even fall in love with the broad field of C/C++, embedded, and systems-software development.

🤝 Come build AELS together with us!

What AELS wants to be is a learning community for C/C++ + embedded + systems software. Even though right now the author and a few friends are still shouldering this mostly on our own, we warmly invite you to join — to help build a safe little learning hut for others still adrift in outdated materials and dogmatic assertions.

Whether you're a newcomer just typing your first "Hello, World", or an experienced developer who tears apart Linux kernels and ARM architectures for fun, you're warmly welcome here!

Feel free to open an Issue on any of the repositories to report anything at all:

Any bug you find, any dead link on the site, anywhere you feel is poorly explained or unclear — you don't even need to explain how it's bad. A screenshot, a rant that the writing is terrible — all of it is a huge upgrade to the learning experience of every other friend studying with our projects.

Any typo you spot, any outdated statement, anywhere that won't run, anywhere that clearly needs an illustration to make sense — just open a PR!

Any pit you've fallen into in a similar field, any toy you've built, any problem you've turned into a write-up to submit (not sure how? just open an Issue and ask — we'll respond promptly!), or any project you think deserves a recommendation — all warmly welcome!

A lot of contributions start from a single beginner question, or a single doc fix. That's also how I once answered a friend who asked how to get into contributing to open source.

If you like what you see, we'd love it if you tapped a little ⭐! It's a huge vote of confidence in our work. Thanks for reading this far — and wishing you smooth sailing in your learning and development!

Spotted a typo? The door's open — head to the Issues.

Built with VitePress