1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo Cáo Bài Tập Lớn Hệ Điều Hành Đề Tài Viết Driver Cho Keyboard Usb.pdf

34 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ VIỄN THÔNG

-BÁO CÁO

BÀI TẬP LỚN HỆ ĐIỀU HÀNHĐỀ TÀI: VIẾT DRIVER CHO KEYBOARD USB

Giảng viên hướng dẫn: TS Nguyễn Thanh BìnhNhóm: 5

Trang 2

Trong lĩnh vực lập trình hệ thống nhúng, một trong những công việc quan trọngnhất với chúng ta đó chính là lập trình ghép nối, điều khiển các module, các thiết bị ngoạivi ghép nối với hệ trung tâm Để có thể làm được việc này, ngoài các kỹ năng lập trìnhchúng ta còn cần phải thành thạo về các giao thức ghép nối phổ biến như RS232, SPI,I2C và đặc biệt hiện nay nhu cầu tất yếu chúng ta phải tìm hiểu về chuẩn USB vì đây cóthể nói là một trong các chuẩn phổ biến nhất hiện nay Tìm hiểu chuẩn USB sẽ giúp chochúng ta có kiến thức để có thể làm được rất nhiều công việc như: thiết kế, chế tạo thiếtbị hoạt động theo chuẩn USB, viết driver cho thiết bị giao tiếp theo chuẩn USB, lập trìnhghép nối với các thiết bị làm việc theo chuẩn USB,

Cùng với mục đích nghiên cứu, tìm hiểu về hệ điều hành và vận dụng các kiếnthức đã học trên giảng đường nên nhóm em lựa chọn đề tài: “Viết Driver cho KeyBoardUSB”.

Nhóm chúng em xin gửi lời cảm ơn chân thành đến TS Nguyễn Thanh Bình đãhướng dẫn, đưa ra tiến trình tìm hiểu đề tài cụ thể để nhóm chúng em có thể hoàn thànhđược mục tiêu của bài tập lớn Trong quá trình thực hiện đề tài, nhóm chúng em đã cốgắng nhưng không thể tránh khỏi những thiếu sót Chúng em rất mong nhận được chỉ dẫnvà góp ý của các thầy để đề tài ngày càng hoàn thiện hơn.

Chúng em xin chân thành cảm ơn.

Trang 3

1.6.1 Mô tả chuẩn (Standard Descriptions) 9

1.6.2 Human Interface Devices (HID) 10

PHẦN 2: VIẾT DRIVER CHO USB 11

2.1.Kiến trúc của hệ điều hành Linux 11

2.1.1 Linux Kernel 11

2.1.2.Quản lý thiết bị (Device management) 12

2.1.3.Device driver 14

2.1.4.Bus driver 14

2.1.5 Mô hình phân lớp hệ thống USB trên Linux 15

2.2.Quy trình viết driver chung: 16

2.1.1 Định nghĩa mảng bảng mã bàn phím 18

2.3.2 Khai báo danh sách các thiết bị có thể được điều khiển bởi Driver 20

2.3.3 Khai báo cấu trúc dữ liệu liên quan tới thiết bị 20

2.3.4 Xử lý yêu cầu ngắt 21

2.3.5 Hàm mở thiết bị USB 24

2.3.6 Hàm tắt thiết bị USB 24

Trang 4

2.3.12 Khai báo cấu trúc của driver 28

2.3.13 Hàm đăng ký và hàm hủy đăng ký module 28

PHẦN 3: KẾT QUẢ 30

TÀI LIỆU THAM KHẢO 33

2

Trang 5

DANH MỤC HÌNH ẢNH

Hình 1: Đầu USB và cổng cắm USB 4

Hình 2: Chuẩn tín hiệu USB 5

Hình 3: Mô hình mạng của các thiết bị hoạt động theo chuẩn USB 5

Hình 4: Mô tả thiết bị USB 9

Hình 5: Kiến trúc của hệ điều hành 11

