Linux Combo Course

Linux Device Driver Training Institute in Bangalore

Linux Device Driver Training Institute in Chennai

DEC404 : Linux Combo Course

( Linux System Programming + Linux Device Driver )

Linux Device Driver Training in Bangalore

Linux Device Driver Training in Chennai

    Course Code  :   DEC404

    Duration         :   60 Hrs

Best Linux Device Drivers Training in Chennai Bangalore Hyderabad

linux device driver programming course bangalore

Part I : Linux System Programming

Target Audience

Experienced C programmers who want to learn key skills for creating applications and programs on Linux and UNIX programmers migrating their software to Linux. Also, Who want to learn how to develop device drivers for Linux systems.


Objectives

  • CPU and Kernel Architecture
  • GCC - GNU Compiler Collection
  • Building Software with Make
  • The GNU C Library and System Calls
  • Program Arguments and Environment
  • Building Libraries Advanced
  • Time Functions
  • Process Management
  • Memory Operations
  • Basic File Operations
  • File Operations
  • Communicating with Pipes
  • Managing Signals
  • Interprocess Communication (IPC)
  • Programming with Threads
  • Basic Network Programming
  • Working with the Linux Community
  • Debugging

Part 2 : Linux Device Drivers & Kernel Internals

Objectives

  • Module Programming
  • Device Driver
  • Character Device Driver
  • Intrrupt Handling
  • Advanced File Operation
  • Interacting with Devices
  • Direct Memory Access
  • PCI Drivers
  • USB Drivers
  • Network Device Drivers
  • Introduction to Block Device Drivers
  • Debugging Techniques
  • Other Issues

Prerequisite

  • Experience in C programming
  • Linux System Administration or equivalent UNIX or Linux workstation user skills for development
  • Shell scripting in a UNIX or Linux environment
  • Experience with text editors (vi, emacs)

linux device driver classes in Bangalore

linux device driver training in Hyderabad

Part 1 : Linux System Programming

1. CPUs, Boards and OS Architecture
  • Intro to CPU
  • Micro Processor
  • Micro Controller
  • Bus Types
  • General OS architecture
2. Ring Levels in CPU
  • OS Types
  • Kernel Types
  • Virtualizations
  • Types of Virtualization
  • Hypervisors in Desktops and Embedded Systems
  • Examples
3. GCC - GNU Compiler Collection
  • GNU Compiler Collection
  • History of GCC
  • Four Stages of GCC
  • Interrupting the Compiler
  • Compiling a C Program
  • Preprocessor Features
  • Predefined Preprocessor Symbols
  • Warnings and Extensions
  • Optimization
  • Linking
4. Program Execution and Stack Flow
  • Compilation of Programs
  • Intro to segments
  • Program Execution and Analysis
  • Stack movements
5. Building Software with Make
  • Introducing make(1)
  • How make Works
  • Makefile Rule Syntax
  • Example: Makefile First Steps
  • Makefile Improved
  • Implicit Rules
  • Example: Simpler Is Better Makefile
  • Variables
  • Defining Variables
  • Example: Makefile with Variables
  • Automatic Variables
  • Special Targets
  • Defining Useful Phony Targets
6. The GNU C Library and System Calls
  • Library Goals
  • Library Standards
  • GNU C Library - glibc
  • Library Functions vs. System Calls
  • Using System Calls
  • Handling Errors with errno
  • Making Sense of errno
  • Using strace
7. Kernel Compilation and System call
  • Compiling Kernel
  • System call adding
8. Program Arguments and Environment
  • Program Startup
  • Using argc/argv
  • Handling Options with getopt()
  • Handling Options with getopt_long()
  • Environment
  • Manipulating the Environment
  • Program Exit
  • Registering Exit Handlers
9. Building Libraries
  • Why Use Libraries?
  • Static Versus Shared
  • Static Library Benefits
  • Shared Library Benefits
  • Creating a Static Library
  • Using Static Libraries
  • Creating a Shared Library
  • Using Shared Libraries
  • Shared Library Management
  • Library Locations
  • ldconfig
