Có thực sự có một giao thức giao tiếp USB USB không?


24

Theo Wikipedia , USB:

xác định các dây cáp, đầu nối và giao thức truyền thông được sử dụng trong xe buýt để kết nối, liên lạc và cung cấp điện giữa máy tính và thiết bị điện tử

Nhưng có thực sự có một " giao thức giao tiếp USB "? Hiểu biết của tôi là:

  1. Bạn kết nối thiết bị USB với máy (giả sử Ubuntu hoặc bất kỳ loại Linux nào)
  2. Linux tìm trình điều khiển thiết bị cho thiết bị đó (bằng cách nào đó - tiền thưởng nếu bạn biết!) Và tải nó
  3. Thiết bị hiện được kết nối dưới /dev/theDevice
  4. Các ứng dụng không gian người dùng hiện có thể đọc / ghi vào /dev/theDevicevà trình điều khiển xử lý IO cấp thấp cho thiết bị / phần cứng bên dưới

Đối với tôi, không nơi nào trong luồng này xuất hiện một "giao thức giao tiếp USB". Nếu sự hiểu biết của tôi là chính xác, USB chỉ là cáp và kết nối điện giữa PC và thiết bị.

Tôi có sai ở đây không? USB có thực sự thực hiện một số loại giao thức cấp thấp để nhấn mạnh luồng trên không? Nếu vậy, nó là gì và nó hoạt động như thế nào ở tầm nhìn 30.000 feet?


45
"Trình điều khiển xử lý IO mức thấp cho thiết bị / phần cứng cơ bản" nó thực hiện điều này bằng cách sử dụng giao thức truyền thông trong tiêu chuẩn.
EBGreen

29
Ồ ... Tôi đã đọc câu hỏi là "Có thực sự có một giao thức giao tiếp USB USB không?" Vì vậy, câu trả lời sẽ là có. Nếu bạn muốn biết giao thức giao tiếp thực tế là gì, chỉ cần đọc tiêu chuẩn. Hoặc đọc phần 11 trên trang wiki mà bạn đã liên kết đến.
EBGreen

6
"USB chỉ là kết nối cáp và điện giữa PC và thiết bị". Cáp Ethernet chỉ là cáp giữa PC và bộ chuyển mạch / bộ định tuyến / bất cứ thứ gì. Vẫn có một số giao thức được sử dụng để giao tiếp qua cáp này và thực hiện những thứ hữu ích với nó.
ysdx

13
"Linux tìm trình điều khiển thiết bị cho thiết bị đó" Bạn nghĩ Linux có thể phát hiện thiết bị nào được kết nối với đầu bên kia như thế nào. Một giao thức phổ biến, có lẽ?
tiêu

4
@Ramhound "Các giao thức truyền thông đó độc lập với tiêu chuẩn ít nhất là trong trường hợp Ethernet." Điều này là sai. Các giao thức Ethernet (cả lớp vật lý và lớp MAC) được xác định bởi các tiêu chuẩn Ethernet Ethernet (cụ thể là các tiêu chuẩn 802.3 .) Tất nhiên, có thể (và phổ biến) để gửi một cái gì đó ngoài giao thức Ethernet xuống cáp Loại 6 với Đầu nối RJ-45, nhưng tại thời điểm đó, nó không còn là Ethernet. Đây là thực tế phổ biến với các hệ thống điện thoại không VoIP, ví dụ.
thiệu lại vào

Câu trả lời:


47

Có, xem các giao thức USB

Theo tôi hiểu, thông số kỹ thuật USB xác định một tập hợp phức tạp các giao thức lớp và cấu hình thiết bị.

Ví dụ: các thiết bị USB có thể tuân thủ các mẫu cấp cao như lưu trữ dung lượng lớn, bàn phím (hoặc Thiết bị giao diện con người, v.v.) và được quản lý bởi trình điều khiển thiết bị chung. Một số thiết bị USB có thể giao tiếp ở mức thấp hơn để hỗ trợ USB cấp thấp của hệ điều hành có thể nhận ra rằng cần có trình điều khiển cấp cao hơn dành riêng cho thiết bị.


