Linux Driver and Embedded Developer

Similar documents
LINUX INTERNALS & NETWORKING Weekend Workshop

Linux Kernel Architecture

Software Development & Education Center

Kernel Internals. Course Duration: 5 days. Pre-Requisites : Course Objective: Course Outline

LINUX DEVICE DRIVERS Weekend Workshop

VEOS high level design. Revision 2.1 NEC

Software Development & Education Center

Here to take you beyond. ECEP Course syllabus. Emertxe Information Technologies ECEP course syllabus

Module 12: I/O Systems

Dr. Rafiq Zakaria Campus. Maulana Azad College of Arts, Science & Commerce, Aurangabad. Department of Computer Science. Academic Year

Module 12: I/O Systems

Chapter 13: I/O Systems

ECE 574 Cluster Computing Lecture 8

Design Overview of the FreeBSD Kernel CIS 657

CS 326: Operating Systems. Process Execution. Lecture 5

Operating Systems. II. Processes

Design Overview of the FreeBSD Kernel. Organization of the Kernel. What Code is Machine Independent?

QUESTION BANK UNIT I

Short Term Courses (Including Project Work)

Embedded Linux Architecture

Lecture 15: I/O Devices & Drivers

Chapter 13: I/O Systems

Chapter 13: I/O Systems. Chapter 13: I/O Systems. Objectives. I/O Hardware. A Typical PC Bus Structure. Device I/O Port Locations on PCs (partial)

CIS 21 Final Study Guide. Final covers ch. 1-20, except for 17. Need to know:

Chapter 13: I/O Systems

I/O Systems. Amir H. Payberah. Amirkabir University of Technology (Tehran Polytechnic)

Subject: Operating System (BTCOC403) Class: S.Y.B.Tech. (Computer Engineering)

I/O AND DEVICE HANDLING Operating Systems Design Euiseong Seo

CL020 - Advanced Linux and UNIX Programming

Community Enterprise Operating System (CentOS 7) Courses

CSE 4/521 Introduction to Operating Systems. Lecture 29 Windows 7 (History, Design Principles, System Components, Programmer Interface) Summer 2018

The control of I/O devices is a major concern for OS designers

Linux Operating System

CS 5523 Operating Systems: Midterm II - reivew Instructor: Dr. Tongping Liu Department Computer Science The University of Texas at San Antonio

CSE 451: Operating Systems Winter I/O System. Gary Kimura

Threads. Thread Concept Multithreading Models User & Kernel Threads Pthreads Threads in Solaris, Linux, Windows. 2/13/11 CSE325 - Threads 1

Outline Background Jaluna-1 Presentation Jaluna-2 Presentation Overview Use Cases Architecture Features Copyright Jaluna SA. All rights reserved

Chapter 13: I/O Systems

Timers 1 / 46. Jiffies. Potent and Evil Magic

Chapter 13: I/O Systems. Operating System Concepts 9 th Edition

Embedded Linux kernel and driver development training 5-day session

Device-Functionality Progression

Chapter 12: I/O Systems. I/O Hardware

Chapter 4: Threads. Operating System Concepts. Silberschatz, Galvin and Gagne

(MCQZ-CS604 Operating Systems)

EMBEDDED LINUX ON ARM9 Weekend Workshop

Process Monitoring in Operating System Linux

CSC 4320 Test 1 Spring 2017

PROCESSES & THREADS. Charles Abzug, Ph.D. Department of Computer Science James Madison University Harrisonburg, VA Charles Abzug

Mid Term from Feb-2005 to Nov 2012 CS604- Operating System

CSI3131 Final Exam Review

Operating System Architecture. CS3026 Operating Systems Lecture 03

Chapter 13: I/O Systems

Process Description and Control

Process Concepts. CSC400 - Operating Systems. 3. Process Concepts. J. Sumey

POSIX Threads: a first step toward parallel programming. George Bosilca

Operating Systems Overview. Chapter 2

GLOSSARY. VisualDSP++ Kernel (VDK) User s Guide B-1

Operating System: Chap13 I/O Systems. National Tsing-Hua University 2016, Fall Semester

Chapter 13: I/O Systems

