Embedded Linux & Driver Developer

Course Highlights

  • The flagship training programme from Veda Solutions, successfully being conducted from the past 10 years.
  • A comprehensive expert level course on Embedded Linux , Linux Kernel and Drivers
  • Most attended and recommended by working professionals (from over 100 companies and 8 nations).
  • From the leaders in Embedded Linux and System Programming.
  • Available in regular, full-time, weekend workshops, audio-video and online training modes.

Who should attend?

  • Anyone with good C programming skills and a passion for Embedded Linux, kernel & Driver programming
  • Working professionals expecting projects/work assignments on Embedded Linux, Linux kernel programming, Device Drivers or other core system development requirements
  • Working professionals looking to upgrade their system development skills on Linux
  • Programmers from Windows OS platform interested to add/migrate to Linux and Embedded Systems
  • Microcontroller based embedded developers who are willing to upgrade their skills and enhance their career positions

Course pre-requisites

  • Proficiency in C programming
  • Knowledge of basic Linux commands

What you will learn?

  • Linux programming essentials, for understanding the key Linux; issues, concepts and finer nuances of programming to get a proper grounding before getting deeper into core system development
  • Linux Kernel Programming and Internals for getting a complete grip on core OS concepts and module programming
  • Linux Device Drivers and Embedded Drivers enabling you to start writing Driver programs for embedded and GPOS targets
  • Practical Embedded Linux enablement skills for any target hardware like ARM and so on.

Course duration

Regular mode 3 months


  • Most recommended training organization by working professionals
  • 10 years of training experience in Embedded Linux and Linux system programming
  • Delivered corporate training to over 20 technology majors including Sasken, NCR, UTC-FS, Xilinx and so on
  • First institute in Asia to start online courses on Linux Kernel, Device Drivers and Embedded Linux
  • Participants from over 8 nations and 100 companies

Courses Contents:

1. Linux Programming Essentials

Gnu compiler distribution

  • Understanding compile & build process
  • Tool chain
  • Object file analysis
  • Executable Images
  • Binary Portability

Exploring Linkers and Build process

  • Build process defined
  • Role of Build scripts in build process
  • Build script syntax
  • Need to modify Build scripts


  • Introduction to libraries
  • Creating Static Libraries
  • Creating Shared Libraries
  • Using Libraries
  • Managing dynamic libraries

Linux I/O architecture

  • Introduction to components of I/O architecture
  • Objectives of Linux I/O model
  • Virtual file system
  • File system services
  • I/O cache
  • Understanding file descriptors & inode structures

File I/O operations

  • Introduction to common file APIs
  • Accessing file attributes
  • Standard I/O operations
  • File control operations(fcntl())
  • Alternate File I/O models
  • Huge file I/O
  • Monitoring File and directory events
  • Use cases

Posix Threads

  • Introduction to posix thread interface
  • Thread creation and management
  • Thread attributes
  • Detecting Race conditions
  • Atomic operations
  • Mutual exclusions methods (mutex, semaphores, spinlocks)
  • Detecting and handling deadlock events
  • Choosing right Mutual exclusion method
  • Designing scalable critical sections
  • Exploring Thread synchronization methods (signals, condition variables…)
  • Choosing correct Thread synchronization method
  • Thread local data
  • Thread cancellations & exit handlers
  • Linux Native posix threading support (NPTL)

Stack Analysis

  • Introduction to stack
  • Understanding how stack grows and shrinks
  • Understanding how function parameters are passed.
  • Understanding how stack frames are created and destroyed.

Application prg. Interfaces (API)

  • Understanding need of Api
  • API vs system calls
  • User mode/ kernel mode transitions
  • Unix common API standards (Posix, BsD , SYS V)
  • APIs and application portability
  • API design practices
  • Use cases and standard practices

Concurrent application designs

  • Introduction to concurrent applications
  • Understanding need for concurrent apps
  • Standard Concurrency models
  • Comparative analysis of concurrency models
  • Use cases & standard Practices

Process creation calls

  • Process creation calls (fork, vfork, execve)
  • Monitoring child process
  • Linux kernel process creation routines
  • Copy-on-write resources
  • Handling child process termination events
  • Linux threads interface (clone)
  • Use cases & standard Practices

2. Linux Kernel Internals and Device Drivers

