Υπάρχει πραγματικό πρωτόκολλο επικοινωνίας USB;
Οι περισσότεροι από εμάς δεν σκεφτόμαστε ποτέ τις συσκευές μας USB, απλά τις συνδέουμε και τις ξεχνάμε. Αλλά τι εάν είστε ο περίεργος τύπος που θέλει να μάθει περισσότερα για το πώς λειτουργεί το USB; Η σημερινή θέση Q & A της SuperUser έχει τις απαντήσεις σε ερωτήσεις περίεργου αναγνώστη.
Η σημερινή συνάντηση ερωτήσεων και απαντήσεων έρχεται σε επαφή με το SuperUser - μια υποδιαίρεση του Stack Exchange, μια κοινότητα που κατευθύνεται από τους ιστότοπους ερωτήσεων & απαντήσεων.
Φωτογραφία ευγενική προσφορά της Evilelka Kowalski (Flickr).
Το ερώτημα
Ο αναγνώστης SuperEser smeeb θέλει να μάθει αν υπάρχει πραγματικά ένα πραγματικό πρωτόκολλο επικοινωνίας USB:
Σύμφωνα με τη Wikipedia, USB:
- Ορίζει τα καλώδια, τις υποδοχές και τα πρωτόκολλα επικοινωνίας που χρησιμοποιούνται σε ένα δίαυλο για σύνδεση, επικοινωνία και τροφοδοσία μεταξύ υπολογιστών και ηλεκτρονικών συσκευών.
Αλλά υπάρχει πραγματική Πρωτόκολλο επικοινωνίας USB? Η κατανόησή μου είναι ότι:
- Συνδέετε μια συσκευή USB σε ένα μηχάνημα (για παράδειγμα το Ubuntu ή οποιοδήποτε είδος Linux).
- Το Linux βρίσκει το πρόγραμμα οδήγησης συσκευής για τη συγκεκριμένη συσκευή με κάποιο τρόπο (μπόνους αν γνωρίζετε!) και το φορτώνει.
- Η συσκευή είναι τώρα συνδεδεμένη κάτω / dev / theDevice.
- Οι εφαρμογές χώρου χρήστη μπορούν τώρα να διαβάσουν και να γράψουν σε / dev / theDevice και ο οδηγός χειρίζεται την είσοδο και την έξοδο χαμηλού επιπέδου στην υποκείμενη συσκευή / υλικό.
Από όσο μπορώ να πω, α Πρωτόκολλο επικοινωνίας USB δεν εμφανίζεται σε αυτό το σημείο. Εάν η κατανόησή μου είναι σωστή, το USB είναι μόνο η καλωδιακή και ηλεκτρική σύνδεση μεταξύ του υπολογιστή και της συσκευής.
Σφάλω εδώ; Η εφαρμογή USB υλοποιεί κάποιο είδος πρωτοκόλλου χαμηλού επιπέδου που υπογραμμίζει την παραπάνω ροή; Αν ναι, τι είναι αυτό και πώς λειτουργεί σε μια θέα 30.000 ποδιών?
Υπάρχει ένα πραγματικό πρωτόκολλο επικοινωνίας USB?
Η απάντηση
Οι συνεργάτες SuperUser RedGrittyBrick και projectdp έχουν την απάντηση για εμάς. Πρώτα επάνω, RedGrittyBrick:
Ναι (βλ. Πρωτόκολλα USB).
Όπως το καταλαβαίνω, το spec USB ορίζει ένα περίπλοκο σύνολο πρωτοκόλλων με στρώματα και προφίλ συσκευών.
Για παράδειγμα, οι συσκευές USB μπορούν να συμμορφώνονται με πρότυπα υψηλού επιπέδου, όπως μαζική αποθήκευση, πληκτρολόγιο, συσκευή ανθρώπινης διεπαφής κλπ. Και να διαχειρίζονται από ένα πρόγραμμα οδήγησης γενικής συσκευής. Ορισμένες συσκευές USB μπορούν να επικοινωνούν σε χαμηλότερο επίπεδο έτσι ώστε η υποστήριξη USB χαμηλού επιπέδου του λειτουργικού συστήματος να μπορεί να αναγνωρίζει ότι απαιτούνται ειδικά προγράμματα οδήγησης υψηλότερου επιπέδου συσκευών.
Ακολούθησε η απάντηση από projectdp:
Ερώτηση
Υπάρχει ένα πρωτόκολλο επικοινωνίας USB χαμηλού επιπέδου σε δράση και τι είναι αυτό?
Απάντηση
Ναι υπάρχει. Η προδιαγραφή USB περιλαμβάνει το πρωτόκολλο USB που καθορίζει τον τρόπο χρήσης του διαύλου σε επίπεδο bit. Αυτό θα ήταν το πρωτόκολλο χαμηλού επιπέδου που βασίζεται στα πρωτόκολλα υψηλότερου επιπέδου (δηλ. Αποθήκευση μάζας, HID κ.λπ.).
Για λεπτομέρειες σχετικά με τον τρόπο λειτουργίας του πρωτοκόλλου USB, αυτό το wiki OSDev είναι χρήσιμο. Ακολουθεί μια άλλη ενδιαφέρουσα περιγραφή που χρησιμοποιεί διαγράμματα αλληλουχίας για να περιγράψει τις διάφορες συναλλαγές δεδομένων σύμφωνα με το πρωτόκολλο USB.
Ερώτηση μπόνους
Πώς εντοπίζει το Linux και φορτώνει το πρόγραμμα οδήγησης της συσκευής αυτής?
Απόκριση μπόνους
Στο Linux, όταν χρησιμοποιείτε πυρήνα με δυνατότητα USB, θα εντοπιστεί μια συσκευή εργασίας USB μέσω του υλικού και του πυρήνα λόγω των προδιαγραφών USB. Από την πλευρά του υλικού, η ανίχνευση γίνεται από τον ελεγκτή κεντρικού υπολογιστή USB. Στη συνέχεια, στον πυρήνα ο οδηγός ελεγκτή κεντρικού υπολογιστή αναλαμβάνει και μεταφράζει τα bit χαμηλής στάθμης του καλωδίου σε μορφοποιημένες πληροφορίες πρωτοκόλλου USB. Στη συνέχεια, οι πληροφορίες αυτές συμπληρώνονται στο πρόγραμμα οδήγησης usbcore στον πυρήνα.
Παραφράζω από αυτό το εξαιρετικό άρθρο Opensourceforu, το οποίο έχει πολύ περισσότερες λεπτομέρειες και σαφήνεια σχετικά με την ερώτησή σας στο περιβάλλον του Linux.
Βεβαιωθείτε ότι έχετε δει την υπόλοιπη ζωντανή συζήτηση μέσω του συνδέσμου νήματος που μοιράζεται παρακάτω!
Έχετε κάτι να προσθέσετε στην εξήγηση; Απενεργοποιήστε τα σχόλια. Θέλετε να διαβάσετε περισσότερες απαντήσεις από άλλους τεχνολογικούς χρήστες Stack Exchange; Δείτε το πλήρες νήμα συζήτησης εδώ.