Tải bản đầy đủ (.pdf) (34 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.02 MB, 34 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

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

<b>VIỆN ĐIỆN TỬ VIỄN THÔNG</b>

<b>---BÁO CÁO </b>

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

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

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="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ể hồ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.

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

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

1.6.2. Human Interface Devices (HID)...10

<b>PHẦN 2: VIẾT DRIVER CHO USB...11</b>

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

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="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

<b>PHẦN 3: KẾT QUẢ...30</b>

<b>TÀI LIỆU THAM KHẢO...33</b>

2

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>DANH MỤC HÌNH ẢNH</b>

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: Q 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

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>PHẦN 1: TỔNG QUAN VỀ USB</b>

<b>1.1. Giới thiệu về USB</b>

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 ngồ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ố, …

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

4

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b>1.2. Chuẩn tín hiệu</b>

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 ni ra bên ngồ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ồnngồi.

<b>Hình 2: Chuẩn tín hiệu USB</b>

<b>1.3. Mơ hình mạng</b>

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.

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

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

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

đ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.

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

Các thiết bị này hồn tồ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

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="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.

<b>USB Hub: đóng vai trị như các Hub trong mạng Ethernet của chúng ta. Cấp</b>

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

<b>1.4. Quá trình hoạt động của chuẩn USB</b>

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

Q trình điểm danh: là q 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.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="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 q 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.

<b>1.5. Chế độ truyền</b>

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.

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

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

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

liệu nhỏ, tuần hồ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).

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

dữ liệu lớn, yêu cầu độ chính xác tuyệt đối, khơng có ràng buộc q 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

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

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

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="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.

<b>1.6. Mô tả thiết bị</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ả.

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

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ế.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="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

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

<b>PHẦN 2: VIẾT DRIVER CHO USB</b>

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

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, …

<b>2.1.1. Linux Kernel </b>

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

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="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.

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

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 tồ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

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="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.

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<b>2.1.3.Device driver </b>

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).

<b>2.1.4.Bus driver </b>

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

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

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

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 q 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

</div>

×