Embedded Systems Training

Advanced Training in Embedded System and Linux Programming

Part 1

Part – 1:  Programming Languages

Module 1     Introduction to Embedded Systems

What is Embedded Systems, Types of Embedded System, Classifications of Embedded Systems, and Characteristics of an Embedded System, Applications of an Embedded Systems, Overview of Embedded Industry, Design of Embedded Systems, Real time systems, Hard and Soft real time systems, Memory & Resource Limitation in Embedded Systems, User Interface in Embedded Systems.

Module 2     Programming Languages & Compilers

What is Programming language, Types of programming languages, Difference in Programming structures, Embedded Programming Languages, Compilers, Interpreters, Binary Systems, Importance of Algorithm, Algorithm to syntax, High level to Machine codes, Editors, Cross Compilers, Debugging, Porting of Languages, Object Files and Executable Files in Linux OS and Windows OS.

Module 3      C Programming – Level 1

Facts of C Language, Why use C, Advantage and Disadvantages of C Languages, C Compilers, What is an IDE, C Language IDEs, Introduction to Code Blocks, Understanding Code Blocks – Editors, Program file, Compiling, Output, C language syntax, Syntax errors in C, Simple C Program, Understanding C Program Structure, Single line and multi line comments, Entry function in C, C Data types, Variables and Constants, C Keywords, Statements and Expressions, C Operators, Syntax and Logical Errors.

Module 4      C Programming – Level 2

Header Files, Libraries in C, Input – Output Functions in C, Format Specifiers, C Program Flow, Control Statements - If, If else, Else if, Nested Statements, Conditional operators, Boolean Operators, Switch case Statements, Understanding Loops – For Loops, While Loops, Do while loops, Break and Continue, Errors in Loops, Debugging a sample C Program, Functions in C, User defined functions, Volatile, Recursive Functions, Function Declaration and Definition, Drawbacks of Functions.

 Module 5    C Programming – Level 3

Storage Classes, Scope and lifetime of Variables, Auto, Register, Global, Extern, Pointers in C, Advantage of Pointers, Address operator, Pointer Variable, Pointer Arithmetic , Pointer and Functions, Arrays in C, Array Declaration and Initialization, Multidimensional Arrays, Arrays and Functions, Pointers and Arrays, Strings in C, Initialization of string variables, String Literals, String Handling Functions, Pointers and Strings.

Module 6     C Programming – Level  4

Command line Arguments, Dynamic Memory Allocation, C Preprocessors, C Files, File Pointer, Input / Output to Files, Function Pointers, Structure, Structures and Array, Structures and Functions, Structure Padding and Alignment , Unions, Using Typedefs, Enumerations, Macros,Memory Leaks and Dangling Pointers.

Module 7     C Programming – Level 5

Introduction to Data Structures, Types of Data Structures, Pointers and Indirection, Array and Pointer implementation, Linear Data Structures, Linked Lists, Single Linked List, Double Linked Lists, Stacks and Operations using Arrays and Structures, Queues and Operations using Arrays and Structures, Push, Pop, LIFO, FIFO .

Module 8     Embedded C Programming

Difference between C & Embedded C, Why C for embedded, Embedded C Coding Standard, Embedded C Compilers, Embedded C header files, Review of C language with embedded perspective, Bitwise operators programming, Bit field programming, MISRA C guidelines, Controller Specific Embedded C Programming, Optimization techniques for Memory Critical and resource critical Applications.


Part 2

Part – 2:  Micro-Controllers

Module 9      Basics of Micro controllers

System Programming Vs Application Programming, logic gates, half adder, full adder, flip flops, counters and its design Number System conversion program, Controller Architecture, Vonnumen and Harvard Architecture.

Module 10   Introduction to 8051 Microcontroller MCS-51

8051 Architecture, Architecture, on-chip peripherals and its usage, memory map, pin description, AT89C51 specifications, Register architecture, Special function registers, crystal oscillators, general purpose registers, addressing modes, ports , and introduction to keil IDE, ports, bidirectional nature,port configurations, pull up, Proteus, construction of circuit, selection of crystal oscillator, linking and running with compiled keil code.

Module 11   Programming Microcontroller MCS-51

Basic assembly instructions, additions, subtraction and bit instructions usage in logic analyzer, step run in assembly and observing register status, LED programs, 7 segment, programming 7 segment with delays, DC motor, programming DC motors for clock wise in counter clockwise directions, switch, 7 segment, LCD and scrolling LCD , Keypad , Stepper motor, UART Programming, Timer and Counters, Interrupt programming.

Module 12   Sensor Programming with 8051 Microcontroller

Temperature Sensor LM35, LDR Light detection Sensor, Ultrasonic distance sensor, PIR Motion detection sensor, humidity sensor, MEMS Sensor, Gas Sensor, Relay, MOSFET, Opt couplers, ADC0804 programming.

Module 13   Introduction to ARM Architecture