CS A320 Operating Systems for Engineers

Department of Computer Science and Technology

Native POSIX Thread Library (NPTL) CSE 506 Don Porter

Embedded System Curriculum

UNIT I Linux Utilities

INSTITUTE OF AERONAUTICAL ENGINEERING (Autonomous) Dundigal, Hyderabad

RTOS Real T i Time me Operating System System Concepts Part 2

For use by students enrolled in #71251 CSE430 Fall 2012 at Arizona State University. Do not use if not enrolled.

3.1 Introduction. Computers perform operations concurrently

CS 333 Introduction to Operating Systems. Class 3 Threads & Concurrency. Jonathan Walpole Computer Science Portland State University

PG Certificate. Embedded, Internet Of Things & Android

Chapter 13: I/O Systems

ZiLOG Real-Time Kernel Version 1.2.0

- Knowledge of basic computer architecture and organization, ECE 445

Operating System(16MCA24)

Motivation. Threads. Multithreaded Server Architecture. Thread of execution. Chapter 4

Chapter 12: I/O Systems

Chapter 13: I/O Systems

Chapter 12: I/O Systems. Operating System Concepts Essentials 8 th Edition

by I.-C. Lin, Dept. CS, NCTU. Textbook: Operating System Concepts 8ed CHAPTER 13: I/O SYSTEMS

Asynchronous Events on Linux

Operating Systems: William Stallings. Starvation. Patricia Roy Manatee Community College, Venice, FL 2008, Prentice Hall

Chapter 13: I/O Systems

2 nd Half. Memory management Disk management Network and Security Virtual machine

Module 20: The Linux System

CPSC/ECE 3220 Fall 2017 Exam Give the definition (note: not the roles) for an operating system as stated in the textbook. (2 pts.

Operating Systems (2INC0) 2018/19. Introduction (01) Dr. Tanir Ozcelebi. Courtesy of Prof. Dr. Johan Lukkien. System Architecture and Networking Group

ECE 550D Fundamentals of Computer Systems and Engineering. Fall 2017

INSTITUTE OF AERONAUTICAL ENGINEERING (Autonomous) Dundigal, Hyderabad

CS 450 Operating System Week 4 Lecture Notes

KINGS COLLEGE OF ENGINEERING DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING ACADEMIC YEAR / ODD SEMESTER

THE AUSTRALIAN NATIONAL UNIVERSITY Mid-semester Quiz, Second Semester COMP2310 (Concurrent and Distributed Systems)

Chapter 15: The Linux System

Chapter 15: The Linux System. Operating System Concepts Essentials 8 th Edition

I/O Systems. Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University

REAL TIME OPERATING SYSTEM PROGRAMMING-I: VxWorks

PROCESS MANAGEMENT Operating Systems Design Euiseong Seo

Zilog Real-Time Kernel

Mon Sep 17, 2007 Lecture 3: Process Management

Module 22: The Linux System

Transcription:

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

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, UTC- FS, 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

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 Understanding compile & build process Tool chain Object file analysis Executable Images Binary Portability Exploring object files Need for understanding object files Introduction to the Binary File Formats (ELF, COFF, XCOFF). Understanding ELF file format Inspecting object files Extracting sections from object files Converting executable to other formats (srec, ihex, binary) Use cases Exploring Linkers and Build process Build process defined Role of Build scripts in build process Build script syntax Need to modify Build scripts Use cases & standard practices Libraries Introduction to libraries Creating Static Libraries Creating Shared Libraries Using Libraries Managing dynamic libraries Use cases & standard practices Process management Introduction to program loading Process, defined Understanding process address space. Kernel process descriptor. Accessing kernel process descriptor information Introduction to Linux Process scheduler Scheduling policies & priorities Process scheduling for multi/many core systems Process affinity Linux process privileges Introduction to process resource limits Use cases & standard practices Stack Analysis Introduction to stack Understanding how stack grows and shrinks Understanding how function parameters are passed. Understanding how stack frames are created and destroyed. 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

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

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

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

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

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 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 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 U- boot Kernel 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 Embedded Drivers Linux Driver stack for embedded devices Platform devices Stack I2C stack SPI stack MTD stack 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