Shopping Cart :Check Out

Embedded C Course Outline

Course Objectives:

• To provide an understanding of the essentials of the C programming language.
• To give you practical experience of writing C for real-time and embedded systems.
• To demonstrate the traps and pitfalls of the language when used in a real-time system.
• To give you the confidence to apply these new concepts to your next real-time project.

Participants Will Learn:

• The core C syntax and semantics
• How to access hardware and program interrupts in the language
• About memory and performance issues associated with C
• How real time operating systems (RTOS) affect the use of the language
• Linux OS & GNU tools will be used in training environment


Prior knowledge of C or any programming language is useful


• 3 days

Course Contents

Introduction to Real-Time Systems: Characteristics and demands of real-time software development
Introduction to C Programming Types and Operators Control Flow
Structure of a C program C base types Logical expressions and operations
The C compilation process Precedence & associativity Decision Making
Arrays Pointers Bit Manipulation & Hardware Access
Defining, initializing and using arrays Pointer basics Accessing hardware with pointers
Multi Dimensional Arrays Arrays and Pointers Manipulating information at the bit level
Arrays of Characters and Strings General Purpose IO (GPIO)
Passing arrays to functions Null Pointers, Void Pointers, Type Casting
String handling with and without library functions
Functions Arrays as circular buffers Enumerated data types
The Function as a logical program unit Relationship between pointers & arrays Enum, Indexing,
How parameters are passed Pointer arithmetic enum Vs #define
Memory map of a process, Memory segments, C string handling
Arrays, Pointers and Strings
Recursive Functions
Call Back Functions
Implications on Stack
Library Vs User defined function
Static Libraries & Dynamic Libraries Creation & Usage
Bit Operations Structures and Unions File Handling Concepts
AND ( & ), OR ( | ), XOR ( ^ ) Structures Concept of a FILE data type
Compliment ( ~ ) Big & Little Endian File pointer
Left-Shift ( << ), Right Shift ( >> ) Unions, Overlapping Members Character handling routines
Masking, Setting, Clearing and Testing of Bit / Bits Using structures to access I/O devices Formatted Data Routines
Polling devices Bit-field structures Raw data Routines
Serial peripheral programming Random Access to FILE
Interrupts Dynamic Memory Management Program Structure
Internal & External interrupt control Malloc and free Definitions and declarations;
Restrictions & care to be taken for ISR Linked list Header files
Nested Interrupts Issues (leaks, fragmentation, dangling pointers etc.) Scope and lifetime
Priorities & Masks
Software Interrupts
The C Pre-Processor Program Design Concepts Concurrency
Macros Why modular design? Scheduling strategies
Conditional Compilation Coupling and cohesion Context switching
Testing the program Function pointers
Task synchronisation and communication
MMU and memory protection
Concurrency and libraries
The Standard C Library
Target Specific Considerations
Language features affecting portability
Compilation / Cross compilation. Installing tools
Non-standard C language features
Assembly language interfacing
What happens at power-on?
Initializing the C runtime

Training Programs