tìm hiểu giao tiếp usb (universal serial bus)

123
Tìm hiểu giao tiếp USB Bi ging s dng ti liệu ca sinh viên kha trưc

Upload: congtan94

Post on 27-Jan-2017

988 views

Category:

Education


3 download

TRANSCRIPT

Page 1: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Tìm hiểu giao tiếp USB

Bai giang sư dung tai liệu cua sinh viên khoa trươc

Page 2: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

IntroductionThe electrical and mechanical

interface

Inside a USB transfer

USB data flow model

Enumeration

USB protocol

Driver Model

Human Interface device

Nôi dung

Page 3: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Introduction

Page 4: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

• 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

Page 5: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Introduction

Page 6: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Introduction

Tốc độ trên lý thuyết :• USB 1.0: 1,5 Mbps (low speed)• USB 1.1: 12 Mbps (full speed)• USB 2.0: 480 Mbps (high speed)• USB 3.0: 4,8 Gbps (super speed)

Introduction

Page 7: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Cấu tạo

Introduction

Page 8: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Ưu điểm:

RS232USB

INTERFACE

VGA Ethernet

Sound

Introduction

Hỗ trợ nhiều kết nối khác nhau

Page 9: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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:

Page 10: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 11: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

•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

Page 12: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

$$$$$$$$$$

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

Page 13: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 14: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

The Electronic and Mechanical Interface

Page 15: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Mechanical

Page 16: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

USB 1.x/2.0 standard pinoutPin Name Cable color Description1 VBUS Red +5 V2 D− White Data −3 D+ Green Data +4 GND Black Ground

Mechanical

The Electronic and Mechanical Interface

Page 17: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

USB 1.x/2.0 standard pinout

Mechanical

The Electronic and Mechanical Interface

Page 18: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

USB 1.x/2.0 Mini/Micro pinout

Pin Name Cable color Description1 VBUS Red +5 V2 D− White Data −3 D+ Green Data +

4 ID NonePermits 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

Page 19: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Mini USB

Mini-AB

Mini-B Mini-A

Mechanical

The Electronic and Mechanical Interface

Page 20: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Micro USB

Micro B

Mechanical

The Electronic and Mechanical Interface

Page 21: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

• 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

MechanicalMicro USB

The Electronic and Mechanical Interface

Page 22: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

eSATAp (eSATA/USB) combo port

Mechanical

The Electronic and Mechanical Interface

Page 23: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Pin ColorSignal name

('A' connector)

Signal name ('B'

connector)1 Red VBUS2 White D−3 Green D+4 Black GND5 Blue StdA_SSRX− StdA_SSTX−6 Yellow StdA_SSRX+ StdA_SSTX+7 Shield GND_DRAIN8 Purple StdA_SSTX− StdA_SSRX−9 Orange StdA_SSTX+ StdA_SSRX+

USB 3.0 pinoutsMechanical

The Electronic and Mechanical Interface

Page 24: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Mechanical

Cấu tạo chuẩn A USB 3.0

Page 25: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Mechanical

Cấu tạo chuẩn B USB 3.0

Standard B

Micro B

Page 26: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Electrical

The Electronic and Mechanical Interface

Page 27: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Full speed device

Low speed device

Low speed và full speed

The Electronic and Mechanical Interface

Page 28: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Low speed và full speedMứ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 logicLow speed: J = 0; K = 1High speed: J = 1; K = 0

The Electronic and Mechanical Interface

Page 29: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Low/full-speed signaling levels

The Electronic and Mechanical Interface

Page 30: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Low/full-speed signaling levels

The Electronic and Mechanical Interface

Page 31: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Electrical

The Electronic and Mechanical Interface

Page 32: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Electrical

The Electronic and Mechanical Interface

Page 33: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

High speedTố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

Page 34: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

High speed

The Electronic and Mechanical Interface

Page 35: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

High speed

The Electronic and Mechanical Interface

Page 36: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Transfer BasicElements of a TransferUSB 2.0 TransactionEnsuring successful Transfer

Inside USB transfer

Page 37: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 38: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

• 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

Page 39: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 40: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Transaction:

HOST DEVICE

1 : Token

2 : Data

3 : Handshake

Inside a USB transfer

Transfer Basics

Page 41: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Transfer:

Transaction Transaction Transaction

Transfer

Inside a USB transfer

Transfer Basics

Page 42: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Transfer