Hình 6: Kiến trúc của Linux kernel 11

Hình 7: Tương tác giữa thiết bị và driver 13

Hình 8: Sơ đồ hoạt động Driver trong Linux 15

Hình 9: Bảng mã scan code 19

Hình 10: Kết quả make file 31

Hình 11: Thông tin của module 31

Hình 12: Quá trình đăng ký của module 31

Hình 13: Hủy liên kết với driver usbhid và liên kết với driver usbkbd 32

Hình 14: Gỡ driver usbhid mặc định 32

Trang 6

PHẦN 1: TỔNG QUAN VỀ USB

1.1 Giới thiệu về USB

USB (Universal Serial Bus) là một chuẩn kết nối có dây trong máy tính, sử dụngnhằm kết nối giữa các điểm kỹ thuật của máy tính với các thiết bị ngoại vi Vào cuối năm1994 đã được đề xuất bởi Intel, Compaq, IBM, Microsoft và các công ty khác Bây giờ,USB trở thành một giao diện mở rộng máy tính tiêu chuẩn của thế kỷ XXI và phiên bản3.1 đã được tung ra thị trường.

USB có thể kết nối với 127 thiết bị bên ngoài mà không làm giảm băng thông.USB đòi hỏi sự hỗ trợ của phần cứng máy chủ, hệ điều hành và thiết bị ngoại vi để làmviệc đúng cách Giao diện USB cũng có thể đạt được kết nối hai máy tính thông qua cápchuyên dụng và tạo ra giao diện bổ sung nhiều hơn thông qua Hub Nó có nhiều tính năngnhư tốc độ truyền tải nhanh, sử dụng thuận tiện, dễ tháo lắp, kết nối linh hoạt, cung cấpđiện độc lập, …Nó đóng một vai trò quan trọng trong việc kết nối máy tính với gần nhưtất cả các thiết bị bên ngoài, chẳng hạn như chuột, bàn phím, máy in, máy quét, máy ảnh,sạch, MP3, điện thoại di động, máy ảnh kỹ thuật số, …

Hình 1: Đầu USB và cổng cắm USB

4

Trang 7

1.2 Chuẩn tín hiệu

Chuẩn USB sử dụng 4 đường tín hiệu trong đó có 2 đường cấp nguồn DC 5V và GND) 2 đường còn lại là một cặp tín hiệu vi sai (D+ và D-) cho phép truyền dữliệu Cặp dây tín hiệu này được nối xoắn ở bên trong nên có khả năng chống nhiễu tốt.

