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