Linux kernel programming

  • Essentials of Linux kernel architecture
  • Understanding need for kernel programming
  • Kernel programming models
  • Kernel configuration and compilation
  • Introduction to kernel modules
  • Kernel modules vs. Applications
  • Exploring kernel module architecture

Modules programming basics

  • Building blocks of a kernel module
  • Building kernel module binary
  • Tools for module management
  • Tracking module dependency
  • Module parameters
  • Kernel symbol table
  • Exporting Module symbols

Kernel message logging infrastructure

  • Need for kernel message logging
  • Kernel message ring buffer
  • Kernel message Log priorities
  • Message Ring buffer management
  • Accessing messages from user mode apps
  • Linux message logging daemons

Memory allocations

  • Linux kernel memory subsystem
  • Memory representation data structures
  • Memory Allocators
  • Allocating Boot memory
  • Page Tables and Address Translation
  • Page Tables and Address Translation

DMA mappings

  • Need for DMA
  • Linux DMA mappings
  • Use cases

Hardware access

  • Device Addresses
  • Port mapped I/O
  • Interacting with port mapped devices
  • Memory Mapped I/O
  • Reserving address space MMIO
  • MMIO Access
  • Device access from u-space

Interrupt handling

  • Understanding Interrupts
  • Linux Interrupt handlers
  • Implementing Driver ISR
  • Need for deferred routines
  • Linux Deferred Routines
  • Interrupt event management

Time measurement & Delays

  • Need for time measurement
  • Kernel tick
  • Need for delays
  • Introducing delays
  • Use cases

Linux driver architecture

  • Device Drivers defined
  • Linux Driver model
  • Types of Linux drivers
  • Driver stacks

Synchronous driver model

  • Synchronous drivers defined
  • Driver registration and de-registration
  • Driver file interface
  • Device file operations
  • Driver data structures
  • Device Configuration ops
  • Wait Queues & polling
  • Memory mapping
  • Use cases

Concurrency and Race Conditions

  • UP vs. SMP Issues
  • Combating Race Conditions
  • Atomic Operations
  • Semaphores
  • Spin Locks

Block driver subsystem

  • Block device model
  • Ramdisk driver hands-on


  • USB basics
  • Linux USB bus stack
  • USB driver classes
  • Interacting with USB devices from drivers
  • Driver hands-on

3. Embedded Linux

Introduction to embedded Linux

  • Benefits of using Linux and open source tools for embedded systems
  • SOC overview
  • Embedded Linux system architecture
  • Software components for embedded development

Cross-compiler tool-chains

  • Need for cross tool-chain
  • Different tool-chains’ build procedures
  • Using pre-build cross tool-chain
  • Building our own cross tool-chain

Machine emulator and virtualizer

  • Why emulator
  • Installing emulator
  • Using emulator for ARM

Linux booting process

  • Linux booting sequence
  • Components of Linux booting
  • Tweaks and changes
  • Use cases


  • Introduction to u-boot
  • Overview of U-boot source
  • Building U-boot for target
  • Booting target with U-boot
  • Understanding U-boot environment
  • Transferring images to target using U-boot


  • Supported hardware architectures
  • Using predefined config files
  • Cross-compiling the kernel for target
  • Understanding kernel boot arguments
  • Understanding NAND/NOR flash
  • File system for flash

Embedded Drivers

  • I2C
  • SPI
  • GPIO

File system

  • Understanding Unix File system hierarchy
  • Creating file system
  • Porting application
  • Mounting file system as initrd
  • Integrating file system and kernel image
  • Cross-compiling applications and libraries
  • Creating jffs2 file system

Flashing Images

  • Flashing kernel image
  • Flashing file system
  • >> Classroom
    • Course Name :
      Linux Drivers & Embedded Developer
    • Next batch starts :
      7th August 2017
    • Class Timing :
      7:30pm to 9pm
    • Course Duration :
      3 months
    • Course Fee :
      Rs.21,000/-(Rs.2,000/- off on single payment)
  • >> Audio/Video
    • Course Name :
      Embedded Linux & Driver Developer
    • Next batch starts :
    • Class Timing :
      Access the videos anytime between 8am to 8:30pm
    • Course Duration :
      5 months validity
    • Course Fee :
    • <
  • >> Online

Course feedbacks

Success Stories