(VBUS-Lưu ý: cổng USB trên máy tính cho phép cấp nguồn nuôi ra bên ngoài với dònglên tới 500mA Như vậy, các thiết bị sử dụng ít điện năng như chuột, thẻ nhớ USB đềucó thể lấy trực tiếp nguồn từ cổng USB của máy tính mà không cần dùng thêm nguồnngoài.

Hình 2: Chuẩn tín hiệu USB

1.3 Mô hình mạng

Các thiết bị hoạt động theo chuẩn USB được kết nối với nhau theo đồ hình mạnghình sao phân cấp Trung tâm của mỗi hình sao này là các Hub Các thiết bị USB đượcchia làm 3 loại chính: USB Host, USB Bus, USB Hub.

Hình 3: Mô hình mạng của các thiết bị hoạt động theo chuẩn USB

Trang 8

USB Host: thiết bị đóng vai trò điều khiển toàn bộ mạng USB (có thể lên tới tối

đa 126 thiết bị) Ví dụ như trên máy tính, USB Host được gắn trên mainboard Để giaotiếp và điều khiển các USB device, USB Host controller cần được thiết kế tích hợp vớiUSB RootHub (Hub mức cao nhất) Vai trò của thiết bị USB Host như sau:

Trao đổi dữ liệu với các USB Device.Điều khiển USB Bus.

Quản lý các thiết bị cắm vào hay rút ra khỏi Bus USB qua quá trình điểm danh(Enumeration).

Phân xử, quản lý luồng dữ liệu trên Bus, đảm bảo các thiết bị đều có cơ hội traođổi dữ liệu tùy thuộc vào cấu hình của mỗi thiết bị.

Ngày nay bộ điều khiển máy chủ USB được tích hợp trên hầu hết các chipset bomạch chủ Các bo mạch cũ không được trang bị bộ điều khiển như vậy có thể được nângcấp bằng PCI cards với các bộ điều khiển máy chủ đó Tất cả các bộ điều khiển nàytương thích với tiêu chuẩn Open Host Controller Interface (OHCI của Compaq, Microsoftvà National Semiconductor) hoặc Universal Host Controller Interface (UHCI by Intel[7]) Cả hai loại đều có khả năng tương đương nhau và thiết bị USB không phải quantâm đến bộ điều khiển máy chủ Về cơ bản phần cứng của UHCI đơn giản hơn và do đónó cần driver phức tạp hơn, có thể khiến CPU quá tải.

USB Device: là các thiết bị đóng vai trò như các slave giao tiếp với USB Host.

Các thiết bị này hoàn toàn đóng vai trò bị động, không bao giờ được tự ý gửi gói tin lênUSB Host hay gửi gói tin giữa các USB Device với nhau, tất cả đều phải thông qua quátrình điều phối của USB Host Chức năng của thiết bị USB Device như sau:

Trao đổi dữ liệu với USB Host

Phát hiện gói tin hay yêu cầu từ USB Host theo giao thức USB.

Có nhiều loại thiết bị USB khác nhau vì chúng có thể được sử dụng cho nhữngmục đích khác nhau Đầu tiên, một thiết bị có thể tự cấp nguồn, chạy bằng nguồn bushoặc cả hai USB có thể tự cấp nguồn điện lên tới 500mA cho các thiết bị của nó Nếu chỉcó các thiết bị chạy bằng nguồn bus, sự tiêu hao năng lượng tối đao có thể bị vượt quá vàdo đó cần phải có các thiết bị cấp nguồn Chúng cần phải có nguồn cung cấp năng lượngriêng Các thiết bị hỗ trợ cả hai loại nguồn có thể chuyển sang chế độ tự cấp nguồn khigắn nguồn điện bên ngoài.

6

Trang 9

Ngay cả tốc độ giao tiếp tối đa cũng có thể khác nhau đối với từng thiết bị USB cụthể Thông số kĩ thuật USB quyết định giữa các thiết bị tốc độ thấp và tốc độ cao Cácthiết bị tốc độ thấp (như chuột, bàn phím, cần điều khiển, …) giao tiếp với tốc độ1,5Mbit/s với khả năng hạn chế Các thiết bị tốc độ cao (như hệ thống âm thanh và video)có thể sử dụng tới 90% tốc độ 12Mbit/s, tức là khoảng 10Mbit/s bao gồm cả chi phí giaothức.

USB Hub: đóng vai trò như các Hub trong mạng Ethernet của chúng ta Cấp

nguồn cho các thiết bị USB Về mặt vật lí tồn tại một số cổng USB ở bảng điều khiểnphía sau của máy tính Các cổng này có thể được sử dụng để gắn các thiết bị thôngthường hoặc một hub Hub là một thiết bị USB giúp mở rộng số lượng cổng (2-8) để kếtnối các thiết bị USB khác Số lượng thiết bị có thể gắn tối đa được giảm theo số lượnghub trên từng bus Hub là thiết bị tự cấp nguồn/chạy bằng nguồn bus tốc độ cao.

Thông thường, các cổng vật lí của bộ điều khiển máy chủ được xử lý bởi mộtvirtual root hub Hub này được mô phỏng bởi driver của trình điều khiển thiết bị giúpthống nhất cấu trúc liên kết bus Vì vậy, mọi cổng có thể được xử lý theo cùng một cáchbởi driver của hệ thống con USB

1.4 Quá trình hoạt động của chuẩn USB

Quá trình hoạt động của chuẩn USB được chia làm hai giai đoạn chính:

Quá trình điểm danh: là quá trình USB Host phát hiện các thiết bị cắm vào (Plugin) hoặc rút ra (Plug out) khỏi đường USB Bus Mỗi khi một thiết bị tham gia vào BusUSB, USB Host sẽ tiến hành (Detect device) đọc các thông tin mô tả (description) củaUSB Device, từ đó thiết lập địa chỉ (NodeID) và chế độ hoạt động tương ứng cho thiết bịUSB Device Các địa chỉ sẽ được đánh từ 1->126 nên về lý thuyết, chuẩn USB cho phépkết nối 126 thiết bị vào đường Bus Khi thiết bị rút ra khỏi đường Bus, địa chỉ này sẽđược thu hồi.

Quá trình truyền dữ liệu: để hiểu quá trình truyền dữ liệu này, chúng ta phải hiểuđược hai khái quan trọng nhất trong chuẩn USB, đó là khái niệm Interface và Endpoint(chỉ thiết bị USB device mới có Endpoint, USB Host không có Endpoint) Một thiết bịUSB sẽ có thể có nhiều Interface, một Interface có thể sử dụng nhiều Endpoint VD: Thẻnhớ USB chỉ sử dụng 1 Interface theo chuẩn USB Mass storage, interface này sử dụng 3Endpoint Bộ USB 3G sử dụng các Interface khác nhau như: CD Room, Mass storage vàCommunication, mỗi interface lại sử dụng nhiều Endpoint khác nhau.

Trang 10

Như vậy, đứng ở góc độ mức hệ thống, các Interface chính là các dịch vụ khácnhau mà thiết bị đó cung cấp còn các Endpoint chính là các cổng cần thiết cho mỗi dịchvụ Tương ứng với khái niệm trong kiến trúc TCP/IP, ví dụ giao thức FTP là giao thức sửdụng để truyền file sẽ sử dụng hai cổng 20,21 Trong khi đó giao thức HTTP lại sử dụngport 80, giao thức Telnet sử dụng port 23.

Thực tế các Endpoint cũng như các Port trong chuẩn TCP/IP đóng vai trò như cácbộ đệm truyền/nhận dữ liệu Nhờ việc sử dụng nhiều bộ đệm mà các quá trình truyềnthông được tiến hành song song và cho tốc độ cao hơn, bên cạnh đó giúp cho việc phântách các dịch vụ khác nhau Với chuẩn USB, các thiết bị được thiết kế với tối đa là 16Enppoint Các Endpoint được phân loại theo hướng truyền dữ liệu nhìn từ phía USBHost Cụ thể:

Các Endpoint truyền dữ liệu từ USB Device tới USB Host là endpoint INCác Endoint truyền dữ liệu từ USB Host tới USB Device là endpoint OUTĐề truyền được dữ liệu theo chuẩn USB, các thiết bị USB Device phải được kếtnối với USB Host thông qua các Pipe (đường ống) Mỗi Pipe sẽ nối một Endpoint củaUSB Device với USB Host.

1.5 Chế độ truyền

Chuẩn USB cung cấp cho chúng ta tổng cộng là 4 chế độ truyền, đáp ứng nhiềumục đích khác nhau tùy thuộc vào cơ chế truyền cũng như tốc độ mà người thiết kế mongmuốn.

Truyền điều khiển (Control transfer): là chế độ truyền được tất cả các thiết bị

USB hỗ trợ để truyền các thông tin điều khiển với tốc độ tương đối chậm.

Truyền ngắt (Interrupt transfer): sử dụng cho các thiết bị cần truyền một lượng dữ

liệu nhỏ, tuần hoàn theo thời gian ví dụ như chuột, bàn phím Khi đó, ví dụ cứ 10s mộtlần USB Host sẽ gửi request xuống và USB Device sẽ trả dữ liệu về cho USB Host (vớitrường hợp Interrupt In Endpoint).

Truyền theo khối (Bulk transfer): sử dụng cho các thiết bị cần truyền một lượng

dữ liệu lớn, yêu cầu độ chính xác tuyệt đối, không có ràng buộc quá chặt chẽ về thời gianthực ví dụ như thẻ nhớ USB, máy in Cái này tương tự như giao thức TCP trong mạngEthernet

Truyền đẳng thời (Isochronos transfer): sử dụng cho các thiết bị cần truyền một

lượng dữ liệu lớn với tốc độ rất nhanh, đảm bảo ràng buộc về thời gian thực tuy nhiên8

Trang 11

chấp nhận hy sinh độ chính xác ở một mức nhất định như các thiết bị nghe nhạc, xemphim kết nối theo chuẩn USB Chuẩn này tương tự giao thức UDP trong mạng Ethernet.

1.6 Mô tả thiết bị

Bất cứ khi nào một thiết bị USB được gắn vào bus, nó sẽ được liệt kệ bởi hệ thốngcon USB – tức là một số thiết bị được gán và sau đó thiết bị mô tả sẽ đọc Một thiết bị môtả như vậy là một cấu trúc dữ liệu chứa thông tin về thiết bị và các thuộc tính của thiết bị.Tiêu chuẩn USB xác định hệ thống phân cấp của các mô tả.

Hình 4: Mô tả thiết bị USB

1.6.1 Mô tả chuẩn (Standard Descriptions)

Device Descriptor: mô tả thông tin chung của các thiết bị USB Nó bao gồm tất cảthông tin và cấu hình của thiết bị Một thiết bị USB chỉ có 1 mô tả thiết bị.

Configuration Descriptor (Bộ mô tả cấu hình): cung cấp thông tin cấu hình củamột thiết bị cụ thể Một thiết bị USB có một hoặc nhiều cấu hình Mỗi cấu hình cómột hoặc nhiều interface và mỗi interface có thể có 0 hoặc nhiều endpoint.Endpoint có thể được chia sẻ giữa các giao diện là một phần của các cấu hình khácnhau mà không có hạn chế

Trang 12

Interface Description (Bộ mô tả giao diện): mô tả một giao diện cụ thể trong cấuhình Một cấu hình cung cấp một hoặc nhiều interface, mỗi giao diện có 0 hoặcnhiều endpoint mô tả một tập hợp các endpoint trong cấu hình

Entpoint Descriptor (Bộ mô tả endpoint): chứa thông tin theo yêu cầu của máy chủlưu trữ xác định các yêu cầu băng thông của từng endpoint Một endpoint biểu thịcho nguồn dữ liệu logic hoặc bộ góp của thiết bị USB Endpoint 0 được sử dụngcho tất cả cả các lần truyền điều khiển tiêu chuẩn và không bao giờ có mô tả choendpoint này

String Descriptor (Bộ mô tả chuỗi): là tùy chọn và cung cấp thông tin bổ sung ởđịnh dạng Unicode có thể đọc được Chúng có thể được sử dụng cho tên nhà cungthiết bị hoặc số seri.

1.6.2 Human Interface Devices (HID)

Lớp HID bao gồm chủ yếu các thiết bị được con người sử dụng để điều khiển hoạtđộng của các hệ thống máy tính Ví dụ điển hình của các thiết bị lớp HID bao gồm:

Bàn phím và thiết bị trỏ, thiết bị chuột, cần điều khiển, …Bảng điều khiển phía trước: núm, công tắc, nút, thanh trượt, …

Các điều khiển có thể được tìm thấy trên các thiết bị như: điện thoại, điều khiển từxa, trò chơi hoặc thiết bị mô phỏng như: găng tay, vô lăng, bàn đạp bánh lái, …

10

Trang 13

PHẦN 2: VIẾT DRIVER CHO USB

2.1.Kiến trúc của hệ điều hành Linux

Hình 5: Kiến trúc của hệ điều hành

- Kernel: Đây là phần quan trọng và được ví như trái tim của hệ điều hành,phần kernel chứa các module, thư viện để quản lý và giao tiếp với phần cứng vàcác ứng dụng

- Shell: Shell là một chương trình có chức năng thực thi các lệnh từ ngườidùng hoặc từ các ứng dụng - tiện ích yêu cầu chuyển đến cho Kernel xử lý.

- Applications: Là các ứng dụng và tiện ích mà người dùng cài đặt trênServer Ví dụ: ftp, samba, Proxy, …

2.1.1 Linux Kernel

Hình 6: Kiến trúc của Linux kernel

Trang 14

Dựa vào chức năng của hệ điều hành, Linux Kernel chia thành 6 thànhphần:

Process Management: có nhiệm vụ quản lý tiến trình Memory Management: có nhiệm vụ quản lý bộ nhớ Device Management: có nhiệm vụ quản lý thiết bị

File system Management: quản lý dữ liệu trên thiết bị lưu trữ (ổ cứng) Network Management: quản lý gói tin theo mô hình TCP/IP

System call interface: cung cấp dịch vụ sử dụng phần cứng cho các tiếntrình

2.1.2.Quản lý thiết bị (Device management) a Định nghĩa Driver:

Máy tính có 2 phần cơ bản: phần cứng và phần mềm Để kết nối phần cứngvà phần mềm người ta cần 1 “cầu nối”, đó chính là driver Driver là môi trườngcho phép các chương trình máy tính, hệ điều hành và các ứng dụng khác tương tácvới một thiết bị phần cứng Ví dụ, một chiếc máy tính đơn thuần không thể biếtcách làm thể nào để sử dụng toàn bộ tính năng của card video – nó cần một driverđể làm điều đó.

Các thiết bị phần cứng mà hệ điều hành không xác định hoặc có các tínhnăng mà hệ điều hành không xác định được đều yêu cầu driver Tùy thuộc vào từngloại thiết bị cũng như mục đích sử dụng, ta có một số driver quan trọng với hệ điềuhành như sau:

- Driver âm thanh: hỗ trợ cho âm thanh và loa của máy tính.

- Driver Bios: là hệ thống đầu vào đầu ra giúp hỗ trợ các bo mạch chủ của máy tính.- Driver Chipset (Intel Chipset driver): giúp vi xử lý hoạt động nhanh hơn, tốt hơn.- Driver Graphics (Graphics driver): đây là driver đối với màn máy tính.

- Driver Mouse and Keyboard: giúp hỗ trợ chuột và bàn phím của máy tính.- Driver mạng (LAN driver): giúp hỗ trợ cho mạng dây.

- Driver WiFi (Wireless driver): giúp máy tính kết nối WiFi hoạt động tốt.- Driver camera (camera driver): giúp hỗ trợ chụp ảnh trên máy tính.

Tóm lại, driver giúp các chương trình và phần cứng giao tiếp được với nhau.Cũng như các chương trình máy tính cần có các bản cập nhật và gói dịch vụ để sửalỗi, bổ sung thêm tính năng mới… driver cần được cập nhật thường xuyên.

12

Trang 15

Hình 7: Tương tác giữa thiết bị và driver

Các device controller thông thường được kết nối với CPU thông qua đườngbus (PCI, IDE, USB, SPI, …) Trong vi điều khiển, CPU và các device controllerthường được thiết kế trên một chip Điều này cho phép giảm kích thước và giáthành, phù hợp với phát triển hệ thống nhúng Mà về mặt nguyên tắc, sẽ không cógì khác biệt đối lớn đối với các driver trên các hệ thống máy tính cá nhân.

Trang 16

2.1.3.Device driver

Các bus driver cung cấp giao diện đặc tả cho các giao thức phần cứng tươngứng Nó nằm ở tầng dưới cùng trong mô hình phân lớp phần mềm của hệ điềuhành Nằm trên nó là các device driver thực sự để vận hành các thiết bị, mang đặctrưng của từng thiết bị xác định Ngoài ra, mục đích quan trọng của các driver thiếtbị là cung cấp một giao diện trừu tường hóa cho người sử dụng, tức là cung cấpmột giao diện lên tầng trên của hệ điều hành Một cách tổng quan, một driver sẽbao gồm 2 phần quan trọng: a) giao tiếp với thiết bị (Device-specific) b) giao tiếpvới hệ điều hành (OS-specific)

