+ +
- -
Online Training
 
Calendar  Details
Operating Systems
 
Calendar  Details
Programming
Calendar  Details
Processors
 
Calendar  Details
Communication
 
 
 
Calendar  Details
+ +
> >
- -

 
ac6 >> ac6-training >> Online Training >> Embedded Real-Time Systems >> Zephyr Real Time Programming Download Catalog Download as PDF Write us Printable version

oRT5 Zephyr Real Time Programming

Real-time programming applied to the Zephyr operating system

formateur
Objectives
  • Overview of the Cortex-M resources used by RTOS
  • Learn how to develop, configure, debug and trace Zephyr applications
  • Discover the real time multitasking concept
  • Understand Real Time constraints
    • Determinism
    • Preemption
    • Interrupts
  • Understand the Zephyr kernel Services
  • Learn communication and synchronization mechanisms
  • Interactions with processor architecture features
  • Understand Zephyr memory management and data structures
Course environment
  • Theoretical course
    • PDF course material (in English)
    • Course dispensed using the Teams video-conferencing system
    • The trainer to answer trainees’ questions during the training and provide technical and pedagogical assistance through the Teams video-conferencing system
  • Practical activities
    • Practical activities represent from 40% to 50% of course duration
    • The trainer has access to trainees’ Online PCs for technical and pedagogical assistance.
    • Example code, labs and solutions
  • Virtual Machine with System Workbench for STM32 with GNU ARM Eclipse QEMU
  • Emulated board STM32F4-Discovery
Prerequisites
Duration
  • Total: 24 hours
  • 4 sessions, 6 hours each (excluding break time)
  • From 40% to 50% of training time is devoted to practical activities
  • Some Labs may be completed between sessions and are checked by the trainer on the next session

First Session
Cortex-M resources used by RTOS
  • Cortex-M Architecture Overview
    • Two stacks pointers
    • Different Running-modes and Privileged Levels
    • Systick Timer Description
  • Exception / Interrupt Mechanism Overview
    • Interrut entry and return Overview
    • SVC / PendSV / Systick Interrupt Presentation
  • Developing with the IDE
Exercise:  Prepare Lab environment, run and debug a project
Exercise:  Interrupt management on ARM-Cortex M (Demo)
Real-Time Concepts
  • Base real time concepts
  • The Real Time constraints
  • Multi-task and real time
  • Tasks and Task Descriptors
    • Content of the task descriptor
    • List of task descriptors
  • Context Switch
Introduction to Zephyr
  • Zephyr Project
  • Zephyr Ecosystem
  • Why use Zephyr
  • Install and use Zephyr
  • Build and Configuration Systems
    • West
    • CMake
    • Kconfig and configuration overlay
    • Configuration tools: menuconfig and guiconfig
Zephyr Without Threads
  • Operation without Threads
  • GPIO
  • Random Number Generation
  • Utilities
  • Data Structures
    • Single-linked List
    • Double-linked List
    • Ring Buffers
Exercise:  Hello World from Zephyr, configure and blink LEDs using Zephyr
Exercise:  Manage Zephyr linked list and understand container_of macro
Second Session
Scheduling
  • Task Scheduling and Preemption
    • Tick based or tickless scheduling
  • Scheduling systems and schedulability proof
    • Fixed priorities scheduling
    • RMA and EDF scheduling
  • Scheduling through Zephyr
    • Scheduling Algorithm
    • Cooperative Time Slicing
    • Preemptive Time Slicing
Thread Management
  • Thread Control Block
  • Creating Threads
  • Threads Priorities
  • Thread States
  • Main and Idle Threads
  • Delays
  • Changing Thread Priority
  • Suspending Threads
  • Kernel Structures
    • Simple linked-list ready queue
    • Red/black tree ready queue
    • Traditional multi-queue ready queue
  • Thread Custom Data
  • Scheduling Traces
    • Runtime Statistics
    • User-Defined Tracing
    • Percepio Tracealyzer
Exercise:  Create and manage threads
Exercise:  Create periodic threads
Exercise:  Create config overlay for visual trace diagnostics using Tracealyzer
Third Session
Memory Management in Zephyr
  • Memory Managers
  • Dynamic memory managers
    • K_heap
    • System heap
    • Memory Slabs
    • Memory Blocks
  • Heap Listeners
  • Stack Overflow detection
Exercise:  Understand dynamic memory allocation in Zephyr
Exercise:  Display threads information and detect stack overflow
Resource Management
  • Mutual Exclusion
  • Critical Sections
  • Mutexes
  • Gatekeeper threads
  • Atomic
  • Lock-Free Data Structures
  • SpinLocks
Exercise:  Implement mutual exclusion between threads
Synchronization Primitives
  • Synchronization
  • Semaphores
  • The Readers/Writer Problem
  • Condition variables
  • Events and Event Groups
  • Polling
Exercise:  The producer-consumer problem, synchronize and avoid concurrent access problems
Exercise:  Understanding event bit group by synchronizing several threads
Fourth Session
Data Passing
  • Message Queues
  • Pipes
  • Queues
    • FIFOs
    • LIFOs
  • Mailboxes
  • Stacks
Exercise:  Create a print gatekeeper thread using message queue
Interrupt Management
  • Threads and Interrupts
  • Interrupts in zephyr
  • Interrupts on ARM Cortex-M
  • Handler thread
  • Queue within an ISR
  • Workqueue Threads
  • Power Management
Exercise:  Understand how to wait on multiple events and interrupt safe APIs
Exercise:  Understand how to pass data using Queues from an interrupt to a thread
Exercise:  Create and submit work items from interrupts to custom WorkQueue
Software Timers
  • Timers
    • Defining a Timer
    • Using a Timer Expiry Function
  • Timer types
    • One-shot timers
    • Auto-reload timers
  • Timer Commands
Exercise:  Understand the use of one-shot and auto-reload timers