{ "bands": [ { "label": "SOFTWARE", "areas": ["SOFTWARE"], "clusters": { "languages": { "header": "Programming Languages", "per": 2, "topics": [ ["C", "required"], ["C++", "recommended"], ["Python", "recommended"], ["Assembly", "possible"], ["Rust", "possible"] ] }, "fundamentals": { "header": "Programming Fundamentals", "topics": [ ["Algorithms & Data Structures", "required"], ["Design Patterns", "required"], ["State Machines", "required"], ["Memory Management", "required"] ] }, "debugging": { "header": "Debugging", "topics": [ ["JTAG / SWD", "required"], ["GDB", "required"], ["OpenOCD", "possible"] ] }, "sdlc": { "header": "SDLC Models", "per": 2, "topics": [ ["Agile / SCRUM", "recommended"], ["V-Model", "recommended"] ] }, "vcs": { "header": "Version Control", "per": 2, "topics": [ ["Git", "required"], ["SVN", "possible"] ] }, "build": { "header": "Build System", "topics": [ ["Compilers / GCC", "required"], ["Make / CMake", "required"], ["Bash Scripting", "recommended"], ["Docker", "possible"] ] }, "testing": { "header": "Testing", "topics": [ ["TDD & Unit Testing", "required"], ["CI/CD Pipelines", "recommended"], ["SIL / HIL Testing", "possible"], ["Standards & Certifications", "possible"] ] }, "specialized": { "caption": "Specializations", "topics": [ ["Embedded Security", "possible"], ["Embedded GUI", "possible"], ["IoT", "possible"], ["Edge AI", "possible"], ["AUTOSAR", "possible"] ] }, "osBase": { "topics": [ ["Operating System Fundamentals", "recommended"] ] }, "linux": { "header": "Embedded Linux", "per": 2, "topics": [ ["Linux Kernel", "recommended"], ["Device Drivers", "recommended"], ["U-Boot", "possible"], ["Buildroot / Yocto", "possible"], ["Threading / Parallelism", "possible"], ["IPC", "possible"], ["Qt Framework", "possible"] ] } } }, { "label": "SOFTWARE ∩ HARDWARE", "areas": ["SOFTWARE", "HARDWARE"], "clusters": { "rtos": { "header": "Real-Time OS", "per": 2, "topics": [ ["RTOS Basics", "required"], ["FreeRTOS", "recommended"], ["Zephyr", "recommended"], ["QNX", "possible"], ["µC/OS", "possible"], ["RT-Thread", "possible"] ] }, "mcu": { "per": 2, "topics": [ ["GPIO", "required"], ["ADC / DAC", "required"], ["Timers / Counters", "required"], ["PWM", "required"], ["Watchdog", "required"], ["Interrupts", "required"], ["DMA", "required"], ["Clock Management", "required"], ["Power Management", "recommended"], ["Bootloader / DFU", "recommended"] ] }, "bridge": { "caption": "Hardware-facing software", "topics": [ ["Memory Technologies & File Systems", "recommended"], ["Hardware Simulation / Emulation", "recommended"], ["Sensors & Actuators", "possible"], ["Digital Signal Processing", "possible"], ["Control Theory", "possible"] ] }, "basic": { "header": "Basic", "topics": [ ["UART", "required"], ["I2C", "required"], ["SPI", "required"] ] }, "wireless": { "header": "Wireless", "topics": [ ["Bluetooth", "recommended"], ["Wi-Fi", "recommended"], ["LoRa", "possible"], ["Zigbee", "possible"], ["Thread", "possible"], ["Matter", "possible"], ["UWB", "possible"] ] }, "highSpeed": { "header": "High-Speed", "topics": [ ["Ethernet", "recommended"], ["USB", "recommended"], ["PCIe", "possible"] ] }, "industrial": { "header": "Industrial", "topics": [ ["Modbus", "recommended"], ["Profinet", "possible"], ["EtherCAT", "possible"] ] }, "cellular": { "header": "Cellular", "topics": [ ["GSM / LTE", "possible"], ["LTE-M / 5G", "possible"], ["NB-IoT", "possible"] ] }, "network": { "header": "Network", "topics": [ ["MQTT", "recommended"], ["CoAP", "possible"], ["TCP/IP", "possible"], ["UDP", "possible"] ] }, "automotive": { "header": "Automotive", "topics": [ ["CAN", "recommended"], ["LIN", "possible"], ["MOST", "possible"], ["FlexRay", "possible"] ] } } }, { "label": "HARDWARE", "areas": ["HARDWARE"], "clusters": { "electronics": { "header": "Electronics", "per": 2, "topics": [ ["Basic Math & Calculus", "required"], ["Principles of Electric Circuits", "required"], ["Electronics Fundamentals", "required"], ["Digital Design", "required"], ["Computer Architecture", "required"] ] }, "equipment": { "header": "Using Test Equipment", "topics": [ ["Multimeter", "required"], ["Logic / Protocol Analyzer", "required"], ["Oscilloscope", "recommended"] ] }, "prototyping": { "header": "Prototyping Skills", "topics": [ ["Breadboarding", "recommended"], ["Hardware Design Basics", "recommended"], ["PCB Design / EMC", "recommended"], ["Soldering / Rework", "recommended"] ] }, "fpga": { "topics": [ ["FPGA Development", "possible"] ] } } }, { "label": "SOFT SKILLS", "areas": ["SOFT SKILLS"], "clusters": { "soft": { "per": 3, "topics": [ ["Communication Skills", "required"], ["Problem-Solving Skills & Critical Thinking", "required"], ["Teamwork & Collaborative Abilities", "required"], ["Organizational & Time Management Skills", "required"], ["Being Self-Driven and Independent", "required"], ["Adaptability & Patience", "required"] ] } } } ], "links": [ ["C", "Memory Management", "Pointers, the stack and the heap are managed by hand in C"], ["C++", "Memory Management", "Ownership, RAII and smart pointers decide who frees memory"], ["Rust", "Memory Management", "Ownership and borrowing replace manual memory management"], ["Python", "Memory Management", "Garbage collection; MicroPython has to fit in small RAM"], ["C", "C++", "C++ builds on C, and both are mixed in one firmware project"], ["C", "Compilers / GCC", "The toolchain that turns C code into firmware"], ["C", "Linux Kernel", "The kernel and its drivers are written in C"], ["C", "GDB", "Source-level debugging of C programs"], ["C++", "Design Patterns", "Classic object-oriented patterns are taught in C++"], ["C++", "Qt Framework", "Qt is a C++ framework"], ["Python", "Bash Scripting", "Both automate tooling, tests and build tasks"], ["Python", "SIL / HIL Testing", "Test rigs and HIL benches are often scripted in Python"], ["Python", "Edge AI", "Models are usually trained in Python before deployment"], ["Rust", "Embedded Security", "Memory safety removes a whole class of vulnerabilities"], ["Assembly", "Computer Architecture", "Instructions map directly to registers and the memory model"], ["Assembly", "Compilers / GCC", "Reading compiler output and writing startup code"], ["Assembly", "Interrupts", "Vector tables and context saving are done in assembly"], ["Algorithms & Data Structures", "Memory Management", "The data structure you pick decides memory use and allocation"], ["Algorithms & Data Structures", "Digital Signal Processing", "Filters and transforms are algorithms with tight time and memory budgets"], ["Algorithms & Data Structures", "Problem-Solving Skills & Critical Thinking", "Choosing and breaking down an approach"], ["Design Patterns", "State Machines", "The State pattern; many embedded designs are state machines"], ["State Machines", "Interrupts", "Events and interrupts drive state transitions"], ["State Machines", "RTOS Basics", "RTOS tasks are usually written as event-driven state machines"], ["State Machines", "Digital Design", "Finite-state machines are also the core of sequential logic in hardware"], ["JTAG / SWD", "OpenOCD", "OpenOCD drives JTAG/SWD debug probes"], ["JTAG / SWD", "GDB", "GDB reaches the target through a JTAG/SWD probe"], ["JTAG / SWD", "Bootloader / DFU", "Flashes the first bootloader and recovers bricked boards"], ["OpenOCD", "GDB", "OpenOCD is the GDB server for most microcontrollers"], ["GDB", "Compilers / GCC", "GDB reads the debug information the compiler emits"], ["GDB", "Problem-Solving Skills & Critical Thinking", "Debugging is structured problem solving"], ["Agile / SCRUM", "V-Model", "Two common process models; safety projects often combine them"], ["Agile / SCRUM", "CI/CD Pipelines", "Short iterations rely on automated builds and tests"], ["Agile / SCRUM", "Teamwork & Collaborative Abilities", "Scrum is built around close teamwork"], ["Agile / SCRUM", "Organizational & Time Management Skills", "Sprint planning and prioritising work"], ["V-Model", "Standards & Certifications", "Certified projects follow V-model verification"], ["V-Model", "SIL / HIL Testing", "Integration and system testing on SIL and HIL benches"], ["Git", "SVN", "Both are version control systems; Git is the common choice today"], ["Git", "CI/CD Pipelines", "Pipelines start from commits and pull requests"], ["Git", "Teamwork & Collaborative Abilities", "Branches and code review are how teams share code"], ["Communication Skills", "Teamwork & Collaborative Abilities", "Collaboration depends on clear communication"], ["Compilers / GCC", "Make / CMake", "Build systems drive the compiler and linker"], ["Make / CMake", "CI/CD Pipelines", "Pipelines run the same build commands"], ["Make / CMake", "Buildroot / Yocto", "Buildroot and Yocto are build systems for whole Linux images"], ["Bash Scripting", "CI/CD Pipelines", "Most pipeline steps are shell commands"], ["Bash Scripting", "Operating System Fundamentals", "The shell and processes are core OS concepts"], ["Docker", "CI/CD Pipelines", "Containers give pipelines a reproducible toolchain"], ["Docker", "Buildroot / Yocto", "Yocto builds are commonly run in containers"], ["TDD & Unit Testing", "CI/CD Pipelines", "Tests run automatically on every change"], ["TDD & Unit Testing", "Hardware Simulation / Emulation", "Tests run on a host against simulated hardware"], ["SIL / HIL Testing", "Hardware Simulation / Emulation", "SIL runs the firmware against simulated hardware"], ["SIL / HIL Testing", "CI/CD Pipelines", "HIL rigs can run as pipeline stages"], ["Standards & Certifications", "Embedded Security", "Security standards such as IEC 62443"], ["Standards & Certifications", "AUTOSAR", "Automotive software is developed to ISO 26262"], ["Standards & Certifications", "PCB Design / EMC", "EMC compliance testing is a certification requirement"], ["Embedded Security", "Bootloader / DFU", "Secure boot and signed firmware updates"], ["Embedded Security", "IoT", "Connected devices are exposed to attacks and need secure updates"], ["Embedded Security", "TCP/IP", "TLS runs on top of TCP/IP"], ["Embedded GUI", "Qt Framework", "Qt is a common GUI toolkit on embedded Linux"], ["Embedded GUI", "SPI", "Small displays are often driven over SPI"], ["Embedded GUI", "DMA", "DMA moves frame buffers to the display"], ["IoT", "MQTT", "A common messaging protocol for IoT devices"], ["IoT", "CoAP", "A lightweight request/response protocol for constrained devices"], ["IoT", "Wi-Fi", "A typical uplink for mains-powered devices"], ["IoT", "LoRa", "Long-range, low-power links"], ["IoT", "NB-IoT", "Cellular connectivity for low-power devices"], ["IoT", "Power Management", "Battery-powered nodes need low-power design"], ["Edge AI", "Digital Signal Processing", "Features are extracted from sensor signals before inference"], ["Edge AI", "Sensors & Actuators", "Models run on sensor data"], ["Edge AI", "Power Management", "Inference has to fit a small energy budget"], ["Edge AI", "FPGA Development", "FPGAs are used as inference accelerators"], ["AUTOSAR", "CAN", "AUTOSAR communication stacks run over CAN"], ["AUTOSAR", "Ethernet", "Automotive Ethernet is part of the AUTOSAR stack"], ["AUTOSAR", "RTOS Basics", "AUTOSAR OS is an OSEK-based real-time operating system"], ["Operating System Fundamentals", "RTOS Basics", "Scheduling, tasks and synchronisation carry over"], ["Operating System Fundamentals", "Linux Kernel", "Processes, memory and drivers as implemented in Linux"], ["Operating System Fundamentals", "Threading / Parallelism", "Threads and scheduling basics"], ["Operating System Fundamentals", "Memory Management", "Virtual memory and allocators"], ["Operating System Fundamentals", "Computer Architecture", "MMU, privilege levels and caches"], ["Linux Kernel", "Device Drivers", "Drivers are kernel modules"], ["Linux Kernel", "U-Boot", "U-Boot loads the kernel and the device tree"], ["Linux Kernel", "Buildroot / Yocto", "The kernel is configured and built as part of the image"], ["Linux Kernel", "Memory Technologies & File Systems", "Flash-friendly file systems and block layers"], ["Device Drivers", "I2C", "Linux drivers talk to devices over buses like I2C"], ["Device Drivers", "SPI", "Linux drivers talk to devices over buses like SPI"], ["Device Drivers", "GPIO", "Pins are exposed to drivers through the GPIO subsystem"], ["Device Drivers", "Interrupts", "Drivers handle device interrupts"], ["Device Drivers", "USB", "The USB stack needs host and device drivers"], ["Device Drivers", "PCIe", "PCIe devices need kernel drivers"], ["U-Boot", "Bootloader / DFU", "The same job on Linux boards: initialise hardware and load the OS"], ["U-Boot", "Buildroot / Yocto", "Both build and ship the bootloader with the image"], ["Threading / Parallelism", "IPC", "Threads and processes exchange data through IPC"], ["Threading / Parallelism", "RTOS Basics", "RTOS tasks, mutexes and priorities"], ["IPC", "RTOS Basics", "Queues and semaphores are the RTOS form of IPC"], ["RTOS Basics", "FreeRTOS", "The most common first RTOS"], ["RTOS Basics", "Zephyr", "The same scheduling, synchronisation and timing concepts"], ["RTOS Basics", "QNX", "The same scheduling, synchronisation and timing concepts"], ["RTOS Basics", "µC/OS", "The same scheduling, synchronisation and timing concepts"], ["RTOS Basics", "RT-Thread", "The same scheduling, synchronisation and timing concepts"], ["RTOS Basics", "Interrupts", "ISRs hand work over to tasks"], ["RTOS Basics", "Timers / Counters", "The tick timer and software timers"], ["FreeRTOS", "Memory Management", "FreeRTOS offers several heap allocation schemes"], ["FreeRTOS", "TCP/IP", "FreeRTOS+TCP is its TCP/IP stack"], ["Zephyr", "Bluetooth", "Zephyr ships its own Bluetooth stack"], ["Zephyr", "Thread", "Zephyr integrates OpenThread"], ["QNX", "IPC", "A microkernel built around message passing"], ["QNX", "Standards & Certifications", "Certified for safety-critical use"], ["GPIO", "Interrupts", "Pin edges raise interrupts"], ["GPIO", "PWM", "PWM is a timer-driven GPIO function"], ["GPIO", "Principles of Electric Circuits", "Pull-ups, drive strength and current limits"], ["GPIO", "Breadboarding", "The first experiment: an LED and a button on a breadboard"], ["ADC / DAC", "Sensors & Actuators", "Analog sensors are read through an ADC"], ["ADC / DAC", "DMA", "DMA moves samples without using the CPU"], ["ADC / DAC", "Digital Signal Processing", "Sampling theory and filtering"], ["ADC / DAC", "Timers / Counters", "Timers trigger conversions at a fixed rate"], ["Timers / Counters", "PWM", "PWM is generated by timer hardware"], ["Timers / Counters", "Interrupts", "Timer events raise interrupts"], ["Timers / Counters", "Clock Management", "Timer rates derive from the clock tree"], ["Timers / Counters", "Watchdog", "A watchdog is a special timer"], ["PWM", "Sensors & Actuators", "Drives motors, LEDs and servos"], ["PWM", "Control Theory", "A PID loop outputs a PWM duty cycle"], ["PWM", "Oscilloscope", "Duty cycle and frequency are checked on a scope"], ["Watchdog", "RTOS Basics", "Tasks must check in; a stuck task triggers a reset"], ["Interrupts", "Computer Architecture", "Vector table, priorities and the exception model"], ["DMA", "SPI", "High-throughput transfers without CPU load"], ["DMA", "UART", "Streaming serial data without CPU load"], ["Clock Management", "Power Management", "Clock gating and frequency scaling save power"], ["Clock Management", "UART", "Baud rates derive from the clock"], ["Clock Management", "Oscilloscope", "Checking oscillator and clock output"], ["Power Management", "Interrupts", "Wake-up sources are interrupts"], ["Power Management", "Bluetooth", "BLE is designed around duty cycling"], ["Power Management", "Hardware Design Basics", "Power supply and battery design"], ["Bootloader / DFU", "Memory Technologies & File Systems", "Firmware lives in flash and updates need safe writes"], ["Bootloader / DFU", "USB", "The USB DFU class updates firmware"], ["Memory Technologies & File Systems", "Memory Management", "RAM, flash and EEPROM sizes set the memory budget"], ["Memory Technologies & File Systems", "SPI", "SPI flash and SD cards"], ["Hardware Simulation / Emulation", "Digital Design", "Logic is verified in simulation before hardware exists"], ["Hardware Simulation / Emulation", "FPGA Development", "HDL designs are simulated before synthesis"], ["Hardware Simulation / Emulation", "Principles of Electric Circuits", "Circuits can be simulated (SPICE) before they are built"], ["Sensors & Actuators", "I2C", "Most digital sensors use I2C"], ["Sensors & Actuators", "SPI", "Faster sensors use SPI"], ["Sensors & Actuators", "Digital Signal Processing", "Raw readings are filtered and calibrated"], ["Sensors & Actuators", "Control Theory", "Closed-loop control reads sensors and drives actuators"], ["Digital Signal Processing", "Control Theory", "Filters and controllers share the same math"], ["Digital Signal Processing", "Basic Math & Calculus", "Transforms and filters are applied calculus"], ["Control Theory", "Basic Math & Calculus", "Differential equations and transfer functions"], ["UART", "Logic / Protocol Analyzer", "Inspect serial frames and baud rate"], ["UART", "USB", "USB-to-UART bridges are everywhere"], ["UART", "GSM / LTE", "Modems are controlled with AT commands over UART"], ["I2C", "Logic / Protocol Analyzer", "Decode addresses and ACK/NACK"], ["I2C", "SPI", "Both are on-board buses; learn when to choose which"], ["I2C", "Hardware Design Basics", "Pull-up sizing and bus capacitance"], ["SPI", "Logic / Protocol Analyzer", "Decode the clock, chip select and data lines"], ["Bluetooth", "Wi-Fi", "Both share the 2.4 GHz band, often on one radio chip"], ["Bluetooth", "Matter", "Matter devices are commissioned over Bluetooth LE"], ["Bluetooth", "UWB", "UWB is often paired with Bluetooth for secure ranging"], ["Wi-Fi", "TCP/IP", "Wi-Fi carries IP traffic"], ["Wi-Fi", "Matter", "Matter runs on Wi-Fi and Thread"], ["Thread", "Matter", "Matter runs on Wi-Fi and Thread"], ["Thread", "Zigbee", "Both are mesh networks on IEEE 802.15.4 radios"], ["LoRa", "NB-IoT", "Competing low-power wide-area options"], ["Ethernet", "TCP/IP", "Ethernet is the link layer under TCP/IP"], ["Ethernet", "EtherCAT", "Industrial protocols that run on Ethernet hardware"], ["Ethernet", "Profinet", "Industrial protocols that run on Ethernet hardware"], ["USB", "PCIe", "Both are high-speed serial links with host and device roles"], ["PCIe", "FPGA Development", "FPGAs often connect to hosts over PCIe"], ["Modbus", "UART", "Modbus RTU runs over serial lines such as RS-485"], ["Modbus", "TCP/IP", "Modbus TCP runs over TCP/IP"], ["EtherCAT", "FPGA Development", "EtherCAT slave controllers are often built in FPGAs"], ["GSM / LTE", "LTE-M / 5G", "The same cellular family, newer generations"], ["LTE-M / 5G", "NB-IoT", "Both are LTE-based low-power IoT standards"], ["MQTT", "TCP/IP", "MQTT runs over TCP"], ["MQTT", "CoAP", "Two IoT messaging styles: broker-based and request/response"], ["CoAP", "UDP", "CoAP runs over UDP"], ["TCP/IP", "UDP", "The two main transport protocols"], ["CAN", "LIN", "LIN is the low-cost sub-bus beneath CAN in vehicles"], ["CAN", "FlexRay", "FlexRay adds determinism and bandwidth beyond CAN"], ["CAN", "Logic / Protocol Analyzer", "Decode frames and arbitration"], ["CAN", "Oscilloscope", "Check the differential signal and bus termination"], ["MOST", "CAN", "MOST carries media in a vehicle while CAN carries control"], ["MOST", "Ethernet", "Automotive Ethernet is replacing MOST"], ["Basic Math & Calculus", "Principles of Electric Circuits", "Circuit analysis uses algebra and calculus"], ["Principles of Electric Circuits", "Electronics Fundamentals", "Components build on circuit laws"], ["Principles of Electric Circuits", "Multimeter", "Verify voltages and currents in real circuits"], ["Electronics Fundamentals", "Digital Design", "Logic gates are built from transistors"], ["Electronics Fundamentals", "Hardware Design Basics", "Choosing components and sizing circuits"], ["Electronics Fundamentals", "Oscilloscope", "Observe how signals change over time"], ["Digital Design", "Computer Architecture", "CPUs are built from digital logic"], ["Digital Design", "FPGA Development", "HDL describes digital logic"], ["Multimeter", "Breadboarding", "Continuity and voltage checks on prototypes"], ["Multimeter", "Soldering / Rework", "Checking for shorts after soldering"], ["Oscilloscope", "Logic / Protocol Analyzer", "Analog view and decoded digital view of the same signals"], ["Oscilloscope", "PCB Design / EMC", "Measuring noise and ringing"], ["Breadboarding", "Hardware Design Basics", "Prototype first, then design the board"], ["Breadboarding", "Soldering / Rework", "From breadboard to soldered prototype"], ["Hardware Design Basics", "PCB Design / EMC", "Schematics become board layout"], ["PCB Design / EMC", "Soldering / Rework", "Boards must allow assembly and repair"] ], "groups": { "Operating Systems": ["osBase", "linux", "rtos"], "Microcontrollers": ["rtos", "mcu"], "Interfaces & Protocols": ["basic", "wireless", "highSpeed", "industrial", "cellular", "network", "automotive"] }, "offMap": ["Don't Know Where to Start!", "Appendix-A: Advanced Topics"], "readme": { "ADC / DAC": ["ADC", "DAC"], "Buildroot / Yocto": ["Buildroot", "Yocto"], "TDD & Unit Testing": ["Test Driven Development (TDD)", "Unit Testing"], "Threading / Parallelism": ["Multithreading & Parallel Processing"], "Device Drivers": ["Linux Device Drivers"], "Real-Time OS": ["Real-Time Operating Systems"], "Interfaces & Protocols": ["Interfaces, Protocols & Communication Technologies"], "Basic": ["Basic Protocols"], "High-Speed": ["High-Speed Protocols"], "Wireless": ["Wireless Protocols"], "Industrial": ["Industrial Protocols"], "Automotive": ["Automotive Protocols"], "Network": ["Network Protocols / Socket Programming"], "TCP/IP": ["Network Protocols / Socket Programming"], "UDP": ["Network Protocols / Socket Programming"], "Cellular": ["Cellular Communication"], "MQTT": ["CoAP & MQTT"], "CoAP": ["CoAP & MQTT"], "LTE-M / 5G": ["LTE-M & NB-IoT"], "NB-IoT": ["LTE-M & NB-IoT"], "Basic Math & Calculus": ["Basic Calculus"], "SDLC Models": ["Software Development Life Cycle (SDLC) Models"], "Version Control": ["Version Control Systems"], "AUTOSAR": ["AUTOSAR Architecture"], "Profinet": ["Industrial Protocols"], "LIN": ["Automotive Protocols"], "MOST": ["Automotive Protocols"], "FlexRay": ["Automotive Protocols"], "UWB": ["Wireless Protocols"] } }