Languages
Embedded and Real-Time Programming Languages
The language you write embedded code in shapes what the compiler can check for you and what only shows up at run time. C still carries most firmware, C++ brings abstraction that costs nothing at run time when it is used correctly, and Python and Java have their place in tooling and in application layers.
Our courses cover C for microcontrollers, classic and modern C++ up to C++20, OpenCL for parallel computing, Python, and Java for industrial and Android development. Each one is built around the constraints of embedded targets: limited memory, no dynamic allocation, and code that has to be reviewable.
The details are what the courses spend time on: undefined behavior and what the optimizer is allowed to do with it, alignment and aliasing rules, move semantics and RAII without dynamic allocation, template cost at compile time versus run time, and the MISRA rules that exist because these traps are real.
Available Courses
MISRA C:2023, the latest version of the MISRA C standard, which includes guidelines for safety and security supporting all published versions of the C standard. The course has been designed for the smooth and successful adoption of MISRA C into an organization. Lectures, exercises, tests, hands-on sessions and, optionally, a final exam, will significantly strengthen the skills and competences of teams involved in the design, development and verification of critical embedded software systems.
MISRA for Project Managers, provides essential insights for managers overseeing projects that require MISRA compliance. It highlights the importance of MISRA standards in safety-critical systems across various industries. The training emphasizes key aspects such as negotiation, planning, execution, and assessment of MISRA compliance, and equips managers with the knowledge to make informed decisions. By enhancing managerial awareness and skills, it ensures better project outcomes, reduced costs, and improved code quality. This training is invaluable for project leaders seeking to streamline MISRA integration and enhance organizational efficiency.
The Google Android system is becoming more prominent in the world of mobile devices and can be found both in the general public domain and in the industrial world. Programming Android applications requires a thorough knowledge of some advanced aspects of the Java language. This course covers these aspects without addressing the points not used on Android or covered in the Android courses. knowledge of issues it addresses is a prerequisite for writing Android applications or to work on the source code of the Android platform.
High Performance Computing (HPC) is more and more frequent in embedded systems, for graphics rendering, virtual reality of parallel computing. The OpenCL language allows to program in a more or less hardware-independent way complex parallel algorithms that will be able to run on various hardware platforms.
This course is the combination of the L3 - Embedded C++ course and L10 - Embedded Modern C++ Programming course; it is intended for engineers that switch from C programming to C++ and want to learn everything about classic and modern C++ programming for embedded systems.
Real-time and embedded code, especially targetting multicore processors, cannot be effectively tested; it must be validated before coding. This training help you master mutitask and real-time programming of multi-core processors, understanding how to effectively solve problems using the primitives provided by the underlying Operating System.