- OS specific: Thành phần này cung cấp cho hệ điều hành các dịch vụđọc/ghi dữ liệu của thiết bị Điều này cho phép chúng ta xây dựng hệ điều hành độclập với cấu trúc của thiết bị

- Device specific: Thành phần này chứa các lệnh hướng dẫn CPU điều khiểnthiết bị, giám sát thiết bị, trao đổi dữ liệu với thiết bị Thành phần này chứa cáclệnh hướng dẫn CPU điều khiển thiết bị, giám sát thiết bị, trao đổi dữ liệu với thiếtbị Chúng ta sử dụng datasheet của thiết bị để xây dựng thành phần này Datasheetlà một tài liệu được cung cấp bởi nhà sản xuất thiết bị Nó mô tả sơ đồ khối chứcnăng, nguyên lý hoạt động, hiệu suất hoạt động, đặc tính điện của thiết bị và đặcbiệt là bản đồ thanh ghi (register map)

2.1.4.Bus driver

Bus driver cung cấp interface thể hiện cho các phần cứng tương ứng Nónằm ở tầng cuối cùng trong mô hình phân lớp hệ điều hành Dưới bus driver làhardware và trên nó là device driver

Bus driver gồm 2 phần:

- Protocol abstraction: Thành phần này che giấu đi sự phức tạp của các giaothức trên bus, cung cấp các dịch vụ cho device driver sử dụng Ví dụ như đọc/ghimột thanh ghi nào đó của thiết bị

