Skip to content

Latest commit

 

History

History
339 lines (266 loc) · 14.5 KB

File metadata and controls

339 lines (266 loc) · 14.5 KB

🗺️ Embedded Atlas

A structured roadmap and resource guide for engineers entering embedded systems. From first principles to industry-level expertise — hardware, MCU, Linux BSP, and automotive.


License: MIT Contributions Welcome Stars Last Commit


📖 Docs Website  ·  🚀 Start Here  ·  🗂️ Domains  ·  🤝 Contribute


Why Embedded Atlas?

Most resources for embedded engineering are scattered — a YouTube video here, a datasheet there, a Reddit thread someone bookmarked. There is no single place that maps the full territory, explains how domains relate, and tells you what to learn in which order.

Embedded Atlas is that place.

It is not a tutorial. It is a map — structured, opinionated, and built from real engineering experience across hardware bring-up, Linux BSP, automotive electronics, and Edge AI. Whether you are a CS graduate entering the field, a hobbyist moving into professional work, or an experienced engineer switching domains — this atlas helps you navigate.

Built by a Lead ARAS Engineer who has worked across BSP, AAOS, OpenCV, and automotive embedded systems at the founding level. The content comes from the field, not from textbooks.


🗂️ The Four Domains

Embedded systems engineering is not one discipline — it is four overlapping domains, each with its own depth and career path.

┌──────────────────────────────────────────────────────────────────────┐
│                       EMBEDDED SYSTEMS                               │
│                                                                      │
│   ┌────────────┐   ┌─────────────┐   ┌───────────┐   ┌──────────┐  │
│   │  Hardware  │   │    MCU /    │   │  Linux    │   │  Auto-   │  │
│   │Electronics │   │  Firmware   │   │   BSP     │   │ motive   │  │
│   │            │   │             │   │           │   │          │  │
│   │ Schematics │   │ Bare metal  │   │ Drivers   │   │ CAN bus  │  │
│   │ PCB layout │   │ RTOS        │   │ Yocto     │   │ AUTOSAR  │  │
│   │ Bring-up   │   │ Peripherals │   │ DTS/DTSI  │   │ ISO26262 │  │
│   └────────────┘   └─────────────┘   └───────────┘   └──────────┘  │
│                                                                      │
│               ── All domains share these foundations ──              │
│            C Programming · Toolchain · Git · Electronics             │
└──────────────────────────────────────────────────────────────────────┘

🚀 Start Here

New to embedded systems? Start with foundations. Do not jump into a domain until the fundamentals are solid.

Already have experience? Pick your domain directly and use the roadmap to identify gaps.

Your situation Where to go
New to embedded, never written firmware 00 · Foundations
Know C, want to work on hardware 03 · Hardware
Know C, want to write firmware 01 · Microcontroller
Know Linux, want to write drivers 02 · Linux BSP
Working in or targeting automotive 04 · Automotive
Want cross-domain depth 05 · Cross-Domain
Looking for project ideas Projects
Preparing for interviews Interviews

📚 Domains

Before picking a domain — skills every embedded engineer must have

Topic Status What you learn
Electronics Basics 🚧 In Progress Ohm's law → digital logic → signal fundamentals
C for Embedded 🚧 In Progress Pointers, memory layout, bitwise ops, volatile, const
Toolchain 📋 Planned GCC, Make, GDB, objdump, linker scripts
Version Control 📋 Planned Git for hardware + software teams

Embedded software without an OS — the foundation of all embedded work

Topic Status What you learn
Roadmap 🚧 In Progress Structured path from beginner to advanced
Bare Metal 📋 Planned Register access, startup code, linker scripts
RTOS 📋 Planned FreeRTOS, Zephyr — tasks, queues, semaphores
Peripherals 📋 Planned UART, SPI, I2C, CAN, USB, ADC/DAC
Debugging 📋 Planned JTAG, SWD, OpenOCD, GDB, logic analyzer
Resources 📋 Planned Books, courses, recommended dev boards

Board Support Package — bringing Linux to custom hardware

Topic Status What you learn
Roadmap 🚧 In Progress Structured path from beginner to advanced
Kernel Basics 📋 Planned Architecture, compilation, Kconfig, menuconfig
Device Drivers 📋 Planned Character, platform, I2C, SPI, interrupt drivers
Device Tree 📋 Planned DTS/DTSI from scratch, bindings, overlays
Yocto 📋 Planned Custom Linux distro for your board
Debugging 📋 Planned kgdb, ftrace, perf, dmesg, serial console
Resources 📋 Planned Books, kernel.org docs, community

PCB design, board bring-up, and test equipment

Topic Status What you learn
Roadmap 📋 Planned Structured path from beginner to advanced
Schematic Design 📋 Planned Reading and drawing schematics with KiCad
PCB Design 📋 Planned Layout rules, stackup, design for manufacturing
Signal Integrity 📋 Planned High-speed design, impedance, EMC basics
Board Bring-Up 📋 Planned Power sequencing, first boot, systematic debugging
Test Equipment 📋 Planned Oscilloscope, logic analyzer, DMM, JTAG probe
Resources 📋 Planned Books, courses, simulators, reference designs

CAN bus, AUTOSAR, functional safety, Android Automotive

