مقدمه

دایور ها نقش های مختلفی را در یک سیستم عامل بازی می کنند. از ارتباط با سخت افزارهای رایانه گرفته تا کاربردهای نرم افزاری. درایور ها به سیستم عامل این امکان را می دهند که بدون دانستن ساختار سخت افزاری دستگاه متصل شده بتواند با آن کار کند و از منابعش استفاده کند. در حقیقت درایور ها را می تواند به مترجمی تشبیه کرد که واسط میان سخت افزار دستگاه متصل شده و نرم افزار و یا سیستم عاملی است که از آن استفاده می کند. دستگاه هایی نظیر انواع پرینترها، کارت های ویدیویی، کارت های شبکه، انواع دستگاه های ذخیره‌سازی داده، دوربین ها و همچنین انواع دستگاه های سریال اشاره کرد.

در این دوره هدف بر آن است تا دانشجو را با تهیه و راه اندازی درایور ها در محیط لینوکس آشنا کرد. درایور ها در دو مد کرنل و کاربر طبقه بندی می‌شوند که درباره آن توضیح داده خواهد شد. همچنین دانشجویان با انواع مختلف دیوایس درایور ها آشنا خواهند شد و خواهند توانست دیوایس درایور مخصوص خود را بنویسند و از آن استفاده کنند.

 

محتوا: مقدمات کرنل لینوکس، آشنایی با نحوه‌ی کار با حافظه و منابع سیستم، آشنایی با انواع درایور ها، آشنایی با تعامل با درایورها.

هدف: پیاده سازی قدم به قدم انواع درایور ها در لینوکس با مثال های عملی.

مدت دوره: 24 ساعت

پیش نیاز: دوره Developing Applications For Linux

مدرس: مهندس حسینی مقدم

  1. An Introduction to Device Drivers
  2. Building and Running Modules
    • Kernel Space and User Space
    • Compiling and Loading Modules
    • Dependencies
    • Kernel Symbol Table
    • Cleanup function
  3. Char Drivers
    • Useful Data Structures
    • File and inode Structure
    • Char Device registration
    • Read and write
  4. Debugging Techniques
    • Debugging Support in kernel
    • Debugging by printing
    • Debugging by Querying
    • Debugging System faults
  5. Concurrency and Race Conditions
    • Semaphores and Mutexes
    • Reader / Writer Semaphore
    • Spinlock
  6. Advanced Char Driver Operations
    • Ioctl
    • Device Control
    • Blocking I/O
    • Sleeping
    • Asynchronous Notification
    • Access Control on a device file
  7. Time, Delays, and Deferred Work
    • Time measurement
    • Process Specific registers
    • Delaying Execution
    • Kernel Timers
    • Tasklets
    • Workqueues
  8. Allocating Memory
    • Kmalloc
    • Caches
    • Memory Pools
    • Buffers
  9. Communicating with Hardware
    • I/O ports and Memory
    • Parallel port
    • A sample driver
  10. Interrupt Handling
    • Interrupt handler
    • IRQ Number
    • Implementing a Handler
    • Interrupt Sharing
    • Interrupt Driven I/O
  11. Data Types in the Kernel
    • Standard C type
    • Interface Specific Types
    • Linked Lists
  12. PCI Drivers
    • PCI Interface
    • PCI Interrupts
    • ISA
  13. USB Drivers
    • USB Device Basics
    • Writing a USB Driver
    • probe and disconnect
    • USB Transfers Without Urbs
  14. The Linux Device Model
    • Kobjects, Ksets, and Subsystems
    • Low-Level Sysfs Operations
    • Hotplug Event Generation
    • Buses, Devices, and Drivers
    • Classes
    • Dealing with Firmware
  15. Memory Mapping and DMA
    • Memory Management in Linux
    • Virtual Memory Areas
    • Memory Map
    • Performing Direct I/O
    • Asynchronous I/O
    • Direct Memory Access
  16. Block Drivers
    • Registration
    • The Block Device Operations
    • Request Processing
    • The Anatomy of a Request
    • Request Completion Functions
  17. Network Drivers
    • Assigning IP Numbers
    • Connecting to the Kernel
    • Module Unloading
    • Packet Transmission
    • Transmission Timeouts
    • Packet Reception
    • The Socket Buffer
  18. TTY Drivers
    • TTY Line Settings
    • A Sample Driver