- Protocol specific: Thành phần này chứa các lệnh hướng dẫn CPU làm việcvới bộ điều khiển, giúp đọc/ghi dữ liệu trên bus Nó cũng được xây dựng dựa trêndatasheet của bộ điều khiển

15

Trang 17

2.1.5 Mô hình phân lớp hệ thống USB trên Linux

Khi có một thiết bị usb hợp lệ được cắm vào hệ thống Linux, cho dù nó códriver hay không thì nó cũng vẫn được nhận diện (detect) bởi phần cứng ở tầngnhân (kernel space) của hệ thống Linux mà đã được hỗ trợ giao thức usb Hệ thốngcó thể làm điều này là bởi vì khả năng của chính bản thân giao thức usb đã đượcthiết kế trong đặc tả của nó Cụ thể, việc phát hiện ra thiết bị usb cắm vào đượcthực hiện bởi chip usb host controller (là thiết bị chủ động đường bus của giao thứcusb) USB host controller này sẽ thu thập và diễn giải các thông tin ở tầng vật lý(low-level) đến các thông tin đặc tả giao thức USB ở tầng trên (high-level) Cácthông tin về thiết bị theo khuôn dạng qui định của giao thức USB lại tiếp tục đượcđưa vào tầng usb core tổng quát (generic usb core) trong tầng nhân (được điềukhiển bởi usbcore driver) Chính điều này giúp cho các thiết bị usb được hệ thốngnhận diện ở tầng nhân, mặc dù nó có thể chưa có một driver cụ thể nào cho chứcnăng của nó.

Sau quá trình diễn ra ở tầng nhân này, sẽ đến nhiệm vụ của các drivers hoặcinterfaces hoặc applications (cái mà phụ thuộc vào các bản Linux khác nhau) đểtiếp tục nhận dạng ra thiết bị ở tầng người dùng.

Hình 8: Sơ đồ hoạt động Driver trong Linux

Ngày đăng: 13/06/2024, 09:28

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN