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


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.