Linux Device Driver Overview¶
Tài liệu này mô tả các khái niệm chung về Linux Device Driver. Cần có các bài tìm hiểu chuyên sâu về các mục trong phần này.
Linux System Overview¶
Linux Device Model¶
Các thiết bị kết nối đến CPU được gọi là Device. Mỗi device này cung cấp các tài nguyên khác nhau đến người dùng, Linux kernel thông qua device driver để giao tiếp đến device và sử dụng các tài nguyên của device đó.
Các device kết nối đến CPU bằng một bus. Nó có thể là các bus giao tiếp với thiết bị ngoại vi như SPI, I2C, hoặc cũng có thể là system bus của hệ thống. Lưu ý rằng Linux Kernel cũng nhìn bus giống như một device và tất nhiên device thì cần phải được khai báo. Do đó Linux Kernel cũng cung cấp các quy trình để đăng ký một bus với hệ thống.
Trong quá trình khởi động, dựa vào thông tin mà device-tree cung cấp về các device trong hệ thống, Linux Kernel gọi đến các device driver tương ứng để dò tìm và thêm thiết bị vào hệ thống.
Platform device là các device đầu tiên được dò tìm và thêm vào hệ thống, được quản lý trực tiếp trong vùng nhớ của CPU qua platform bus. Chi tiết xem tại Platform Device.
Kernel Module¶
Kernel Module là đoạn mã có thể cài đặt hoặc gỡ khỏi kernel theo yêu cầu mà
không cần khởi động lại hệ thống; Device Driver là một loại kernel module.
Chi tiết về định nghĩa, module_init/module_exit, in log, cài đặt (LKM) và
build module xem tại Kernel Module.
Character Device Driver¶
Device Driver là một kernel module giao tiếp trực tiếp với phần cứng và cung
cấp giao diện cho user space. Trong LDD3, driver chia làm 3 loại: char, block
và network module. Chi tiết về character device (device file, major/minor,
cdev, file_operations, mutex, mmap, ioctl) xem tại
Character Device Driver.
Giao tiếp với phần cứng¶
Việc giao tiếp với phần cứng trong hệ nhúng phụ thuộc vào loại thiết bị.
Với platform_device (struct resource, platform_get_resource...) xem tại
Platform Device.

