Linux  Device Driver Development Training focuses on the learning of Linux kernel, device driver, and RTOS environment. The course commences with providing information on process management and further goes deep into memory management, time management, scheduling, and interrupt handling in Linux environment.

The course then introduces the students to System Calls, Linux API’s for file operations, ipc, sockets etc. Design approaches are shown for soft- as well as hard- real time systems. The emphasis of the course content is on providing the students with actual work-oriented application skills. The course will provide the student with a life cycle view for designing multi-processing, multi-threading embedded systems


Introduction. [Why Linux, why used in embedded field etc.], Installing a Linux Kernel based OS ,Basics of Linux. Using Important Commands in Linux. Introduction to Necessary Applications. [Introduction to SHELL, VI , okular , gedit ,gcc etc]


  • Introduction to Linux programming.
  • Understanding Linux kernel. [What is kernel, Overview of Kernel structure, file types, process management, Scheduler, different folders in root],
  • System Calls. [open, close, time, sleep, power off].
  • Processes. [What is process? Process & program, Creating a process using fork(),exec().
  • Signals. [What are signals, Different signals introduction, Importance of signals in kernel, Handling the signals, Writing a signal handler].
  • IPC [What are IPC’s ,Pipe, FIFO, shared memory, semaphores, sockets],
  • Threads. [What are threads, posix threads, Thread creation, Passing data to thread, return value from thread etc..]


  • Booting Process [How a normal system boots, different stages of boot, different boot loaders in systems, boot loader in Embedded Linux],
  • Setting up the system for porting. [Downloading & installing tools chain with cross compiler, downloading kernel source code ,Downloading required files, get necessary hardware]
  • Configuring The U-Boot and U-Boot commands
  • Compiling the kernel source code. [ Using tools chain to compile Linux source code, modifying according to the needs]
  • Configuring the Board support Package and Board Config File, Porting Linux on target ARM. [Setting up system for porting]
  • Running a embedded Linux web server, porting of QT embedded
  • Writing device drivers. [What is a driver, Block device driver, Character device driver,
  • Network device driver, USB device driver]
  • Kernel Module Programming[What is a kernel module?, Hello World module-1,Kernel
  • Modules Versus Applications, How do these modules find their way into the kernel?,
  • printk() function, User space and kernel space, Compiling Kernel Module, Hello World
  • module-2,Licensing and Module Documentation, Passing Command Line Arguments to a Module, The Kernel Symbol Table, Error Handling During Initialization]
  • character drivers: how a UART driver works and a real-time sample of Bluetooth Driver
  • Block driver, Net work Driver