30

Câu hỏi: Có một giao thức giao tiếp USB cấp thấp đang hoạt động không và nó là gì?

Câu trả lời:

Có, đặc điểm kỹ thuật USB bao gồm giao thức USB xác định cách thức sử dụng xe buýt ở cấp độ bit. Đây sẽ là giao thức 'cấp thấp' làm nền tảng cho các giao thức cấp cao hơn, ví dụ như lưu trữ hàng loạt, HID, v.v.

Để biết cụ thể về cách thức hoạt động của giao thức USB, wiki OSDev này rất hữu ích. Dưới đây là một mô tả thú vị khác bằng cách sử dụng sơ đồ trình tự để mô tả các giao dịch dữ liệu khác nhau trên giao thức USB.

Câu hỏi thưởng: Linux tìm và tải trình điều khiển thiết bị cho thiết bị đó như thế nào?

Phần thưởng trả lời:

'Trên Linux khi sử dụng kernel hỗ trợ USB, thiết bị USB hoạt động sẽ được phát hiện thông qua phần cứngkernel do thông số kỹ thuật USB. Về phía phần cứng, việc phát hiện được thực hiện bởi Bộ điều khiển lưu trữ USB. Sau đó, trong nhân, Trình điều khiển máy chủ lưu trữ tiếp quản và dịch các bit cấp thấp trên dây sang giao thức USB được định dạng thông tin. Thông tin này sau đó sẽ được đưa vào trình điều khiển lõi USB trong kernel. '

Tôi đã diễn giải từ bài viết Opensourceforu tuyệt vời này , trong đó có nhiều chi tiết và rõ ràng hơn về câu hỏi của bạn trong bối cảnh Linux.


7
Tôi hy vọng rằng "Câu hỏi tiền thưởng" có nghĩa là "Tiền thưởng" cho bạn.
dotancohen

@projectdp - Sẽ rất hữu ích nếu bạn đặt một số thông tin từ tài liệu tham khảo chính của bạn vào chính câu trả lời của bạn.
Ramhound

@Ramhound - Cảm ơn phản hồi của bạn, tôi viết lại câu trả lời của mình theo cách hữu ích hơn. Đối với việc thêm thông tin từ các tài nguyên, bạn muốn thấy điều gì liên quan đến các câu hỏi?
dự án

14

Giống như hầu hết các loại giao diện truyền thông khác, USB được triển khai như một chồng giao thức. Các mức trong ngăn xếp này chung cho tất cả hoặc nhiều loại thiết bị được xác định bởi chính các tiêu chuẩn USB, cả hai đều cho phép khả năng tương thích và ngăn mỗi thiết bị thực hiện thiết kế giao thức dự phòng. Hơn nữa, mỗi lớp của giao thức trừu tượng hóa đi các chi tiết mà lớp tiếp theo không cần phải lo lắng. Vì vậy, khi bạn thực sự viết lớp dành riêng cho thiết bị, bạn chỉ cần có các chức năng 'gửi' và 'nhận' chung chung để lấy dữ liệu từ điểm cuối A đến điểm cuối B. Bạn, là người thiết kế thiết bị, không cần phải quan tâm làm thế nào điều đó xảy ra Hơn nữa, các mức thấp hơn trong ngăn xếp giao thức có thể thay đổi việc thực hiện miễn là chúng hiển thị một giao diện chung cho lớp bên trên chúng. Theo cách này, khi một phần của ngăn xếp giao thức thay đổi, phần còn lại của ngăn xếp không nhất thiết phải thay đổi. giao thức đang được sử dụng tại một số cấp dưới của ngăn xếp. Nói chung, mỗi lớp liên tiếp xuống ngăn xếp sẽ gói gọn thông điệp được tạo bởi lớp cao nhất tiếp theo trong trường tải trọng riêng của nó khi một tin nhắn được gửi. Khi nhận được một tin nhắn, mỗi lớp sẽ loại bỏ phần có liên quan đến lớp đó và chuyển tiếp trọng tải của nó đến lớp thích hợp tiếp theo lên ngăn xếp. Điều này đúng, không chỉ USB, mà hầu hết mọi xe buýt liên lạc. Ví dụ, ngăn xếp TCP / IP / Ethernet có thể được sử dụng phổ biến nhất trong số này. Các tác vụ mà các lớp đã cho thường chịu trách nhiệm được mô tả trong các mô hình, chẳng hạn như mô hình OSI .

