Giao tiếp USB Host And Device, USB 2.0 và USB 3.0, tốc độ các chuẩn USB, giao tiep USB, Universial serial bus, congtan94, chuẩn USB, nguyên lý hoạt động USB
4. • USB là một chuẩn kết nối của máy tính.
• Ra đời năm 1996 (1.0)
• Là kết quả của sự hợp tác giữa 7 công ty hàng
đầu thế giới
Compaq, Digital Equipment Corporation,
IBM, Intel, Microsoft, NEC, Northern
Telecom
Introduction
9. Tự cấu hình: tự load driver khi kết nối thiết bị ngoại vi với PC – không cần reset máy sau khi cài driver
–
Insert
driver
disk
First time Next time
Plug &
Play
Introduction
Ưu điểm:
10. • Dễ kết nối các thiết bị vào cổng USB
• Đa số máy tính hiện nay có nhiều cổng USB, ngoài ra còn có các loại HUB USB.
●
●
USB mở rộng tới 127 thiết bị có thể kết nối cùng vào một máy tính trên một cổng USB duy nhất (bao gồm các hub
USB)
Introduction
Ưu điểm:
11. •Bên cạnh đó, USB tiện lợi hơn các đầu cắm khác do kích
thước nhỏ, có thể tháo và cắm nóng thiết bị mà không hề tổn
hại đến PC
•USB cũng hỗ trợ kết nối không dây giữa PC và thiết bị
•Với HUB, khoảng cách dây giữa PC và device có thể lên tới
30m
•Không cần thiết lập cài đặt cao cho thiết bị (port address…)
VS
Introduction
12. $$$$$$$$$$
• Multiple speeds:
• SuperSpeed (USB 3.0) 5 Gbps
• High speed: 480 Mbps (USB 2.0)
• Full speed: 12 Mbps, low speed: 1.5 Mbps (USB 1.x).
• Cho phép chọn tốc độ phù hợp với ứng dụng.
• Độ an toàn: cả phần cứng và giao thức sử dụng cho USB đều thề hiện
sự an toàn cho dữ liệu: có khả năng khử nhiễu, phát hiện và sửa lỗi
khi chuyển dữ liệu.
• Không tốn kém: thực tế cho thấy các thiết bị với giao tiếp USB ngày
nay có giá thành ngày càng rẻ.
• Tiết kiệm năng lượng, công suất tiêu thụ thấp…
Introduction
Ưu điểm:
13. Hạn chế:
• Giới hạn về khoảng cách (< 5m without hub)
• Không hỗ trợ kết nối peer to peer (do USB yêu cầu
phải có PC – host controller hardware và device
controller hardware) và broadcasting
• Không tương thích với phần cứng và hệ điều hành cũ
(không có port USB hoặc ko hỗ trợ driver)
Introduction
16. USB 1.x/2.0 standard pinout
Pin Name Cable color Description
1 VBUS Red +5 V
2 D− White Data −
3 D+ Green Data +
4 GND Black Ground
Mechanical
The Electronic and Mechanical Interface
18. USB 1.x/2.0 Mini/Micro pinout
Pin
Nam
e
Cable
color
Description
1
VBU
S
Red +5 V
2 D− White Data −
3 D+ Green Data +
4 ID None
Permits distinction of A plug from B
plug
* A plug: connected to Signal
ground
* B plug: not connected
5 GND Black Signal ground
The Electronic and Mechanical Interface
Mechanical
21. • Cổng Micro-USB được thiết kế để chịu được tối
đa 10000 lần rút ra cắm vào
• USB chuẩn chỉ được thiết kế cho 1500 lần và
Mini-USB cũng chỉ được thiết kế tối đa 5000 lần
rút ra cắm vào
Mechanical
Micro USB
The Electronic and Mechanical Interface
23. Pi
n
Color
Signal
name ('A'
connector)
Signal
name ('B'
connector)
1 Red VBUS
2 White D−
3 Green D+
4 Black GND
5 Blue
StdA_SSR
X−
StdA_SST
X−
6 Yellow
StdA_SSR
X+
StdA_SST
X+
7 Shield GND_DRAIN
8
Purpl
e
StdA_SST
X−
StdA_SSR
X−
USB 3.0 pinouts
Mechanical
The Electronic and Mechanical Interface
27. Full speed device
Low speed
device
Low speed và full speed
The Electronic and Mechanical Interface
28. Low speed và full speed
Mức logic của tín hiệu phụ thuộc vào tốc độ. Vì thế
người ta dùng ký hiệu J và K để chỉ mức logic
Low speed: J = 0; K = 1
High speed: J = 1; K = 0
The Electronic and Mechanical Interface
33. High speed
Tốc độ 480MHz được chọn vì
Phù hợp với công nghệ vào thời điểm đó có thể sử dụng các cổng và cáp cũ
Đặc biệt 480 là bội số của 12 nên có thể sử dụng chung thạch anh cho các chế
độ
Giá thành rẻ
Thiết bị high speed sẽ kết nối bằng full speed sau đó reset và test nếu hub hỗ
trợ kết nối 2.0 sẽ khởi tạo kết nối
Khi hoạt động ở high speed điện trở pull up sẽ được tắt để cân bằng đường dây
Thiết bị tương thích USB 2.0 không nhất thiết phải hỗ trợ high speed
Thiết bị dùng high speed không đc hỗ trợ chế độ low speed. Nó chỉ được hỗ trợ
full speed để kết nối lúc đầu, sau đó chuyển qua high speed
Thiết bị downstream tương thích USB 2.0 (Hub/Host) phải hỗ trợ cả 3 chế độ
high speed, full speed và low speed
The Electronic and Mechanical Interface
36. Transfer Basic
Elements of a Transfer
USB 2.0 Transaction
Ensuring successful Transfer
Inside USB transfer
37. - Quyết định được loại transfer nào một device
nên dùng
- Viết firmware cho device
- Nhận biết được các lỗi xảy ra trong khi truyền
thông
Inside a USB transfer
M c tiêu:ụ
38. • Mọi phiên truyền thông USB đều diễn ra với một
bên là Host và một bên là Device.
• Host quản lý việc truyền thông trên Bus và Device
đáp ứng yêu cầu từ Host
HOST DEVICE
Inside a USB transfer
Transfer Basics
39. Endpoint:
Endpoint có:
• Mã số
• Hướng
• Dung lượng tối đa có thể gửi hay nhận
HOST DEVICE
Inside a USB transfer
Transfer Basics
43. Inside a USB transfer
Transfer Basics
Thực tiễn: nhiều thiết bị dùng chuẩn USB nhu cầu khác
nhau đòi hỏi hỗ trợ những kiểu transfer khác nhau
Có 4 loại transfer:
• Control: Nhận dạng và cấu hình
• Bulk: Printer, scanner
• Interrupt: Chuột, bàn phím
• Isochronous: Audio và Video streaming
44. Inside a USB transfer
Transfer Basics
Truyền thông USB gồm 2 giai đoạn:
Nhận dạng và cấu hình thiết bị (Enumeration)
Truyền thông (tuỳ mục đích)
Chuẩn USB 2.0 hỗ trợ truyền thông:
Low Speed: 1.5Mbps
Full Speed: 12 Mbps
High Speed: 480 Mbps
45. Inside a USB transfer
Transfer Basics
USB 2.0 Host Controller chia thông tin thành những
Frame với:
Low và Full Speed: frame 1ms
High Speed: microframe 125 us
Chúng ta có thể xem từng frame như là “bus interval”
Những transactions trong một transfer có thể nằm gọn
trong 1 (micro) frame hay nhiều (micro) frame.
46. Inside a USB transfer
Elements of Transfer
• Endpoints :
• Tất cả dữ liệu chạy trên Bus đều đến hoặc đi từ device
endpoints. Endpoint là một buffer lưu trữ nhiều bytes. Dữ
liệu lưu trên endpoint là dữ liệu nhận được (từ host) hay là
dữ liệu sắp truyền (đến host).
• Địa chỉ endpoint gồm mã số endpoint (từ 0-15) và hướng
(theo quan điểm của host).
• Endpoint được cấu hình cho control transfer phải truyền dữ
liệu từ 2 hướng, và mỗi device phải có endpoint 0 được
cấu hình cho control endpoints
47. Những loại Transaction:
+ Ở mọi USB 2.0 transaction, ban đầu host sẽ gửi một
“addressing – tripple” bao gồm: địa chỉ thiết bị, mã số endpoint
và hướng endpoint.
+ Khi nhận 1 gói tin OUT hay setup, endpoint sẽ lưu data theo
sau gói tin đó, sau đó device hardware sẽ sinh ra ngắt. Tương
tự khi gửi gói tin IN.
Inside a USB transfer
Elements of Transfer
48. Inside a USB transfer
Elements of Transfer
• Pipes :
• Trước khi data được truyền đi, giữa host và device
phải thiết lập một pipe. Host thiết lập pipe ở quá
trình enumeration. Host có thể yêu cầu thêm hoặc
bớt pipes dùng control transfer.
• Nhắc lại: Mọi thiết bị có một control pipe mặc định
dùng endpoint 0.
• Thông tin cấu hình host nhận từ device bao gồm
một endpoint descriptor cho mỗi endpoint mà
device muốn dùng. Mỗi endpoint chứa đựng: địa
chỉ endpoint, loại transfer mà endpoint hỗ trợ, kích
thước tối đa gói dữ liệu, đôi khi có cả transfer
interval.
51. Inside a USB transfer
USB 2.0 Transaction
Mỗi transaction thường có 3 phase: token, data,
handshake.
Mỗi packet bắt đầu với một Packet ID (PID) chứa đựng
thông tin nhận dạng.
53. Inside a USB transfer
Ensuring Successful Transfers
• USB 2.0 định nghĩa những mã handshake chỉ thị:
• Việc chấp nhận hay không của dữ liệu được nhận.
• Hỗ trợ hay không hỗ trợ một yêu cầu điều khiển nào
đó.
• Tình trạng HALT của endpoint.
• Trong control transfer, status stage báo thành công
hay thất bại của một transfer.
• Các mã status được định nghĩa: ACK, NAK, STALL,
NYET và ERR. Việc thiếu vắng mã handshake
nào ở trên báo hiểu có lỗi.
54. Inside a USB transfer
Ensuring Successful Transfers
• ACK (acknowledge): chỉ thị rằng host hay device đã nhận
data mà không có lỗi.
• NAK (negative acknowledge): device đang bận hoặc
device không có data để trả về.
• STALL: một yêu cầu điều khiển không hỗ trợ, yêu cầu điều
khiển thất bại, hay endpoint có lỗi.
• NYET (not yet): Device có sẵn sàng để nhận data hay
chưa.
• No response
56. USB Host/Device view
USB cung cấp dịch vụ truyền thông giữa host và USB device
Truyền thông USB được biểu diễn theo cấu trúc phân tầng cho
phép những người triển khai sản phẩm USB tập trung vào
những chi tiết liên quan đến sản phẩm của họ
USB data flow model
58. USB Host/Device view
Host
USB host tương tác với USB device
trong quá trình truyền thông và có
trách nhiệm:
• Phát hiện khi có 1 USB device
được cắm vào hay rút ra
• Quản lý control flow giữa host
và USB devices
• Quản lý data flow giữa host và
USB devices
• Cung cấp năng lượng cho USB
devices
USB data flow model
59. USB Host/Device view
Physical devices
• USB physical devices cung cấp
thêm chức năng cho host. Chức
năng của USB device rất đa dạng
(mouse, keyboard, printer,…)
• Mỗi USB device mang theo thông
tin liên quan tới việc cấu hình và
báo cáo thông tin này cho host
nhằm hỗ trợ host trong việc xác
định và cấu hình USB device
USB data flow model
61. USB Host/Device view
Function Layer
Function layer cung cấp
thêm chức năng tới host
thông qua một client
software thích hợp
USB data flow model
62. USB Host/Device view
USB Device Layer
The USB Device layer
có trách nhiệm thực
hiện những hoạt động
tiêu chuẩn/chung của
một kết nối USB
USB data flow model
63. USB Host/Device view
USB Bus Interface
Layer
USB Bus Interface layer
cung cấp kết nối vật lý/tín
hiệu/gói tin giữa host và
devices
USB data flow model
65. Detailed USB Host/Device view
Client Software
• Phần mềm thực thi trên
host, tương ứng với một
USB device nhất định.
• Thường được cung cấp
kèm theo với hệ điều
hành hoặc được cung
cấp kèm theo USB
device
USB data flow model
66. Detailed USB Host/Device view
USB system software
• Phần mềm hỗ trợ
USB trong một hệ
điều hành nhất định,
thường được cung
cấp chung với hệ
điều hành.
• Gồm 2 phần chủ
yếu là Host
Controller Driver và
USB Driver
USB data flow model
67. Detailed USB Host/Device view
USB system software (tt)
• USB Driver (USBD):
Phần giao tiếp giữa USB
System Software và client
software. Nó cung cấp cho
client software các
functions để thao tác trên
USB devices.
• Host Controller Driver
(HCD): Phần mềm giao
tiếp giữa USB Host
Controller và USB System
Software. Nhà sản xuất
USB Host Controller sẽ
cung cấp HCD kèm theo
USB data flow model
68. Detailed USB Host/Device view
Host Controller:
Tổ chức và đóng gói dữ
liệu, truyền gói tin đi
trên USB
USB data flow model
69. Detailed USB Host/Device view
SIE (Serial Interface
Engine)
• Việc truyền tải dữ liệu
qua USB được thực
hiện theo kiểu nối tiếp.
• SIE xử lí việc chuyển
đổi từ giao tiếp nối tiếp
sang các giao tiếp khác
và ngược lại.
• Trên host, SIE thường
được thực hiện như là
một phần của Host
Controller
USB data flow model
70. Detailed USB Host/Device view
Endpoint
• Endpoint là một
buffer dùng để lưu trữ
dữ liệu.
• Dữ liệu tại endpoint
có thể là dữ liệu vừa
nhận được hoặc dữ
liệu chờ để chuyển đi
USB data flow model
71. Detailed USB Host/Device view
Endpoint zero
• Endpoint zero là một
endpoint đặc biệt. Tất
cả các thiết bị đều phải
có endpoint zero.
• Endpoint này sẽ nhận
tất cả thông tin điều
khiển và các yêu cầu
trạng thái từ USB
System Software thông
qua Default Pipe
USB data flow model
72. Detailed USB Host/Device view
Default Pipe to Endpoint
Zero
• USB System Software
quản lý thiết bị dùng
Default Pipe
• USB System Software
sẽ gửi thông tin điều
khiển và thông tin trạng
thái giữa host và USB
devices thông qua
Default Pipe
• Quá trình enumeration
(quá trình xảy ra khi gắn
USB device vào host) sử
dụng Default Pipe
USB data flow model
73. Detailed USB Host/Device view
Interface
• Endpoints được nhóm
thành từng nhóm, một
nhóm các endpoint tạo
thành một interface
• Mỗi interface gắn liền
với một chức năng của
USB device
USB data flow model
74. Detailed USB Host/Device view
Pipe Bundle to an
interface
• Client software quản
lý một interface dùng
pipe bundles (gắn
liền với một tập các
endpoints).
• Thông qua Pipe
Bundle, Client
software yêu cầu dữ
liệu được truyền tải
giữa buffer trên host
và các endpoints trên
USB devide
USB data flow model
77. Control tranfer (Truyền điều khiển)
Control tranfer dùng để cài đặt và truyền thông tin giữa host và function.
Truyền theo 2 hướng IN và OUT. Việc truyền điều khiển gồm 3 bước:
Setup stage
Data stage
Status stage
Setup stage gồm 3 gói packet:
Token packet: chứa địa chỉ và endpoint
Data packet: cài đặt kích thước dữ liệu, luôn truyền dữ liệu Data0
Handshake packet: báo nhận thành công hoặc báo lỗi
USB protocol
78. Data stage: gồm 3 gói packet
Token packet: báo hướng truyền IN hoặc OUT
Data packet: chứa dữ liệu được truyền
Handshake packet: xác nhận thành công hoặc báo lỗi
USB protocol
79. Status stage: báo trạng thái truyền. Gồm 2 trường hợp:
IN: khi host gửi dữ liệu
OUT: khi host nhận dữ liệu
USB protocol
82. Bulk transfer (Truyền hàng loạt)
Bulk tranfer dùng truyền dữ liệu lớn, chính xác không khắt khe về
thời gian. Truyền 1 hoặc 2 hướng.
VD: scaner, printer, usb disk
USB protocol
83. Interrupt tranfer (Truyền ngắt)
Interrupt transfer dùng để truyền dữ liệu nhỏ , không
liên tục. Truyền theo 1 hoặc 2 hướng (đối với USB 1.0
chỉ có IN).
VD: keyboard, mouse
USB protocol
84. Isochronous transfer (Truyền đẳng thời)
Isochronous tranfer dùng để truyền dữ liệu với tốc độ
cố định và bỏ qua lỗi. Truyền 1 hoặc 2 hướng.
VD: truyền voice qua usb
USB protocol
86. Enumeration là gì?
Gán địa chỉ cho thiết bị
Tìm kiếm và cài đặt Driver phù hợp
Lựa chọn cấu hình về nguồn cấp và những Interface
ENUMERATION
87. Quy trình như thế nào?
Khi cắm thiết bị vào.
Host nhận được tín hiệu.
Điều khiển thiết bị
ENUMERATION
88. Khi cắm thiết bị vào:
Thiết bị ở trạng thái POWERED
Hub phát hiện thiết bị
ENUMERATION
89. Host nhận tín hiệu:
Hub gởi báo cáo sự kiện
Hub xác định thiết bị là Low/Full Speed.
Hub reset thiết bị về trạng thái DEFAULT
ENUMERATION
90. ●
Điều khiển thiết bị (tiếp theo)
Host yêu cầu thông tin mô tả và reset
Host gán địa chỉ cho thiết bị. Thiết bị ở trạng thái
ADDRESS
Gởi yêu cầu thông tin về những mô tả khác.
ENUMERATION
91. ●
Điều khiển thiết bị (tiếp theo)
Lựa chọn và cài đặt Driver
Lựa chọn và cài đặt cấu hình.
ENUMERATION
98. Device Drivers
A device driver là một phần mềm trung gian mà qua đó cho
phép các ứng dụng của máy tính truy xuất hoặc điều khiển các
thiết bị phần cứng (printer, modem, keyboard, video display,
…).
Hầu hết các thiết bị USB là những thiết bị gắn ngoài, được kết
nối với máy tính thông qua cáp(hoặc wireless . Tuy nhiên, cũng
có một số thiết bị gắn cứng với CPU, ví dụ : fingerprint
scanners, …
99. The Layered Driver Model
USB truyền thông bên dưới nền Windows, sử dụng mô hình
chia lớp driver, driver được sắp xếp theo một mô hình dạng
chuỗi, hay dạng ngăn xếp (stack) để phục vụ cho quá trình
truyền thông.
Lớp trên cùng của stack là một client driver, mà hệ điều hành
đã gán với các thiết bị.
Các ứng dụng truy xuất với các thiết bị USB bằng cách giao
tiếp với client driver.
The client driver truy xuất đến các lớp bên dưới để truy xuất
đến các thiết bị.
100. User and Kernel Modes
Còn bên dưới Windows, code chương trình chạy 1 trong 2 chế
độ là user mode hoặc kernel mode.
Mỗi chế độ cho phép các mức ưu tiên khác nhau để truy xuất
đến memory hoặc các tài nguyên khác của hệ thống.
102. Applications
The Windows API
Các ứng dụng thường được
viết bằng Visual Basic, C,
Delphi, hoặc các ngôn ngữ
khác, chúng có thể truy xuất
nhiều thiết bị bằng cách gọi
hàm của Windows API.
Using .NET’s Classes
Để đơn giản hơn và an toàn
hơn trong lập trình,
Microsoft’s .NET Framework
cung cấp các lớp để tiện
trong việc gọi hàm API khi
viết code.
103. User-mode Client Drivers
User-mode client driver có thể định
nghĩa là một driver API đặc biệt mà ứng
dụng có thể sử dụng nó để truy xuất
đến các thiết bị.
The driver là một thư viện liên kết động
(dynamic link library (DLL)). An
example of a user-mode USB driver is
winusb.dll, hid.dll, …
User-mode driver là thành phần trung
gian chuyển đổi các hàm driver đã
được định nghĩa và Windows API. Ví dụ
: khi ứng dụng gọi hàm
Hid_GetFeature, thì user-mode HID
driver gọi hàm DeviceIoControl, và
kernel-mode HID driver yêu cầu báo
cáo HID Feature từ thiết bị.
104. Kernel-mode Client Drivers
Kernel-mode client driver quản
lí quá trình truyền thông giữa
user-mode và các mức driver
USB thấp hơn bên dưới.
Các driver này có dạng đuôi
mở rộng .sys. Ví dụ : kernel-
mode client drivers là
winusb.sys (WinUSB) và
hidclass.sys (HID).
A client driver or miniclass
driver có thể có một hay nhiều
driver lọc (filter driver) bên
trên hoặc bên dưới, các driver
lọc chính hoặc modify quá
trình truyền thông với thiết bị.
106. Bus and Host-controller
Drivers
Host-Controller Types :
USB 1.x or USB 2.0 host sử dụng các controller theo chuẩn
Open Host Controller Interface (OHCI) hoặc Universal Host
Controller Interface (UHCI).
USB 2.0 high-speed host sử dụng host controller theo
chuẩn Enhanced Host Controller Interface (EHCI).
USB 3.0 hosts sử dụng Extensible Host Controller Interface
(xHCI) controller cho tất cả các loại tốc độ.
107. Bus and Host-controller
Drivers
Sự khác nhau giữa OHCI và UHCI :
OHCI và UHCI controllers đều cung cấp nhiều cách phục vụ
cho tốc độ thấp và cao hay full-speed USB hardware để giao
tiếp với các mức driver cao hơn.
Nhưng cũng có nhiều điểm khác nhau:
UHCI đặt nặng lên quá
trình truyền thông ở phần
mềm, vì vậy có thể sử
dụng đơn giản hơn và
phần cứng rẻ hơn.
UHCI được phát triển bởi
Intel
OHCI đặt nặng lên phần
cứng và phần mềm điều
khiển sẽ đơn giản hơn.
OHCI được phát triển bởi
Compaq, Microsoft, and
National Semiconductor
111. The Class Key
The class key lưu trữ các thông tin về các lớp thiết bị đã được
cài đặt.
112. The driver Key
Bên dưới class key, mỗi thiết bị trong class sẽ có 1 driver, còn
được gọi là software key. Bên trong một hardware key của
một thiết bị cố định, the Driver ghi tên của thiết bị vào GUID và
matches vào class key và instance number của thiết bị được
matches vào driver subkey bên dưới class key.
113. The Service Key
A service key lưu trữ thông tin về các driver’s files, bao gồm
nơi chúng ở đây và load chúng lên như thế nào. Service keys
nằm ở đường dẫn sau:
HKEY_LOCAL_MACHINESystemCurrentControlSetServices
Service keys tồn tại trong host controller type, hubs, classes
chẳng hạn như storage (USBSTOR) và printers (USBPRINT), và
HID functions (HidBatt, HidServ, HidUsb).
114. INF Files
A device-setup information file, or INF file, là một file text chứa
các thông tin của một hay nhiều thiết bị trong device setup
class.
Windows includes INF files for the drivers provided with the
operating system. Những files này nằm trong thư mục %windir
%inf Hệ điều hành copy các INF files để user add thiết bị này
vào thư mục trên.
Lần đầu tiên khi hết nối, sau khi nhận được mô tả từ USB
device, Windows tìm kiếm nhằm match thông tin trong các
descriptors với thông tin trong hệ thống INF files.
116. Device Classes
Các thiết bị có chức năng
giống nhau được gom
thành từng chuẩn
Phát triển 1 driver cho
nhiều thiết bị
Các driver cho từng
chuẩn được tích hợp
sẵn trong windows
ENUMERATION
117. HID: Human Interface Devices
• Chuẩn thiết bị giúp con người giao tiếp với máy tinh
• Một trong những chuẩn USB đầu tiên được hỗ trợ
trong windows
• Mouse, keyboard, gamepad, joystick, remote
control… là những thiết bị HID
• Host và các thiết bị giao tiếp bằng gói tin report
ENUMERATION
118. Descriptors
• Chứa thông tin, thông số cấu hình của thiết bị
• Được lưu trong bộ nhớ của thiết bị, cung cấp cho host
khi được yêu cầu
• Host gửi tín hiệu “get descriptor request” để lấy thông
tin của thiết bị
• Descriptor: configuration, interface,
class,endpoint
ENUMERATION
119.
120. HID interface
Các thiết bị HID có thể giao tiếp máy tính mà không cần
driver trong windows!!!
thiết bị có Boot interface
Ứng dụng khi giao tiếp trong môi trường DOS, BIOS
Các protocol đơn giản được BIOS cấp từ bộ nhớ ROM
Descriptor bInterfaceclass = 03h: xác định
interface chuẩn HID
Descriptor bInterfaceSubclass = 01h: có hỗ trợ
Boot interface
ENUMERATION
- USB là kết quả của sự hợp tác giữa 7 công ty hàng đầu thế giới : Compaq,Digital Equipment Corporation,IBM,Intel,Microsoft,NEC,Northern Telecom
USB – Universal Serial Bus là cổng giao tiếp thành công nhất của máy tính .
Với USB port , ngày nay PC có thể giao tiếp với rất nhiều thiết bị ngoại vi : bàn phím , chuột , máy in,tay game ,máy scan , camera …
Đến nay có 4 chuẩn USB là 1.0 ; 1.1 ; 2.0 ; 3.0
Chuẩn 2.0 đang được sử dụng nhiều nhất
Chuẩn 3.0 mới nhất ,nhanh nhất nhưng chưa được sử dụng nhiều do chưa có phần cứng tương thích
- Dễ sử dụng
+ Một interface cho nhiều loại thiết bị khác nhau
+ Tiết kiệm được cable của nhiều loại kết nối khác nhau
Chuẩn USB-OTG ra đời 1 thiết bị có thể vừa là host vừa là device mini-AB, phân biệt = chân ID
This is accomplished by adding a locking device and by moving the leaf-spring connector from the jack to the plug, so that the most-stressed part is on the cable side of the connection. This change was made so that the connector on the less expensive cable would bear the most wear instead of the more expensive micro-USB device.
Điều này giúp cho các thiết bị không cần tốc độ cao có giả rẻ, cấu tạo đơn giản
dữ liệu được truyền qua kết nối usb như thế nào
Mô hình chia lớp driver
&lt;number&gt;
Applications run in user mode. A USB device must have a kernel-mode client driver, which can have a supplementary user-mode driver
&lt;number&gt;
The supported functions vary with the driver, but an application typically opens communications with CreateFile, exchanges data using a combination of ReadFile or ReadFileEx, WriteFile or WriteFileEx, and DeviceIoControl, and closes communications with CloseHandle. Microsoft’s Windows Software Development Kit (SDK) documents these functions.
Instead, applications communicate with a Common Language Runtime (CLR) component that in turn may call API functions
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
&lt;number&gt;
Phân chuẫn thiết bị :
Nhiều thiết bị USB được phân thành từng chuẫn vì chúng có những tính năng , đặc điểm giống nhau . Giống như chuột,bàn phím,gamepad được gom vào cùng 1 chuẫn vì chúng điều có chức năng là giao tiếp với con người ,tương tự như loa,headphone,micro ...
Việc gom các thiết bị thành từng chuẫn giúp ta tránh được việc phải viết driver , định nghĩa giao thức truyền cho từng thiết bị mà thay vào đó ta chỉ việc chọn 1 giao thức , viết 1 driver cho 1 cấp thiết bị là có thể hỗ trợ rất nhiều thiết bị khác . Các driver chung này đươc tích hợp sẵn trong window ,khi kết nối thiết bị thì máy tính sẽ dò nhận dạng và cấp driver để giao tiếp với thiết bị mà không cần phải cài driver của nhà cung cấp . Một vài thiết bị cần có driver riêng do nhà cung cấp phát triển .
HID là một trong những chuẩn USB đầu tiên được hỗ trợ trong Windows .
Với những máy tính chạy Windows 98 về sau , ứng dụng có thể giao tiếp với thiết bị HID thông qua các driver cài đặt sẵn trong Window .
Vì chuẫn HID hỗ trợ trao đổi dữ liệu giữa nhiều ứng dụng khác nhau với nhiều thiết bị khác nhau nếu chúng có chung cơ cấu HID
HID là gì ? Human interface device : thiết bị giao tiếp với con người
Máy tính nhận biết trạng thái của con chuột khi ta ấn nút hay di chuyển nó , hoặc lập tức hiển thị chữ khi ta gõ bàn phím ,tương tự như gamepad,joystick,remote control....
Tất cả các dữ liệu trao đổi có cấu trúc độ dài cố định , gọi là report . Host gửi và nhận data bằng cách gửi và nhận các report . Định dạng của report có thể thay đổi và có thể quản lý bất kì loại data nào ( audio,video,file...)
Thiết bị HID phải có ít nhất 1 IN endpoint và OUT endpoint , thiết bị nào cần nhiều IN endpoint là thiết bị hỗn hợp với nhiều HID interface . In endpoint giúp thiết bị HID gửi dữ liệu tới máy tính tuần tự 1 khoảng thời gian nhất định . Vd máy tính không thể biết khi nào bàn phím được nhấn mà không liên tục lấy dữ liệu từ bàn phím .
Descriptor là dữ liệu cho phép host biết thông tin về thiết bị . Mỗi descriptor có thể chứa thông tin về toàn bộ hoặc chỉ 1 phần của thiết bị. Tất cả các thiết bị USB đều sẵn sàng truyền decriptor của nó cho host khi được host yêu cầu
Với bất kì thiết bị USB nào cũng cần có descriptor , HID’s descriptor cung cấp thông tin cho host biết cách thức giao tiếp với thiết bị đó . Các phần thường có trong descriptor là thông tin về config(cấu hình) , interface(giao tiếp) , class(chuẩn) và endpoint
Host sẽ nhận dạng thiết bị bằng cách gửi một thông điệp “get descriptor request” để lấy descriptor từ thiết bị sau đó host sẽ thiết lập driver tương ứng để kết nối .
Câu hỏi đặt ra là chúng ta không cần vào window để chạy driver cũng có thể giao tiếp với thiết bị , cụ thể là chúng ta vẫn sử dụng được bàn phím và chuột ở màn hình DOS,hay giao diện khi cài window từ CD....vậy thì nguyên do từ đâu?
Quan sát Descriptor phần interface :
bInterfaceclass = 03h : xác định interface HID
bInterfaceSubclass = 01h: có hỗ trợ Boot interface – thiết bị HID có hỗ trợ Boot có thể giao tiếp với host ngay cả khi host chưa cài xong driver .(vd như khi may tính boot trực tiếp vào DOS...)
bàn phím hoặc chuột có boot interface có thể sử dụng những protocol đơn giản do BIOS cấp (nó được lấy từ ROM)
Report Descriptor chứa thông tin về định dạng và cách sử dụng các report của HID . Nếu là chuột thì nó thông báo data sẽ là vị trí của con chuột và nút bấm ,nếu là điều khiển công tắc thì data chứa trạng thái của công tắc .
Get Report : host yêu cầu nhận report từ thiết bị HID sử dụng kiểu truyền điều khiển
Request number : mã lệnh
Source of data : nguồn dữ liệu sẽ lấy từ ( device )
Wlength : data length : chiều dài gói tin report
Wvalue : chứa thông tin về report : report type ( 01=input,03=feature),report ID
Windex : số hiệu cổng interface để truyền
Data stage content : chứa dữ liệu của report
Get Idle : host yêu cầu đọc thông tin về trạng thái nghĩ hiện tại của thiết bị
Get protocol : host dò xem thiết bị hoạt động ở chế độ nào : boot hay bình thường
Set report : Host gửi gói tin đến thiết bị HID yêu cầu thiết lập quá trình truyền report
Set Idle : Host gửi gói tin kích hoạt thiết bị ở chế độ nghỉ nhằm tiết kiệm băng thông ,năng lương bằng cách giảm tần suất truyền report khi gói tin report nhận được giống với gói trước đó
Set protocol :host thiết lập chế độ truyền cho thiết bị
Global item dùng để xác định các report và mô tả dữ liệu của report đó , gồm những đặc tính như chức năng,giá trị và kích thước data của report .
Global item tag là một chuỗi bit đứng trước các phần của report để xác định chức năng của nó