FRM-110 · Firmware & MCU
RTOS Fundamentals: Zephyr & FreeRTOS
Task scheduling, synchronisation and driver models in a small real-time operating system.
Who this course is for
Embedded engineers whose superloop has outgrown itself, and Linux developers new to MCUs, who need tasking, synchronisation and a driver model that fit in kilobytes.
Prerequisites
Course outline
Day 1 — Tasks and scheduling
- The task model: states, stacks and the context switch on Cortex-M
- Preemptive priority scheduling and what the tick actually does
- Assigning priorities: rate-monotonic reasoning and response-time budgets
- FreeRTOS task APIs versus Zephyr threads; static versus dynamic allocation
- Idle work, tickless idle and a first look at power states
Day 2 — Synchronisation and interrupts
- Semaphores, mutexes, queues and notifications: choosing the right primitive
- Priority inheritance, and reproducing an inversion on purpose
- Interrupt-to-task handoff: deferring work through queues, notifications and workqueues
- Races between ISR and task: critical sections versus lock-free handoff
- Deadlock patterns in small systems and how to rule them out
Day 3 — Zephyr as a platform; memory protection
- The Zephyr build system: west, Kconfig and devicetree as one configuration surface
- The Zephyr device model: binding drivers through devicetree
- Porting an application between boards by changing devicetree, not code
- Stack sizing, high-water marks and overflow detection
- MPU-based memory protection and userspace threads: what it buys and what it costs
Hands-on labs
Labs follow the academy model — 35% principles, 20% guided investigation, 45% engineering studio. Every claim you make in a lab is backed by a trace, a counter or a measurement you captured yourself. How we teach
- Lab: build the same multi-task application in FreeRTOS and Zephyr and compare scheduling behaviour and footprint
- Lab: reproduce priority inversion on a shared mutex, measure the blocking, fix it with priority inheritance and re-measure
- Lab: hand data from an ISR to a task through a queue, stress it at full rate, and prove no sample is lost or corrupted
- Lab: describe a sensor in Zephyr devicetree, bind the driver, and move the build to a second board by changing only the overlay
- Lab: size task stacks from high-water-mark measurements, enable overflow detection, and catch an injected overflow before it corrupts
Capstone project
Port a single-threaded sensor/control superloop to a properly partitioned RTOS application: justified task priorities, ISR-to-task handoff, stack sizes derived from measured high-water marks, and a watchdog recovery path. Deliver the task graph, the priority rationale, scheduling traces showing worst-case response, and a stress-run evidence pack proving your shared-state invariants hold.
What you leave with
- A task-priority assignment method grounded in response-time budgets
- Working skill with semaphores, mutexes, queues and priority inheritance in both RTOSes
- Zephyr fluency: west, Kconfig, devicetree and the device model
- Stack sizing and overflow-detection practice that survives review
- An interrupt-to-task handoff pattern that is provably race-free
How it runs
Every course follows the same model: 35% principles, 20% guided investigation, 45% engineering studio. You leave with working code, raw measurements and an evidence-based report — not a certificate of attendance. Read the methodology or see a full sample lesson.
Material is adapted to your kernel version, hardware and workload before a private delivery. For public cohorts, the environment is provided and configured.
Questions
Who is this course for?
Embedded engineers whose superloop has outgrown itself, and Linux developers new to MCUs, who need tasking, synchronisation and a driver model that fit in kilobytes. It sits at practitioner level within the Firmware & MCU track.
What do I need to know already?
Specific prerequisites for this course: C programming on any platform; FRM-101-level basics: interrupts and memory-mapped registers; A laptop able to run the Zephyr and FreeRTOS toolchains (lab boards provided). We confirm levels before the cohort starts and adapt if a group is stronger or weaker than expected.
Can this run privately for my team?
Yes. Any course runs on-site at your offices anywhere, or live online for a distributed team, with labs adapted to your hardware and codebase.
What is the difference between in-person and online?
In person is 3 full days with hardware on your desk, capped at 14. Online is 6 half-day sessions across about two weeks so you can keep working, capped at 20, with remote lab access.
Do you invoice companies?
Yes. Purchase orders are accepted and invoicing is available in USD, EUR, GBP, SAR and CAD.
Upcoming dates
| Dates | Where | Seats | Early bird | Regular | |
|---|---|---|---|---|---|
| 11 Oct – 13 Oct 20263 full days | RiyadhIn person · KAFD Conference Centre | 3 of 14 | — | SAR 7,880 | |
| 18 Oct – 20 Oct 20263 full days | Kuwait CityIn person · Al Hamra Tower | 8 of 14 | — | KWD 650 | |
| 25 Oct – 27 Oct 20263 full days | MuscatIn person · Knowledge Oasis Muscat | 3 of 14 | — | OMR 810 | |
| 25 Oct – 1 Nov 20266 half-days | Gulf bandLive online · 09:00–13:00 GMT+3 | 7 of 20 | — | US$1,500 | |
| 26 Oct – 28 Oct 20263 full days | OttawaIn person · Kanata North Tech Park | 8 of 14 | — | CAD 2,860 | |
| 2 Nov – 4 Nov 20263 full days | TorontoIn person · MaRS Discovery District | 3 of 14 | — | CAD 2,860 | |
| 2 Nov – 9 Nov 20266 half-days | Europe bandLive online · 09:00–13:00 CET | 12 of 20 | — | US$1,500 | |
| 9 Nov – 11 Nov 20263 full days | LondonIn person · Shoreditch Works | 8 of 14 | GBP 1,480until 10 Oct | ||
| 9 Nov – 16 Nov 20266 half-days | Americas bandLive online · 13:00–17:00 ET | 17 of 20 | US$1,350until 10 Oct | ||
| 16 Nov – 18 Nov 20263 full days | BerlinIn person · Factory Görlitzer Park | 3 of 14 | EUR 1,740until 17 Oct |
Dates shown for the next few months. If nothing fits, tell us where and when — cohorts are added on demand, and private delivery can be scheduled any week.
More in Firmware & MCU
FRM-1013 days
Bare-Metal C for Microcontrollers
Writing firmware with no operating system underneath: startup, linker scripts, peripherals and interrupts.
Practitioner-taught
SAR 6,750Next 1 Nov
FRM-1203 days
Bootloaders & Firmware Update
Updating firmware in the field without bricking devices, including signature verification and rollback.
Practitioner-taught
SAR 7,880Next 15 Nov
FRM-2013 days
I2C, SPI & CAN Protocol Firmware
Implementing and debugging the buses embedded systems communicate over, from the firmware side.
Practitioner-taught
SAR 7,880Next 22 Nov
FRM-2103 days
CMIS & Optical Module Firmware
Firmware for pluggable optical modules: the CMIS management interface and the state machines behind it.
Practitioner-taught
SAR 9,000Next 1 Nov