LINUX INTERNALS TRAINING

A training for C Developers to become Linux Programmers..Learn the A-Z of Linux Programming with a full blend of theory & practicals.

Who Should Attend :

 Good C Programmers seeking a career in the world of Linux.
Working Professionals from Microcontroller background, middleware C/C++.
Students seeking a career in Embedded Systems & Linux domain.

What will Be Outcome Of Training :

 Participant will be ready to do small embedded projects based on Linux.
Internals of Linux OS programming.
Developing application on Multiprocessing/ Multi treating/
  Network programming.
Debugging application and profiling applications for performance.

Syllabus

A training for C Developers to become Linux Programmers..Learn the A-Z of Linux Programming with a full blend of theory & practicals.

Hardware

This course enables the students to work on RuggedBoard-i.MX 6UL. Other single-board computers are available by special request. Each participant is also encouraged to bring their own hardware, to use with lab exercises as time permits.

RuggedBoard-i.MX 6UL

imx6ul
imx6ul

Class Notes:

Embedded Linux Class Notes

BSP Boot-Camp Class Notes

Training Contents

Training Highlights

  • Learn through Practical’s

  • Work on Latest ARM Core like Cortex A5/A8/A9

  • Real World Examples and Projects

  • Assured Post Training Support

  • Unlimited Access to the Hardware Boards for Practical’s

  • Training Tutorials & data available online

1. Linux Introduction & Installation

  • What is Linux, How it has been evolved, GNU License & Kernel

  • How Linux was designed,

  • Sub systems of Linux [ Scheduler, Process, Memory

       Management, File System, Device Management]

  • Ways to Install Linux [1. Dual Boot, 2. Within Windows, 3. Using Virtual Machine ]

  • How to update Linux and install required package

2. Linux Introduction & Installation

  •  Basic Commands

  •  Dir & File Command

3. Linux Shell Commands

  • System Commands

  • Misc Command

Linux Basics & Internals

4. Shell Scripting

  •  Writing Basic Linux Shell scripting

  •  Variables & Operators in Shell scripting

  •  Command Line Arguments

  •  Logical Structures in Shell Scripting

5. C Programming in Linux

  •  Writing C program on Linux

  •  Compiling and executing Linux

  •  Linux Executable format info & tools

  •  Debugging C application on Linux using GDB

6. Makefiles

  •  Understanding Makefiles

  •  Writing Makefiles

  •  Compiling Multiple source directory’s using Makefile

  •  Advanced methods used in writing Makefiles

1. Process Management

  •  Understanding Linux Process

  •  How to create child process using [ system, exec, fork & clone ]

  •  Managing Linux process

2. Linux Introduction & Installation

  •  Basic Commands

  •  Dir & File Command

2. File Operation in Linux

  • How to write application to access files in Linux

  • System Calls used in Linux to control special files like device nodes

  • How to write a serial port access program in Linux

3. Linux Multi-Threading Programming

  • Basics of Multithreading in Linux

  • How to create multi-threading applications in Linux

  • Managing & communication between Multiple threads

Linux Basics & Internals

4. Inter Process Communication

  • Data sharing between multiple processes using IPC Mech.

  • Writing apps using PIPEs, FIFOs, Msg Queues, Shared Memory

5. Network Programming in Linux

  • How to develop client server based network application in Linux

  • When and how to use TCP and UDP Protocols

6. Programming & Debugging Tools

  • strace : Tracing System calls

  • ltrace : Tracing Library calls

  • Tools used to detect memory access error and Memory

  • leakage in Linux : mtrace,valgrind

  • Using gdb and ddd utilities  Core Dump Analysis etc.

1. Introduction, Setup & Hardware

  • Introduction to Embedded Linux

  • ARM Processor Basics & Families

  • ARM Board Details and Schematic Overview

  • Boot Process

  • Host PC Setup for eLinux Development

2. Linux Introduction & Installation

  •  Basic Commands

  •  Dir & File Command

2. Toolchain & Hardware Practical’s

  • Board Boot Options

  • Flashing Bootloader & Linux Kernel on Board

  • Setting up TFT and Running Application on Board

  • Toolchain & its components  How to build toolchain

