FRM-101 · Firmware & MCU · Foundation

Bare-Metal C for Microcontrollers — full syllabus

Writing firmware with no operating system underneath: startup, linker scripts, peripherals and interrupts.

Duration3 full days in person · 6 half-days online
Cohortmax 14 in person · 20 online
Pricefrom SAR 6,750 in person · local pricing per city
Delivery35% principles · 20% guided investigation · 45% engineering studio

Who this course is for

Firmware engineers moving from application or RTOS-level code down to the metal, who need to own everything that runs before main() and debug it with a probe.

Prerequisites

Course outline

Day 1 — From reset to main()

  • The Cortex-M reset sequence: initial stack pointer and reset handler from the vector table
  • Startup code: copying .data, zeroing .bss, setting the clock tree and the stack
  • The linker script: memory regions, output sections and what KEEP() protects
  • Reading the map file and disassembly to prove where things landed
  • Flash, SRAM and peripheral space on the memory map; bit-banding and why it exists

Day 2 — Peripherals without a framework

  • Memory-mapped I/O and what volatile actually guarantees
  • Turning a datasheet register description into a C struct and access macros
  • Configuring GPIO, a timer and a UART from the reference manual alone
  • Compiler reordering and memory barriers around peripheral access
  • Polling and busy-waiting: their real cost inside a superloop

Day 3 — Interrupts and the probe

  • The NVIC: priority levels, preemption, nesting and tail-chaining
  • Writing an interrupt handler: vector entries, clearing flags, shared-data rules
  • Priority configuration and the bugs a wrong priority split hides
  • SWD with OpenOCD and gdb: halt, step, breakpoints and data watchpoints
  • Semihosting, ITM/SWO trace and when a plain UART wins

Hands-on labs

  1. Lab: bring up a Cortex-M board from erased flash with your own startup code and linker script — no vendor HAL — ending at a blinking LED
  2. Lab: configure a UART from the reference manual alone and validate the framing on the wire with a logic analyser
  3. Lab: place a function and a lookup table at explicit addresses through the linker script and verify the layout in the map file and over SWD
  4. Lab: write an interrupt-driven timer with nested NVIC priorities, then induce and diagnose a priority fault on the bench
  5. Lab: debug with OpenOCD and gdb: single-step the reset path and set a data watchpoint that catches a rogue write to shared state

Capstone project

Build a bare-metal sensor node on the lab board from zero: your own startup code and linker script, register-level drivers for a timer and one peripheral bus, and an interrupt-driven acquisition loop with a written timing budget. You deliver the source, the map file, a reset-to-main gdb trace and logic-analyser captures of the peripheral traffic — evidence the firmware does what you claim, not what a vendor HAL let you assume.

What you leave with

Upcoming dates

DatesWhereSeatsEarly birdRegular
1 Nov – 3 Nov 20263 full days RiyadhIn person · KAFD Conference Centre 3 of 14 —SAR 6,750
8 Nov – 10 Nov 20263 full days Kuwait CityIn person · Al Hamra Tower 8 of 14 KWD 500until 9 OctKWD 560
8 Nov – 10 Nov 20263 full days MuscatIn person · Knowledge Oasis Muscat 3 of 14 OMR 620until 9 OctOMR 690
15 Nov – 22 Nov 20266 half-days Gulf bandLive online · 09:00–13:00 GMT+3 9 of 20 US$1,170until 16 OctUS$1,300
16 Nov – 18 Nov 20263 full days OttawaIn person · Kanata North Tech Park 8 of 14 CAD 2,200until 17 OctCAD 2,450
16 Nov – 23 Nov 20266 half-days Europe bandLive online · 09:00–13:00 CET 14 of 20 US$1,170until 17 OctUS$1,300
23 Nov – 25 Nov 20263 full days TorontoIn person · MaRS Discovery District 3 of 14 CAD 2,200until 24 OctCAD 2,450
23 Nov – 25 Nov 20263 full days LondonIn person · Shoreditch Works 8 of 14 GBP 1,260until 24 OctGBP 1,400
23 Nov – 30 Nov 20266 half-days Americas bandLive online · 13:00–17:00 ET 3 of 20 US$1,170until 24 OctUS$1,300
30 Nov – 2 Dec 20263 full days BerlinIn person · Factory Görlitzer Park 3 of 14 EUR 1,490until 31 OctEUR 1,660

Book a seat, or bring this course to your team

Seats can be reserved online; private delivery runs on-site or live online, adapted to your stack.

Course page & booking

Questions about fit or prerequisites? Email hello@kernelsystems.academy. To save this syllabus, print this page to PDF from your browser.