Embedded Systems Training

  • Participants would be able to design, describe, validate and optimise embedded electronic systems in different industrial application areas. 
  • Capability to solve theoretical and practical problems with particular emphasis on electronic circuits, control programs and the software-hardware interface

5 Days

Basics of programming language

  • Why C in Embedded
  • ANSI Standard
  • Fundamentals of C
  • Datatypes and Constants
  • Simple & Formatted I/O
  • Memory Usage
  • Operators & Expressions
  • Flow Control
  • Loops

 

Functions

  • Role of Functions
  • Pass by value / reference
  • Returning values from Functions
  • Recursive Functions
  • Call Back Functions
  • Implications on Stack
  • Library Vs User defined function
  • Passing variable number of arguments Arrays
  • Defining, initializing and using arrays
  • Multi Dimensional 

 

Arrays

  • Arrays of Characters and Strings
  • Arrays and Pointers
  • Passing arrays to functions
  • String handling with and without library functions 

 

Storage Classes

  • Scope and Life
  • Automatic, Static, External, Register
  • Memory (CPU / RAM) 

 

Structures & Unions

  • What structures are for
  • Declaration, initialization
  • Accessing like objects
  • Nested Structures
  • Array of Structures
  • Passing structures through functions
  • Allocation of memory and holes
  • Structure Comparison
  • Structure bit operation
  • Typedef for portability
  • Unions
  • Overlapping members 

 

Enumerated data types

  • Enum, Indexing, enum Vs #define 

 

Bit Operations

  • AND (&), OR ( | ), XOR (^)
  • Compliment (~)
  • Left-Shift (<<), Right Shift (>>)
  • Masking, Setting, Clearing and Testing of Bit / Bits 

 

Pointers

  • The purpose of pointers
  • Defining pointers
  • The & and * operators
  • Pointer Assignment
  • Pointer Arithmetic
  • Multiple indirections
  • Advanced pointer types
  • Generic and Null Pointer
  • Function Pointers
  • Pointers to Arrays and Strings
  • Array of Pointers
  • Pointers to Structure and Union
  • Pointers to Dynamic memory
  • Far, Near and Huge Pointers
  • Pointer Type Casting 

Command line Arguments

  • Argc, argv
  • Variable Inputs to the main 

 

Compiler in Practical

  • Preprocessor Directives
  • Compiler, Assembler, Linker
  • Conditional Compilation
  • Multiple File Compilation
  • Code Optimization techniques
  • Volatile, #pragma 

 

Data Structures

  • Stacks & Queues(Important topic to give more focus) Mini Project 1

 

Embedded Systems – Microcontrollers: 3 Days

  • Ardiuno Intro
  • Programming in the Arduino Environment
  • Program Design
  • Microcontroller Architecture
  • Intro to Assembly
  • AVR Architecture
  • VMLAB
  • Address Modes
  • Memory
  • Conditionals and Branches
  • Function Calls
  • Logic Operations
  • Timers/Interrupts

ADC and Other Features

Requirements for C++ in an Embedded System

  • Embedded system characteristics 
  • Language choice 
  • Memory mapped peripherals 
  • Volatile variables 
  • Compilation 
  • System boot-up 
  • Best Practices

 

Summary of C

  • A refresher on basic C syntax 
  • Functions 
  • Control flow 
  • Fundamental types 
  • Literals 
  • Derived types 
  • Operators 
  • Standard libraries

 

From C to C++ and C++11

  • The features added to C by C++ and the ANSI C-1999 standard 
  • inline 
  • const 
  • Enhanced enumerations 
  • constant expressions 
  • auto 
  • Overview of I/O streams 
  • Function prototypes
  • Pass-by-reference 
  • Default arguments 
  • Function and operator overloading 
  • String class

 

Linkage and Storage

  • Learn some tricky features often overlooked in C, but necessary for C++ 
  • Scope 
  • Linkage 
  • Linking C and C++ 
  • Namespaces
  • Static, automatic and dynamic storage 
  • new and delete
  • Placement new 
  • Arrays and Pointers 
  • Vectors

 

C++ Development Environments for Embedded Systems

  • Compiler Optimization 
  • Object files 
  • Linkers and linker files 
  • Loader 
  • Makefiles 
  • Integrated development environments 
  • Debuggers 
  • In-circuit emulation 
  • Debug with Simulator / Emulator

 

Classes and Objects

  • Introduction to modeling and abstraction 
  • Information hiding 
  • Abstract data types 
  • Classes and objects 
  • Public and private class members 
  • Member functions 
  • Scope resolution 
  • this pointer

 

Constructors

  • How to ensure that objects are properly initialized, and how to tidy up afterwards 
  • Constructors 
  • Destructors 
  • Delegating constructors 
  • Copy constructors 
  • Pointers and objects 
  • Move semantics

 

Members and Friends

  • More features of C++ classes 
  • Friends 
  • Operator overloading 
  • Overloading assignment 
  • Move assignment 
  • Memory fragmentation 
  • Working with memory pools 
  • Static members
  • Constant objects and members

 

Object-Oriented Mode ling and The UML

  • Learn the principles of object-oriented design 
  • Class relationships 
  • The Unified Modeling Language 
  • Class and object diagrams 
  • Association 
  • Composition 
  • Dependency 
  • Implementing class relationships in C++ 
  • Initialization of class members 
  • Singleton class 
  • Design Patterns

 

Inheritance

  • Derived classes 
  • Inheritance 
  • Protected members 
  • Casting pointers 
  • Order of initialization

 

Virtual Functions

  • Inheriting common behavior 
  • Overriding methods 
  • Virtual functions 
  • Polymorphism 
  • Late binding 
  • Virtual destructors 
  • Vtable 
  • Cost of virtual functions 
  • Abstract base classes and pure virtual functions 
  • Interface classes

 

Further C++ Features

  • User-defined conversions 
  • Explicit functions 
  • Defaulted and deleted behavior 
  • Run-Time Type Identification 
  • Type casts 
  • Nested classes 
  • Multiple Inheritance 
  • Pointer-to-member
  • Function
  • wrapper

 

Templates

  • Function templates 
  • Class templates 
  • Template arguments 
  • Template specialization 
  • Dependent name and type lookup 
  • Avoiding code bloat

 

Standard Libraries

  • Summary of the standard C and C++ libraries 
  • Container classes 
  • Container adapters 
  • Creating and accessing containers 
  • Initializer lists 
  • Custom allocators 
  • std::array 
  • Other C++11 Enhancements 
  • Iterators 
  • range-for loop

 

Defensive Programming

  • Coding standards 
  • Code analysis 
  • Compile-time assertions 
  • Run-time errors 
  • Throwing and catching exceptions 
  • Handlers 
  • Standard exception classes 
  • Preventing memory leakage 
  • unique_ptr 
  • Exception specification 
  • Exceptions in Embedded Systems

 

Principles of Real-time Operating Systems

  • Concurrency 
  • Tasks and task switching 
  • FreeRTOS 
  • Creating and running tasks 
  • Synchronisation 
  • Process scheduling and pre-emption 
  • Priority inversion 
  • Mutex, Semaphore and Queue 
  • Use of semaphores with interrupts 
  • RTOS services

 

Standard Library Algorithms

  • Predicates 
  • Function Objects 
  • Bind 
  • Lambda Functions 
  • Filling a container 
  • Non- modifying operations 
  • transform 
  • Searching 
  • Sorting 
  • Summary of the standard algorithms