ABOUT EMBEDDED LINUX

Linux has been adapted for use in embedded environments, with prime focus on the ARM architecture. We provide the course to shed light upon installation of cross-development environment, how to build compact version of Linux for embedded device, how to install this build on the target system and test its operation. Linux is the operating system of choice for many embedded systems such as smartphones, PDAs, tablets and personal media players. Linux is an open source operating system under GNU license. It was originally developed for intel for their personal computers. The ultimate operating system assembled under the free and open source software development distribution.

Course Highlights

  • INTRODUCTION TO LINUX
    GNU Project/ GPL Licensing
    Evolution of Linux & Development Model
    Device Identities in Linux- Partitioning Schema
    SHELL COMMANDS & SHELL SCRIPTING
    Basic Shell Commands- Bash Shell Essentials
    Creating Makefiles
    PROCESS MANAGEMENT
    Process Defined
    Process Descriptor Structures in the kernel
    Process States- Process Scheduling
    Process Creation- System calls related to process management
    SOCKETS
    An Overview.
    System calls related to TCP and UDP sockets.
    NETWORK PROGRAMMING
    TCP Server Client Programming
    UDP Server Client Programming
    Netlink socket interface
    Building Embedded Linux Systems

    Lecture

    Introduction to Embedded Linux and ARM Cortex-A8 Hardware

    Lab

    Bootloader compilation and downloading on Targetboard.

    Lecture

    ToolchainComponents
    BuildingToolchain
    Build Systems for compiling toolchain

    Lab

    Toolchain compilation and usage.

    Lecture

    BootloaderArchitecture
    U-Boot Bootloader Porting on NewHardware.
    U-BootCommands

    Lab

    Bootloader commands andusage,
    Bootloader code customization, adding new Ethernet drivers toU-Boot.

    Lecture

    Downloading pre-compiled Linux kernel images on Targetboard.
    Using SD-Card forrootfs.
    Configuring NFS and using rootfs overNFS.
    Configuring TFTP and downloading kernel image overTFTP.

    Lab

    Linux KernelArchitecture.

    Lecture

    Linux Source code browsing & code changes for a new Target [ Porting]

    Lab

    Configuring and compiling LinuxKernel.

    Lecture

    Root filesystem.

    Lab

    Building Root file system with Busybox and booting the LinuxKernel

    Lecture

    Cross compilation of libraries fortarget.

    Lab

    Application development and Crosscompilation.
  • STEPS TO LEARN EMBEDDED LINUX
    Provide an understanding of essentials of embedded Linux.
    Consider dual booting as this would help in letting to learn windows.
    Describe the concept of ARM9
    Introduce the concept of embedded Linux
    Explain porting of Linux kernel and root file system to ARM9 board
    Describe the implementation of application program on ARM9 board
    INTRODUCTION TO EMBEDDED LINUX
    INTRODUCTION TO LINUX
    GNU Project/ GPL Licensing
    Device Identities in Linux- Partitioning Schema
    INTRODUCTION TO KERNEL
    History of Linux- Types of Kernel-The Linux kernel
    Kernel Architecture
    SHELL COMMANDS & SHELL SCRIPTING
    Basic Shell Commands- Bash Shell Essentials
    Creating Makefiles
    CREATING LIBRARIES
    Creating Static Library- Creating Shared Library
    THE BOOT PROCESS
    BIOS Level- Boot Loader- Setup, startup_32 functions
    The start_kernel() function
    THE FILE SYSTEM
    Virtual File System & its role
    Files associated with a process- System Calls
    PROCESS MANAGEMENT
    Process Defined
    Process Descriptor Structures in the kernel
    Process States- Process Scheduling
    Process Creation- System calls related to process management
    MEMORY MANAGEMENT
    Defining and Creating secondary memory areas
    Memory allocation & deallocation system calls malloc, calloc, alloca, free
    Demand Paging defined
    Process Organization in Memory
    Address Translation and page fault handling
    Virtual Memory Management
    MULTI THREAD PROGRAMMING
    Creating multiple threads
    Parent synchronization with other Threads
    INTER PROCESS COMMUNICATION
    Pipes, Fifo’s, signals- System-V IPC’s
    Message queues- shared memory- Semaphores.
    SOCKETS
    An Overview.
    System calls related to TCP and UDP sockets.
    NETWORK PROGRAMMING
    TCP Server Client Programming
    UDP Server Client Programming
    Netlink socket interface
    PROGRAMMING & DEBUGGING TOOLS
    strace: Tracing System calls
    ltrace: Tracing library calls
    Tools used to detect memory access error and Memory leakage in Linux: mtrace
    Using gdb and ddd utilities
    Core Dump Analysis etc
    BUILDING EMBEDDED LINUX SYSTEM(MODULE-1)
    ( Lecture: )
    Introduction to Embedded Linux and Blueboard-AT91RM9200
    Toolchain Components
    Building Toolchain
    Build Systems for Compiling toolchain.
    ( Lab: )
    Toolchain compilation and usage.
    ( Lecture: )
    Bootloader Architecture
    U-Boot Bootloader Porting on New Hardware.
    U-Boot Commands.
    ( Lab: )
    Bootloader commands and usage.
    Bootloader code customization, adding new Ethernet drivers to U-Boot.
    ( Downloading pre-compiled Linux Kernel images on Target board. )
    Using SD-Card for rootfs.
    Configuring NFS and using rootfs over NFS.
    Configuring TFTP and downloading kernel image over TFTP
    BUILDING EMBEDDED LINUX SYSTEM-II
    ( Lecture: )
    Linux Kernel Architecture
    Linux source code browsing & code changes for a new Target(Porting).
    ( Lab: )
    Configuring and compiling Linux Kernel.
    ( Lecture: )
    Root File System.
    ( Lab: )
    Building root file system with Busybox and booting the Linux kernel.
    Application development and Cross Compilation.
    LINUX DEVICE DRIVERS- (MODULE-3)
    ( AN INTRODUCTION TO DEVICE DRIVERS )
    Role of the Device Drivers
    Splitting the kernel
    Classes of devices and modules
    Kernel Architecture or Model
    Kernel modules.
    Introduction to Modules & Device Drivers
    Kernel modules.
    ( MODULE BASICS )
    Introduction to Modules & Device Drivers
    Modules Defined
    Types of modules in the kernel
    Writing your first kernel module
    Module related commands
    Kernel module vs Applications
    User space vs kernel space
    Exporting symbols from modules
    Concurrency in the kernel
    Module Parameters
    Version dependency
    Kernel Module Programming
    Lab exercises.
    ( THE PROC FILE )
    Creating proc file system entries
    Making read & write operations on proc entries
    Lab exercises.
    ( 17. CHARACTER DEVICE DRIVERS )
    Registering a character device driver
    File operations
    The file structure
    Devfs/ Iseek/ ioctl
    Blocking, non blocking and asynchronous operations
    Programming with ioctl(), mmap()
    Lab exercises
    LINUX DEVICE DRIVERS- II
    ( HARDWARE and INTERRUPT HANDLING )
    Using IO Ports
    Installing and implementing an interrupt handler
    Tasklets and Bottom halves
    Task queues, Work queues- Lab exercises
    ( BLOCK DEVICE DRIVERS )
    Block drivers structures- Flash memory Drivers
    Lab exercises
    ( NETWORK DRIVERS )
    The net device structure in detail.
    Making changes in Ethernet drivers in Kernel Source.
    Lab exercises


Other Offerings