Bài tập lớn môn Hệ điều hành _ đề tài: VIẾT USB KEYBOARD DRIVER LỜI NÓI ĐẦU Lập trình hệ thống nhúng, một trong những công việc quan trọng nhấ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ại vi 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ình chú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 cho chú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ết bị hoạt động theo chuẩn USB, viết driver cho thiết bị giao tiếp theo chuẩn USB... Tìm hiểu về hệ điều hành và vận dụng các kiến thức đã học trên giảng đường nên nhóm em lựa chọn đề tài: “Viết Driver cho USB trên Ubuntu”. Đề tài nhóm hướng đến driver đơn giản để tìm hiểu quá trình hệ thống Linux làm việc với thiết bị USB. Driver hướng đến các chức năng sau: đăng kýhủy đăng ký, ngắt kết nối, lấy thông tin, mở tập tin từ thiết bị, đọcghi dữ liệu với thiết bị. 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ẫn và 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.
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG MÔN: HỆ ĐIỀU HÀNH Đề tài: VIẾT DRIVER CHO USB TRÊN UBUNTU Giảng viên hướng dẫn: TS Nguyễn Thanh Bình Nhóm: Họ tên sinh viên Phạm Huyền Thị MSSV Thanh 20182593 Phùng Thị Kim Ngân 20172715 Trịnh Thanh Phong 20182721 Hà Nội, 10/2021 LỜI NĨI ĐẦU Lập trình hệ thống nhúng, cơng việc quan trọng với lập trình ghép nối, điều khiển module, thiết bị ngoại vi ghép nối với hệ trung tâm Để làm việc này, ngồi kỹ lập trình cịn cần phải thành thạo giao thức ghép nối phổ biến RS232, SPI, I2C đặc biệt nhu cầu tất yếu phải tìm hiểu chuẩn USB nói chuẩn phổ biến Tìm hiểu chuẩn USB giúp cho có kiến thức để làm nhiều công việc như: thiết kế, chế tạo thiết bị hoạt động theo chuẩn USB, viết driver cho thiết bị giao chuẩn USB Tìm hiểu hệ điều hành vận dụng kiến thức học giảng đường nên nhóm em lựa chọn đề tài: “Viết Driver cho USB Ubuntu” Đề tài nhóm hướng đến driver đơn giản để tìm hiểu trình hệ thống Linux làm việc với thiết bị USB Driver hướng đến chức sau: đăng ký/hủy đăng ký, ngắt kết nối, lấy thông tin, mở tập tin từ thiết bị, đọc/ghi liệu với thiết bị 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 tiến trình tìm hiểu đề tài cụ thể để nhóm chúng em hồn thành mục tiêu tập lớn Trong trình thực đề tài, nhóm chúng em cố gắng khơng thể tránh khỏi thiếu sót Chúng em mong nhận dẫn góp ý thầy để đề tài ngày hoàn thiện Chúng em xin chân thành cảm ơn MỤC LỤC LỜI NÓI ĐẦU .2 MỤC LỤC PHÂN CÔNG CÔNG VIỆC Chương 1: TỔNG QUAN VỀ USB 1.1 Giới thiệu USB 1.1.1.Định nghĩa USB: 1.1.2 Cấu tạo USB: .7 1.2 Chuẩn tín hiệu 1.3 Mơ hình mạng .8 1.4 Quá trình hoạt động chuẩn USB .10 1.5 Chế độ truyền .11 1.6 Mô tả thiết bị .12 1.6.1 Standard USB descriptors (Mô tả chuẩn USB) .12 1.6.2 Human Interface Devices (HID) 15 Chương 2: VIẾT DRIVER CHO UBUNTU .16 2.1 Quá trình nhận dạng USB Linux .16 2.2 Quy trình viết Drive Ubuntu 17 2.2.1 Lấy thông tin thiết bị USB giao tiếp (USB device) 17 2.2.2 Khai báo danh sách thiết bị điều khiển Driver 18 2.2.3 Khai báo cấu trúc liệu liên quan đến thiết bị .19 2.2.4 Đăng kí hủy đăng kí USB Device Driver 20 2.2.5 Hàm ngắt kết nối thiết bị 21 2.2.6 Hàm thăm dò thiết bị (Probe) 21 2.2.7Đăng ký lớp thiết bị .22 2.2.8Hành động mở tệp tin thiết bị .23 2.2.9Hành động đọc ghi 23 TÀI LIỆU THAM KHẢO .25 PHÂN CÔNG CÔNG VIỆC STT Tên Phạm Thị Thanh Huyền Công việc - Tổng quan USB - Khai báo cấu trúc liệu liên quan đến thiết bị - Đăng kí hủy đăng kí USB Device Driver Phùng Thị Kim Ngân - Hành động mở tệp tin thiết bị - Tổng quan USB - Khai báo danh sách thiết bị điều khiển Driver Trịnh Thanh Phong - Hàm ngắt kết nối thiết bị - Hàm thăm dò thiết bị (Probe) - Tổng quan USB - Lấy thông tin thiết bị USB giao tiếp (USB device) - Đăng ký lớp thiết bị - Hành động đọc ghi Chương 1: TỔNG QUAN VỀ USB 1.1 Giới thiệu USB 1.1.1 Định nghĩa USB: USB thiết bị lưu trữ di động công cụ để kết nối nhiều thiết bị ngoại vi với máy tính USB phát triển để đơn giản hóa cải thiện giao diện máy tính cá nhân thiết bị ngoại vi USB (Universal Serial Bus) chuẩn kết nối có dây máy tính, sử dụng nhằm kết nối điểm kỹ thuật máy tính với thiết bị ngoại vi Vào cuối năm 1994 đề xuất Intel, Compaq, IBM, Microsoft công ty khác Bây giờ, USB trở thành giao diện mở rộng máy tính tiêu chuẩn kỷ XXI phiên 3.1 tung thị trường USB kết nối với 127 thiết bị bên ngồi mà khơng làm giảm băng thơng USB địi hỏi hỗ trợ phần cứng máy chủ, hệ điều hành thiết bị ngoại vi để làm việc cách Giao diện USB đạt kết nối hai máy tính thơng qua cáp chun dụng tạo giao diện bổ sung nhiều thông qua Hub Ưu điểm Giao diện USB tự cấu hình, giúp người dùng khơng cần phải điều chỉnh cài đặt thiết bị tốc độ định dạng liệu, định cấu hình ngắt, địa đầu vào/ra kênh truy cập nhớ trực tiếp Đầu nối USB tiêu chuẩn hóa máy chủ, thiết bị ngoại vi sử dụng hầu hết ổ cắm có sẵn USB tận dụng tối đa sức mạnh xử lý bổ sung đưa vào thiết bị ngoại vi để chúng tự quản lý Do đó, thiết bị USB thường khơng có cài đặt giao diện người dùng điều chỉnh Giao diện USB xác định giao thức để khôi phục từ lỗi phổ biến, cải thiện độ tin cậy so với giao diện trước Tiêu chuẩn USB cung cấp nhiều lợi ích cho nhà sản xuất phần cứng nhà phát triển phần mềm, đặc biệt dễ thực tương đối Tiêu chuẩn USB loại bỏ yêu cầu phát triển giao diện độc quyền cho thiết bị ngoại vi Giao diện USB thiết kế để cung cấp độ trễ khả dụng tốt cho chức quan trọng thời gian thiết lập để thực chuyển liệu hàng loạt mà ảnh hưởng đến tài nguyên hệ thống Tiêu chuẩn USB cung cấp nhiều lợi ích cho nhà sản xuất phần cứng nhà phát triển phần mềm, đặc biệt dễ dàng thực hiện: Tiêu chuẩn USB loại bỏ yêu cầu phát triển giao diện độc quyền cho thiết bị ngoại vi Giao diện USB thiết kế để cung cấp độ trễ tốt cho chức quan trọng thời gian thiết lập để thực chuyển liệu hàng loạt mà ảnh hưởng đến tài nguyên hệ thống Hạn chế Như với tất tiêu chuẩn, USB có nhiều hạn chế thiết kế nó: Cáp USB có chiều dài hạn chế, tiêu chuẩn dành cho thiết bị ngoại vi mặt bàn, khơng phải phịng tịa nhà Tuy nhiên, cổng USB kết nối với cổng truy cập thiết bị xa USB có cấu trúc liên kết mạng nghiêm ngặt giao thức chủ / tớ để định địa thiết bị ngoại vi; thiết bị khơng thể tương tác với ngoại trừ thông qua máy chủ lưu trữ hai máy chủ giao tiếp trực tiếp qua cổng USB chúng Máy chủ lưu trữ khơng thể phát tín hiệu đến tất thiết bị ngoại vi lúc thiết bị phải định địa riêng Một số thiết bị ngoại vi tốc độ cao yêu cầu tốc độ ổn định khơng có tiêu chuẩn USB 1Hình 1.1.Thiết bị USB 1.1.2 Cấu tạo USB: Thông thường gồm phận sau: Bản mạch in nhỏ: chứa các linh kiện điện tử (hoặc nhiều) chip nhớ flash hàn trực tiếp lên mạch in Đầu cắm kết nối với cổng USB: các kết nối thường sử dụng chuẩn A cho phép chúng kết nối trực tiếp với khe cắm USB trên máy tính Vỏ bảo vệ: Tồn mạch in, chip nhớ flash nằm vỏ bảo vệ kim loại nhựa giúp đủ chắn Lẫy gạt chống ghi: Một số ổ USB flash có thiết kế lẫy gạt để chống ghi liệu, không cho phép hệ điều hành ghi sửa đổi liệu vào ổ Đèn báo hoạt động: Người sử dụng nên tự quan sát USB vài lần để biết quy luật hoạt động đèn báo tránh tháo thiết bị chúng làm việc Hình 1.2 Cấu tạo 1.2 Chuẩn tín hiệu Chuẩn USB sử dụng đường tín hiệu có đường cấp nguồn DC (VBUS-5V GND) đường cịn lại cặp tín hiệu vi sai (D+ D-) cho phép truyền liệu Cặp dây tín hiệu nối xoắn bên nên có khả chống nhiễu tốt Lưu ý: cổng USB máy tính cho phép cấp nguồn ni bên ngồi với dịng lên tới 500mA Như vậy, thiết bị sử dụng điện chuột, thẻ nhớ USB lấy trực tiếp nguồn từ cổng USB máy tính mà khơng cần dùng thêm nguồn ngồi Hình 1.3 Chuẩn tín hiệu USB 1.3 Mơ hình mạng Hình 1.4 Mơ hình mạng thiết bị theo chuẩn USB Các thiết bị hoạt động theo chuẩn USB kết nối với theo đồ hình mạng hình phân cấp. Trung tâm hình Hub Trong đồ hình trên, thiết bị USB chia làm loại chính: USB Host: thiết bị đóng vai trị điều khiển tồn mạng USB (có thể lên tới tối đa 126 thiết bị) Ví dụ máy tính, USB Host gắn mainboard Để giao tiếp điều khiển USB device, USB Host controller cần thiết kế tích hợp với USB RootHub (Hub mức cao nhất) Vai trò thiết bị USB Host sau: - Trao đổi liệu với USB Device Điều khiển USB Bus Quản lý thiết bị cắm vào hay rút khỏi Bus USB qua trình điểm danh (Enumeration) Phân xử, quản lý luồng liệu Bus, đảm bảo thiết bị có hội trao đổi liệu tùy thuộc vào cấu hình thiết bị Ngày điều khiển máy chủ USB tích hợp hầu hết chipset bo mạch chủ Các bo mạch cũ không trang bị điều khiển nâng cấp PCI cards với điều khiển máy chủ Tất điều khiển tương thích với tiêu chuẩn Open Host Controller Interface (OHCI Compaq, Microsoft National Semiconductor) Universal Host Controller Interface (UHCI by Intel) Cả hai loại có khả tương đương thiết bị USB quan tâm đến điều khiển máy chủ Về phần cứng UHCI đơn giản cần driver phức tạp hơn, khiến CPU tải USB Device: thiết bị đóng vai trị slave giao tiếp với USB Host Các thiết bị hồn tồn đóng vai trị bị động, khơng tự ý gửi gói tin lên USB Host hay gửi gói tin USB Device với nhau, tất phải thơng qua q trình điều phối USB Host Chức thiết bị USB Device sau: - Trao đổi liệu với USB Host Phát 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 chúng sử dụng cho mục đích khác Đầu tiên, thiết bị tự cấp nguồn, chạy nguồn bus hai USB tự cấp nguồn điện lên tới 500mA cho thiết bị Nếu có thiết bị chạy nguồn bus, tiêu hao lượng tối đa bị vượt cần phải có thiết bị cấp nguồn Chúng cần phải có nguồn cung cấp lượng riêng Các thiết bị hỗ trợ hai loại nguồn chuyển sang chế độ tự cấp nguồn gắn nguồn điện bên Ngay tốc độ giao tiếp tối đa khác thiết bị USB cụ thể Thông số kĩ thuật USB định thiết bị tốc độ thấp tốc độ cao Các thiế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ả hạn chế Các thiết bị tốc độ cao (như hệ thống dụng để truyền file sử dụng hai cổng 20,21 Trong giao thức HTTP lại sử dụng port 80, giao thức Telnet sử dụng port 23 Thực tế Endpoint Port chuẩn TCP/IP đóng vai trò đệm truyền/nhận liệu Nhờ việc sử dụng nhiều đệm mà trình truyền thông tiến hành song song cho tốc độ cao hơn, bên cạnh giúp cho việc phân tách dịch vụ khác Với chuẩn USB, thiết bị thiết kế với tối đa 16 Enppoint Các Endpoint phân loại theo hướng truyền liệu nhìn từ phía USB Host Cụ thể: - Các Endpoint truyền liệu từ USB Device tới USB Host Endpoint IN Các Endpoint truyền liệu từ USB Host tới USB Device Endpoint OUT Để truyền liệu theo chuẩn USB, thiết bị USB Device phải kết nối với USB Host thông qua Pipe (đường ống) Mỗi Pipe nối Endpoint USB Device với USB Host 1.5 Chế độ truyền Chuẩn USB cung cấp tổng cộng chế độ truyền Tùy vào chế truyền tốc độ mong muốn mà người thiết kế lựa chọn chế độ truyền cho mục đích khác Truyền điều khiển (Control transfer): chế độ truyền tất thiết bị USB hỗ trợ để truyền 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 thiết bị cần truyền lượng liệu nhỏ, tuần hồn theo thời gian ví dụ chuột, bàn phím Khi đó, ví dụ 10s lần USB Host gửi request xuống USB Device trả liệu cho USB Host (với trường hợp Interrupt in Endpoint) Truyền theo khối (Bulk transfer): sử dụng cho thiết bị cần truyền lượng liệu lớn, yêu cầu độ xác tuyệt đối, khơng có ràng buộc q chặt chẽ thời gian thực ví dụ thẻ nhớ USB, máy in Cái tương tự giao thức TCP mạng Ethernet Truyền đẳng thời (Isochronos transfer): sử dụng cho thiết bị cần truyền lượng liệu lớn với tốc độ nhanh, đảm bảo ràng buộc thời gian thực nhiên chấp nhận hy sinh độ xác mức định thiết bị nghe nhạc, xem phim kết nối theo chuẩn USB Chuẩn tương tự giao thức UDP mạng Ethernet Chế độ truyền điều khiển chế độ truyền theo khối sử dụng để truyền liệu không đồng bộ, driver định sử dụng chúng Chế độ truyền ngắt chế độ truyền đẳng thời tuần hồn, có nghĩa chế độ thiết lập để truyền liệu vào thời điểm cố định liên tục, điều khiến băng thông chúng dành cho USB core 1.6 Mô tả thiết bị Hình Mơ tả thiết bị USB Bất thiết bị USB gắn vào bus, liệt kê hệ thống USB – tức số thiết bị gán sau thiết bị mơ tả đọc Một thiết bị mô tả cấu trúc liệu chứa thông tin thiết bị thuộc tính thiết bị Tiêu chuẩn USB xác định hệ thống phân cấp mô tả 1.6.1 Standard USB descriptors (Mơ tả chuẩn USB) Hình Bộ mô tả USB ánh xạ tới device layout USB device descriptor: Mỗi thiết bị USB cung cấp mô tả thiết bị chứa tất thơng tin cấu hình liên quan đến thiết bị Ví dụ trường idVendor trường idProduct định số nhận dạng nhà cung cấp sản phẩm tương ứng, trường bcdUSB cho biết phiên thông số kỹ thuật USB mà thiết bị tuân theo (Ví dụ: 0x0200 thiết bị thiết kế theo thông số kỹ thuật USB 2.0) USB configuration descriptor: Cấu hình USB chứa loạt giao diện Mỗi giao diện bao gồm nhiều cài đặt thay cài đặt thay tạo thành từ tập hợp endpoint Mỗi configuration descriptor mơ tả tồn cấu hình bao gồm giao diện, cài đặt thay thế, endpoint Đồng thời bao gồm mô tả tùy chỉnh xác định nhà sản xuất thiết bị Do phần ban đầu configuration descript cố định bytes Phần lại thay đổi tùy vào số lượng giao diện cài đặt thay thế, endpoint thiết bị hỗ trợ Hình Ví dụ Configuration Descriptor cho thiết bị USB webcam USB interface descriptor: mô tả giao diện cụ thể cấu hình, chứa thơng tin cài đặt thay giao diện USB Một cấu hình cung cấp nhiều interface, giao diện có nhiều endpoint mô tả tập hợp endpoint cấu hình Hình Ví dụ Interface Descriptor cho cài đặt thay Interface cho thiết bị webcam USB endpoint descriptor: chứa thông tin theo yêu cầu máy chủ lưu trữ xác định yêu cầu băng thông endpoint Một endpoint biểu thị cho nguồn liệu logic góp thiết bị USB Endpoint sử dụng cho lần truyền điều khiển tiêu chuẩn khơng có mơ tả cho endpoint Hình Ví dụ Endpoint Descriptor cho thiết bị webcam String Descriptor: tùy chọn cung cấp thơng tin bổ sung định dạng Unicode đọc Chúng sử dụng cho tên nhà cung thiết bị số seri 1.6.2 Human Interface Devices (HID) Lớp HID bao gồm chủ yếu thiết bị người sử dụng để điều khiển hoạt động hệ thống máy tính Ví dụ điển hình thiết bị lớp HID bao gồm: Bàn phím 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, trượt, … Các điều khiển tìm thấy thiết bị như: điện thoại, điều khiển từ xa, thiết bị mô như: găng tay, vô lăng, bàn đạp bánh lái, … Chương 2: VIẾT DRIVER CHO UBUNTU Để tìm hiểu trình hệ thống Linux làm việc với thiết bị USB Việc xây dựng driver cần sử dụng khn mẫu chung (có hàm tạo, hàm hủy), ngồi với driver cần có hàm chức sau: - Hàm đăng ký/ hủy đăng ký thiết bị Hàm ngắt kết nối thiết bị Hàm lấy thông tin thiết bị Hàm mở tập tin từ thiết bị Các hàm trao đổi (đọc, ghi…) liệu với thiết bị 2.1 Q trình nhận dạng USB Linux Khi có thiết bị USB hợp lệ cắm vào hệ thống Linux, cho dù có driver hay khơng nhận diện (detect) phần cứng tầng nhân (kernel space) hệ thống Linux mà hỗ trợ giao thức USB Hệ thống làm điều khả thân giao thức USB thiết kế đặc tả Việc phát thiết bị USB cắm vào thực chip USB host controller (là thiết bị chủ động đường bus giao thức USB) USB host controller thu thập diễn giải thông tin tầng vật lý (low-level) đến thông tin đặc tả giao thức USB tầng (high-level) Hình Quá trình nhận dạng thiết bị USB Linux Các thông tin thiết bị theo khuôn dạng qui định giao thức USB lại tiếp tục đưa vào tầng USB core tổng quát (generic USB core) tầng nhân (được điều khiển USBcore driver) Điều giúp cho thiết bị USB hệ thống nhận diện tầng nhân, chưa có driver cụ thể cho chức Sau q trình diễn tầng nhân này, đến nhiệm vụ drivers interfaces applications (cái mà phụ thuộc vào Linux khác nhau) để tiếp tục nhận dạng thiết bị tầng người dùng 2.2 Quy trình viết Drive Ubuntu Để viết Drive Ubuntu, cần phải tìm hiểu chi tiết thơng tin thiết bị USB sử dụng Ở chúng em dùng thiết bị USB chuột không dây Các thông tin đặc tả thiết bị USB bao gồm: cấu hình thiết bị (configuration), giao diện (interfaces), kiểu truyền, 2.2.1 Lấy thông tin thiết bị USB giao tiếp (USB device) Các thông tin Firmware thiết bị USB (một phần mềm thiết kế riêng nhúng lên số loại phần cứng cố định) bao gồm: idVendor, idProduct, số lượng Configuration, số lượng Interface Configration, số lượng loại Endpoint Interface Hình Các thơng tin thiết bị USB Ở Ubuntu, sử dụng lệnh lsusb để liệt kê dánh sách thông tin thất thiết bị usb hệ thống nhận diện Để xem thông tin cụ thể thiết bị mà muốn sử dụng, cần sử dụng thêm lệnh lsusb –vd (:) (như hình) Ở đây, ta nhìn thấy rõ idVendor idProduct phần Device Descriptor: idVendor: 0x0e0f Vmware, Inc idProduct: 0x0003 Virtual Mouse 2.2.2 Khai báo danh sách thiết bị điều khiển Driver Khi viết USB Driver cần định xem driver sử dụng cho thiết bị lớp thiết bị Cấu trúc usb_device_id cung cấp kiểu thiết bị, thiết bị cụ thể lớp thiết bị Có số macro để khởi tạo cấu trúc Ví dụ sử dụng macro USB_DEVICE (vendor, product) để tạo cấu trúc usb_device_id với IDvendor IDproduct Sau tạo cấu trúc usb_device_id ta cần phải khai báo cấu trúc với USB Core, để làm việc ta sử dụng macro: MODULE_DEVICE_TABLE(usb, usb_device_id[]); Trong đây, sử dụng usb có Idvendor = 0x0e0f Idproduct = 0x0003 nên hàm viết sau: Static struct usb_device_id pen_table[] = { // Cần giao tiếp với USB khai báo id vào { USB_DEVICE(0x0e0f, 0x0003)}, {} /* Terminating entry */ }; MODULE_DEVICE_TABLE (usb, pen_table); 2.2.3 Khai báo cấu trúc liệu liên quan đến thiết bị Trong q trình thăm dị thiết bị, có nhiều thơng tin thiết bị ta truy nhập cần phải lưu lại để sử dụng sau Các thông tin cần thiết bao gồm: thiết bị cụ thể (được xác định cấu trúc usb_device), thông tin Configuration, Interface, Endpoint thiết bị Tùy theo đặc điểm phần cứng cụ thể mà ta định nghĩa cấu trúc liệu phù hợp Với thiết bị có Configuration, Configration có Interface, Interface có Endpoint Bulk IN Bulk OUT định nghĩa cấu trúc liệu sau: struct usb_mydevice { //con trỏ tới cấu trúc mô tả thiết bị struct usb_device *udev; struct usb_interface *interface; ... MODULE_DEVICE_TABLE (usb, usb_ device_id[]); Trong đây, sử dụng usb có Idvendor = 0x0e0f Idproduct = 0x0003 nên hàm viết sau: Static struct usb_ device_id pen_table[] = { // Cần giao tiếp với USB. .. USB Tìm hiểu hệ điều hành vận dụng kiến thức học giảng đường nên nhóm em lựa chọn đề tài: ? ?Viết Driver cho USB Ubuntu” Đề tài nhóm hướng đến driver đơn giản để tìm hiểu trình hệ thống Linux... giao thức USB lại tiếp tục đưa vào tầng USB core tổng quát (generic USB core) tầng nhân (được điều khiển USBcore driver) Điều giúp cho thiết bị USB hệ thống nhận diện tầng nhân, chưa có driver cụ