Day 1: Introduction & Zephyr Basics
Introduction to Zephyr
The Zephyr Project & Ecosystem.
Why use Zephyr? Key features & advantages.
Installing & setting up Zephyr.
Build & Configuration Systems
West: Zephyr’s build system.
CMake and Zephyr SDK.
Application structure & west manifests.
Zephyr Configuration & Device Tree
Kconfig & Devicetree syntax.
Best practices for configuration.
Exercise: Write a device tree overlay.
Zephyr Without Threads
Operation without threads (GPIO, utilities, data structures).
Exercise: Blink LEDs using Zephyr & configure GPIO.
Exercise: Manage linked lists & understand container_of macro.
Day 2: Thread Management & Debugging
Thread Management
Creating & managing threads in Zephyr.
Thread priorities, states, and delays.
Kernel scheduling mechanisms (linked-list, red-black tree, multi-queue).
Exercise: Create & manage Zephyr threads.
Tracing & Logging
Runtime statistics & scheduling traces.
Percepio Tracealyzer integration.
Exercise: Enable & analyze Zephyr trace logs.
Memory Management in Zephyr
Dynamic & static memory allocation.
Heap, memory blocks, stack overflow detection.
Exercise: Allocate dynamic memory & detect stack overflow.
Day 3: User Mode, Synchronization & Data Passing
User Mode & Security
User mode vs. kernel mode.
Memory partitions & syscall mechanisms.
Resource Management & Synchronization
Mutexes, semaphores, atomic operations.
Exercise: Solve the producer-consumer problem in Zephyr.
Data Passing in Zephyr
Message queues, FIFOs, LIFOs, mailboxes, pipes.
Exercise: Implement a print gatekeeper thread using message queues.
Day 4: Interrupts, Timers & Module Development
Interrupt Management
Interrupt handling in Zephyr.
Thread-safe queues & workqueue threads.
Exercise: Pass data from an interrupt to a thread safely.
Software Timers
One-shot & auto-reload timers.
Exercise: Implement timers for task scheduling.
Modules & Kconfig
Creating and integrating Zephyr modules.
Using and extending Kconfig options.
Exercise: Create a custom module with Kconfig integration.
Day 5: Zephyr Device Drivers & Power Management
Zephyr Device Driver Model
Overview of Zephyr’s device driver framework.
Device API extensions & initialization levels.
Exercise: Develop a custom device driver.
Device Tree Integration
Device Tree bindings & overlays.
Exercise: Write a driver using Device Tree & Kconfig.
Power Management in Zephyr
System & device power management.
Exercise: Implement power-efficient drivers for Zephyr.