Embedded Systems Training

Embedded Linux Programming & Device Drivers

Part 1

Part – 1:  Programming Languages

Module  1     Introduction to Embedded Systems

What are and Why Embedded Systems?, Types of Embedded System, Classifications of Embedded Systems, Characteristics of an Embedded System, Applications of an Embedded Systems, Overview of Embedded Industry, Comparing Layers of GPC & Embedded System

Module 2      C Programming

What are Micro Processors?, What are Micro Controllers?, Difference between Micro controller  and Microprocessor, System Design using Microcontroller and Microprocessor, Difference between Von Newman and Harvard Architectures, Difference between CISC & RISC Architectures, Overview of  8 bit,16bit,32bit & 64bit microcontrollers

Module  3     Advanced C Programming

Function, Storage Classes, Scope and Lifetime of a variable, Volatile , Recursive Functions, Stack Frame Analysis, Drawbacks of Functions, GDB, Basic Debugging Commands , Debugging a sample C Program, Arrays, Arrays and Functions, Pointer, Pointer Arithmetic, Pointers and Arrays, Pointers and Functions, String Handling Function like strcpy, strcat, strcmp, strlen, Pointers and Strings, Function Pointers, Variable Augmented Function,

Module  4      Data Structure Programming

Dynamic Memory Allocation, Memory Leaks and Dangling Pointers, Structure, Structures and Array, Structures and Functions, Structure Padding and Alignment, Union, Bit fields, Using Typedefs, Enumerations, Macros

Module  5     Embedded C  Programming

Introduction to Data Structures, Types of Arrays, Coding Standard, Linked Lists, Singly Linked List, Doubly Linked Lists, Stacks and Queues.


Part 2

Part – 2:  Linux System Programming

Module 6      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,  Shell and Shell Commands , system calls, file handling in Linux, Environmental variables, inodes and file permissions, error handling in linux, data types in linux.

Module 7      Programming Langauge Libraries in Linux

Shell Programming, Glibc, gcc compiler, gdb debugger, Makefile Utility, Compilation steps, Memory allocation in programming, C++ Library and manpages, Java Library support in Linux, Python and perl Langaguge programming in Linux.

Module 8      Linux Kernel Programming

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

Module 9  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 10   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 11   Linux IPC (Inter Process Communication)  Programming

Need of IPCs, pipe, FIFO, Shared Memory, message queue, Signals

Module 12   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 13   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 14   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, Arithmetic server.

Part 3

Part – 3:  Linux Device Drivers

Module 15   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 a sample module, Registering & Un-registering a sample character device ,  Creating a device file and test character device driver, Hands on Sample module creation, passing arguments to module.

Module 16   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, Overview of Block Device Driver

Module 17   Developing Block Device Drivers in Linux

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

Module 18   Understanding & Driving UART / RS-232

Difference between Serial and Parallel Communication, What are DTE and DCE, What are DB9 and DB25 Connectors, Describe the pins of DB9 Connector, What are loop back and Null modem connection, Serial Port Architecture under X86 Architecture, Description of UART Register in X86 Architecture, RS232 Frame Format, Max232/233, a voltage level converter, Programming and Driving RS-232 serial port

Module 19   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 20   USB Keyboard Device Driver

USB specifications,  USB standards, USB Layers and Linux USB subsystems, Topologies used in USB,OHCI, UHCI and EHCI type of USB controller ICs. Commands related to USB drivers, Registering the USB driver, USB Urbs, Practical USB device driver.

Module 21   USB Mouse Device Driver

USB  mouse specifications, 2 button and 3button mouse, scroll button architecture, PS2 and USB subsystems, USB wrapper driver programming on PS2 mouse programming, Inserting USB Mouse driver in running kernel, hot swapping architecture, Testing working of our driver with practical connection.

Module 22   USB Pen Drive Device Driver

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

Module 23   Developing Network / Stream Device Drivers in Linux

Comparison of char and Network driver, Driver Registration, net_device structure, net_device_status structure, skbuff structure, network device methods, sample driver

Module 24   Embedded Linux based Project on Socket Programming

Module 25   Embedded Linux based Project  on Device Drivers