Advanced Embedded System and Linux Programming Training

Module-1: Introduction to Embedded Systems

What is Embedded Systems,Types of Embedded System,Classifications of Embedded Systems, Characteristics of an Embedded System,Applications of an 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

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 ,C language syntax ,Syntax errors in C, Simple C Program ,Understanding C Program Structure,Basic C Language Components

Module-4: C Programming – Level 2

Input – Output Functions in C,Format Specifiers ,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.

Module-5: C Programming – Level 3

Pointers in C,Advantage of Pointers, Address operator, Pointer Variable, Pointer Arithmetic ,Arrays in C Array Declaration and Initialization, Multidimensional Arrays, Pointers and Arrays, Strings in C Initialization of string variables, String Literals, String Handling Functions, Pointers and Strings.

Module-6: C Programming – Level 4

Functions in C, Pointer and Functions, Arrays and Functions, User defined functions, Recursive Functions Function Declaration and Definition, Drawbacks of Functions, Storage Classes, Auto, Register, Global, Extern

Module-7: C Programming – Level 5

Command line Arguments, Dynamic Memory Allocation, Structure and Unions, Files Pre-processors

Module-8: C Programming – Level 6

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 Queues Operations.

Module-9: Embedded C Programming

Difference between C & Embedded C, Why C for embedded, Embedded C Compilers, Bitwise operators programming, Bit field programming, Controller Specific Embedded C Programming.

Module-10: Introduction to Embedded controllers

Controller architectures, Harvard Architecture and Von Neumann architecture,CISC & RISC, Controller, processor, controller vs processor, Instruction set, Registers, SFR, Oscillators, 8-bit, 16-bit, 32-bit, 64-bit architectures.

Module-11: Introduction to IDE

What is IDE?, Introduction to KEI, Intro to keil (mdk installation ),Creating project, Porting HEX files to controllers, Flash Magic.

Module-12: Introduction to 8051

8051 Introduction,8051 Architecture,8051 specifications ,Block diagram of 8051,Pin description GPIO Programming,LED programs and switch,7 segment and LCD Display ,Timers, UART and Interrupt programming

Module-13: Introduction to ARM Architecture

Introduction to ARM,ARM Processor modes,ARM Registers, Arm Versions.General ‘C ‘ vs Embedded ‘C’ Embedded C Programming, Keil4

Module-14: ARM7 Microcontroller LPC2148 Programming

Introduction to LPC2148,LPC2148 specifications , Block diagram of LPC2148,ports related registers, GPIO Programming,

Module-15: LPC2148 Peripherals and Protocols Programming

GPIO: LED, Switches,7 segment and LCD Display,UART, I2C, SPI, PWM, WDT, Timers/Counter, ADC,DAC, RTC, Interrupts

Module-16: ARM Cortex Microcontroller LPC1768 Programming

Cortex Architecture,LPC1768 specifications,KEIL IDE, Flash Magic,GPIO: LED, Switches, LCD UART, I2C, SPI, PWM, Timers/Counter

Module-17: GPS Wireless Module Programming

Introduction to GPS,NEMA Standards GPS Sentences ,GPGGA Sentence,Interfacing and programming with microcontroller

Module-18: GSM Wireless Module Programming

Introduction to GSM,Frequency Bands and International Standards ,AT Commands Interfacing and programming with microcontroller

Module-19: Infrared (IR) Wireless Module Programming

Introduction to IR,Frequency bands ,Active Infrared and Passive Infrared ,RC5 Protocol Interfacing and programming with microcontroller

Module-20: Bluetooth Wireless Module Programming

Introduction to Bluetooth,T Commands,IEEE standards,Interfacing and programming with microcontroller

Module-21: RFID Wireless Module Programming

Introduction to RFID ,Tag / Transponders and Readers ,Data Processing subsystem ,Types of Tag Active and Passive Tag ,Interfacing and programming with microcontroller

Module-22: Wi-Fi / WLAN Wireless Module Programming

Introduction to Wi-Fi,AT Commands,IEEE standards,Interfacing and programming with microcontroller

Module-23: ZigBee Wireless Module Programming

Introduction to ZigBee,AT Commands,IEEE standards, Interfacing and programming with microcontroller

Module-24: OS concepts

Software components, System software vs Application software, operating systems Interfaces, Real-time systems

