Official course description
Written exam objectives
C++ programming
- In general, all C++ mechanisms used in the codelabs and in the JetBrains Academy lessons are part of the objectives. Some specific objectives are highlighted below.
- Memory representation for a simple C++ program.
- Understanding and proper use of C++ qualifiers used in the codelabs.
- Understanding and proper use of ways for passing arguments to functions/methods.
- OO programming:
- Class definition and inheritance.
- Pure virtual and virtual methods.
- Use of C++ qualifiers for class members.
- Template classes: class/typename arguments, typed parameters (such as in
zpp_lib::Workorzpp_lib::MessageQueue).
Testing
- Understanding of the test framework available in Zephyr RTOS.
- Understanding of small test programs using this framework.
- Given a small specification, programming a test program that allows to verify the specification.
Scheduling
-
Scheduling concept:
- Task preemption.
- Timing constraints (formulation, representation).
- Periodic and aperiodic tasks (formulation, representation).
- Metrics for performance evaluation (definitions).
-
Scheduling algorithms:
- Classification of existing algorithms: criteria for classification.
- Algorithms for periodic task scheduling (RMA, EDF): what they are, optimality.
- Schedulability principle: definition.
- Time Triggered Cyclic Executive (TTCE): given a set of tasks and their time constraints, formulate a scheduling.
- TTCE: advantages/disadvantages.
- Preemptive Scheduling Algorithms (RMA, EDF): schedulability criteria.
- TTCE/RMA/EDF: Given a set of periodic tasks, formulate the schedule in a timeline.
- TTCE/RMA/EDF: determine whether a set of tasks if schedulable using one of the algorithms.
- Round-robin scheduling: principle.
-
Interrupts:
- Understanding of ISR mechanism implementation.
- Support for Interrupt mechanisms on processors.
- Understand how to program ISR routines using C++ mechanisms.
Tasks and Concurrency
- Understanding of threads and of their basic implementation principles on Zephyr RTOS.
- Zephyr RTOS multi-tasking mechanisms (WorkQueue, Mutex, Semaphore, MessageQueue), including their
zpp_libimplementation:- Principles.
- Understand and formulate use in a C++ program.
- Solve basic multi-tasking problem using those mechanisms in a C++ program.
Memory
- Explain how a Cortex-M image is made.
- Understand the structure of an image.
- Understand what memory does a C++ program need.
- Understand C++ memory related qualifiers.
- Detect memory related issues in a C++ program.
Bootloader
- Principle and required components.
- Principles behind the MCUboot application.
- Principles of swap algorithms.