Trong USB, có một giao thức lớp vật lý xác định trạng thái điện áp / thời gian / v.v. trên dây và cách chúng nên được giải thích. Giao thức này rõ ràng cần phải là một phần của các tiêu chuẩn USB, không dành riêng cho một thiết bị nhất định (đặc biệt là vì máy chủ không có cách nào để biết loại thiết bị nào sắp được cắm vào cổng USB nhất định.)

Tiếp theo, có một giao thức quản lý xe buýt, được sử dụng để mô tả ai có thể nói chuyện trên xe buýt khi nào. Đây được gọi là lớp truy cập phương tiện trong mô hình OSI. Trong USB, lớp này có thể được tóm tắt khá nhiều vì "thiết bị có thể truyền khi máy chủ bảo nó làm như vậy", vì vậy không có giao thức đặc biệt phức tạp nào ở lớp này trong USB.

Tiếp theo, có một giao thức chuẩn để mô tả một gói dữ liệu và cách định tuyến nó từ người gửi đến người nhận. Lớp này cũng cần phải là một phần của tiêu chuẩn USB, để giao tiếp ban đầu để khám phá loại thiết bị nào được gắn có thể xảy ra trước khi loại thiết bị cụ thể thực sự được máy chủ biết. Ngoài mỗi thiết bị có một ID cụ thể ở lớp này, còn có khái niệm về USB của ID điểm cuối. Điều này cho phép bất kỳ thiết bị cụ thể nào có nhiều điểm cuối USB, được ghép kênh và phân tách theo ngăn xếp USB tiêu chuẩn, giống như cách các ổ cắm được ghép kênh và phân tách bởi ngăn xếp TCP / IP tiêu chuẩn. Một ứng dụng có thể coi mỗi điểm cuối này là các luồng dữ liệu riêng biệt.

Cuối cùng, có giao thức được xác định cho chính thiết bị. Lưu ý rằng thực tế có một số thiết kế được thiết kế sẵn phổ biến được bao gồm như một phần của tiêu chuẩn USB cho các trường hợp sử dụng phổ biến, chẳng hạn như thiết bị lưu trữ dung lượng lớn, chuột, bàn phím, v.v., để mọi nhà sản xuất thiết bị không phải phát minh lại bánh xe. Tuy nhiên, các thiết bị phức tạp hơn có thể tự do thiết kế giao thức tùy chỉnh của riêng họ ở lớp này. Đầu ra của lớp này cho một truyền nhất định được truyền dưới dạng tải trọng của gói dữ liệu ở lớp trước. Lưu ý rằng, đối với các thiết bị đủ phức tạp, phần giao thức cụ thể của thiết bị có thể được chia thành nhiều lớp độc lập, nhưng các cấp thấp hơn không phải biết hoặc quan tâm đến điều đó. Tất cả những gì họ cần biết là họ cần truyền một tập hợp byte nhất định từ máy chủ đến một điểm cuối thiết bị cụ thể hoặc từ một điểm cuối thiết bị cụ thể đến máy chủ. Một lần nữa, việc có giao diện chuẩn giữa các lớp cho phép tách các mối quan tâm, do đó, một lớp không phải quan tâm đến hoạt động bên trong của lớp khác, mà chỉ cần dữ liệu cụ thể mà nó sẽ chuyển đến hoặc mong đợi nhận được từ các lớp ngay trên hoặc bên dưới nó trong ngăn xếp.


