Start date: 09 February 2026
Duration: 3 Days, 9am to 5pm each day
Location: Online course
Certificate: N/A
Cost: Members € 300, Non-Members €450
Course code: N/A
Programme overview
This is a hands-on course aimed at software, firmware, and hardware engineers who need to learn the practical skills necessary to program embedded microcontrollers in C. It is suitable both for people who do not know C and for people who have used C in other contexts but have had little or no exposure to embedded programming in C.
Learning outcomes
In the course you will learn:
At the end of the course, students will understand the essentials of programming Embedded Systems in C.
Who is the course for?
The course is suitable for anyone wishing to develop applications within an Embedded environment. It provides practical experience of programming a modern embedded microcontroller using real-time development tools.
50% of the time is dedicated to hands-on exercises working with a real embedded system.
Schedule
Introduction to Embedded Systems and C programming Language
– Characteristics of Embedded Systems
– C Language Overview
– Structure of a C Program
– Name Spaces and Scope
– Best Practices for C in an Embedded System
Real-Time Operating Systems
– Software Concurrency
– Tasks and States
– Task Synchronization
– Mutexes Semaphores & Queues
– GPOS vs RTOS
Building a C Program
– Compilation & Linking
– MCU Boot Process
Preprocessor
– #define
– Macros
– Precedence
– Conditional Compilation
– Warnings
– #pragma
– Predefined Macros
Programming Hardware
– Register Maps
– Operators
– Bit Manipulation
– Modulus and Shifting
– Memory Addressing
– Sizeof
– Precedence Rules
Real Time Programming
– Interrupts
– Nesting and Priorities
– Software Interrupts
– Volatile
– Shared Data Problems and Solutions
– RMA Analysis
Data Types
– Enumerations
– Derived Types
– Literals
– Expressions and Evaluation
– Arrays
– Multidimensional Arrays
– Strings
– String Conversion
– Unions
Pointers
– Pointer Types
– Pointers and Arrays
– Pointers Operations
– Pointers to Pointers
– Pointers to Constants
– Constant Pointers
– String
– Manipulating Memory
– Arrays of Pointers to Functions
Scheduling
– Function Queue Scheduling
– Cooperative Scheduling
– Scheduler Design
Profiling
– Energy Profiling
– Low Power Software Design
Trainer Profile
George Ekström is a highly experienced software developer, architect, and educator with over 35 years of professional experience in software design, programming, and training. He possesses expert-level knowledge in C and C++, and extensive hands-on experience with embedded systems, and secure software development.
He has led the design and implementation of numerous high-security and high-performance systems using C and C++, and cryptographic technologies across Windows, Linux, and Android platforms.
As an educator and course author, George has a long-standing passion for teaching and mentoring software engineering professionals. Since 2000, he has been a regular trainer for the Swedish industry, delivering advanced courses in Embedded C, Embedded C++, Secure C and C++. His teaching emphasizes practical skill development and modern engineering practices tailored for professional software teams.
George’s technical and instructional expertise is underpinned by a University Certificate in Computer Science from Linköping University.

