Embedded C

Start date: 11 April 2022

Duration: 3 Days

Location: Online course, 3 days, 9am to 5pm each day

Certificate: N/A

Cost: Members € 500, Non-Members €750

Course code: N/A

Programme overview

C Programming for Embedded Systems provides an excellent full scope primer for any of the Doulos embedded system courses, or for anyone wishing to learn or use C in the context of embedded programming or hardware-software integration.

Learning outcomes

At the end of the course, students will understand the essentials of programming Embedded Systems in C.

Who is the course for?

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.


Introduction to C
Characteristics of Embedded Systems • C Language Overview • Structure of a C Program • Identifiers • Name Spaces and Scope • Compilation & Linking • MCU Boot Process • C Best Practices for Embedded Systems
Operators and Hardware Manipulation
Understanding Register Maps • Operators • Bit Manipulation • Modulus and Shifting • Memory Addressing • Sizeof • Ternary Operator • Precedence Rules • Best Practices for Embedded Systems
Advanced Flow Control
Introduction to Real-time Concepts • Interrupt Basics • Interrupt Vector Tables • Nesting and Priorities • Software Interrupts • Volatile keyword • Shared Data Problems and Solutions • RMA Analysis • Interrupts Best Practice
Advanced Types, Constants and Expressions
Enumerations • Derived Types • Literals • Expressions and Evaluation • State Machines • State Charts • Software Architecture Concepts

Arrays and Pointer Basics
Arrays • Multidimensional Arrays • Strings • String Conversion • Pointer Types • Pointers and Arrays • Pointers Operations • Best Practices for Embedded Systems
More Pointers and Strings
Pointers to Pointers • Pointers to Constants • Constant Pointers • String Libraries • Manipulating Memory • Best Practices for Embedded Systems
Structures and Unions
Overview of Structures • Unions • Driver Design • Defining APIs • Driver Models • GPIO Driver Example
Scheduling Techniques
Arrays of Pointers to Functions • Function Queue Scheduling • Cooperative Scheduling • Scheduler Design • Energy Profiling • Low Power Software Design
#define • Macros • Precedence • Conditional Compilation • Warnings • #pragma • Predefined Macros
Real-Time Operating Systems
Software Concurrency • Tasks and States • Task Synchronization • Mutexes Semaphores & Queues • GPOS vs RTOS

Trainer Profile

Dr. Des Howlett is a Senior Member of the Doulos Technical Staff and joined the company in 2017. He has worked as a Senior Field Applications Engineer for Microchip Technology and Silicon Laboratories, all over the EMEA region. Immediately prior to Doulos, he was Technical Marketing Manager, EMEA, for Software at Avnet Silica and was responsible for liaising between processor manufacturers and customers to ensure that supplied software was suitable for market needs.
Des has taught embedded C programming and Verilog logic design at the University of Reading and now is an instructor for embedded C and C++ as well as Xilinx courses at Doulos.

Contact Gerry.Byrne@midasireland.ie for full details