3. Bootloader U-Boot

  • Introduction to Bootloader

  • Primary Bootloader ( TI X-Loader )

  • Bootloader Commands and their usage

4. U-Boot Porting

  • Bootloader Source Code Structure

  • Compiling Bootloader

  • How to port Bootloader on ARM Based Hardware

  • Patching Bootloader

Embedded Linux Porting

5. Customizing Bootloader

  • Modifying Bootloader for new feature

  • Modifying Bootloader to support new device

  • Command Line Arguments & ATAG

  • Booting with SD Card

  • Setting up NFS Server

  • Booting with NFS Server

  • Linux Kernel Compilation

6. Linux Kernel

  • Introduction to Linux Kernel Arch

  • Kernel Dir Structure

  • Kernel Layers H/W dependent and independent ( BSP )

  • Kernel Build System ( KConfig )

7. Kernel Porting & Compilation

  • How to configure and compile for ARM Hardware

  • Type of kernel images ( vmlinux, zImage, uImage )

  • Kernel initialization process

  • How to port Kernel on New ARM Hardware

8. Kernel Modification

  • How to modify the Kernel code

  • How to integrate new driver/module in the kernel image

  • Building static and dynamic kernel modules

9. Root File System

  • Components of Roofs

  • Types of Roofs

  • Different types of Flash Device ( NOR / NAND )

  • Building Roofs from scratch and using Build System ( Buildroot )

10. Embedded Application Development

  •  How to develop embedded applications

  • Debugging application on target using GDB

  • Running sample Web-Server Application

  • Using Eclipse for embedded application development

1.Introduction and Arch of Linux Device Drivers

  • Introduction to Kernel Space and User Space

  • Memory Management in Kernel

  • How to develop Kernel Device Driver

  • Layers of LDD

  • Processor Memory Layout  Device Register Access from Code

3. Character Device Drivers

  • Linux Kernel Device Driver Framework

  • Virtual File System as bridge between Driver and Application

  • Implementing basic character driver

2. Linux Introduction & Installation

  •  Basic Commands

  •  Dir & File Command

2. Kernel Module Programming

  • Kernel Module Programming

  • Module Parameters

  • Exporting Symbols between modules

4. Character Device Drivers

  • Writing Makefile to compile Device driver

  • Compiling and running on X86

  • Cross Compiling and running on ARM Hardware

Device Driver Development

5.Advance options in Character Device Drivers

  • Implementing advance api like ioct in character device driver

  • Standards to follow while implementing ioctl

  • Writing and testing LED driver with IOCTL on ARM Hardware

6. Interrupts in Device Driver

  • Interrupts in ARM Processor

  • Interrupts Mechanism in Linux Kernel

  • How to implement Interrupts in device driver

7. Interrupt Handling & Bottom Half

  • Writing and testing Interrupt for Button press on ARM Target

  • Writing and testing multiple Interrupts in single driver

  • How to implement Shared Interrupts

  • How to handle lengthy ISR using Bottom Half ( Soft IRQ, Tasklet & Workquees )

8. Special File Systems ProcFS & SysFS

  • Ram based files systems in Linux

  • Using procfs for special purpose and accessing kernel data structure How to implement procfs

  • Sysfs implementation in device drivers for easy application access.

8. Special File Systems ProcFS & SysFS

  • Ram based files systems in Linux

  • Using procfs for special purpose and accessing kernel data structure How to implement procfs

  • Sysfs implementation in device drivers for easy application access.

8. Special File Systems ProcFS & SysFS

  • Ram based files systems in Linux

  • Using procfs for special purposes and accessing kernel data structure How to implement procfs

  • Systems implementation in device drivers for easy application access.

9. Introduction to Block Device and Network Device Drivers

  • Introduction to block and network device drivers

  • Case study of Network Device Drivers

10. Advance Device Drivers and debugging

  • MTD Subsystem for Flash Memory Devices

  • Nand and Nor Device Drivers

  • USB Subsystem Introduction

  • How usb gadget drivers are used in Embedded Applications

  • Debugging Techniques like debugs / target debugging

Optional​​

  • If you are having any technical queries related to syllabus covered (LAB & Theory), we provide an additional weekend session for the same.