ARM Introduction, CISC & RISC, ARM based products, Features of ARM, History of ARM, Arm core detail with RISC, ARM RISC design philosophy, Advantage of RISC architecture, Pipeline, stages of pipelines , Advantage of pipelines, Load and store Architecture, ARM Registers, Special purpose registers CPSR, SPSR, LR, PC, SP, Arm Processor Modes , context switching, Instruction Set, ARM Nomenclature, Arm Versions.

Module 14   ARM7 Microcontroller LPC2148 Programming

ARM Architecture, LPC2148 specifications, Register architecture, Special function registers, KEIL IDE, intro to LPC2148, Block diagram of LPC2148, Intro to keil (mdk installation), ports related registers, port programming in keil(both input and output), generating patterns based on particular switch input,GPIO Programming, LED programs, switch, 7 segment, LCD and scrolling LCD , Keypad , DC and Steeper motor.

Module 15   LPC2148 Peripherals and Protocols Programming

Timers, match registers and capture registers, generating delays, Counter Programming, UART programming, Interrupt programming, Relay, PWM Programming, , PADC ADC0804 Programming, ADC to UART, ADC to LCD Programming, RTC, Watch-Dog Timers, I2C Protocol, frame formats, addressing schemes, EEPROM interfaced to μC using I2C, Interfacing I2C with RTC DS1307,SPI Protocol, SPI Registers, Interfacing serial ADC with SPI.

Module 16 ( ARM Cortex-m3 ) Microcontroller LPC1768 Programming

ARM Cortex profile Architecture, ARM Cortex m3 Architecture, LPC1768 specifications, Register architecture, Special function registers, KEIL IDE, Flash Magic, GPIO Programming, LED programs, switch, LCD and scrolling LCD, UART Programming, ADC, I2C driver programming, SPI driver programming, CAN programming.

Module 17   CAN Protocol Programming

CAN History, CAN protocol standard, Understanding CAN protocol Architecture, Layers in CAN protocols, CAN Kingdom, CAN open, CAN Programming with Cortex Board.


Part 3

Part – 3:  Wireless Modules

Module 18   GPS Wireless Module Programming

Architecture | NEMA Standards | GPS Sentences | GPGGA Sentence | UTC Time | Latitude, Longitudes and Altitude extraction | Digitalized Map

Module 19   GSM Wireless Module Programming

Architecture | Frequency Bands | International Standards | AT Commands | SIM card Role | SMS / MMS commands | GSM Module Interfaces | GUI Programming

Module 20   RF Wireless Module Programming

Architecture | Frequency Bands | Range calculation | Data Encryption | Data Decryption | Send and Received Program

Module 21   Infrared (IR) Wireless Module Programming

Frequency bands | wavelength | Active Infrared | Passive Infrared | Modes | Obstacle and Reflection |RC5 Protocol

Module 22   Bluetooth Wireless Module Programming

Architecture | Commands | IEEE standards | Radio interference | L2CAP profile | Pairing | Security | Data transfer programming

Module 23   RFID Wireless Module Programming

Radio Frequency | Tag / Transponders | Readers | Data Processing subsystem | Types of Tag | Near Field Communication | Active and Passive Tag | Interfacing and programming with microcontroller

Module 24   WiFI / WLAN Wireless Module Programming

Radio Architecture | IEEE standards | Frequency bands | Bandwidth | TCP / IP Layers Accessing in programming | Receive and Transmit Programming

Module 25   Zigbee Wireless Module Programming

Communication Interfaces | Protocol Layers | Radio Architecture | IEEE standards | Frequency bands and range | Bandwidth | Programming with microcontrollers.

Module 26   IOT Programming

Introduction to IOT (Internet of Things), Access point configuration on WI-FI MODULE (ESP8266), Client interface to webpage server configuration on WI-FI module, TCP/UDP connection to webpage configuration on WI-FI module, HTTP, GET, POST requesting procedures for webpage connection.

Module 27   Touch Screen Panel Module Programming

Touch Screen Panel Architecture | Resistive and capacitive nature | 4 wire resistive touch panel construction and working | Programming the Touch Screen Panel | Application of Touch Screen Panel in Projects.


Part 4

Part – 4: Linux System Programming & Device Drivers

Module 28   Linux Basic and Utilities

Unix / Linux / Windows History, Free Software Foundation, GNU Project, Booting Process of OS ,Advantages and disadvantages of Linux, Features of Linux, Linux root File System, Virtual File system, Linux Kernel version, Linux Terminals & Shell, Concept of Process in Linux, Regular Expressions, Process Commands, Editors in Linux.

Module 29   Linux Shell Programming and Scripts

Shell and Shell Commands, Types of shells, Bourne shell Overview, User, Shell, And Read-Only Shell, Variables, Environmental variables, Positional Parameters, Control Constructs, Switch case, if else and Loops.

Module 30   Linux Compilers, Debugger, and Utilities

