Free Online Training Events
Free Technical Resources
This course is available Live Online worldwide: View the Live Online full course description »
Zephyr is a modular, highly portable, real-time operating system with an associated ecosystem to build secure, connected, and future-proofed devices. Zephyr is not just another RTOS but a complete development platform. It can help you achieve a lot with optimal effort.
This course helps you to navigate the steep learning curve for Zephyr and gives you a solid foundation to get you project-ready quickly.
This training class is designed around interactivity and student engagement with hands-on workshops designed to reinforce learning through practical applications.
This course is designed for anyone interested in, or tasked with, the development of a resource-constrained Real-Time system using Zephyr, for example, software engineers, firmware engineers, hardware engineers, field engineers, and project managers.
Prior attendance of C Programming for Embedded Systems or equivalent is recommended.
Doulos Course materials are renowned for being the most comprehensive and user-friendly available. Their style, content, and coverage is unique and has made them sought-after resources in their own right.
The materials include:
Provide background information about the training and the Zephyr project.
Welcome • Course Objectives • Background on Zephyr • Getting started with Zephyr • Development environments
Discuss what makes Zephyr a good fit for embedded products.
Why use Zephyr? • Hardware Support • Ecosystem Overview • Licensing • Product Examples
Discuss practical considerations when developing embedded products with Zephyr.
Zephyr Paradigm Shift • Product Considerations • Release Lifecycle • Security • Software update
Give an overview of the Zephyr Ecosystem.
Architecture • Kernel and OS services • Connectivity Stacks • Proprietary Extensions
Understand the Zephyr Build System.
West Workspace and Manifest • west tool • Managing Workspace • Building and Flashing applications • Using emulators • Zephyr Build Systems • YAML files
Understand how the Zephyr kernel works and how to configure it for a product.
Kernel services overview • Threads and Scheduling • Preemptible and Cooperative threads • Threads APIs • SMP and CPU idling • Kernel configuration • Product development Tips
Get introduced to devicetree.
Why devicetree? • Hardware Abstraction Layer • Devicetree and Zephyr • Blinky walkthrough
Learn about Kconfig and how to configure Zephyr for your application
What is Kconfig? • Compile time modularity • Using Interactive Configuration • Configuring Application • prj.conf and overlays • Product development Tips
Learn how to resolve the most common issues related to Kconfig.
prj.conf not found • Configuration is not applied • Unmet dependencies • Build errors during compilations.
Learn how shells, logging and tracing help with application debugging during the development phase.
Shells • Configuring and Using Shells • Logging Subsystem • Configuring and Using Logging • Tracing Subsystem • Configuring and Using Tracing
Learn how to debug Zephyr applications.
Cross-debugging • GDB and VScode • Debugging Fatal Error • Core Dump • Stack Overflow Detection and Debugging • Tips for Device in the Fields.
Learn how to leverage the logging APIs for your applications.
Logging subsystem • printk and printf • Log Module • Log APIs • Custom Application Kconfig • More on Logging
Discuss how to integrate peripherals in Zephyr.
Hardware Integration procedure • Devicetree bindings • Devicetree overlays • Using drivers in application • Product Development Tips
Introduce the syntax and usage of devicetrees to gain a deeper understanding of how devicetree is used in Zephyr.
Devicetree source and other files • Devicetree syntax • Devicetree node and properties • important nodes (addressable resources, interrupts…) • Devicetree APIs • Use in Zephyr applications.
Learn how to resolve the most common issues related to devicetrees.
Gosh, I got hundredths of cryptic compilation errors! • Common devicetree issues • How to resolve • Practical tips and tricks to ease troubleshooting.
Discuss Zbus, a lightweight and flexible software bus for applications.
Why ZBus? ZBus key concepts • Channels, Listeners, (message) Subscribers • Zbus APIs • Virtual Distributed Events Dispatcher • Higher Locker Priority Protocol • Going further
Learn about timers and interrupts.
Measuring Time • Working with Timers • Interrupt Service Routine • Top/Bottom halves • System and Custom Workqueue • Working with Workqueues • Using interrupts.
Discuss the steps required to develop and integrate a custom device driver in Zephyr.
Driver Development recipe • Devicetree bindings and Kconfig • Device Driver Model • Driver Implementation • Driver Registration • System Initialization • Using the Drivers • Product development tips
Learn about QEMU and native simulator and discuss how these technologies can be used during product development.
QEMU • QEMU Use Cases • native_sim • native_sim Use Cases • Emulated Devices • Testing drivers • Creating a Device Driver Emulator.
Introduce Zephyr’s test framework, Ztest, and the test runner tool twister.
Twister • Using twister • Test reports and scenarios • Ztest • Writing Tests with Ztest • Hardware In the Loop (HIL) testing • Going Further
Discuss common tools available with Zephyr to assess and improve the quality of your product.
Footprint and Memory Usage • Static Code Analysis • Code Coverage • Software Bill of Materials (SBOM)
Discuss a typical project structure for applications.
How to integrate proprietary code • Zephyr module • Creating and Using a Zephyr Module • Creating a Custom Workspace for your product • Zephyr Example Application.
Wrap-up, free Q&A sessions, further Zephyr and Doulos Resources.
The following sections are available in the Zephyr Essentials Manual, but are not normally covered in our public offering. These topics can be booked for team-based training.
Discuss the aspects related to memory management in Zephyr.
Code Relocation • System Heap • Synchronized Heaps • Low-level heap allocators • Memory Slabs • Memory Blocks
Learn about the synchronization services and APIs provided by Zephyr and how they differ from other Operating Systems.
Semaphores • Mutex • Condvars • Events • Spinlock • When to use?
Introduce the data passing primitives and APIs offered by the Zephyr Kernel.
Kernel FIFO, LIFO and Queues • Kernel messages • Kernel Pipe
Complete an enquiry form and a Doulos representative will get back to you.
Enquiry FormPrice on request