Embedded Engineering, From First Principles
MCU vs MPU · ARM Cortex-M0/M4/M7/M33 · Xtensa LX7 · RISC-V · AVR · toolchains · hosted vs freestanding C · reading reference manuals.
Toolchain bring-up + semihosting "hello"
Twenty-four weeks of production-grade embedded engineering. From a blank linker script on a Cortex-M to a signed, OTA-updatable fleet talking MQTT-over-TLS, with a TinyML classifier at the edge and a logic analyzer on the bench proving every byte. Open-source-first. No cost.
§ I · The Program
Crunch Wire is the embedded systems and IoT engineering specialization of the Code Crunch academy — a redesign of the original C7 course, reauthored in 2026 for the Crunch Labs tier. It is built for engineers who want to ship connected products: not Arduino-hobbyist sketches, but firmware that boots from a custom linker script, talks MQTT-over-TLS, survives OTA mid-power-loss, and runs a TinyML classifier in 200 KB of flash.
You write firmware in C, modern C++20, Rust (embassy, embedded-hal), and MicroPython. You boot FreeRTOS and Zephyr. You design and order a small KiCad board. You debug with GDB, OpenOCD, SWO/ITM, and a Saleae logic analyzer. By Week 24 you have built a fleet, signed its firmware, rotated its certificates, survived its first chaos drill, and written the on-call runbook a future maintainer can read at three in the morning.
"This is not a hobbyist Arduino course. It is the curriculum we wish existed when we first shipped a connected product." — Crunch Wire, course README
§ II · Who It's For
Wire is opinionated about its audience. C1 (Code Crunch Convos) is the floor — you should be able to read a C function and a datasheet without panic.
Writes firmware today against vendor SDKs. Wants the layers below — linker scripts, ISR latency, RTOS internals — and the layers above — OTA, attestation.
Finished C1. Targets hardware-heavy companies (Apple Silicon, Tesla, SpaceX, Anduril, Nest). Needs C fluency, hardware intuition, and a portfolio that proves both.
Has a product. Needs to ship a fleet, not a prototype. Needs firmware lifecycle, OTA, attestation, compliance, and the manufacturing handoff.
Reverse-engineers firmware. Now wants to build it: bootloader chains, signing infrastructure, secure elements, TLS on a 256 KB MCU.
§ III · Four Phases
The arc of the program is composed in four phases — six weeks each — each building on the last like floors of a building.
C and C++20 discipline. Datasheets and reference manuals. Toolchains, linker scripts, startup files, vector tables. Bare-metal blink without a single line of vendor HAL.
The peripheral menagerie — GPIO, UART, SPI, I2C, CAN, USB, ADC, DMA, timers. FreeRTOS and Zephyr in earnest. Debugging with GDB, OpenOCD, SWO/ITM, and a Saleae logic analyzer.
Wireless: BLE 5, Wi-Fi, LoRaWAN, Thread, Matter. MQTT, MQTT-SN, CoAP. Edge inference with TFLite-Micro. Fleet shadows, provisioning, telemetry pipelines.
Dual-bank bootloaders. Secure boot, code signing, delta-encoded OTA. TLS on a constrained MCU. Embedded Linux with Yocto and Buildroot. Capstone, chaos drill, on-call runbook.
§ IV · The Curriculum
Each entry corresponds to a folder in the GitHub repository with lecture notes, exercises, challenges, a quiz, homework, and a mini-project. Detailed acceptance criteria live in the syllabus.
MCU vs MPU · ARM Cortex-M0/M4/M7/M33 · Xtensa LX7 · RISC-V · AVR · toolchains · hosted vs freestanding C · reading reference manuals.
Toolchain bring-up + semihosting "hello"
Storage classes · volatile · bitfields · packed structs · fixed-width integers · UB on small targets · MISRA-C-aligned style.
SPSC ring buffer with host tests
Memory map · .text/.data/.bss/.stack · vector table · reset handler · what arm-none-eabi-ld actually does.
Blink without HAL — your own linker + startup
C++20 on freestanding · constexpr, concepts, std::span · no RTTI, no exceptions · CRTP peripheral drivers · ETL.
CRTP Gpio<Port,Pin> template
embedded-hal · embassy async executor · defmt · when Rust beats C, when it does not.
UART echo in embassy on the RP2040
MicroPython on the ESP32-S3 and RP2040 · when scripting earns its keep · scope basics · logic analyzer basics.
First scope shot — measure your blink
Tasks, queues, semaphores, mutexes · priority inversion · stack sizing · the idle hook.
Two-task producer/consumer with queues
Device tree · west · the build system · Zephyr drivers · power management.
Port your Lab 03 blink to Zephyr
Wire protocols · driver patterns · polled vs interrupt vs DMA · arbitration on I2C.
BME280 driver over I2C with DMA
CAN as a bus discipline · USB-CDC for log-everywhere · ADC sampling · PWM for motor control · DMA-driven sample buffers.
CAN echo node + USB-CDC log
IMU calibration · ToF basics · environmental sensor fusion · brushed DC motors · hobby servo control · fault handling.
IMU + ToF sensor hub publishing over UART
GDB over J-Link · OpenOCD · SWO/ITM tracing · Saleae captures · scope shots · runbooks that survive 3 AM.
Diagnose a priority inversion with SWO + scope
GAP, GATT, advertising, connection, security · Nordic softdevice · NimBLE on Zephyr · BLE-Mesh basics.
BLE occupancy beacon (custom GATT service)
ESP-IDF Wi-Fi state machine · MQTT v3.1.1 vs v5 · QoS · last-will · retained messages · MQTT-SN.
ESP32 sensor node publishing to Mosquitto
LoRaWAN classes A/B/C · The Things Network · duty cycles · over-the-air activation.
LoRaWAN soil-moisture node, OTAA-joined
802.15.4 · Thread mesh · OpenThread · Matter clusters · commissioning via QR code.
Matter-commissionable smart-plug node
TFLite-Micro · model quantization · MAC budgets · on-device inference under 200 KB.
Wake-word classifier on the nRF52840
Open fleet brokers · device shadows · telemetry schemas · provisioning at scale.
3-node fleet streaming to a Mosquitto + InfluxDB stack
MCUboot · dual-bank vs swap · image signing · rollback · trust anchors in ROM.
MCUboot dual-bank install on the STM32F446
Delta updates · resumable downloads · A/B rollback · the manifest signing chain.
Power-pull chaos test against your OTA flow
mbedTLS / wolfSSL on MCU · ATECC608 / OPTIGA Trust M · device attestation · cert rotation.
mTLS to the fleet broker with a secure element
Yocto · Buildroot · device tree · BSP · kernel modules (intro) · u-boot.
Custom Yocto image for a Raspberry Pi CM4
FCC Part 15, CE RED briefing · battery design · low-power modes · two-layer KiCad board.
KiCad layout review of your sensor node
Capstone polish · chaos drill (battery depletion / network partition / cert rotation) · postmortem · on-call runbook · interview prep.
Fleet-scale IoT gateway + edge-ML sensor node
§ V · The Toolchain
Every primary tool below is open-source. Vendor SDKs (STM32Cube, ESP-IDF, Nordic Connect) are taught as the production scale path — never as the only path.
§ VI · Skills You Will Carry
By the end of Week 24, you are able to do each of the following — credibly, on a real bench, in front of a real reviewer.
embassy and the embedded-hal ecosystem.§ VII · The Capstone
Week 24 is reserved for a single substantial system — the kind a real product team would scope across a quarter. Architecture diagram, live deploy, video walkthrough, chaos-drill postmortem.
Capstone Brief
Build a three-tier system: an ESP32-S3 sensor node running a TFLite-Micro classifier, a Linux gateway (Raspberry Pi CM4 with a custom Yocto image) aggregating telemetry, and a Mosquitto + InfluxDB + Grafana cloud back-end receiving signed MQTT-over-TLS traffic. All three tiers come from your code.
§ VIII · Getting Started
The setup is intentionally lightweight. If you have a Linux laptop and can run a terminal command, you can begin Week 1 today. The hardware kit ships separately.
# 1. Clone the curriculum repository git clone https://github.com/CODECRUNCHWORLDWIDE/C7-WIRE-CRUNCH-EMBEDDED-SYSTEMS.git cd C7-WIRE-CRUNCH-EMBEDDED-SYSTEMS # 2. Install the toolchain (Linux / macOS / WSL2) sudo apt install gcc-arm-none-eabi gdb-multiarch openocd # Debian / Ubuntu brew install arm-none-eabi-gcc openocd # macOS # 3. Open Week 1 README and begin $EDITOR curriculum/week-01-foundations/README.md
Need the hardware kit list, or a budget alternative? See the README.
§ IX · Frequently Asked
Not for Weeks 1–2. Toolchain setup, C discipline, and ring-buffer host-tests can be done on any laptop. From Week 3 onward you need at least the STM32 Nucleo-F446 board and an ST-Link or J-Link debugger. Full kit is ~$240 with open-source alternatives listed in the syllabus.
Yes. Free to learn from, like everything in Code Crunch. The only thing it costs you is time, effort, and the hardware kit.
Because firmware that ships requires depth you cannot fake. Bare-metal alone is 6 weeks. RTOS is 6 more. Wireless and edge ML are another 6. And production — bootloaders, OTA, secure boot, Linux/Yocto, capstone — is the last 6. See the charter for the full rationale.
Take C1 (Code Crunch Convos) first. We assume Python fluency and a willingness to read a C function. If you cannot yet read a C function, also do the C primer in C14 (Linux) before starting.
C7 owns the single device, the firmware, and the IoT fleet. C24 owns multi-actuator autonomous systems with ROS2, motion planning, and SLAM. Take C7 first if you want to ship a connected product; take C24 first if you want to build a robot. Many engineers do both.
Yes — for senior firmware roles. The course closes with a discipline-specific interview prep pack: system-design with hardware constraints, embedded-C code-review drills, RTOS internals questions, and the production runbook as a portfolio artifact.
§ X · Begin
Open the repository. Read Week 1. The bench is yours.