Skip to main content

Embedded Systems

Embedded software runs on hardware that was never meant to run much of anything: a few hundred kilobytes of flash, no operating system by default, hard real-time deadlines a missed interrupt can blow, and a physical world on the other side of every GPIO pin. This section covers that discipline end to end โ€” Cortex-M architecture and the bare-metal fundamentals, peripherals and interrupt-driven drivers, RTOS concepts (FreeRTOS and Zephyr), the point at which embedded Linux becomes the right answer instead of an RTOS, and the safety, security, and lifecycle concerns that separate a prototype from a shippable product.

It does not re-teach material that already has a home elsewhere on this site. Bus protocols, general interrupt theory, scheduling theory, CPU architecture, and bit manipulation are covered in depth under computer-science/; embedded pages link out to that material and add the register-level and Cortex-M-specific parts on top, rather than repeating it.

This section is being written

Right now this landing page is the only page here โ€” that is why the sidebar shows just "Overview". The first content folders, 00-overview through 04-bare-metal-programming, are being written next and will cover the material described below. Everything from 05-peripherals-and-drivers onward is planned but does not exist yet. If you came here looking for a specific topic and it is not in the sidebar, it has not been published yet โ€” nothing is missing or broken.

How this is organised

The section is sixteen numbered folders, 00 through 15, each self-contained around one theme โ€” numeric prefixes only order them on disk, the sidebar label comes from each folder's _category_.json. The full folder map (one row per folder, phrased as the question it answers) and the reasoning behind the "link out to computer-science/ instead of repeating it" policy live on How This Section Is Organised โ€” this page stays a short index; that one is the expanded reference.

Sectionsโ€‹

FolderCovers
๐Ÿ“– 00-overviewWhat "embedded" means as a discipline, the microcontroller/microprocessor/SoC distinction, the landscape of architectures and vendors, bare-metal vs. RTOS vs. Linux, and a glossary
๐Ÿ”ง 01-hardware-foundationsChoosing hardware, schematics and board basics, power and reset behaviour, and what a datasheet actually tells you
๐Ÿง  02-processor-architectureThe Cortex-M register model, memory map and bit-banding, and the pipeline and instruction-set concerns specific to microcontroller cores
๐Ÿ› ๏ธ 03-toolchain-and-buildCross-compilers, CMake for embedded, linker scripts, ELF/map files, and the build pipeline from source to flashable image
โšก 04-bare-metal-programmingStartup code, vector tables, register-level programming, critical sections, and your first bare-metal blink
๐Ÿ”Œ 05-peripherals-and-driversGPIO, UART/SPI/I2C in depth, DMA, external memory, and flash/EEPROM emulation
โฑ๏ธ 06-interrupts-timing-and-real-timeThe NVIC, timing determinism, scheduling theory as it applies to interrupts, and what breaks determinism on cores with caches
๐Ÿงต 07-rtosTask and scheduling concepts, synchronization primitives, FreeRTOS, and Zephyr
๐Ÿ“ก 08-connectivity-and-protocolsUSB device stacks, Ethernet and TCP/IP on constrained devices, and wireless connectivity
๐Ÿ”‹ 09-low-power-designSleep modes, power budgeting, and low-power peripheral design
๐Ÿง 10-embedded-linuxWhen Linux is the right call, the boot chain, device drivers, and build systems (Yocto, Buildroot)
๐Ÿž 11-debugging-and-testingJTAG/SWD, hardfault debugging, unit testing firmware, and hardware-in-the-loop testing
๐Ÿ›ก๏ธ 12-safety-and-reliabilityIEC 61508, ISO 26262, DO-178C, and IEC 62304 โ€” structure, intent, and engineering consequences, not the normative text
๐Ÿ”’ 13-securitySecure boot, TrustZone-M, secure communication on MCUs, and firmware update security
โ™ป๏ธ 14-firmware-lifecycleVersioning, OTA updates, field diagnostics, and long-term maintenance of shipped firmware
๐Ÿงฉ 15-languages-and-practiceFirmware architecture and layering, embedded Rust, MicroPython, and machine learning on microcontrollers

00-overview through 02-processor-architecture are published, so their row links straight to the folder's first page; 03 onward stay plain text until their tasks land (folders 03โ€“04 land later in this same phase, 05โ€“15 in Phases 2 and 3).

Four learning pathsโ€‹

These describe a reading order through folders and pages by name; they are not yet links, because most of the target pages do not exist yet. Once a target page is published, the navigation gets wired up so you can click through directly โ€” for now, use the sidebar or search to find a folder once it appears.

PathSuggested orderWhat it gets you
Day one00-overview (what embedded means) โ†’ 01-hardware-foundations (what hardware to buy) โ†’ 04-bare-metal-programming (your first bare-metal blink) โ†’ then back to 02-processor-architecture and 03-toolchain-and-build for why it workedA blinking LED before the theory, then the theory that explains it โ€” the fastest way to stay motivated as a beginner
I have a board and nothing works01-hardware-foundations โ†’ 03-toolchain-and-build โ†’ 04-bare-metal-programming โ†’ 11-debugging-and-testingA troubleshooting path from "is the board even powered" through toolchain issues to systematic hardfault debugging
I'm building a product04-bare-metal-programming โ†’ 05-peripherals-and-drivers โ†’ 07-rtos โ†’ 09-low-power-design โ†’ 14-firmware-lifecycleThe path from a working prototype to something with drivers, a scheduler, a power budget, and an update story
I'm moving to Linux02-processor-architecture โ†’ 10-embedded-linux โ†’ 11-debugging-and-testingWhat changes when the target has an MMU and runs Linux instead of bare metal or an RTOS

Master reference listโ€‹

A short list of sources worth owning or bookmarking, curated rather than exhaustive. Individual pages cite the primary, authoritative source for their specific claims (an Arm architecture reference, a vendor reference manual, docs.kernel.org, an RFC); this list is for the reader who wants to go deeper than any one page.

Books

  • Joseph Yiu, The Definitive Guide to Arm Cortex-M3 and Cortex-M4 Processors (and the companion โ€ฆCortex-M0 and Cortex-M0+ edition) โ€” the reference for the core itself: registers, exception model, and the instruction set, written by an Arm architect.
  • Elecia White, Making Embedded Systems (O'Reilly) โ€” the best single first book on the discipline as a whole, not just the chip.

Courses, blogs, and video

  • Memfault's Interrupt blog (interrupt.memfault.com) โ€” consistently the best current writing on firmware debugging, fault analysis, and build tooling.
  • Bootlin's free training materials (bootlin.com/training) โ€” embedded Linux, kernel, and Yocto training slides and labs, released under CC BY-SA.
  • Nordic DevAcademy (academy.nordicsemi.com) โ€” Bluetooth Low Energy done properly, from a silicon vendor with no reason to hand-wave the hard parts.
  • Ben Eater (eater.net and YouTube) โ€” signalling and bus protocols built up from first principles on a breadboard; unmatched for building real intuition about what a scope is showing you.

Vendor and project documentation

Where a page below draws on a source that is paywalled or a purchase (the safety standards in particular โ€” IEC 61508, ISO 26262, DO-178C, and IEC 62304 are all paywalled documents), its ## References section says so rather than linking around the cost.