Module-25: Linux Basic and Utilities

UNIX / Linux / Windows History, GNU Project, Booting Process of OS, Advantages and disadvantages of Linux, Features of Linux, Linux root File System, Virtual File system.

Module-26: Shell and Shell Commands

Linux Terminals & Shell, Concept of Process in Linux, Regular Expressions, Process Commands, Editors in Linux, Regular Commands in Linux

Module-27: Linux Shell Programming and Scripts

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-28: Linux Compilers, Debugger, and Utilities

Gcc compiler, Compiler switches, Creating Object code,GNU C library, GDB debugger, GDB commands, Static library, Dynamic library.

Module-29: Linux Internals Programming – File System

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

Module30: Linux Kernel Programming - Process Management

Linux Kernel Architecture, User & System Mode, Process Management, pid, fork , vfork, exec zombie process

Module-31: POSIX Thread Programming & IPC

POSIX standards, POSIX Threads, pthreads, pthread attributes, POSIX Message Queues, POSIX Semaphores,

Module-32: Linux Compilers, Debugger, and Utilities

Gcc compiler, Compiler switches, Creating Object code,GNU C library, GDB debugger, GDB commands, Static library, Dynamic library.

Module-33: Linux Synchronization Programming

Need of Synchronization, Deadlock problem, Race condition, Critical section problem, Conditional variables, Mutex, Semaphores, System v API, POSIX API.

Module-34: Linux IPC (Inter Process Communication) Programming

Need of IPCs, pipe, FIFO, Shared Memory, message queue, signals & communication,signal handlers,

Module-35: 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-36: Understanding TCP / IP

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

Module-37: Linux Socket Programming

Socket API, Client Server Architecture, TCP Socket, UDP Socket, RAW Socket, Unix Socket, FTP Programming, Communicating using Sockets, Concurrent Server Programming

Module-38: Briefing Linux Device Drivers

Linux Driver Module ,Role of Driver, Inbuilt and Modular Drivers,Types of Device Driver, Relationship between Kernel and Driver, Major and Minor Number, Modular Program Vs. Application Program ,

Module-39: Driver Module & Concurrency & Race conditions

Compile & run module, Registering & Un-registering driver, Creating a device file, module creation, passing arguments to module.Concurrency and its Management, Semaphores and Mutex, Completions, Spinlocks.

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 Kernel Locking Mechanism

Module-41: Advanced Character Device Driver

IOCTL ,Implementing IOCTL Commands, Blocking I/O, poll and select, Asynchronous notification.

Module-42: RTOS Concepts

Introduction to Real Time Operating System, Classifications of RTOs, Misconception of RTOS , Features of RTOS, RTOS Architecture, Monolithic Kernel & Micro Kernel.

Module-43: RTOS Management

Task Management, Task Synchronization ,Inter task Communication, Memory Management, Timer Management, Interrupt & Event handling,

Module-44: FreeRTOs Porting

BSP of FreeRTOs for LPC2148, Compiling FreeRTOS in IDE, Understanding the APIs of FreeRTOs, Porting RTOS to LPC2148.

Module-45: FreeRTOS Programming

Led programming with Free RTOS,Serial port programming, Priority and preemptive programming, Message queue, semaphore and Time delay programming with Free RTOs.

Module-46: Introduction to Raspberry Pi

Board, ARM SoC (system-on-chip) architecture, Hardware interfaces,Raspbian OS (Linux Desktop), Preparing the SD cardfor OS, Booting the RPi, Networking & File-sharing on the RPi

Module-47: Python Programming

Python Programming language,Installing Python interpreter,Variables, Objects, Statements and Expressions, Operators, strings, Lists, Files, Booleans, Conditional Statements, Control Statements, Functions.

Module-48: Programming of the Pi

Access the Web, Control Peripherals with Pi, Control LEDs, PWM,LCD and scrolling LCD, Interfacing Relay & other Components

Module-49: MQTT Protocol

Understanding MQTT,MQTT Broker / Subscribe / Publish,MQTT QoS,MQTT Topics pattern,MQTT Tools

Module-50: Cloud Computing with IOT

Intro to IOT builder ,Managing account, Connecting RPI, Controlling Hardware, Creating triggers, Getting notifications, Connecting mobile to RPI,Scheduling events.