
Set up the Zephyr RTOS development environment on Windows by installing dependencies (CMake, Ninja, Python, Device Tree Compiler) with winget, verifying versions, and preparing for a hello world emulator.
Set up the Zephyr RTOS development environment on macOS by installing Homebrew and dependencies (cmake, python, device tree compiler), cloning Zephyr ecosystem, and building a Hello World on the emulator.
Learn to develop Zephyr applications from scratch, covering device trees, overlays, and kconfig, then set up a minimal project, west workflow, and board flash and debugging.
Configure your Zephyr app with prj.conf or project.conf to override kconfig options and enable the GPIO subsystem; use menuconfig and the .config file to edit and validate settings.
Build a Zephyr LED blinky from scratch on a custom board. Create a device tree and minimal main, then build, flash, and verify the LED toggle on real hardware.
Describe the reg standard property in device trees, showing how reg encodes base address and size in 32-bit cells, with address cells and size cells guiding i2c bus mappings.
Select exact compatible strings using binding documents to link devices with drivers in Zephyr, and consult yaml bindings for required properties to apply them during board bring up.
Learn the p-handles property in device tree as a list of node references with no per-entry arguments or commas, used to configure pins for i2c and usart via pin control.
Create a board-specific kconfig file in the Zephyr board directory to select the SoC. Use the board.yml name, avoid defining any type, and understand config and select behavior in menuconfig.
Use a board defconfig to set minimal defaults, enable gpio and the uart console, and leave leds and sensors to applications; rely on prj.conf overrides and device tree for bindings.
Follow the west-driven zephyr build flow from toolchain and board setup through device tree pre-processing to generate zephyr.dts and c headers, not a dtb, then kconfig processing and final elf.
Set up the board directory with board.yml, the device tree file, and dev config; build the Blinky sample with west, then explore menu config and fix dts qualifiers.
Add a custom property to a standard device tree node in Zephyr, and configure a blink period for gpio leds with a wrapper binding yaml.
Configure a button in Zephyr RTOS with device tree and board bring up, implement gpio callback and interrupt, and post button isr events to queues for consumer threads.
Create a button event structure and a Zephyr message queue to transfer ISR button events to a consumer thread, toggle the LED, and schedule a blink on the work queue.
Demonstrate wiring the LEDFlash module in Zephyr RTOS from button ISR to a thread, using a message queue and work queue to toggle the LED in 250 ms bursts.
Set up a new Zephyr project from templates, clean the build. Create a minimal codebase with game.c, lcd.c, input.c, and util.c for a state-machine driven display with sensor input.
Use AI to read the board schematic and manual pdfs, update spec.md hardware details with sections for microcontroller, motion sensor, and lcd/touch components, and flag missing pin data for verification.
Generate code for the source files and create the device tree overlay, then build with west, and verify lcd orientation kconfig items in menuconfig, configuring display geometry and orientation.
### Learn Zephyr RTOS from the ground up with a clear, structured foundation path ###
The embedded industry is shifting. Zephyr RTOS, backed by the Linux Foundation, is rapidly becoming the default choice for production IoT and embedded products. Nordic, NXP, Intel, STMicroelectronics, and dozens of other companies are building their ecosystems around it. No other RTOS brings together a unified build system, DeviceTree based hardware abstraction, and a porting workflow that works across MCU vendors in a single codebase. If you are an embedded engineer and you do not know Zephyr yet, you are falling behind.
This course turns you into the engineer who can take any Zephyr supported MCU, write DeviceTree for it from scratch, port it as a custom board, and build real applications on top of it. Not by copying from samples or following a pre-configured dev kit tutorial. By understanding the complete workflow from the ground up.
Here is what you will be able to do by the end of this course:
- Set up the complete Zephyr workspace and toolchain on Windows, Ubuntu, and MacOS
- Build and run your first Zephyr applications on QEMU and on real hardware
- Configure your Zephyr project using prj.conf, menuconfig, and Kconfig
- Write DeviceTree from scratch for a custom board and understand every node and property
- Port your own board into Zephyr with the full board directory and configuration setup
- Build real applications using interrupts, threads, and workqueues on your custom hardware
- Debug common DeviceTree and build issues with a repeatable step by step process
Zephyr is not just another RTOS. It is where the industry is heading. Companies building IoT products, wearables, industrial controllers, and connected devices are choosing Zephyr because it gives them one codebase that works across multiple chip vendors. The engineer who can bring up a custom board in Zephyr and write DeviceTree is the one who gets the interesting projects, the better roles, and the trust of the team. That skill set is rare right now. This course builds it.
Most Zephyr resources out there show you how to run samples on a supported dev kit. That is the easy part, and you can do it by reading the documentation. This course teaches you the skills that actually matter at work: writing DeviceTree from scratch, creating your own board files, and debugging the problems that show up when you step off the beaten path. Very few Zephyr courses go this deep into DeviceTree and board porting. This one does.
This course is built for:
- Embedded engineers who want to use Zephyr on their own custom hardware
- Engineers who tried Zephyr before but got stuck at DeviceTree or board porting
- Firmware developers, students and hobbyists moving from bare metal or FreeRTOS to Zephyr
Note on using AI assisted coding in this course
In the final project, we use AI-assisted coding to build a real embedded application. We deliberately save this for last. First, you build the foundation. You understand how Zephyr works. You can debug issues on your own. Only then do we bring in AI tools to show you how they can speed up your workflow when you actually know what you are doing. Understand first, accelerate later.
By the end of this course, you will not just know Zephyr. You will be the engineer who can take a bare board, bring it up in Zephyr, and build real applications on it. If that is the engineer you want to become, enroll now. Let us get started.
Hardware Requirement (for hands on practice)
This course uses the Fastbit STM32 Nano board, based on the STM32F303 microcontroller.
You can also follow along using any STM32 or Zephyr supported development board you already have.
If you want to use the exact board used by the instructor, you can explore the Fastbit STM32 Nano board and follow along one to one