Embedded Linux Programming & Device Drivers

Module-1: OS concepts

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

Module-2: 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-3: Shell and Shell Commands

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

Module-4: 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-5: Linux Compilers, Debugger, and Utilities

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

Module-6: 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

Module7: Linux Kernel Programming - Process Management

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

Module-8: POSIX Thread Programming & IPC

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

Module-9: Linux Synchronization Programming

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

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

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

Module-11: 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-12: Understanding TCP / IP

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

Module-13: 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-14: 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-15: 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-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 Kernel Locking Mechanism

Module-17: Advanced Character Device Driver

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