9

Thực tế có một bộ các giao thức truyền thông liên quan tương tác.

Ở mức thấp nhất, có một giao thức mô tả cách các gói byte được gửi qua kết nối nối tiếp. Điều này là phổ biến cho tất cả các thiết bị USB (nhưng khác nhau giữa USB2 và USB3).

Một trong những gói đầu tiên được gửi yêu cầu thiết bị mô tả chính nó. Để ngăn chặn sự cố trứng gà, giao thức nhận dạng giống nhau cho tất cả các thiết bị USB. HĐH có thể sử dụng nhận dạng này để tải trình điều khiển chính xác.

Ở một cấp độ khác, USB là một chiếc xe buýt có nghĩa là nhiều thiết bị phải chia sẻ băng thông. Điều này có nghĩa là có một giao thức cho mỗi thiết bị biết khi nào nó có thể nói chuyện và khi nào thì không. Vì tất cả các thiết bị USB phải tuân thủ điều này, một giao thức chung được sử dụng để sắp xếp việc này.

Cuối cùng, nhiều thiết bị USB đơn giản đến mức có các giao thức bổ sung mô tả toàn bộ lớp thiết bị (chuột, bàn phím, bộ lưu trữ, bộ điều hợp ethernet, ...). Hầu hết các thiết bị hỗ trợ không hoặc một trong các giao thức chức năng này.


"USB là một chiếc xe buýt có nghĩa là nhiều thiết bị phải chia sẻ băng thông" - Một điểm mà OP đã bỏ qua khi anh ta chỉ sử dụng thiết lập điểm-điểm cho câu hỏi của mình. Vì hai (hoặc nhiều) thiết bị USB có thể chia sẻ cáp với PC chủ, chúng tôi có thể suy ra rằng phải có giao thức.
mùn cưa

@sawdust Vì nó hoạt động hoàn toàn (thậm chí từ điểm tới điểm), chúng tôi có thể suy ra rằng có một giao thức. Chẳng hạn, việc phát hiện thiết bị sẽ không thể thực hiện được nếu không có giao thức chuẩn.
thiệu lại vào

Thực sự có một tiêu chuẩn truyền thông và cốt lõi là truyền thông nối tiếp Universal Serial Bus.
Ramhound

@Ramhound Có, giống như hầu hết các thiết kế xe buýt hiện đại cho mọi thứ trừ giao diện bộ nhớ, USB sử dụng các cặp vi sai nối tiếp để truyền dữ liệu. USB <= 2.0 có một cặp vi sai duy nhất, trong khi USB 3 có hai cặp vi sai bổ sung (một cho truyền SuperSpeed ​​và một cho nhận SuperSpeed, cho phép giao tiếp song công hoàn toàn ở tốc độ 5 Gbps mỗi hướng.)
thiệu lại vào

Tôi chỉ nghĩ rằng tôi sẽ chỉ một chiếc xe buýt nối tiếp vào cốt lõi của tiêu chuẩn, tác giả dường như không nhận thức được thực tế này, vì vậy câu hỏi.
Ramhound

5

Có lẽ một phần của câu trả lời nằm trong định nghĩa của cụm từ " giao thức truyền thông ". Truy cập vào cùng một nguồn bạn đã làm (Wikipedia), bạn sẽ tìm thấy thông tin hữu ích như:

  • Để truyền thông diễn ra, các giao thức phải được thỏa thuận.
  • Hệ thống giao tiếp sử dụng các định dạng (giao thức) được xác định rõ để trao đổi tin nhắn.
  • một giao thức phải xác định cú pháp, ngữ nghĩa và đồng bộ hóa giao tiếp.
  • Do đó, một giao thức có thể được thực hiện dưới dạng phần cứng, phần mềm hoặc cả hai.

