This repository contains a step-by-step guide that teaches you how to use Zephyr RTOS. It assumes:
- no previous experience with RTOS
- basic embedded electronics knowledge (GPIO, Timers, Interrupt,...)
- knowledge of C
Each lesson builds on the previous one. Most lessons end with exercises (with solutions!) that allow you to test your knowledge to make sure you understand everything that is covered.
This tutorial is under active development, if you want to participate - please read the Contribution guide.
A web version of this tutorial can also be found here.
-
Lesson 1: Zephyr Setup
-
Lesson 2: Introduction
- 2.1 RTOS basics
- 2.2 Zephyr structure
- 2.3 Tutorial structure
-
Lesson 3: Threads
- 3.1 Introduction
- 3.2 Commands
- 3.3 Kconfig
- 3.4 Exercise
-
Lesson 4: GPIO
- 4.1 Introduction
- 4.2 Commands
- 4.3 Kconfig
- 4.4 Exercise
-
Lesson 5: Scheduling
- 5.1 Introduction
- 5.2 Commands
- 5.3 Kconfig
- 5.4 Exercise
-
Lesson 6: Debugging
- 6.1 Introduction
- 6.2 Commands
- 6.3 Kconfig
- 6.4 Exercise
-
Lesson 7: Interrupts
- 7.1 Introduction
- 7.2 Commands
- 7.4 Exercise
-
Lesson 8: Timers
- 8.1 Introduction
- 8.2 Commands
- 8.3 Kconfig
- 8.4 Exercise
-
Lesson 9: Mutexes
- 9.1 Introduction
- 9.2 Commands
- 9.3 Kconfig
- 9.4 Exercise
-
Lesson 10: Semaphores
- 10.1 Introduction
- 10.2 Commands
- 10.3 Kconfig
- 10.4 Exercise
-
Lesson 11: Logging
- 11.1 Introduction
- 11.2 Commands
- 11.3 Kconfig
- 11.4 Exercise
-
Lesson 12: Build System
- 12.1 Introduction
- 12.2 Commands
- 12.3 Exercise
- 12.4 Next?
General
Youtube channels
Projects using Zephyr
- Golioth: IoT cloud platform
- Battery management system
- MG100: IoT sensor module
- Anyl: Embedded crypto wallet (for IoT)
- BLE sensor
- PineTime smartwatch
- UWB position tracking
- zmk: mechanical keyboard firmware
- air quality sensor
Zephyr libraries
Follow me on twitter: stay up to date on my latest blogs/projects
- gpio:commands.md -> add descriptions to tables
- exercices: threads : add define equivalents to each type
- zephyr-setup: test proposed install and setup on 'tutorial'
- introduction->rtos-basics: add explanatory images
- threads->exercises: check build thread-start
- debugging: core dump exercise
towards the end:
- Add next page and prev page links
- exercises: rename project names
- for each section introduction add relevant links at the end?