10. Basic File Operations
  • Stream vs. System Calls
  • Opening/Closing Streams
  • Stream Input/Output Functions
  • Stream Status/Errors
  • Stream File Positioning
  • Stream Buffering
  • Temporary/Scratch Files
  • Opening/Closing File Descriptors
  • File Descriptor I/O
  • Repositioning File Descriptors
  • Stream/File Descriptor Conversions
  • cat using ANSI I/O
  • cat using POSIX I/O
11. Process Management
  • What a Process Is
  • Process Relationships
  • Create a Child Process
  • Doing Something Else
  • Related execve() Functions
  • Wait For a Child
  • More Precise Waiting
  • Changing Priority/Nice
  • Real Time Priority
12. Memory Operations
  • Allocating/Freeing Memory
  • Memory Alignment
  • Locked Memory
  • Memory Copy/Initialization
  • Memory Comparison/Search
13. Communicating with Pipes
  • Introduction to Pipes
  • Standard I/O: popen()/pclose()
  • Using popen()/pclose()
  • System Call: pipe()
  • Using pipe()
  • Named Pipes
  • Using Named Pipes
  • For Further Reading
14. Managing Signals
  • What Signals Are
  • Blocking/Checking Signals
  • Working with Signal Sets
  • Example of Blocking Signals
  • Handling Signals with sigaction()
  • sigaction() Example
  • Handling Signals with signal()
  • Sending Signals
  • Real-Time Signals
15. Interprocess Communication (IPC)
  • Interprocess Communication (IPC)
  • POSIX IPC Overview
  • POSIX Shared Memory
  • POSIX Semaphores
  • POSIX Message Queues
  • System V IPC Overview
  • System V IPC Shared Memory
  • System V IPC Semaphore Arrays
  • System V IPC Message Queues
16. Programming with Threads
  • Introducing Threaded Programming
  • Applications Suited to Threads
  • Building Threaded Programs
  • Creating Threads
  • Thread Identity
  • Synchronizing by Joining
  • Detaching Threads
  • Stopping Threads
  • Synchronizing with Mutexes
  • Using Mutexes
  • Read/Write Locks
  • Conditional Variables
  • Using Conditional Variables
  • A Conditional Variable Gotcha
  • For Further Reading
17. Advanced File Operations
  • Directory Operations
  • File System Operations
  • Multiplexed I/O with select()
  • Miscellaneous I/O Functions
  • Memory Mapped I/O
  • Using Memory Mapped I/O
  • File Locking
18. Basic Network Programming
  • Linux Networking Overview
  • Getting Started with socket()
  • Client Functions
  • Specifying IPv4 Addresses
  • Host Versus Network Byte Order
  • Example TCP/IP Client
  • Address Conversion Functions
  • Using getaddrinfo()
  • Server Functions
  • Example TCP/IP Server
  • Datagram Communication with UDP
19. Time Functions
  • When Does Time Begin?
  • Time Data Types
  • Determining Real Time
  • Converting time_t
  • Converting tm Structure
  • Process Time
  • Time arithmetic
  • Second Resolution Timers
  • Fine-Grained Timers
  • Real Time Clock (RTC)
20. Debugging
  • What Is My Program Doing?
  • Source Level Debugging
  • Invoking gdb
  • Getting Started with gdb
  • Examining and Changing Memory
  • Debuginfo Libraries
  • Using gdb with a Running Process
  • Using gdb to Autopsy a Crash
  • Debugging Libraries - ElectricFence
  • Debugging with valgrind
  • Profiling for Performance

Part 2 : Linux Device Driver

Best Linux device driver training in Chennai

1. Modules
  • Kernel Coding
  • Module Programming
  • Module Dependency
  • Module Parameters Passing
2. Character Device Drivers
  • Device Drivers
  • Device Driver Design
  • Interacting with Character Device Drivers
  • Interacting with Block Device Drivers
  • Interacting with Network Interface Cards
  • Device Nodes
  • Character Device Drivers: Registration
  • The Device Node Problem
  • File Operations
  • Defining File Operations
  • Registering File Operations
  • File I/O Conventions
  • open
  • close
  • read
  • write
  • lseek
3. Kerel Synchronization methods
  • Source of concurrency
  • Kernel Synchronization techquiques
  • atomic operations
  • semapores
  • mutex
  • spin locks
  • reach copy update
  • memory barriers
  • etc
