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…

Created by

Stalwart Learning

Date & Time

Price

Duration

5 Days

Location

https://stalwartlearning.com

ENQUIRE NOW


Course Description

Overview of Embedded Systems

  • 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.

Duration

5 Days

Prerequisite for Embedded Systems

Basics of programming language

Course Outline for Embedded Systems

C Language: 4 Days
  • 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

C++ Language: 5 Days

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

ENQUIRE NOW