Embedded Linux & Linux Device Driver Training

 

Duration – 150 hours

Classes – Flexible

Prerequisites

-         Good C programming skills

-         Good knowledge of Linux and Linux shell scripting

-         Good knowledge of computer/microprocessor/microcontroller architecture

-         Operating Systems theory

-         Excellent analytical skills and problem solving skills

 

Modules to be covered

1.     Linux Basics and Shell scripting (Revision) – 10 hours

Command-line interface

Directory Structure & Contents

Basic Shell utilities /commands

Directory / File Operations

System/Process/Disk Status Indicators

Getting Help: man, info pages

On-Line Manuals

Shell scripting basics

Assignments

 

2.     C Refresher + Advanced C – 20 hours

Introduction to Linux GNU Compiler Collection (gcc)

Foundations of C programming - Revision

            Types, declarations and expressions

            Control Flow, Functions and program structure

            Arrays, pointers, structures, unions – nested structures, pointers to         structures, arrays of pointers, double pointers

            Data structure design

            Input and output handling, File handling

Dynamic Memory Management – malloc, calloc, free

Linked Lists – singly linked list, queues, stacks

Command-line argument handling

Program Design

Assignments

 

3.     Linux systems programming using C – 30 hours

Files and streams

Process management

Signals, Timers

POSIX Threads

Socket programming

Advanced programming topics (function pointers, file processing)

Makefile for multiple source file compilation

Assignments

 

4.     Linux Device Drivers Development (for x86 processors) – 40 hours

Intro to devices and drivers

Understanding and building Linux Kernel modules

Char drivers

Time constraints

Linux device model

Interrupt handling

Debugging techniques

Advanced char drivers

Introduction to block and network drivers

USB drivers

Bluetooth drivers

Assignments

 

5.     Embedded Linux (with ARM platform) – 50 hours

ARM processor family and architecture

Basics of ARM assembly and programming

Embedded Linux basics and development methods

Linux as an Embedded OS

Linux booting - Boot loader (U-Boot), Kernel, Ramdisk, File system

Linux console, storage media and other peripherals, MTD tools

Compilers and Cross-compilers – GNU ARM compiler toolchain

Libraries – GNU, C, Shared

Introduction to embedded development process (target, host, configure, build)

Building root file system, Shell and utilities (Busybox), Libraries, Kernel, flashing the target, debugging).

Booting from Network, from SD card

Assignments

 

6.     Project Work - Flexible