Linux Driver and
Embedded Developer

Course Highlights


The flagship training program from Veda Solutions, successfully ...
Who should attend?





Working professionals expecting projects/work assignments on Embedded Linux, Linux
kernel prog...
Course Contents
This course is divided into three logical modules to enable easy and effective understanding of
the entire...
Managing process address space
 Introduction to virtual address space
 Stack allocations
 Heap/Data segment management
...
Posix Threads
 Introduction to posix thread interface
 Thread creation and management
 Thread attributes
 Detecting Ra...
Process communication with UNIX domain
sockets
 Stream sockets in Unix domain
 Datagram sockets in Unix domain
 Abstrac...
Memory allocations
 Linux kernel memory subsystem
 Memory representation data
structures
 Memory Allocators
 Allocatin...
Embedded Linux
Introduction to embedded Linux
 Benefits of using Linux and open
source tools for embedded systems
 SOC o...
Upcoming SlideShare
Loading in …5
×

Linux Driver and Embedded Developer Course Highlights

782 views

Published on

A comprehensive expert level course covering all aspects of system programming like
Linux Programming, Kernel Programming, Embedded Linux , Network Programming,
Linux Device Drivers

Published in: Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
782
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
22
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Linux Driver and Embedded Developer Course Highlights

  1. 1. Linux Driver and Embedded Developer Course Highlights  The flagship training program from Veda Solutions, successfully being conducted from the past 10 years  A comprehensive expert level course covering all aspects of system programming like Linux Programming, Kernel Programming, Embedded Linux , Network Programming, Linux Device Drivers  Most attended and recommended by working professionals (from over 100 companies and 8 nations)  From corporate trainers to over 20 major technology and embedded companies  Available in regular, full-time, weekend workshops, audio-video and online training modes 301, Prashanthiram Towers, Saradhi Studio Lane, Ameerpet, Hyderabad Ph:040-66100265 Email: info@techveda.org www.techveda.org 1
  2. 2. Who should attend?     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 (1.5 hrs. per day, five days a week) Also available in Full time, Weekend Workshops, Audio-Video and Online mode (refer website/counselor for details) Why Veda Solutions?      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, UTCFS, 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 2
  3. 3. Course Contents This course is divided into three logical modules to enable easy and effective understanding of the entire course Linux Programming Essentials Gnu compiler distribution Process management  Understanding compile & build process  Introduction to program loading  Tool chain  Process, defined  Object file analysis  Understanding process address space.  Executable Images  Kernel process descriptor.  Binary Portability  Accessing kernel process descriptor information Exploring object files  Introduction to Linux Process scheduler  Need for understanding object files  Scheduling policies & priorities  Introduction to the Binary File Formats  Process scheduling for multi/many (ELF, COFF, XCOFF). core systems  Understanding ELF file format  Process affinity  Inspecting object files  Linux process privileges  Extracting sections from object files  Introduction to process resource limits  Converting executable to other  Use cases & standard practices formats (srec, ihex, binary)  Use cases Stack Analysis  Introduction to stack Exploring Linkers and Build process  Understanding how stack grows and  Build process defined shrinks  Role of Build scripts in build process  Understanding how function  Build script syntax parameters are passed.  Need to modify Build scripts  Understanding how stack frames are  Use cases & standard practices created and destroyed. Libraries  Introduction to libraries  Creating Static Libraries  Creating Shared Libraries  Using Libraries  Managing dynamic libraries  Use cases & standard practices 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 3
  4. 4. Managing process address space  Introduction to virtual address space  Stack allocations  Heap/Data segment management  Memory maps  Dynamic memory allocation & deallocation routines  Choosing right memory allocation mechanism  Manipulating memory blocks  Swapping Memory Areas  Memory locking  Use cases & standard practices 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 I/O operations of special files  Handling Device Files  Handling Pipe files  /proc file system  /sys file system I/O multiplexing  Need for Multiplexed I/O  Standard methods  Linux support for I/O multiplexing  Use cases & standard practices Signal management  Introduction to Signals  Linux signal types & categories  Signal generation and delivery  Linux signal management datastructures  Switching signal dispositions  Writing async signal handlers  Using signals for process communication  Blocking & Unblocking signal delivery  Use cases & 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 4
  5. 5. 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) Time keeping & Timers  Calendar Time  Time conversion routines  Software time keeping  Process time  BSD Interval Timers for running periodic tasks  Accuracy of timers  Posix clocks  Posix interval timers  Linux interval timer interface  Use cases & standard practices Inter-process communication  Introduction to IPC subsystem  Linux kernel IPC resources  IPC communication resources (pipes, msgqs., shared memory)  IPC synchronization resources (semaphores)  Comparative analysis of SYSV and POSIX IPC Implementations  IPC kernel data structures  Use cases & standard Practices Network programming  Introduction to networking  Categories of Network Applications  Network communication application designs  Understanding Protocol stacks  Understanding TCP/IP networks  Exploring Linux kernel network subsystem Linux socket abstraction layer  Introduction to socket layer  Overview of socket APIs  Programming TCP/IP apps using socket APIs  Programming UDP/IP apps using socket APIs  Exploring socket data structures  Understanding socket attributes  Introduction to Raw sockets  Programming apps using Raw sockets  Alternate models for implementing network apps  (Without using Socket APIs)  Use cases & standard Practices 5
  6. 6. Process communication with UNIX domain sockets  Stream sockets in Unix domain  Datagram sockets in Unix domain  Abstract socket namespace Build automation tools  Introduction to build automation  Make tool & Makefiles  Make syntax  Make default rules  Use cases Linux Kernel Internals and Device Drivers Linux kernel programming  Essentials of Linux kernel architecture  Understanding need for kernel programming  Kernel programming models  Modifying kernel sources  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 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 6
  7. 7. Memory allocations  Linux kernel memory subsystem  Memory representation data structures  Memory Allocators  Allocating Boot memory  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 side effects  Device access from u-space Linux net device subsystem  Network driver model  Types of network drivers  Driver hands-on Block driver subsystem  Block device model  ramdisk driver hands-on PCI device drivers  PCI basics  Linux PCI bus stack  PCI device access USB      USB basics Linux USB bus stack USB driver classes Interacting with USB devices from drivers Driver hands-on 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 7
  8. 8. 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 Kernel      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 Embedded Drivers  Linux Driver stack for embedded devices Platform devices Stack I2C stack SPI stack MTD stack 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 U-boot  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 Uboot  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 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 301, Prashanthiram Towers, Saradhi Studio Lane, Ameerpet, Hyderabad Ph:040-66100265 Email: info@techveda.org www.techveda.org 8

×