Một cách đơn giản để nghĩ về nó là một giao thức là một xác định trước và thỏa thuận cách để làm một cái gì đó , trong trường hợp này một cái gì đó là làm thế nào để di chuyển dữ liệu vào và ra khỏi một thiết bị USB được kết nối. Phần cứng thông minh mỗi pin có một mức điện áp và giao thức sử dụng được xác định trước, mỗi loại thiết bị có một giao thức sử dụng được xác định trước cho mỗi pin và mỗi gói dữ liệu có một cú pháp và định dạng dữ liệu được xác định trước. Ngoài ra còn có một giao thức bắt tay giao tiếp được kết hợp. Nói chung, đây là tất cả các phần của bộ tiêu chuẩn sử dụng các thiết bị USB, còn gọi là giao thức USB, được quyết định (nghĩa là được thiết kế, đề xuất, tranh luận, sửa đổi và cuối cùng đã đồng ý) bởi các thành viên của Diễn đàn triển khai USB, Inc.

Vì vậy, có, có một giao thức USB, hay đúng hơn đó một số tiền xác định và thoả thuận giao thức USB s cho sử dụng USB khác nhau.


1
1. Các quá trình thông tin liên lạc bao gồm (ít nhất) ba yếu tố: (1) mã hóa / gửi (2) nhận / giải mã (3) _information_ (như trái ngược với tiếng ồn ngẫu nhiên). Nếu bất kỳ yếu tố nào trong số 3 yếu tố này bị thiếu thì quá trình sẽ thất bại. Các yếu tố bổ sung cũng có thể có mặt như phản hồi, phương tiện (kênh) và bối cảnh giữa các yếu tố khác. NGUỒN: Một trong những bằng cấp của tôi là về Nghiên cứu Truyền thông
OMY

1
2. SETI không phải làvề giao tiếp, nó là về khám phá & khám phá . Ngay cả khi chúng tôi phát hiện tín hiệu được sản xuất xác thực, không có gì đảm bảo rằng chúng tôi sẽ hiểu nó hoặc có thể giao tiếp với người gửi. NGUỒN: [Tuyên bố sứ mệnh của SETI] [1] [1]: seti.org/about-us
OMY

1
3. Khả năng tương thích trình duyệt chéo thường do (a) các nhà sản xuất trình duyệt không tuân theo các giao thức hoặc (b) các giao thức được viết kém gây ra triển khai thiếu sót (ví dụ: xem xét cáclỗi mô hình hộp IE khét tiếngvà cũng xem < quirksmode.org> ). Đó là wy chúng tôi hiện có HTML 5 và CSS 3 , vì các giao thức cần cải thiện. NGUỒN: Sở hữu và điều hành công ty phát triển web của riêng tôi trong một số năm
OMY

1
4. Đầu tiên, tín hiệu vô tuyến "đồng bộ hóa" trên tần số sử dụng các giao thức AM (điều chế biên độ). Tín hiệu vô tuyến FM (điều chế tần số) "đồng bộ hóa" thành tích phân thời gian. Các giao thức cho các hệ thống FM liên quan đến các yếu tố cố định động để xử lý thông tin. Phần tử động làcài đặt tần số thay đổi , được giới hạn trong phạm vi tần số được xác định trước và giới hạn.
OMY

1
Các phần tử cố định là các công thức toán học để điều chế và giải điều chế tín hiệu. Bất kể tần số nào các công thức này là không đổi và có thể được thực hiện để xử lý tín hiệu thông qua phần cứng tương tự hoặc phần mềm kỹ thuật số. NGUỒN: Kinh nghiệm cá nhân với tư cách là một người có sở thích điện tử và cũng [Wikipedia] [1] [1]: en.wikipedia.org/wiki/Frequency_modulation
OMY
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.