Transaction Transaction Transaction

Token Data Handshake

Summary

Inside a USB transfer

Transfer Basics

Page 43: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Inside a USB transfer

Transfer BasicsThự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 nhauCó 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

Page 44: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Inside a USB transfer

Transfer BasicsTruyề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

Page 45: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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.

Page 46: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 47: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 48: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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.

Page 49: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Inside a USB transferUSB 2.0 Transaction

Page 50: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Inside a USB transferUSB 2.0 Transaction

Page 51: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Inside a USB transfer

USB 2.0 TransactionMỗ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.

Page 52: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Inside a USB transferUSB 2.0 Transaction

Page 53: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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.

Page 54: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 55: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

USB data flow model

Page 56: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

USB Host/Device viewUSB 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

Page 57: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

USB Host/Device view

USB data flow model

Page 58: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

USB Host/Device view

HostUSB 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

Page 59: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 60: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

USB Host/Device view

USB data flow model

Page 61: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

USB Host/Device view

Function LayerFunction 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

Page 62: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

USB Host/Device view

USB Device LayerThe 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

Page 63: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 64: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Detailed USB Host/Device view

USB data flow model

Page 65: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Detailed USB Host/Device viewClient 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

Page 66: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Detailed USB Host/Device viewUSB 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

Page 67: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Detailed USB Host/Device viewUSB 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

Page 68: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Detailed USB Host/Device viewHost Controller: Tổ chức và đóng gói dữ liệu, truyền gói tin đi trên USB

USB data flow model

Page 69: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Detailed USB Host/Device viewSIE (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

Page 70: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Detailed USB Host/Device viewEndpoint• 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

Page 71: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Detailed USB Host/Device viewEndpoint 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

Page 72: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Detailed USB Host/Device viewDefault 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

Page 73: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Detailed USB Host/Device viewInterface• 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

Page 74: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Detailed USB Host/Device viewPipe 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

Page 75: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

USB protocol

Page 76: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

USB protocol

Page 77: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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 stageData stageStatus stage

Setup stage gồm 3 gói packet:Token packet: chứa địa chỉ và endpointData packet: cài đặt kích thước dữ liệu, luôn truyền dữ liệu Data0Handshake packet: báo nhận thành công hoặc báo lỗi

USB protocol

Page 78: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Data stage: gồm 3 gói packetToken packet: báo hướng truyền IN hoặc OUTData packet: chứa dữ liệu được truyềnHandshake packet: xác nhận thành công hoặc báo lỗi

USB protocol

Page 79: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Status stage: báo trạng thái truyền. Gồm 2 trường hợp:IN: khi host gửi dữ liệuOUT: khi host nhận dữ liệu

USB protocol

Page 80: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Setup stage

Data stage

USB protocol

Page 81: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Status stage

USB protocol

Page 82: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 83: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 84: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 85: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

ENUMERATION

Page 86: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 87: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 88: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 89: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 90: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Đ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

Page 91: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Đ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

Page 92: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

DESCRIPTORS: Device Descriptor Configuration Descriptor Interface Descriptor Endpoint Descriptor

ENUMERATION

Page 93: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Device Decriptor:

ENUMERATION

Page 94: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Configuration Decriptor:

ENUMERATION

Page 95: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Interface Decriptor:

ENUMERATION

Page 96: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Endpoint Decriptor:

ENUMERATION

Page 97: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

How the Host communicates

Page 98: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 99: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 100: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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.

Page 101: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

User and Kernel Modes

Page 102: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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.

Page 103: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 104: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 105: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Kernel-mode Client Drivers

Page 106: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 107: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 108: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Matching a Driver to a Device Using Device Manager

Page 109: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Matching a Driver to a Device Device Information in the Registry

Page 110: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

The hardware Key Lưu trữ thông tin của các thiết bị đặc biệt.

Page 111: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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.

Page 112: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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.

Page 113: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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_MACHINE\System\CurrentControlSet\Services 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).

Page 114: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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.

Page 115: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Human interface devices

Page 116: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Device ClassesCá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

Page 117: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 118: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

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

Page 119: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)
Page 120: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

HID interfaceCá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, BIOSCá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

Page 121: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

Report Descriptor

ENUMERATION

Page 122: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

HID specific Request

ENUMERATION

Page 123: Tìm Hiểu Giao Tiếp USB (Universal Serial Bus)

The Global item Type

ENUMERATION