Free Online Training Events
Free Technical Resources
PLEASE NOTE: This is a LIVE INSTRUCTOR-LED training event delivered ONLINE.
It covers the same scope and content as a scheduled in-person class and delivers comparable learning outcomes.
C Programming for Embedded Systems teaches the C programming language in the context of embedded systems. As well as giving delegates a full grounding in the C programming language, this course teaches delegates how to program a modern embedded microcontroller using real-time development tools. The syllabus, examples and exercises are tuned to the practical requirements of embedded microcontroller programming.
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.
Interactive workshops for this course
Workshops comprise approximately 50% of class time and are based around carefully designed hands-on exercises to reinforce learning. Doulos is an independent company, enabling delegates to receive the benefit of objective tuition while learning in the context of their chosen tool chain. Public courses are currently taught using the NXP MCUXpresso Integrated Development Environment (IDE) and the FRDM-KL46Z NXP Freedom Development Board.
Doulos has a proprietary remote access mechanism that allows for full observation and control of the board while simultaneously allowing for course instructor hands-on supervision. Check out the video below and if you have any questions contact the Doulos team for further information.
C Programming for Embedded Systems 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.
Delegates should have a working knowledge of programming language concepts and syntax, and should have experience programming in some high-level programming language (or HDL). In particular, delegates should have a working knowledge of functions, variables, data types, operators, and statements.
Please contact Doulos direct to discuss and assess your specific experience against the pre-requisites.
Doulos training materials are renowned for being the most comprehensive and user friendly available. Their style, content and coverage is unique in the embedded systems training world, and has made them sought after resources in their own right. The materials include:
This course utilises the Doulos Board Farm for you to practically apply what you learn. Find out more in this video.
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
Variables, Types and Debugging
MCU Architecture • Program Execution • Variables • Representing Numbers • Types • Casting • Debugging 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
Basic Program Flow Control
Software Design Cycle • Software Architecture • UML • Flowcharts • Round Robin Scheduling • Statements • For and While Loops • If and Switch statements • Infinite Loops • 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
Functions
Syntax • Variable Scope • Recursion • Inline Functions • Software Metrics • Static Code Analysis • Testing Techniques • 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
Declarations
Syntax • Storage Class Specifiers • Global Variables • Type Qualifiers • Linkage Identifiers • Best Practice for Embedded Systems
Preprocessor
#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
We can also present supplemental content to address the specific requirements of your team, including extended discussion of topics such as low-power design, software robustness, and avoiding common pitfalls. Please contact Doulos to discuss your specific requirements.
13 Jan 2025 | ONLINE Americas | Enquire |
20 Jan 2025 | ONLINE EurAsia | Enquire |
10 Mar 2025 | ONLINE Americas | Enquire |
17 Mar 2025 | ONLINE EurAsia | Enquire |
Complete an enquiry form and a Doulos representative will get back to you.
Enquiry FormPrice on request