Topic Status What you learn
Roadmap 🚧 In Progress Structured path from beginner to advanced
CAN Bus 🚧 In Progress CAN, CAN-FD, LIN, FlexRay — protocol to implementation
AUTOSAR 📋 Planned Classic and Adaptive AUTOSAR architecture
Functional Safety 📋 Planned ISO 26262, ASIL levels, safety lifecycle
AAOS 📋 Planned Android Automotive OS — HAL, VHAL, integration
ADAS 📋 Planned Sensors, perception, safety-critical RTOS
Resources 📋 Planned Standards, tools, simulators, community

Depth that every embedded engineer needs regardless of specialization

Topic Status What you learn
Communication Protocols 📋 Planned UART, SPI, I2C, USB, Ethernet — the full picture
Power Management 📋 Planned Low-power design, sleep modes, power rail sequencing
OTA Updates 📋 Planned Firmware update strategies, rollback, A/B partitions
Embedded Security 📋 Planned Secure boot, TrustZone, HSM, code signing
Testing 📋 Planned Unit testing, HIL, static analysis, CI for embedded

🗺️ Learning Paths

Three common journeys through the atlas — pick the one closest to your situation.

Path A — Complete Beginner → BSP Engineer

Foundations          (2–3 months)  → Electronics, C, toolchain, git
Microcontroller      (2–3 months)  → Bare metal, RTOS, peripherals
Linux fundamentals   (1–2 months)  → File system, processes, shell
Linux BSP            (6–12 months) → Drivers, DTS, Yocto, debugging
Automotive (optional)(ongoing)     → CAN, AAOS, functional safety

Path B — Software Engineer → Embedded Systems

Electronics basics   (1 month)     → Circuits, signals, power
C for embedded       (1 month)     → Memory, pointers, bitops
MCU + RTOS           (2–3 months)  → Bare metal, FreeRTOS
Domain choice        (6–12 months) → BSP or Automotive

Path C — Hardware Engineer → Full-Stack Embedded

C programming        (1–2 months)  → Embedded C patterns
Bare metal firmware  (2 months)    → Register-level programming
Linux BSP            (6 months)    → Drivers, device tree, Yocto
Cross-domain skills  (ongoing)     → Security, OTA, testing

📊 Content Progress

Actively being built — content added weekly.

Domain Topics Progress
00 · Foundations 4 🟩🟩⬜⬜⬜⬜⬜⬜⬜⬜ 25%
01 · Microcontroller 6 🟩⬜⬜⬜⬜⬜⬜⬜⬜⬜ 10%
02 · Linux BSP 6 🟩⬜⬜⬜⬜⬜⬜⬜⬜⬜ 15%
03 · Hardware 6 ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0%
04 · Automotive 6 🟩🟩⬜⬜⬜⬜⬜⬜⬜⬜ 20%
05 · Cross-Domain 5 ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0%
Projects 3 levels ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0%
Interviews 4 domains ⬜⬜⬜⬜⬜⬜⬜⬜⬜⬜ 0%

Status legend: ✅ Complete   🚧 In Progress   📋 Planned


🏗️ Repository Structure

Embedded-Atlas/
│
├── 00_foundations/          ← start here
│   ├── electronics_basics.md
│   ├── c_programming.md
│   ├── toolchain.md
│   └── version_control.md
│
├── 01_microcontroller/
│   ├── roadmap.md
│   ├── bare_metal.md
│   ├── rtos.md
│   ├── peripherals.md
│   ├── debugging.md
│   └── resources.md
│
├── 02_linux_bsp/
│   ├── roadmap.md
│   ├── kernel_basics.md
│   ├── device_drivers.md
│   ├── device_tree.md
│   ├── yocto.md
│   ├── debugging.md
│   └── resources.md
│
├── 03_hardware/
│   ├── roadmap.md
│   ├── schematic.md
│   ├── pcb_design.md
│   ├── signal_integrity.md
│   ├── bring_up.md
│   ├── test_equipment.md
│   └── resources.md
│
├── 04_automotive/
│   ├── roadmap.md
│   ├── can_bus.md
│   ├── autosar.md
│   ├── functional_safety.md
│   ├── aaos.md
│   ├── adas.md
│   └── resources.md
│
├── 05_cross_domain/
│   ├── protocols.md
│   ├── power_management.md
│   ├── ota_updates.md
│   ├── security.md
│   └── testing.md
│
├── projects/
│   ├── beginner.md
│   ├── intermediate.md
│   └── advanced.md
│
├── interviews/
│   ├── hardware.md
│   ├── mcu.md
│   ├── bsp.md
│   └── automotive.md
│
├── assets/                  ← diagrams, banner, screenshots
├── CONTRIBUTING.md
├── LICENSE
└── README.md

🤝 Contributing

Domain knowledge from the field beats anything written from documentation alone. If you have experience, a better resource, a missing topic, or a correction — open a PR.

The one rule: every entry needs a WHY. A link without context is not documentation. Explain what it teaches and why it belongs here.

# Fork → clone → branch
git checkout -b content/your-topic

# Add content, then open a PR against main

See CONTRIBUTING.md for content style, structure, and the review process.


👤 Author

Abdul Sattar — Lead ARAS Engineer Founding engineer building India's first Advanced Rider Assistance System for 2-wheelers. Working across Linux BSP · AAOS · OpenCV · Automotive Embedded Systems.

GitHub LinkedIn Medium Dev.to


📄 License

MIT — see LICENSE for details. Free to use, share, and build upon. If this helped you, a ⭐ or a contribution back is appreciated.



Embedded systems is one of the most technically demanding and rewarding fields in engineering.
This atlas exists to make the path clearer.