TOPICS
Structure and Content
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.