Embedded Programming: C, C++ & Assembly
The languages that talk to hardware. C essentials for firmware, register-level Embedded C with volatile and bit manipulation, memory maps and linker scripts, modern Embedded C++, and reading/writing ARM Thumb-2 assembly.
- C Language Essentials for Embedded — C is the lingua franca of embedded systems. Learn the parts of C that matter most on microcontrollers: fixed-width types from <stdint.h>, integer promotion and overflow, signed vs unsigned, operators and bitwise manipulation, pointers and arrays, structs, unions, enums, padding and alignment, the preprocessor, storage classes (static, extern, const, volatile) and the undefined behaviours that silently break firmware.
- Embedded C: Registers, volatile & Fixed-Point — C is the language of firmware. Learn fixed-width types, bit manipulation, register access, volatile, const and memory placement, interrupts and shared data, state machines, fixed-point maths and defensive practices like watchdogs.
- Memory Map, Linker Scripts & Build Process — Where does your code actually go? Learn the compile–assemble–link flow, object files and ELF, the MCU memory map (Flash, SRAM, peripherals), sections (.text, .rodata, .data, .bss, stack, heap), what the linker script does, how startup code initialises RAM, reading map files and size output, and stack sizing and overflow detection.
- Embedded C++ — Modern C++ brings type safety and zero-cost abstractions to microcontrollers. Learn which features to use (classes, namespaces, references, constexpr, templates, enum class, RAII, std::array) and which to avoid or control (exceptions, RTTI, dynamic allocation, iostreams), plus virtual-function costs and compile-time peripheral configuration.
- ARM Thumb-2 Assembly Basics — Reading assembly is an essential debugging skill even if you rarely write it. Learn the Cortex-M register file (R0–R15, xPSR), the load/store architecture, key Thumb-2 instructions (MOV, LDR/STR, ADD/SUB, CMP, B/BL/BX, PUSH/POP), condition flags N Z C V, the AAPCS calling convention, inline assembly and intrinsics, and how C constructs compile to instructions.