4. Advanced File Operations
  • IOCTLs
  • IOCTL Conventions
  • Implementing IOCTLs
  • Lockless IOCTLs
  • Sleeping
  • Wait Queues
  • Wait Queues
  • Variations on wait_event()
  • Sleeping in System Calls
  • Multiplexed I/O
  • Polling
5. Interrupt Handling
  • Interrupt Context
  • Handling Interrupts
  • Interrupt Structures
  • ISR Registration
  • System Context
  • Softirqs
  • Deferred Activity: Tasklets
  • Deferred Activity: Work Queues
  • Custom Work Queues
  • Example: Keyboard, Mouse
6. Interacting With Devices
  • Device Interaction
  • Managing Exclusive Access
  • I/O Ports
  • I/O Memory Buffers
  • Accessing I/O Memory Buffers
  • Userspace Drivers
7. Memory Management in Kernel
  • Memory Initialization
  • Memory Management
  • page allocators
  • slab allocator
  • buddy allocator
  • fragment and cache
  • bootmem allocator
  • kmalloc and kfree
  • vmalloc
8. Direct Memory Access
  • Managing DMA
  • Initializing DMA
  • Coherent Allocations
  • Streaming DMA Mappings
9. Introduction to Block Device Drivers
  • Block Devices
  • I/O Scheduling
  • Linux 2.6 Elevator Functions
  • Block Device Driver Implementation
  • Block Device Registration
  • Block Device File Operations
  • The gendisk structure
  • Request Queues
  • Initialization Example
  • Handling Requests
10. PCI Drivers
  • Peripheral Component Interconnect
  • PCI Configuration Space
  • PCI Driver Registration
  • Registering PCI Drivers
  • Driver Probe Function
  • Initializing PCI devices
  • Releasing a PCI Device
  • Managing PCI Resources
  • Accessing Configuration Space
  • Listing PCI Devices
11. Network Device Drivers
  • Networking
  • Network Devices
  • Network Device Callback Functions
  • Network Driver Initialization
  • Network Driver Transmission Queue
  • Control
  • Network Statistics
  • Socket Buffers (Packets)
  • Socket Buffer API
  • Transmission
  • Reception
  • Example Implementations
12. Sysfs, procfs and Debugfs, probing , notifications
  • sysfs intro
  • sysfs entry
  • procfs intro
  • procfs entry
  • debugfs intro
  • debugfs entry
  • probing techniques
  • notifications techniques
13. USB Drivers **
  • The Universal Serial Bus
  • USB Descriptors
  • USB Transfer Types
  • Linux USB Implementation
  • USB Drivers
  • USB Registration
  • Initializing USB Interfaces
  • USB Class Drivers
  • USB Request Blocks
  • Using USB request blocks
  • Synchronous USB Requests
  • More information

** If time permits or Extras

corporate Linux device driver programming training in Chennai

Best Linux device driver training institute in Chennai Coimbatore

Best Linux device driver training Course in Hyderabad Chennai Coimbatore

Linux device driver training in Delhi

Online Linux device driver training in Bangalore Chennai

Note:

** These sections may be considered in part or in whole as optional. They contain background reference material, specialized topics, or advanced subjects. The instructor may choose to cover or not cover them depending on classroom experience and time constraints.

Online Linux device driver training in Chennai Bangalore

Linux device driver Online training in Bangalore Chennai

Linux device driver Online training in Chennai Bangalore

linux device driver online course

Linux Device Driver Training Institute in Bangalore

Linux Device Driver Training Institute in Chennai

Linux Device Driver Training Institute in Hyderabad

Best Linux device driver training in Chennai Hyderabd

Top 10 Linux device driver training institute in Bangalore Chennai

Linux device driver training in Bangalore

linux device drivers training in Bangalore Chennai

Linux Device Drivers Training Institute in Bangalore

Linux Device Drivers Training Institute in Chennai

Linux Device Driver Training Institute in Hyderabad

Linux Device Driver Training Institute in Pune Delhi Indonesia Singapore

Linux Device Driver Training Institute in Malaysia Kuala Lumpur penang US UK