Gcc compiler, Compiler switches, Creating Object code, Compilation steps ,GNU C library, gdb debugger, installing gdb, gdb commands, Make file Utility, Make file compilation, static library, dynamic library.

Module 31   Linux Internals Programming – File System

Linux Kernel Structure, System Calls, File Sub-System, Inodes and file permissions, Standard File Descriptors, File symbolic Links, file handling functions, library functions vs. system calls, error handling functions.

Module 32   Linux Kernel Programming - Process Management

Linux Kernel Architecture, User & System Mode, Process Management, pid, fork , vfork, exec, orphan process, zombie process, wait, exit, POSIX standards, pthreads, pthread attributes.

Module 33    POSIX Thread Programming

POSIX standards, POSIX Threads, pthreads, pthread attributes, POSIX Message Queues, POSIX Semaphores, POSIX Shared memory , Asynchronous input and output, Threads in real-time, Multithread Vs Multiprocessing.

Module 34   Linux Synchronization Programming

Need of Synchronization, Deadlock problem, race condition, critical section problem, Atomic operators, Deadlock, conditional variables, Mutex, Semaphores, System v API, POSIX API.

Module 35   Linux IPC (Inter Process Communication) Programming

Need of IPCs, pipe, FIFO, Shared Memory, message queue, signals, blocking of signals, communication through kill system call, implementation using signal handlers, client- server communication using IPCs.

Module 36   Linux Network Programming OSI Reference Model

Introduction to OSI Ref Model, Physical Layer Protocol Functions , Data Link Layer Protocol Functions , Network Layer Protocol Functions , Transport Layer Protocol Functions , Session Layer Protocol Functions , Presentation Layer Protocol Functions, Application Layer Protocol Functions

Module 37   Understanding TCP / IP

Origin of TCP/IP, TCP/IP Model, IP Addressing, Subnet masking, Assigning IP, Overview of Routing process, TCP/IP Stack, TCP/IP Characteristics, TCP/IP Utilities

Module 38   Linux Socket Programming

Socket API, Client Server Architecture, TCP Socket, UDP Socket, RAW Socket, Unix Socket, FTP Programming, Chat Programming, Concurrent Server Programming, Multiple client Programming.

Module 39   Fundamentals of Device Drivers

Linux Driver Module ,Role of Driver,Inbuild and Modular Drivers, Types of Device Driver , Relationship between Kernel and Driver, Major and Minor Number, Modular Program Vs. Application Program , Compile, run module, Registering & Un-registering driver , Creating a device file, module creation, passing arguments to module.

Module 40   Developing Character Device Drivers in Linux

Memory Allocation and Freeing with in modules, IO Port and IOMEM allocation, Registering and Freeing Interrupt Handling , Random Access to the character device, Using Capabilities , Implementing IOCTL Commands , Implementing Kernel Locking Mechanism , Overview of Network , Device Drivers.

Module 41   Understanding & Driving UART / RS-232

Difference between Serial and Parallel Communication, What are DTE and DCE, What are DB9 and DB25 Connectors, loop back and Null modem connection, Serial Port Architecture under X86 Architecture, UART Registers in X86 Architecture, RS232 Frame Format, Max232/233, Programming and Driving RS-232 serial port.

Module 42   Parallel Port Device Driver

Difference between Serial and Parallel Communication, DB25 connector and Centronix connector, Data Register, Control Register, Status Register, Data Input / Output using parallel port, Base Address Accessing , Practical device driver for parport.

Module 43   Developing Block Device Drivers in Linux

Overview of Block Device Driver , Driver Registration, Block Device Operation, gendisk structure, Block Device Operation, Request queue, bio structure, request structure, sample driver.

Module 44   USB Device Driver Pen Drive

Pendriver Architecture, Flash memory commands, Storage architecture of data on Flash memory, Accessing and writing data on flash ICs, Auto displaying drive name in file system, Practical Pen drive driver.

Module 45   Demonstration - USB Keyboard & Mouse Driver, Ethernet Drivers


Part 5

Part – 5:  Real-Time Operating Systems

Module 46   RTOS Concepts

Introduction to Real Time Operating System, Classifications of RTOs, Misconception of RTOS, Features of RTOS, RTOS Architecture, Kernel, Task Management, Task Synchronization & Inter task Communication, Memory Management, Timer Management, Interrupt & Event handling, Device i/o Management.

Module 47   FreeRTOs

Board support package of FreeRTOs for LPC2148, Compiling FreeRTOS projects in Keil IDE, Understanding the functions related to FreeRTOs, Led programming with Free RTOS, Serial port programming, Priority and preemptive programming, Message queue, semaphore and timedelay programming with Free RTOs.

Module 48   UCOS-II RTOs

Understanding Board support packages of ucos RTOs for LPC2148 board, Compiling and Configuring ucos environment in keil IDE, Functions defined in ucos RTOs for priority, task handling and preemptive programming, led and UART programming, Message queue, semaphore and time delay programming.

Module 49   Project on 8051

Module 50    Project on ARM LPC2148