Overview of Advanced C Programming Training
C is a general-purpose, procedural computer programming language supporting structured programming, lexical variable scope, and recursion, while a static type system prevents unintended operations. Below are the course objectives for Advanced C Programming Training:
- Participants will become comfortable with the advanced aspects of the C programming language.
- Participants will gain an in-depth knowledge on what is happening at compile, link and runtime on a target processor.
- Participants are introduce good quality and style for real-time embedded programming.
- Participants will gain hands-on experience of programming up interrupts and real-time operating systems (RTOS).
Duration
4 Days
Prerequisite for Advanced C Programming Training
A good hold of the fundamentals of C
Course Outline for Advanced C Programming Training
Day 1
Program objects
- Declarations and definitions
- Expressions
- Scope and lifetime
The build process
- compilation, linking, memory sections, libraries
System startup & runtime
- What happens before main
- What is happening at runtime
Pointers
Function calling
- Parameter passing mechanism
- Pass-by-value vs Pass-by-reference
- Returning data objects
Day 2
Hardware manipulation
- Register access
- The volatile keyword
Arrays
- Initialisation
- Relationship to pointers
State machine basics
- Mealy & Moore machines
Function Pointers
- Callbacks
- State machine
Day 3
Dynamic Memory
- Malloc, calloc and realloc
- Variable sized structures
- Dangers
Structures, Unions and Bitfields
- Definition & use
- Memory layout
Numerical issues
- MISRA essential types
- Floating point issues
- Fixed point types
Day 4
Interrupts
- Hardware interrupt models
- Software interrupts
Multi-Tasking (Multi-threading)
- Terminology
- Advantages and disadvantages
- Mutual exclusion
- Intertask communication & synchronisation