- What an Embedded System is
- Traits and Architecture of an Embedded System
- Embedded Hardware and Software
- Why C-language is Preferred for Embedded SW Development
- Installing Tool Chain
- Installing STM32CubeIDE
- Installing GCC Compiler
- Creating a New Project
- Basic Elements of a C-Program
- C-Program Layout
- Standard I/O - Library
- getchar and putchar
- printf and sprintf
- scanf and sscanf
- C Data Types
- Signed Data Representation
- Data Type - Overflow/Underflow Issues
- C99 Data Types
- Fixed Point and Floating-Point Representation
- FPU Usage
- ‘Enum’ and ‘Typedef’
- Operators in C
- Operators Precedence and Associativity
Post Graduate Program in Electric Vehicle Design and Development
Quick Facts
particular | details | |||
---|---|---|---|---|
Medium of instructions
English
|
Mode of learning
Self study
|
Mode of Delivery
Video and Text Based
|
Course and certificate fees
Fees information
₹ 275,000
The fees for the course Post Graduate Program in Electric Vehicle Design and Development is -
Head | Amount |
Programme fees | Rs. 2,75,000 |
EMI | Rs. 14,375/month |
certificate availability
Yes
certificate providing authority
Skill Lync
The syllabus
Course 1: Embedded Programming Essentials
Week 1 - C Language for Embedded Programming, C Input /Output Functions, C Data Types for Embedded Programming, C Language Operators
Week 2 - C Control Statements, Function Prototypes, Introduction to Pointers, C Storage Classes and Type Qualifiers
- Control Statements in ‘C’ language
- ‘if-else’
- Loops for Iterations
- Switch Case for Multiple Selections
- Tips and Traps for Switch-Case
- ‘if-else’ vs ‘switch’
- ‘goto’ Statement and Labels
- Introduction to vFunctions
- Advanced Control Flow with ‘setjmp( )’ and ‘longjmp( )’
- Functions ()
- Function Prototypes
- Recursive Function
- Function Pitfalls
- Introduction to Pointers
- Call by Value Vs Call by Reference
- Pointer Arithmetic
- Functions as ‘Pointer'
- C Storage Classes
- Automatic
- External
- Static
- Register
Week 3 - C Compilation Process, C Preprocessor Directives, Arrays in C, Arrays to Functions, and Array of Function Pointers
- Stages of the Compilation Process
- Pre-processing
- Compilation
- Assembling
- Linking
- GCC Commands for Each Stage
- Preprocessor Directives in C
- Macros and their Types
- Conditional Compilation
- #pragma
- Introduction to Arrays
- Array Initialization
- Accessing Array Elements
- 2D Arrays
- 3D Arrays
- Pointers and Arrays
- Passing Array Elements to a Function
- Array of Pointers
- ‘Function’ as ‘Pointer’ - Function Pointers
- Array of Function Pointers
Week 4 - Command Line Arguments, Variadic Functions, Strings and String Functions in C, Structures in C, Unions and Bitfields in C
- Command Line Arguments in C
- Variadic Functions in C
- Strings in C language
- String Functions from
- Structure Declaration in C
- Array of Structures
- Pointer Objects to Structure
- Memory Allocation of Structure and Structure Padding
- Structure Padding Comparison
- Bit Fields
- Unions
Week 5 - Advanced Function Arguments, Advanced Pointers-Void Pointers, File Operations in C, Standard Libraries C
- Function Pointers
- Passing Function Pointers as Arguments to a Function
- Inline Functions
- Passing a String as a Function Argument
- Returning a String from a Function
- Passing Arrays to Function Arguments
- Returning Multiple Values from a Function
- Passing Structure Pointers as Function Arguments
- Passing an Array of Structures to a Function
- Double Pointers with Example
- Void pointers with Example
- Miscellaneous Features
- File I/O Handling
- Read and Write Operations
- Error Handling Mechanisms
- General Properties of C Library
- Functions of C Library
- Need for Libraries - Static vs. Dynamic Libraries
- Utility Functions
Week 6 - C Memory Management, Dynamic Memory Allocation, Modular C Programming, Modular C Programming, and C Program Optimization
- C Memory Model
- Dynamic Memory Allocation on Heap
- Miscellaneous Memory Functions
- Variable Length Arrays
- Creating a User-Defined Library
- Makefile Project in STMCubeMX IDE
- Creating a Custom Makefile
- Introduction to Debugging
- Debugging using GDB Tool
- Debugging using Preprocessor Directives
- Optimization for Memory Usage and Execution Speed
- Optimization Methods
- Code Level Optimization
Week 7 - Stack and Stack Operations, Queue and Queue Operations, Linked List, Finite State Machine
- Fundamental Concepts of Data Structures
- Operation on Data Structure
- Arrays and Array Operations
- Stack and Standard Stack Operations
- Fundamental Concepts of Queue
- Operations performed in Queue
- Different Types of Queue
- Fundamental concepts of Linked List
- Types of Linked List
- Singly Linked List
- Doubly Linked List
- Circular Linked List
- Doubly Circular Linked List
- Introduction to FSM (Finite State Machine)
- State Diagram
- Explanation of State Diagram
- State Table
- Implementation of State Machine
- Mealy State Machine
- Moore State Machine
Week 8 - Process Management in C, Embedded Design Patterns
- Threads
- Memory Model of Threads
- Library
- Process Vs Threads
- IPC Mechanism
- Different Design Patterns of Embedded System
- Hardware Adapter Pattern
- Observer Pattern
- Debounce Pattern
- Interrupt Pattern
- Polling Pattern
Week 9 - C and Embedded C Standards
- C Standards
- K&R C
- K&R Standards
- ANSI C
- C90 Standards
- C99 Standards
- C11 Standards
- Embedded C
- C-General Coding Standards
- Embedded C Standards
Week 10 - AUTOSAR C Rules and MISRA C Guidelines
- Common Pitfalls in C Language
- Overstepping of Array Boundaries
- Example of Faulty Code
- Buffer Overflow
- Stack Overflow
- Glimpse into AUTOSAR and MISRA
- Prominent MISRA C Rules
Week 11 - Introduction to C++ and OOPS-Part 1
- Introduction of C++
- What is C++?
- Program Paradigm
- ANSI/ISO Vs Standard C++
- C++ Syntax and Structure
- C++ Language Fundamentals
- Benefits of C++ over C
- C vs C++
- Procedural Vs OOP
- Compiling a C Program in C++ Environment
- Undefined Behavior in C and C++
- Void * in C vs C++
- Name Mangling
- Use of Extern C in C++ Programming
- Structures in C Vs Class in C++
- C++ Vs Java
- Similarities between C++ and Java
- Exception Handling in C++ vs Java
- Default Virtual Behavior in C++ Vs Java
- Floating Point Operations and Property of Associativity in C, C++, and Java
- Dynamic Memory Allocation
- malloc()
- calloc()
- realloc()
- free
- new
- delete
- malloc Vs new
- free Vs delete
- Object Oriented Programming
- OOP’s Concepts - Briefing
- Class
- Default Access Specifier in a Class
- Access Modifiers
- Constructor
- Destructor
- Assignment Operator
- Copy Constructor
- Default Member Functions in a Class
- Object
Week 12 - OOPS - Part 2
- Object-Oriented Programming
- Encapsulation
- Abstraction
- Message Passing
- Dynamic Binding
- Data Hiding
- Inheritance
- Use of Inheritance
- Modes of Inheritance
- Types of Inheritance
- Single Inheritance
- Multiple Inheritance
- Hierarchical Inheritance
- Multiple Inheritance
- Hybrid Inheritance
- Multipath Inheritance
- Diamond Problem
Week 13 - OOPS - Part 3
- Object-Oriented Programming
- Polymorphism
- Compile Time Polymorphism
- Function Overloading
- Operator Overloading
- Runtime Polymorphism
- Function Overriding
- Virtual Keyword
- VTable
- Vptr-V Pointer
- Virtual Functions
- Abstract Class
- Pure Virtual Function
- Interface Vs Abstract Class
- Compile Time Polymorphism
- Polymorphism
Week 14 - Constructor and Destructors
- Constructor and Destructor
- Virtual Constructor
- Virtual Destructor
- Virtual Copy Constructor
- Shallow Copy Vs Deep Copy
- Default Constructor and Copy Constructor
- Copy Constructor and Assignment Operator
- Dangling Pointer
- Void Pointer and Opaque Pointer
- Null Pointer and Wild Pointer
- Private Constructor
- Private Destructor
- Copy Elision
- Explicit Keyword
Week 15 - Keywords in C++
- Static Keyword in C++
- Static Variables in a Function
- Static Variables in a Class
- Static Members of Class - Static Class Objects
- Static Member Functions in a Class
- Const Keyword in C++
- Mutable Keyword in C++
- Friend Function and Friend Class in C++
- This Pointer in C++
- ‘this’ Pointer
- Types of ‘this’ Pointer
- Delete ‘this’
Week 16 - Type Casting
- Type Casting in C++
- Implicit Cast
- Explicit Cast
- dynamic_cast
- static_cast
- reinterpret_cast
- const_cast
- Member Initializer List in C++
- Use of Initializer Lists
- Member Initializer Lists
Week 17 - Exception Handling
- Exception Handling in C++
- Exception Handling in C++
- Base Class and Derived Class Exception Handling
- Catch Block in C++
- Object Destruction
- Stack Unwinding in C++
- Templates in C++
- Introduction to Templates
- Function Templates
- Class Templates
- Template Specialization
Week 18 - Multi-Threading
- Multithreading in C++
- Posix Threads
- Std::thread
- Inter-Process Communication
- What is IPC?
- Various Methods in IPC
- Smart Pointers
- Use of Smart Pointers
- Types of Smart Pointers
- Auto Pointer
- Unique Pointer
- Shared Pointer
- Weak Pointer
Course 2: Fundamentals of Embedded Systems
Week 1 - Role of Embedded Systems in Mechatronic Systems
- Basics of Embedded Systems
- Basics of Automotive ECUs
- Case Studies and Reference Designs of ECUs
Week 2 - ARM (MCU) Architecture
- Basic Features of ARM Processor
- Products Details and Product Roadmap
- ARM Cortex Processor Internals
- Cortex Microcontroller Software Interface Standard (CMSIS)
- ARM Cortex M4 Programming Model
Week 3 - Sensors, Actuators, and Instrumentation Cluster
- System Basics
- Basic Concepts of Sensors and Actuators
- Types, Functions, and Applications
- Sensor Terminology
- Technology of Sensors and Role of Sensors and Actuators in Automotive Systems
- Automotive Instrumentation Cluster Basics
- Actuators
Week 4 - Embedded Systems Development
- Embedded Systems Bare Metal Programming
- Philosophy
- General Real Time Operating System (RTOS) Concepts
- Bare Metal vs. RTOS
- Bare Metal/RTOS/OS: Comparison
- Examples of Bare Metal, RTOS, OS Development
Week 5 - Software Development Life Cycle
- Basics of SDLC
- Phases of SDLC
- SDLC Models
- SDLC Frameworks
Week 6 - Introduction to Safety Standards
- Different Safety Standards in Various Domains
- Secure Programming in C
- Less Secure Areas of C Program
- Secure C Coding Standards MISRA C
Week 7 - Get Started with Tinkercad, SimulIDE, MBED Platform
- What is Arduino?
- Why Arduino?
- Most Common Arduino Platforms
- What is Tinkercad?
- How to use Tinkercad & Simulate Circuits
- Download and Install SimulIDE
- Blink Program and Simulation in SimulIDE
- Introduction to Mbed
- CMSIS
- ARM Microcontroller Introduction
Week 8 - Arduino Digital Pins, GPIO Input/Output Modes, and Methods of Programming Digital GPIO
- Demonstration of the Working of Dio Pins - Led Chaser
- Voltmeter Project in Simul Ide
- L298 Motor Driver in Simulide
- Relay in Simulide
- Digital Inputs
- Digital Outputs
Week 9 - Introduction to Analog Data, Analog to Digital Conversion, Digital to Analog Conversion, Analog Data, ADC, and DAC in Mbed
- Analog Data
- NTC circuit example
- Analog to digital conversion
- Digital to analog conversion
- Working with analog pins and simulate a code
- Simulate a code for Thermometer using TMP36 Sensor in Tinkercad Simulator
- LDR in SIMULIDE
- Voltmeter in SIMULIDE
- Libraries in Mbed
- Reading and logging data from analog inputs
- DAC in Mbed
- Analog Output in Mbed
Week 10 - Timers in AVR based Microcontrollers, Concepts of PWM, and PWM in Mbed
- Timers in Arduino UNO
- Blink using timers
- 500ms Blink Example code
- Need of PWM
- Fade
- Simulation of Illustrating the analogWrite() function
- H bridge
- DC motor control
- Servo motor mechanism
- Servo mechanism- PWM pin in SIMULIDE
- Timers in ARM based microcontrollers
Week 11 - Interrupts, Demonstration, and Advantages
- About Interrupts
- Demonstration of Interrupts using Push Buttons
- Advantages of Interrupts with Example
- Polling Method
- Simulating a Code for Blinking the LED
- Problems in Polling Method
- Example of Interrupts in Mbed
Week 12 - Serial Communication Protocols
- Introduction to Serial Communication
- Types of serial communication
- UART communication protocol
- Simulate a code for communication between two Arduino using UART protocol
- I2C communication Protocol
- Simulate a code for communication between two Arduino using I2C protocol
- SPI communication Protocol
- Simulate a code for communication between two Arduino using SPI protocol
Course 3: AVR Bare Metal Programming- Live Sessions
Week 1 - Arduino Vs Bare Metal Programming and Compiling Program with Custom Make Files
- Memory Blocks of Microcontroller
- Measuring Memory Occupied by the Code using Arduino Library
- Measuring Clock Cycles taken by the Instructions of Arduino Library
- Internal I/O Circuit Diagram of Microcontroller
- Accessing Registers using Specific Address
- Comparison of Code Size and Clock Utilization of Arduino Library and Bare Metal Coding
- Need for Writing a Custom Make File
Week 2 - Pinout and Features of Atmega328 and AVR Architecture
- Pin Out Details of Atmega328
- Pin Description at a Glance
- Features of Atmega38
- AVR Architecture
Week 3 - Setting up Microchip Studio for AVR using SimulIDE to Simulate the Target Environment and Input & Output Ports of Atmega328
- Setting up Microchip Studio
- Introduction to SimulIDE
- Flashing the Code on the Virtual Atmega328 Microcontroller in SimulIDE
- I/O Pin Block Diagram
- I/O Ports and their Functions
- Register Description of I/O ports
Week 4 - Debugging the Code in Microchip Studio and Basics of Timers, Counters, and PWM
- Starting a Debugging Session
- Various Windows of Debugging
- Adding Breakpoints
- Timer Clock Sources
- Counter Unit
- Output Compare Unit
- Compare Match Output
- Modes of Operation
Week 5 - LCD Interface and Basics of ADC
- Deep Dive into 2*16 LCD Display
- Common Commands for HD78044 LCD
- Simulation of LCD Interfacing
- Basics of ADC
- Registers Associated with ADC of Atmega328
Week 6 - Analog Comparator and Interrupt
- Introduction to Interrupt
- Interrupt Service Routine(ISR)
- Registers Associated with Interrupt
- Code and Simulation of ISR
- Introduction to Analog Comparator
Week 7 - Communication Protocols and Non-Volatile Memories
- Basics of UART, SPI, and I2C
- Harvard and Von-Neumann Architecture
- Program Memory Map
- Write to and Read from the Flash Memory
- Concepts of the Boot Loader
- EEPROM
- Program to Store Data into EEPROM
Week 8 - Saving Power and Code Protection
- Concept of Power Saving
- Power Reduction Register
- Different Sleep Modes of Atmega
- Wake Up Sources
- Watchdog Timer
Course 4: Software Verification and Validation and System Testing for Hand Code
Week 1 - Introduction to Verification and Validation and System Testing
- What is verification? (Real-world examples)
- What is Validation and how it is different from verification? (Real-world examples)
- Identifying Verification and Validation from the V- Cycle
- Developer’s Mindset Vs Tester’s Mindset
- Explaining various stages of validation (Unit Testing, Integration Testing, System Testing) with regards to verification phases in V-cycle
- System Testing
- Blackbox Testing
- Functional Testing
- Smoke Testing
- Usage of V-model in present Agile world
- SAFE (Scaled Agile Framework) concepts to illustrate ARTs
Week 2 - Test Case Development from Requirements – I
- Introduction to Test Coverage Levels (C0, C1, MCDC)
- Introduction to Different Test Design Techniques
- Choosing Test Design Techniques for Various System Requirements (Examples)
Week 3 - Test Case Development from Requirements – II
- Test Cases Vs Test Specification
- Writing a Test Plan
- How to Write a Test Case for the Requirements?
- Usage of Doors to Create Test Cases for the Requirements (Traceability)
- Hands-on Examples (Using Excel) [CLIMA, BSW]
Week 4 - Static Analysis and MISRA-C Guidelines
- What is MISRA-C?
- How are we using it for Safety-critical SW?
- Important Rules of MISRA-C
- How to identify and fix them?
- What is Static Analysis?
- Where is Static Analysis in V-cycle?
- Explaining Errors in Static Analysis (Case Studies)
- Heuristics Vs Formal Methods
- Hands-on Examples
Week 5 - Unit Testing and Integration Testing
- Unit Testing and Integration Testing
- Why do we need it?
- Why do we need SIL?
- SIL Levels and Coverage Levels
- Stub Functions
- Hands-on Examples
Week 6 - Automation and CI/CD
- Overview of Test Automation
- Introduction to Constructs of Infrastructure for CI/CD
- Introduction to Git Hub
Week 7 - Tool Introduction, Familiarization and Static Analysis
- Overview of LDRA Toolsuite
- Analysis Scope Definition
- UI View and Usage
- LDRA -Tbrun, Tbvision, and TBReports Overview
Week 8 - Unit Testing and Integration Testing
- Unit White Box Testing of Simple Project - (Array, Structure, Pointer, Linked lists)
- Adding Test Cases, Executing Tests, and Understanding Test Report
- Fixing Defects Detected from Tests
- Analyzing Coverage and Adding Test Case to Increase Coverage
- Generating Test Cases using Different Techniques
- MC/DC, Equivalence Class, Boundary Check, etc., using MCDC Planner
- Stubs
- Unit Blackbox Testing of Simple Project
- Adding Test Cases, Executing Tests, and Understanding Test Report
- Integration Testing
- Adding Test Cases, Executing Tests, and Understanding Test Report
- Identifying and Fixing Defects Detected from Tests
Course 5 Device Drivers and Serial Communication Protocols
Week 1 - Theoretical Introduction to ARM on-chip peripherals
Week 2 - Bare metal programming with board bring up
Week 3 - Driver development for GPIO, UART, SPI, I2C interfaces
Week 4 - Hands-on Peripheral Interfacing using SPI/I2C Interfaces
Week 5 - Theoretical Introduction on CAN, Ethernet, ARINC
Week 6 - CAN Driver Development (Hands-on)
Week 7 - CAN data analysis and visualization (Hands-on)
Articles
Popular Articles
prev
next