Οι συσκευές Plug and Play χρειάζονται οδηγούς?
Γενικές πληροφορίες σχετικά με την υποστήριξη για συσκευές Plug & Play
Μόλις το BIOS εντοπίσει το σκληρό δίσκο, την κάρτα βίντεο και το πληκτρολόγιο είναι έτοιμο να ξεκινήσει την εκκίνηση (φόρτωση του λειτουργικού συστήματος στη μνήμη από το σκληρό δίσκο). Εάν έχετε πει στο BIOS ότι έχετε ένα λειτουργικό σύστημα PNP (PNP OS), θα πρέπει να ξεκινήσει την εκκίνηση του υπολογιστή όπως παραπάνω και να αφήσει το λειτουργικό σύστημα να ολοκληρώσει τη διαμόρφωση του PNP. Διαφορετικά, ένα PNP-BIOS (πριν από την εκκίνηση) πιθανόν να προσπαθήσει να κάνει το υπόλοιπο PNP διαμόρφωση συσκευών (αλλά δεν ενημερώνει τα προγράμματα οδήγησης συσκευών για το τι έκανε). Αλλά οι οδηγοί μπορούν ακόμα να το μάθουν χρησιμοποιώντας λειτουργίες διαθέσιμες στον πυρήνα Linux.
Οι συσκευές Plug and Play χρειάζονται οδηγούς?
Εάν δεν καταλαβαίνετε αυτήν την ενότητα, διαβάστε τις συσκευές υλικού της επόμενης ενότητας και επικοινωνία μαζί τους
Υποστηριζόμενο, το Plug-and-Play λέει στο λογισμικό (προγράμματα οδήγησης συσκευών) πού να βρείτε διάφορα κομμάτια υλικού (συσκευές) όπως μόντεμ, κάρτες δικτύου, κάρτες ήχου κ.λπ. Η εργασία του Plug-and-play είναι να ταιριάζει με τις φυσικές συσκευές με το λογισμικό (προγράμματα οδήγησης συσκευών) που τους εκμεταλλεύεται και να δημιουργήσει κανάλια επικοινωνίας μεταξύ κάθε φυσικής συσκευής και του προγράμματος οδήγησης. Προκειμένου να επιτευχθεί αυτό, το PNP διαθέτει και ορίζει τα ακόλουθα “resources” σε υλικό: διευθύνσεις I/O, περιοχές μνήμης, IRQs, DMA κανάλια (μόνο λεωφορεία LPC και ISA). Αυτά τα 4 πράγματα ονομάζονται μερικές φορές “πόροι 1ης τάξης” ή απλώς “πόροι”. Το PNP διατηρεί ένα αρχείο για το τι έχει γίνει και επιτρέπει στους οδηγούς συσκευών να λάβουν αυτές τις πληροφορίες. Εάν δεν καταλαβαίνετε τι είναι αυτές οι 4 πόρτες λεωφορείων, διαβάστε τα ακόλουθα υποτμήματα αυτού του Howto: διευθύνσεις I/O, IRQS, DMA κανάλια, περιοχές μνήμης. Ένα άρθρο στο Linux Gazette σχετικά με 3 από αυτούς τους πόρους λεωφορείων είναι η εισαγωγή σε IRQs, DMAs και βασικές διευθύνσεις. Μόλις έχουν εκχωρηθεί αυτές οι πόρτες διαύλου (και εάν έχει εγκατασταθεί το σωστό πρόγραμμα οδήγησης), το πραγματικό πρόγραμμα οδήγησης και τα “αρχεία” για αυτό στον κατάλογο /dev είναι έτοιμοι για χρήση.
Αυτή η αντιστοίχιση PNP των resources διαύλου ονομάζεται μερικές φορές “διαμόρφωση”, αλλά είναι μόνο ένας τύπος διαμόρφωσης χαμηλού επιπέδου. Ο κατάλογος /etc έχει πολλά αρχεία ρυθμίσεων, αλλά τα περισσότερα από αυτά δεν είναι για διαμόρφωση PNP. Έτσι, το μεγαλύτερο μέρος της διαμόρφωσης των συσκευών υλικού δεν έχει καμία σχέση με το PNP ή τις πόρτες λεωφορείων. Για παράδειγμα, η αρχικοποίηση ενός μόντεμ με “string init” ή η ρύθμιση της ταχύτητας δεν είναι PNP. Έτσι, όταν μιλάμε για το PNP, η “διαμόρφωση” σημαίνει μόνο έναν συγκεκριμένο τύπο διαμόρφωσης. Ενώ άλλα έγγραφα (όπως για τα MS Windows) καλούν απλώς τους “πόρους”, χρησιμοποιώ μερικές φορές τον όρο “resources” αντί για “πόρους”, ώστε να το διακρίνω από το πλήθος άλλων πόρων.
Το PNP είναι μια διαδικασία που γίνεται από διάφορα λογισμικά και υλικό. Εάν υπήρχε μόνο ένα πρόγραμμα που χειριζόταν το PNP στο Linux, θα ήταν απλό. Αλλά με το Linux, κάθε πρόγραμμα οδήγησης συσκευής κάνει το δικό του PNP, χρησιμοποιώντας λογισμικό που παρέχεται από τον πυρήνα. Το υλικό BIOS του υπολογιστή κάνει PNP όταν ένας υπολογιστής είναι πρώτα τροφοδοτείται. Και υπάρχουν πολλά περισσότερα από αυτό.
Ένας υπολογιστής αποτελείται από CPU/επεξεργαστή για να κάνει την υπολογιστική και μνήμη RAM για την αποθήκευση προγραμμάτων και δεδομένων (για γρήγορη πρόσβαση). Επιπλέον, υπάρχουν διάφορες συσκευές όπως διάφορα είδη δίσκων, μια κάρτα βίντεο, πληκτρολόγιο, συσκευές δικτύου, κάρτες μόντεμ, συσκευές ήχου, λεωφορείο USB, σειριακές και παράλληλες θύρες κ.λπ. Στις παλιές μέρες οι περισσότερες συσκευές βρίσκονταν σε κάρτες που εισήχθησαν σε κουλοχέρηδες στον υπολογιστή. Σήμερα, πολλές συσκευές που ήταν πρώην κάρτες είναι τώρα επί του σκάφους, αφού περιέχονται σε μάρκες στη μητρική πλακέτα. Υπάρχει επίσης μια τροφοδοσία για την παροχή ηλεκτρικής ενέργειας, διάφορα λεωφορεία σε μια μητρική πλακέτα για τη σύνδεση των συσκευών με την CPU και μια περίπτωση για να βάλουμε όλα αυτά σε.
Οι κάρτες που συνδέονται στη μητρική πλακέτα ενδέχεται να περιέχουν περισσότερες από μία συσκευές. Οι μάρκες μνήμης θεωρούνται επίσης μερικές φορές συσκευές, αλλά δεν είναι plug-and-play με την έννοια που χρησιμοποιείται σε αυτό το howto.
Για να λειτουργήσει σωστά το σύστημα υπολογιστή, κάθε συσκευή πρέπει να είναι υπό τον έλεγχο του “προγράμματος οδήγησης συσκευής”. Αυτό είναι λογισμικό που αποτελεί μέρος του λειτουργικού συστήματος (ίσως φορτωμένο ως ενότητα) και τρέχει στο CPU. Τα προγράμματα οδήγησης συσκευών σχετίζονται με “ειδικά αρχεία” στον κατάλογο /dever, αν και δεν είναι πραγματικά αρχεία. Έχουν ονόματα όπως HDA3 (τρίτο διαμέρισμα σε σκληρό δίσκο Α), TTYS1 (η δεύτερη σειριακή θύρα), ETH0 (η πρώτη κάρτα Ethernet) κ.λπ.
Η συσκευή ETH0 είναι για μια κάρτα Ethernet (κάρτα NIC). Πρώην ήταν /dev /eth0, αλλά τώρα είναι απλώς μια εικονική συσκευή στον πυρήνα. Αυτό που αναφέρεται στο ETH0 εξαρτάται από τον τύπο της κάρτας Ethernet που έχετε. Εάν ο οδηγός είναι μια ενότητα, αυτή η ανάθεση είναι πιθανή σε έναν εσωτερικό πίνακα πυρήνα, αλλά μπορεί να βρεθεί στο /etc /modules.Conf (ονομάζεται “ψευδώνυμο”). Για παράδειγμα, εάν έχετε μια κάρτα Ethernet που χρησιμοποιεί το τσιπ “Tulip” θα μπορούσατε να βάλετε “Tulip Alias Eth0 σε /etc /modules.Συνεχίστε ότι όταν ο υπολογιστής σας ζητά το ETH0, βρίσκει το πρόγραμμα οδήγησης τουλίπας. Ωστόσο, οι σύγχρονοι πυρήνες μπορούν συνήθως να βρουν τη σωστή μονάδα οδηγού, ώστε να σπάνια πρέπει να το καθορίσετε μόνοι σας.
Για τον έλεγχο μιας συσκευής, η CPU (υπό τον έλεγχο του προγράμματος οδήγησης της συσκευής) στέλνει εντολές και δεδομένα και διαβάζει την κατάσταση και τα δεδομένα από τις διάφορες συσκευές. Για να γίνει αυτό, κάθε πρόγραμμα οδήγησης συσκευής πρέπει να γνωρίζει τη διεύθυνση της συσκευής που ελέγχει. Η γνώση μιας τέτοιας διεύθυνσης είναι ισοδύναμη με τη δημιουργία ενός καναλιού επικοινωνίας, παρόλο που το φυσικό “κανάλι” είναι στην πραγματικότητα ο δίαυλος δεδομένων μέσα στον υπολογιστή που μοιράζεται με πολλές άλλες συσκευές.
Αυτό το κανάλι επικοινωνίας είναι στην πραγματικότητα λίγο πιο περίπλοκο από ό, τι περιγράφεται παραπάνω. Μια “διεύθυνση” είναι στην πραγματικότητα μια σειρά διευθύνσεων, οπότε μερικές φορές χρησιμοποιείται η λέξη “εύρος” αντί για “διεύθυνση”. Θα μπορούσαν ακόμη και να υπάρξουν περισσότερα από ένα εύρος (χωρίς επικάλυψη) για μία μόνο συσκευή. Επίσης, υπάρχει ένα αντίστροφο μέρος του καναλιού (γνωστό ως διακοπές) που επιτρέπει στις συσκευές να στέλνουν ένα επείγον αίτημα “βοήθειας” στο πρόγραμμα οδήγησης της συσκευής τους.
Ο δίαυλος PCI διαθέτει 3 χώρους διευθύνσεων: I/O, κύρια μνήμη (μνήμη IO) και διαμόρφωση.
Γενικές πληροφορίες σχετικά με την υποστήριξη για συσκευές Plug & Play
Μόλις το BIOS εντοπίσει το σκληρό δίσκο, την κάρτα βίντεο και το πληκτρολόγιο είναι έτοιμο να ξεκινήσει την εκκίνηση (φόρτωση του λειτουργικού συστήματος στη μνήμη από το σκληρό δίσκο). Εάν έχετε πει στο BIOS ότι έχετε ένα λειτουργικό σύστημα PNP (PNP OS), θα πρέπει να ξεκινήσει την εκκίνηση του υπολογιστή όπως παραπάνω και να αφήσει το λειτουργικό σύστημα να ολοκληρώσει τη διαμόρφωση του PNP. Διαφορετικά, ένα PNP-BIOS (πριν από την εκκίνηση) πιθανόν να προσπαθήσει να κάνει το υπόλοιπο PNP διαμόρφωση συσκευών (αλλά δεν ενημερώνει τα προγράμματα οδήγησης συσκευών για το τι έκανε). Αλλά οι οδηγοί μπορούν ακόμα να το μάθουν χρησιμοποιώντας λειτουργίες διαθέσιμες στον πυρήνα Linux.
Οι συσκευές Plug and Play χρειάζονται οδηγούς?
Εάν δεν καταλαβαίνετε αυτήν την ενότητα, διαβάστε τις συσκευές υλικού της επόμενης ενότητας και επικοινωνία μαζί τους
Υποστηριζόμενο, το Plug-and-Play λέει στο λογισμικό (προγράμματα οδήγησης συσκευών) πού να βρείτε διάφορα κομμάτια υλικού (συσκευές) όπως μόντεμ, κάρτες δικτύου, κάρτες ήχου κ.λπ. Η εργασία του Plug-and-play είναι να ταιριάζει με τις φυσικές συσκευές με το λογισμικό (προγράμματα οδήγησης συσκευών) που τους εκμεταλλεύεται και να δημιουργήσει κανάλια επικοινωνίας μεταξύ κάθε φυσικής συσκευής και του προγράμματος οδήγησης. Προκειμένου να επιτευχθεί αυτό, το PNP διαθέτει και ορίζει τα ακόλουθα “resources” σε υλικό: διευθύνσεις I/O, περιοχές μνήμης, IRQs, DMA κανάλια (μόνο λεωφορεία LPC και ISA). Αυτά τα 4 πράγματα ονομάζονται μερικές φορές “πόροι 1ης τάξης” ή απλώς “πόροι”. Το PNP διατηρεί ένα αρχείο για το τι έχει γίνει και επιτρέπει στους οδηγούς συσκευών να λάβουν αυτές τις πληροφορίες. Εάν δεν καταλαβαίνετε τι είναι αυτές οι 4 πόρτες λεωφορείων, διαβάστε τα ακόλουθα υποτμήματα αυτού του Howto: διευθύνσεις I/O, IRQS, DMA κανάλια, περιοχές μνήμης. Ένα άρθρο στο Linux Gazette σχετικά με 3 από αυτούς τους πόρους λεωφορείων είναι η εισαγωγή σε IRQs, DMAs και βασικές διευθύνσεις. Μόλις έχουν εκχωρηθεί αυτές οι πόρτες διαύλου (και εάν έχει εγκατασταθεί το σωστό πρόγραμμα οδήγησης), το πραγματικό πρόγραμμα οδήγησης και τα “αρχεία” για αυτό στον κατάλογο /dev είναι έτοιμοι για χρήση.
Αυτή η αντιστοίχιση PNP των resources διαύλου ονομάζεται μερικές φορές “διαμόρφωση”, αλλά είναι μόνο ένας τύπος διαμόρφωσης χαμηλού επιπέδου. Ο κατάλογος /etc έχει πολλά αρχεία ρυθμίσεων, αλλά τα περισσότερα από αυτά δεν είναι για διαμόρφωση PNP. Έτσι, το μεγαλύτερο μέρος της διαμόρφωσης των συσκευών υλικού δεν έχει καμία σχέση με το PNP ή τις πόρτες λεωφορείων. Για παράδειγμα, η αρχικοποίηση ενός μόντεμ από μια “string init” ή η ρύθμιση της ταχύτητας δεν είναι PNP. Έτσι, όταν μιλάμε για το PNP, η “διαμόρφωση” σημαίνει μόνο έναν συγκεκριμένο τύπο διαμόρφωσης. Ενώ άλλα έγγραφα (όπως για τα MS Windows) καλούν απλώς τους “πόρους”, χρησιμοποιώ μερικές φορές τον όρο “resources” αντί για “πόρους”, ώστε να το διακρίνω από το πλήθος άλλων πόρων.
Το PNP είναι μια διαδικασία που γίνεται από διάφορα λογισμικά και υλικό. Εάν υπήρχε μόνο ένα πρόγραμμα που χειριζόταν το PNP στο Linux, θα ήταν απλό. Αλλά με το Linux κάθε πρόγραμμα οδήγησης συσκευής κάνει το δικό του PNP, χρησιμοποιώντας λογισμικό που παρέχεται από τον πυρήνα. Το υλικό BIOS του υπολογιστή κάνει PNP όταν ένας υπολογιστής είναι πρώτα τροφοδοτείται. Και υπάρχουν πολλά περισσότερα από αυτό.
Ένας υπολογιστής αποτελείται από CPU/επεξεργαστή για να κάνει την υπολογιστική και μνήμη RAM για την αποθήκευση προγραμμάτων και δεδομένων (για γρήγορη πρόσβαση). Επιπλέον, υπάρχουν διάφορες συσκευές όπως διάφορα είδη δίσκων, μια κάρτα βίντεο, πληκτρολόγιο, συσκευές δικτύου, κάρτες μόντεμ, συσκευές ήχου, λεωφορείο USB, σειριακές και παράλληλες θύρες κ.λπ. Στις παλιές μέρες οι περισσότερες συσκευές βρίσκονταν σε κάρτες που εισήχθησαν σε κουλοχέρηδες στον υπολογιστή. Σήμερα, πολλές συσκευές που ήταν προηγουμένως κάρτες, είναι τώρα επί του σκάφους, δεδομένου ότι περιέχονται σε μάρκες στη μητρική πλακέτα. Υπάρχει επίσης μια τροφοδοσία για την παροχή ηλεκτρικής ενέργειας, διάφορα λεωφορεία σε μια μητρική πλακέτα για τη σύνδεση των συσκευών με την CPU και μια περίπτωση για να βάλουμε όλα αυτά σε.
Οι κάρτες που συνδέονται στη μητρική πλακέτα ενδέχεται να περιέχουν περισσότερες από μία συσκευές. Οι μάρκες μνήμης θεωρούνται επίσης μερικές φορές συσκευές, αλλά δεν είναι plug-and-play με την έννοια που χρησιμοποιείται σε αυτό το howto.
Για να λειτουργήσει σωστά το σύστημα υπολογιστή, κάθε συσκευή πρέπει να είναι υπό τον έλεγχο του “προγράμματος οδήγησης συσκευής”. Αυτό είναι λογισμικό που αποτελεί μέρος του λειτουργικού συστήματος (ίσως φορτωμένο ως ενότητα) και τρέχει στο CPU. Τα προγράμματα οδήγησης συσκευών σχετίζονται με “ειδικά αρχεία” στον κατάλογο /dever, αν και δεν είναι πραγματικά αρχεία. Έχουν ονόματα όπως HDA3 (τρίτο διαμέρισμα σε σκληρό δίσκο Α), TTYS1 (η δεύτερη σειριακή θύρα), ETH0 (η πρώτη κάρτα Ethernet) κ.λπ.
Η συσκευή ETH0 είναι για μια κάρτα Ethernet (κάρτα NIC). Πρώην ήταν /dev /eth0, αλλά τώρα είναι απλώς μια εικονική συσκευή στον πυρήνα. Αυτό που αναφέρεται στο ETH0 εξαρτάται από τον τύπο της κάρτας Ethernet που έχετε. Εάν ο οδηγός είναι μια ενότητα, αυτή η ανάθεση είναι πιθανή σε έναν εσωτερικό πίνακα πυρήνα, αλλά μπορεί να βρεθεί στο /etc /modules.Conf (ονομάζεται “ψευδώνυμο”). Για παράδειγμα, εάν έχετε μια κάρτα Ethernet που χρησιμοποιεί το τσιπ “Tulip” θα μπορούσατε να βάλετε “Tulip Alias Eth0 σε /etc /modules.Συνεχίστε ότι όταν ο υπολογιστής σας ζητά το ETH0, βρίσκει το πρόγραμμα οδήγησης τουλίπας. Ωστόσο, οι σύγχρονοι πυρήνες μπορούν συνήθως να βρουν τη σωστή μονάδα οδηγού, ώστε να σπάνια πρέπει να το καθορίσετε μόνοι σας.
Για τον έλεγχο μιας συσκευής, η CPU (υπό τον έλεγχο του προγράμματος οδήγησης της συσκευής) στέλνει εντολές και δεδομένα και διαβάζει την κατάσταση και τα δεδομένα από τις διάφορες συσκευές. Για να γίνει αυτό κάθε πρόγραμμα οδήγησης συσκευής πρέπει να γνωρίζει τη διεύθυνση της συσκευής που ελέγχει. Η γνώση μιας τέτοιας διεύθυνσης είναι ισοδύναμη με τη δημιουργία ενός καναλιού επικοινωνίας, παρόλο που το φυσικό “κανάλι” είναι στην πραγματικότητα ο δίαυλος δεδομένων μέσα στον υπολογιστή που μοιράζεται με πολλές άλλες συσκευές.
Αυτό το κανάλι επικοινωνίας είναι στην πραγματικότητα λίγο πιο περίπλοκο από ό, τι περιγράφεται παραπάνω. Μια “διεύθυνση” είναι στην πραγματικότητα μια σειρά διευθύνσεων, έτσι ώστε μερικές φορές η λέξη “εύρος” χρησιμοποιείται αντί για “διεύθυνση”. Θα μπορούσε ακόμη και να υπάρξει περισσότερο από ένα εύρος (χωρίς επικάλυψη) για μία μόνο συσκευή. Επίσης, υπάρχει ένα αντίστροφο μέρος του καναλιού (γνωστό ως διακοπές) που επιτρέπει στις συσκευές να στέλνουν ένα επείγον αίτημα “βοήθειας” στο πρόγραμμα οδήγησης της συσκευής τους.
Ο δίαυλος PCI διαθέτει 3 χώρους διευθύνσεων: I/O, κύρια μνήμη (μνήμη IO) και διαμόρφωση. Το παλιό λεωφορείο ISA δεν διαθέτει έναν γνήσιο χώρο διευθύνσεων “διαμόρφωσης”. Μόνο οι χώροι μνήμης I/0 και IO χρησιμοποιούνται για τη συσκευή IO. Οι διευθύνσεις διαμόρφωσης είναι σταθερές και δεν μπορούν να αλλάξουν, ώστε να μην χρειάζεται να διατεθούν. Για περισσότερες λεπτομέρειες, ανατρέξτε στον χώρο διευθύνσεων διαμόρφωσης PCI
Όταν η CPU θέλει να αποκτήσει πρόσβαση σε μια συσκευή, θέτει τη διεύθυνση της συσκευής σε ένα σημαντικό δίαυλο του υπολογιστή (για PCI: Η διεύθυνση/δίαυλος δεδομένων). Όλοι οι τύποι διευθύνσεων (όπως τόσο η I/O όσο και η κύρια μνήμη) μοιράζονται το ίδιο λεωφορείο μέσα στον υπολογιστή. Αλλά η παρουσία ή η απουσία τάσης σε ορισμένα ειδικά καλώδια στο λεωφορείο του υπολογιστή αναφέρει ποιο “διάστημα” μια διεύθυνση είναι σε: I/O, κύρια μνήμη (βλέπε εύρος μνήμης) ή διαμόρφωση (μόνο PCI). Αυτό είναι λίγο υπεραπλουστευμένο από τότε που λέει μια συσκευή PCI ότι είναι μια πρόσβαση χώρου διαμόρφωσης είναι στην πραγματικότητα πιο περίπλοκη από ό, τι περιγράφεται παραπάνω. Δείτε το χώρο διευθύνσεων διαμόρφωσης PCI για λεπτομέρειες. Ανατρέξτε στις λεπτομέρειες διεύθυνσης για περισσότερες λεπτομέρειες σχετικά με την απευθυνόμενη γενικά.
Οι διευθύνσεις μιας συσκευής αποθηκεύονται στα μητρώα της στη φυσική συσκευή. Μπορούν να αλλάξουν με λογισμικό και μπορούν να απενεργοποιηθούν έτσι ώστε η συσκευή να έχει καθόλου διεύθυνση. Εκτός από το ότι η διεύθυνση διαμόρφωσης PCI δεν μπορεί να αλλάξει ή να απενεργοποιηθεί.
Οι συσκευές βρίσκονταν αρχικά στο χώρο διευθύνσεων I/O, αλλά σήμερα μπορούν να χρησιμοποιήσουν χώρο στην κύρια μνήμη. Μια διεύθυνση I/0 μερικές φορές ονομάζεται “I/O”, “IO”, “I/O” ή “IO”. Χρησιμοποιούνται επίσης οι όροι “θύρα εισόδου/εξόδου” ή “I/O”. Μην συγχέετε αυτές τις θύρες IO με “μνήμη IO” που βρίσκεται στην κύρια μνήμη. Υπάρχουν δύο βασικά βήματα για την κατανομή των διευθύνσεων I/O (ή κάποιες άλλες πόρτες λεωφορείων, όπως οι διακοπές στο λεωφορείο ISA):
- Ρυθμίστε τη διεύθυνση εισόδου/εξόδου κ.λπ. Στο υλικό (σε ένα από τα μητρώα του)
- Αφήστε το πρόγραμμα οδήγησης της συσκευής του να μάθει τι αυτή η διεύθυνση I/O κ.λπ. είναι
Συχνά, ο οδηγός της συσκευής κάνει και τα δύο (είδος). Ο οδηγός της συσκευής δεν χρειάζεται πραγματικά να ορίσει μια διεύθυνση I/O εάν διαπιστώσει ότι η διεύθυνση έχει προηγουμένως ρυθμιστεί (ίσως από το BIOS) και είναι πρόθυμη να δεχτεί αυτή τη διεύθυνση. Μόλις το πρόγραμμα οδήγησης είτε έχει ανακαλύψει ποια διεύθυνση έχει ρυθμιστεί προηγουμένως είτε ορίσει την ίδια τη διεύθυνση, τότε προφανώς γνωρίζει τι είναι η διεύθυνση, ώστε να μην χρειάζεται να αφήσουμε τον οδηγό να γνωρίζει τη διεύθυνση -το γνωρίζει ήδη.
Η διαδικασία δύο βημάτων παραπάνω (1. Ορίστε τη διεύθυνση στο υλικό. 2. Ενημερώστε το πρόγραμμα οδήγησης.) είναι κάτι σαν το δύο μέρος του προβλήματος της εύρεσης του αριθμού του σπιτιού κάποιου σε έναν δρόμο. Κάποιος πρέπει να εγκαταστήσει έναν αριθμό στο μπροστινό μέρος του σπιτιού, έτσι ώστε να μπορεί να βρεθεί και στη συνέχεια οι άνθρωποι που μπορεί να θέλουν να πάνε σε αυτή τη διεύθυνση πρέπει να αποκτήσουν (και να γράψουν) αυτόν τον αριθμό του σπιτιού, ώστε να μπορούν να βρουν το σπίτι. Για τους υπολογιστές, το υλικό της συσκευής πρέπει πρώτα να πάρει τη διεύθυνσή του σε ειδικό μητρώο στο υλικό του (τοποθετήστε τον αριθμό σπιτιού) και στη συνέχεια ο οδηγός της συσκευής πρέπει να λάβει αυτή τη διεύθυνση (γράψτε τον αριθμό σπιτιού στο βιβλίο διευθύνσεών του). Και τα δύο αυτά πρέπει να γίνουν, είτε αυτόματα από λογισμικό είτε εισάγοντας τα δεδομένα με μη αυτόματο τρόπο σε αρχεία ρυθμίσεων. Τα προβλήματα μπορεί να προκύψουν όταν μόνο ένας από αυτούς γίνεται σωστά.
Για χειροκίνητη διαμόρφωση PNP, μερικοί άνθρωποι κάνουν το λάθος να κάνουν μόνο ένα από αυτά τα δύο βήματα και στη συνέχεια να αναρωτιούνται γιατί ο υπολογιστής δεν μπορεί να βρει τη συσκευή. Για παράδειγμα, μπορούν να χρησιμοποιήσουν “setserial” για να εκχωρήσουν μια διεύθυνση σε μια σειριακή θύρα χωρίς να συνειδητοποιήσουν ότι αυτό λέει μόνο στον οδηγό μια διεύθυνση. Δεν ρυθμίζει τη διεύθυνση στο ίδιο το υλικό σειριακής θύρας. Εάν είπατε λάθος στον οδηγό, τότε έχετε πρόβλημα. Ένας άλλος τρόπος για να πείτε ότι ο οδηγός είναι να δώσει τη διεύθυνση ως επιλογή σε μια ενότητα πυρήνα (πρόγραμμα οδήγησης συσκευής). Εάν αυτό που λέτε είναι λάθος, θα μπορούσαν να υπάρξουν προβλήματα. Ένα έξυπνο πρόγραμμα οδήγησης μπορεί να ανιχνεύσει τον τρόπο με τον οποίο το υλικό έχει οριστεί και απορρίψει τις λανθασμένες πληροφορίες που παρέχονται από την επιλογή (ή τουλάχιστον εκδίδουν ένα μήνυμα σφάλματος).
Μια προφανής απαίτηση είναι ότι πριν το πρόγραμμα οδήγησης της συσκευής μπορεί να χρησιμοποιήσει μια διεύθυνση πρέπει να ρυθμιστεί πρώτα στη φυσική συσκευή (όπως μια κάρτα). Δεδομένου ότι τα προγράμματα οδήγησης συσκευών συχνά ξεκινούν σύντομα μετά την εκκίνηση του υπολογιστή, μερικές φορές προσπαθούν να έχουν πρόσβαση σε μια κάρτα (για να δούμε αν είναι εκεί, κλπ.) Πριν από τη διεύθυνση που έχει οριστεί στην κάρτα από ένα πρόγραμμα διαμόρφωσης PNP. Τότε βλέπετε ένα μήνυμα σφάλματος ότι δεν μπορούν να βρουν την κάρτα ακόμα κι αν είναι εκεί (αλλά δεν έχει ακόμη διεύθυνση).
Αυτό που ειπώθηκε στις τελευταίες παραγράφους σχετικά με τις διευθύνσεις I/O ισχύει με την ίδια δύναμη με τις περισσότερες άλλες πόρτες διαύλου: μνήμης, IRQs-Overview και DMA Channels. Τι είναι αυτά θα εξηγηθούν στις επόμενες 3 ενότητες. Η εξαίρεση είναι ότι οι διακοπές στον δίαυλο PCI δεν καθορίζονται από τους καταχωρητές καρτών αλλά δρομολογούνται (χαρτογραφημένες) σε IRQs από ένα τσιπ στη μητρική πλακέτα. Στη συνέχεια, το IRQ μια κάρτα PCI δρομολογείται είναι γραμμένο στο μητρώο της κάρτας μόνο για πληροφοριακούς σκοπούς.
Για να δείτε ποιες διευθύνσεις IO χρησιμοποιούνται στον υπολογιστή σας, κοιτάξτε το αρχείο /proc /ioports.
Πολλές συσκευές έχουν εκχωρηθεί χώρος διευθύνσεων στην κύρια μνήμη. Μερικές φορές ονομάζεται “κοινή μνήμη” ή “χαρτογράφηση μνήμης IO” ή “μνήμη IO”. Αυτή η μνήμη βρίσκεται φυσικά μέσα στη φυσική συσκευή, αλλά ο υπολογιστής έχει πρόσβαση όπως ακριβώς θα είχε πρόσβαση στη μνήμη στις μάρκες μνήμης. Όταν συζητάμε για τα λεωφορεία, συχνά ονομάζεται “μνήμη”, “mem” ή “iomem”. Εκτός από τη χρήση μιας τέτοιας “μνήμης”, μια τέτοια συσκευή μπορεί επίσης να χρησιμοποιήσει τον συμβατικό χώρο διευθύνσεων IO. Για να δείτε τι mem χρησιμοποιείται στον υπολογιστή σας, κοιτάξτε /proc /iomem. Αυτό το “αρχείο” περιλαμβάνει τη μνήμη που χρησιμοποιείται από τα συνηθισμένα τσιπ μνήμης RAM, ώστε να εμφανίζει την κατανομή μνήμης γενικά και όχι μόνο την κατανομή iOmem. Εάν βλέπετε έναν παράξενο αριθμό αντί για ένα όνομα, είναι πιθανό ο αριθμός μιας συσκευής PCI που μπορείτε να επαληθεύσετε πληκτρολογώντας “LSPCI”.
Όταν εισάγετε μια κάρτα που χρησιμοποιεί το IOMEM, είστε στην πραγματικότητα εισάγοντας επίσης μια μονάδα μνήμης για την κύρια μνήμη. Μια υψηλή διεύθυνση επιλέγεται για αυτό από το PNP έτσι ώστε να μην έρχεται σε σύγκρουση με τις κύριες ενότητες μνήμης (τσιπς). Αυτή η μνήμη μπορεί είτε να είναι ROM (μόνο μνήμη διαβάστε) είτε κοινή μνήμη. Η κοινή μνήμη μοιράζεται μεταξύ της συσκευής και της CPU (τρέχοντας το πρόγραμμα οδήγησης της συσκευής) ακριβώς όπως ο χώρος διευθύνσεων IO μοιράζεται μεταξύ της συσκευής και της CPU. Αυτή η κοινή μνήμη χρησιμεύει ως μέσο “μεταφοράς” δεδομένων μεταξύ της συσκευής και της κύριας μνήμης. Είναι εισροή-output (io), αλλά δεν γίνεται στο χώρο IO. Τόσο η κάρτα όσο και ο οδηγός της συσκευής πρέπει να γνωρίζουν το εύρος μνήμης.
ROM (Διαβάστε μόνο τη μνήμη) στις κάρτες είναι ένα διαφορετικό είδος IOMEM. Είναι πιθανό ένα πρόγραμμα (ίσως ένα πρόγραμμα οδήγησης συσκευής) που θα χρησιμοποιηθεί με τη συσκευή. Θα μπορούσε να είναι ο κωδικός αρχικοποίησης, έτσι ώστε να απαιτείται ένα πρόγραμμα οδήγησης συσκευής. Ας ελπίσουμε ότι θα λειτουργήσει με το Linux και όχι μόνο τα MS Windows. Μπορεί να χρειαστεί να σκιάσει, πράγμα που σημαίνει ότι αντιγράφεται στις κύριες μάρκες μνήμης σας για να τρέξετε γρηγορότερα. Μόλις σκιάσει, δεν είναι πλέον “μόνο διαβάστε”.
Μετά την ανάγνωση αυτού, ίσως θελήσετε να διαβάσετε διακοπές -Διευθύνσεις για πολλές περισσότερες λεπτομέρειες. Τα παρακάτω είναι σκόπιμα υπεραπλουστευμένα: Εκτός από τη διεύθυνση, υπάρχει επίσης ένας αριθμός διακοπής για την αντιμετώπιση (όπως το IRQ 5). Ονομάζεται αριθμός IRQ (αίτημα διακοπής) ή απλώς ένα “IRQ” για σύντομο χρονικό διάστημα. Αναφέραμε ήδη παραπάνω ότι ο οδηγός της συσκευής πρέπει να γνωρίζει τη διεύθυνση μιας κάρτας για να μπορέσει να επικοινωνήσει μαζί του.
Αλλά τι γίνεται με την επικοινωνία προς την αντίθετη κατεύθυνση? Ας υποθέσουμε ότι η συσκευή πρέπει να πει αμέσως στο πρόγραμμα οδήγησης της συσκευής του αμέσως. Για παράδειγμα, η συσκευή μπορεί να λαμβάνει πολλά bytes που προορίζονται για την κύρια μνήμη και το buffer της που χρησιμοποιείται για την αποθήκευση αυτών των bytes είναι σχεδόν γεμάτο. Έτσι, η συσκευή πρέπει να πει στον οδηγό της να φέρει αυτά τα byte ταυτόχρονα πριν από την υπερχείλιση του buffer από την εισερχόμενη ροή bytes. Ένα άλλο παράδειγμα είναι να σηματοδοτήσει το πρόγραμμα οδήγησης ότι η συσκευή έχει ολοκληρώσει την αποστολή μιας δέσμης bytes και τώρα περιμένει περισσότερα bytes από τον οδηγό, ώστε να μπορεί να τους στείλει επίσης.
Πώς πρέπει η συσκευή να σηματοδοτήσει γρήγορα το πρόγραμμα οδήγησης? Μπορεί να μην είναι σε θέση να χρησιμοποιήσει τον κύριο δίαυλο δεδομένων, αφού είναι πιθανό να χρησιμοποιηθεί ήδη. Αντ ‘αυτού θέτει μια τάση σε ένα ειδικό σύρμα διακοπής (που ονομάζεται επίσης γραμμή ή ίχνος) το οποίο συχνά προορίζεται για αυτή τη συσκευή μόνο. Αυτό το σήμα τάσης ονομάζεται αίτημα διακοπής (IRQ) ή απλώς μια “διακοπή” για σύντομο χρονικό διάστημα. Υπάρχουν το ισοδύναμο των 16 (ή 24, κ.λπ.) Τέτοια καλώδια σε υπολογιστή και κάθε καλώδιο (έμμεσα) σε ένα συγκεκριμένο πρόγραμμα οδήγησης συσκευής. Κάθε σύρμα έχει έναν μοναδικό αριθμό IRQ (αίτημα διακοπής). Η συσκευή πρέπει να δώσει τη διακοπή της στο σωστό καλώδιο και ο οδηγός της συσκευής πρέπει να ακούει τη διακοπή στο σωστό καλώδιο. Ποιο καλωδίων η συσκευή στέλνει τέτοια “αιτήματα βοήθειας”, καθορίζεται από τον αριθμό IRQ που είναι αποθηκευμένος στη συσκευή. Ο ίδιος αριθμός IRQ πρέπει να είναι γνωστός στο πρόγραμμα οδήγησης συσκευής έτσι ώστε ο οδηγός της συσκευής να γνωρίζει ποια γραμμή IRQ για να ακούσετε.
Μόλις το πρόγραμμα οδήγησης της συσκευής λάβει τη διακοπή από τη συσκευή, πρέπει να ανακαλύψει γιατί εκδόθηκε η διακοπή και να λάβει τα κατάλληλα μέτρα για την εξυπηρέτηση της διακοπής. Στο λεωφορείο ISA, κάθε συσκευή χρειάζεται συνήθως τον δικό της μοναδικό αριθμό IRQ. Για το λεωφορείο PCI και άλλες ειδικές περιπτώσεις, επιτρέπεται η κοινή χρήση του IRQ (δύο ή περισσότερες συσκευές PCI ενδέχεται να έχουν τον ίδιο αριθμό IRQ). Επίσης, για το PCI, κάθε συσκευή PCI διαθέτει σταθερό σύρμα “PCI διακοπής”. Αλλά ένα προγραμματιζόμενο τσιπ δρομολόγησης χαρτογραφεί τα καλώδια PCI σε διακόπτες τύπου ISA. Δείτε τις διακοπές – -λεπτομέρειες για λεπτομέρειες σχετικά με τον τρόπο με τον οποίο όλα τα παραπάνω λειτουργούν.
- Διαβάζοντας ένα κομμάτι bytes από το χώρο μνήμης I/O της συσκευής και τοποθετώντας αυτά τα bytes στην ίδια τη CPU
- Γράφοντας αυτά τα bytes από την CPU στην κύρια μνήμη
Με το DMA είναι μια διαδικασία ενός βήματος για την αποστολή των bytes απευθείας από τη συσκευή στη μνήμη. Η συσκευή πρέπει να έχει ενσωματωμένες δυνατότητες DMA στο υλικό της και επομένως δεν μπορούν να κάνουν όλες οι συσκευές DMA. Ενώ η DMA συνεχίζεται, η CPU δεν μπορεί να κάνει πάρα πολύ από τότε που χρησιμοποιείται το κύριο λεωφορείο από τη μεταφορά DMA.
Το παλιό λεωφορείο ISA μπορεί να κάνει αργό DMA, ενώ ο λεωφορείο PCI κάνει “DMA” από τον Mastering Bus. Το λεωφορείο LPC έχει τόσο το παλιό DMA όσο και το νέο DMA (Mastering Bus). Στο λεωφορείο PCI, αυτό που θα πρέπει να ονομάζεται “Mastering Bus” συχνά ονομάζεται “Ultra DMA”, “BM-DNA”, “UDMA”, ή απλά “DMA”, το Mastering Bus επιτρέπει στις συσκευές να γίνουν προσωρινά κύριοι λεωφορείων και. Δεν χρησιμοποιεί αριθμούς καναλιών, αφού η οργάνωση του λεωφορείου PCI είναι τέτοιος που το υλικό PCI γνωρίζει ποια συσκευή είναι σήμερα ο κύριος λεωφορείο και ποια συσκευή ζητά να γίνει κύριος λεωφορείου. Έτσι δεν υπάρχει κατανομή πόρων των καναλιών DMA για το λεωφορείο PCI και δεν υπάρχουν πόροι καναλιού DMA για αυτό το λεωφορείο. Ο δίαυλος LPC (Low Pin Count) υποτίθεται ότι έχει ρυθμιστεί από το BIOS, ώστε οι χρήστες να μην χρειαστεί να ασχολούνται με τα κανάλια DMA του.
Αυτό είναι μόνο για το λεωφορείο LPC και το παλιό λεωφορείο ISA. Όταν μια συσκευή θέλει να κάνει το DMA, εκδίδει ένα DMA-Request χρησιμοποιώντας ειδικά καλώδια αιτήματος DMA σαν ένα αίτημα διακοπής. Η DMA θα μπορούσε πραγματικά να αντιμετωπιστεί χρησιμοποιώντας διακοπές, αλλά αυτό θα εισήγαγε κάποιες καθυστερήσεις, ώστε να είναι πιο γρήγορο να το κάνουμε με ένα ειδικό είδος διακοπής γνωστού ως DMA-Request. Όπως και οι διακοπές, οι Requests DMA είναι αριθμημένες έτσι ώστε να προσδιοριστούν ποια συσκευή υποβάλλει το αίτημα. Αυτός ο αριθμός ονομάζεται κανάλι DMA. Δεδομένου ότι οι μεταφορές DMA χρησιμοποιούν το κύριο δίαυλο (και μόνο ένα μπορεί να τρέξει κάθε φορά), όλοι χρησιμοποιούν το ίδιο κανάλι για τη ροή δεδομένων, αλλά ο αριθμός “DMA Channel” χρησιμεύει για να προσδιορίσει ποιος χρησιμοποιεί το “κανάλι”. Οι καταχωρητές υλικού υπάρχουν στη μητρική πλακέτα που αποθηκεύουν την τρέχουσα κατάσταση κάθε “καναλιού”. Έτσι, προκειμένου να εκδώσει μια ευρετηρία.
Έτσι, οι οδηγοί συσκευών πρέπει να “επισυνάνονται” με κάποιο τρόπο στο υλικό που ελέγχουν. Αυτό γίνεται με την κατανομή των πόρων λεωφορείων (I/O, Memory, IRQ, DMA) τόσο στη φυσική συσκευή όσο και να αφήσετε το πρόγραμμα οδήγησης της συσκευής να το μάθετε για αυτό. Για παράδειγμα, μια σειριακή θύρα χρησιμοποιεί μόνο 2 πόρους: ένα IRQ και μια διεύθυνση I/O. Και οι δύο αυτές τιμές πρέπει να παρέχονται στο πρόγραμμα οδήγησης της συσκευής και στη φυσική συσκευή. Το πρόγραμμα οδήγησης (και η συσκευή του) δίνεται επίσης ένα όνομα στον κατάλογο /dev (όπως το TTYS1). Η διεύθυνση και ο αριθμός IRQ αποθηκεύονται από τη φυσική συσκευή σε καταχωρητές διαμόρφωσης στην κάρτα του (ή σε ένα τσιπ στη μητρική πλακέτα). Το παλιό υλικό (στα μέσα της δεκαετίας του 1990) χρησιμοποίησε διακόπτες (ή jumpers) για να ρυθμίσετε φυσικά το IRQ και την διεύθυνση στο υλικό. Αυτή η ρύθμιση παρέμεινε σταθερή μέχρι κάποιος να αφαιρεθεί το εξώφυλλο του υπολογιστή και να μετακομίσει τους jumpers.
Αλλά για την περίπτωση του PNP (χωρίς jumpers), τα δεδομένα καταχωρητή διαμόρφωσης συνήθως χάνονται όταν ο υπολογιστής είναι ενεργοποιημένος (απενεργοποιημένος) έτσι ώστε τα δεδομένα των πόρων λεωφορείου να παρέχονται σε κάθε συσκευή εκ νέου κάθε φορά που ενεργοποιείται ο υπολογιστής.
Ιδανικοί υπολογιστές
Η αρχιτεκτονική του υπολογιστή παρέχει μόνο περιορισμένο αριθμό πόρων: IRQ, κανάλια DMA, διεύθυνση εισόδου/εξόδου και περιοχές μνήμης. Εάν υπήρχαν μόνο συσκευές περιορισμένου αριθμού και όλοι χρησιμοποίησαν τυποποιημένες τιμές διαύλου πόρων (όπως μοναδικές διευθύνσεις I/O και αριθμούς IRQ), δεν θα υπήρχε πρόβλημα να επισυνάψετε τους οδηγούς συσκευών σε συσκευές. Κάθε συσκευή θα διαθέτει σταθερούς πόρους που δεν θα έρχονταν σε σύγκρουση με καμία άλλη συσκευή στον υπολογιστή σας. Κανένα δύο συσκευές δεν θα είχαν τις ίδιες διευθύνσεις, δεν θα υπήρχαν συγκρούσεις IRQ για το λεωφορείο ISA κ.λπ. Κάθε πρόγραμμα οδήγησης θα προγραμματίζεται με τις μοναδικές διευθύνσεις, IRQ κ.λπ. σκληρά κωδικοποιημένα στο πρόγραμμα. Η ζωή θα ήταν απλή.
Ένας άλλος τρόπος για να αποφευχθεί η αντιμετώπιση των συγκρούσεων θα ήταν να συμπεριληφθεί ο αριθμός υποδοχής κάθε κάρτας κάθε κάρτας ως μέρος της διεύθυνσης. Έτσι δεν θα μπορούσε να υπάρξει σύγκρουση διεύθυνσης μεταξύ δύο διαφορετικών καρτών (αφού βρίσκονται σε διαφορετικές υποδοχές). Ο σχεδιασμός της κάρτας δεν θα επέτρεπε τις συγκρούσεις διευθύνσεων μεταξύ διαφορετικών λειτουργιών της κάρτας. Αποδεικνύεται ότι ο χώρος διευθύνσεων διαμόρφωσης (που χρησιμοποιείται για την έρευνα και την ανάθεση πόρων) το κάνει αυτό. Αλλά δεν γίνεται για διευθύνσεις I/O ούτε περιοχές μνήμης. Η ανταλλαγή IRQs όπως στο PCI Bus αποφεύγει επίσης συγκρούσεις, αλλά μπορεί να προκαλέσει άλλα προβλήματα.
Πραγματικοί υπολογιστές
Αλλά η αρχιτεκτονική PC έχει προβλήματα σύγκρουσης. Η αύξηση του αριθμού των συσκευών (συμπεριλαμβανομένων πολλαπλών συσκευών του ίδιου τύπου) τείνει να αυξάνει πιθανές συγκρούσεις. Ταυτόχρονα, η εισαγωγή του λεωφορείου PCI, όπου δύο ή περισσότερες συσκευές μπορούν να μοιραστούν την ίδια διακοπή και την εισαγωγή περισσότερων διακοπών, τείνει να μειώσει τις συγκρούσεις. Το συνολικό αποτέλεσμα, λόγω της μετάβασης στο PCI, υπήρξε μείωση των συγκρούσεων, αφού ο πιο αδύναμος πόρος είναι το IRQS. Ωστόσο, ακόμη και στο λεωφορείο PCI είναι πιο αποτελεσματικό για να αποφευχθεί η κοινή χρήση IRQ. Σε ορισμένες περιπτώσεις όπου οι διακοπές συμβαίνουν με ταχεία διαδοχή και πρέπει να ενεργούν με γρήγορη (όπως η κοινή χρήση ήχου) μπορεί να προκαλέσει υποβάθμιση στην απόδοση. Επομένως, δεν είναι καλό να αντιστοιχίσετε όλες τις συσκευές PCI το ίδιο IRQ, η ανάθεση πρέπει να είναι ισορροπημένη. Ωστόσο, μερικοί άνθρωποι διαπιστώνουν ότι όλες οι συσκευές PCI τους βρίσκονται στο ίδιο IRQ.
Έτσι, οι συσκευές πρέπει να έχουν κάποια ευελιξία, ώστε να μπορούν να ρυθμιστούν σε οποιαδήποτε διεύθυνση, IRQ, κλπ. απαιτείται για να αποφευχθούν οι συγκρούσεις και να επιτευχθεί εξισορρόπηση. Αλλά μερικές irq και διευθύνσεις είναι αρκετά στάνταρ, όπως αυτές για το ρολόι και το πληκτρολόγιο. Αυτά δεν χρειάζονται τέτοια ευελιξία.
Εκτός από το πρόβλημα της αντιφατικής κατανομής των resources λεωφορείων, υπάρχει πρόβλημα να κάνουμε λάθος στην αφήγηση του προγράμματος οδήγησης της συσκευής ποιοι είναι οι πόρτες λεωφορείων. Αυτό είναι πιο πιθανό να συμβεί για την περίπτωση παλιομοδίτικης χειροκίνητης διαμόρφωσης όπου ο χρήστης πληκτρολογεί τους πόρους που χρησιμοποιούνται σε ένα αρχείο διαμόρφωσης που είναι αποθηκευμένο στο Harddrive. Αυτό συχνά λειτούργησε εντάξει όταν οι πόροι καθορίστηκαν από jumpers στις κάρτες (υπό την προϋπόθεση ότι ο χρήστης ήξερε πώς είχαν οριστεί και δεν έκαναν λάθη στην πληκτρολόγηση αυτών των δεδομένων σε αρχεία ρυθμίσεων). Αλλά με τους πόρους που καθορίζονται από το λογισμικό PNP, μπορεί να μην παίρνουν πάντα το ίδιο και αυτό μπορεί να σημαίνει πρόβλημα για οποιαδήποτε χειροκίνητη διαμόρφωση όπου ο χρήστης πληκτρολογεί τις τιμές των πόρων διαύλου που καθορίστηκαν από το PNP.
Η κατανομή των πόρων λεωφορείων, εάν γίνει σωστά, δημιουργεί μη αντιφατικά κανάλια επικοινωνίας μεταξύ φυσικού υλικού και οδηγών συσκευών τους. Για παράδειγμα, εάν ένα συγκεκριμένο εύρος διεύθυνσης I/O (πόρος) διατίθεται τόσο σε ένα πρόγραμμα οδήγησης συσκευής όσο και σε ένα κομμάτι υλικού, τότε αυτό έχει δημιουργήσει ένα κανάλι επικοινωνίας μονής κατεύθυνσης μεταξύ τους. Ο οδηγός μπορεί να στείλει εντολές και άλλες πληροφορίες στη συσκευή. Είναι στην πραγματικότητα περισσότερες από μονόδρομες επικοινωνίες, αφού ο οδηγός μπορεί να πάρει πληροφορίες από τη συσκευή διαβάζοντας τα μητρώα του. Αλλά η συσκευή δεν μπορεί να ξεκινήσει οποιαδήποτε επικοινωνία με αυτόν τον τρόπο. Για να ξεκινήσει η επικοινωνία, η συσκευή χρειάζεται ένα IRQ, ώστε να μπορεί να στείλει διακοπές στον οδηγό της. Αυτό δημιουργεί ένα αμφίδρομο κανάλι επικοινωνίας όπου τόσο ο οδηγός όσο και η φυσική συσκευή μπορούν να ξεκινήσουν την επικοινωνία.
Ο όρος plug-and-play (PNP) έχει διάφορες έννοιες. Με την ευρεία έννοια είναι απλώς αυτόματη διαμόρφωση όπου κάποιος απλώς συνδέει μια συσκευή και ρυθμίζεται. Με την έννοια που χρησιμοποιείται σε αυτό το HOWTO, το PNP σημαίνει τη διαμόρφωση των πόρων διαύλου PNP (ρυθμίζοντας τα στις φυσικές συσκευές) και αφήνοντας τα προγράμματα οδήγησης των συσκευών να το γνωρίζουν για αυτό. Για την περίπτωση του Linux, είναι συχνά απλώς ένας οδηγός που καθορίζει τον τρόπο με τον οποίο το BIOS έχει ρυθμίσει τους πόρους λεωφορείων και, εάν είναι απαραίτητο. Το “PNP” συχνά σημαίνει PNP στο λεωφορείο ISA έτσι ώστε το μήνυμα από το ISAPNP: “Δεν βρέθηκε η συσκευή Plug and Play” σημαίνει απλώς ότι δεν βρέθηκαν συσκευές ISA PNP. Οι τυποποιημένες προδιαγραφές PCI (οι οποίες εφευρέθηκαν πριν από την εκπλήρωση του όρου “PNP”) παρέχουν το ισοδύναμο του PNP για το λεωφορείο PCI.
Το PNP ταιριάζει με τις συσκευές με τα προγράμματα οδήγησης των συσκευών τους και καθορίζει τα κανάλια επικοινωνίας τους (με την κατανομή των πόρων διαύλου). Επικοινώνει ηλεκτρονικά με καταχωρητές διαμόρφωσης που βρίσκονται μέσα στις φυσικές συσκευές χρησιμοποιώντας ένα τυποποιημένο πρωτόκολλο. Στο λεωφορείο ISA πριν από το plug-and-play, οι resources λεωφορείων τοποθετήθηκαν στο παρελθόν σε συσκευές υλικού από jumpers ή switches. Μερικές φορές οι ρόλοι λεωφορείων θα μπορούσαν να ρυθμιστούν στο υλικό ηλεκτρονικά από έναν οδηγό (συνήθως γραμμένο μόνο για ένα MS OS, αλλά σε σπάνιες περιπτώσεις που υποστηρίζονται από έναν οδηγό Linux). Αυτό ήταν κάτι σαν το PNP, αλλά δεν υπήρχε τυποποιημένο πρωτόκολλο που δεν ήταν πραγματικά PNP. Ορισμένες κάρτες είχαν ρύθμιση jumper που θα μπορούσαν να αντικατασταθούν από αυτό το λογισμικό. Για το Linux πριν από το PNP, τα περισσότερα προγράμματα οδήγησης λογισμικού έλαβαν αρχεία διαύλων με αρχεία ρυθμίσεων (ή παρόμοια) ή με ανίχνευση της συσκευής για τις διευθύνσεις όπου αναμενόταν να διαμένουν. Αλλά αυτές οι μέθοδοι εξακολουθούν να χρησιμοποιούνται σήμερα για να επιτρέψουν στο Linux να χρησιμοποιεί παλιό υλικό μη-PNP. Και μερικές φορές αυτές οι παλιές μέθοδοι εξακολουθούν να χρησιμοποιούνται σήμερα στο υλικό PNP (αφού λένε ότι το BIOS έχει αποδώσει πόρους σε υλικό με μεθόδους PNP).
Ο δίαυλος PCI ήταν από την αρχή το PNP, αλλά συνήθως δεν ονομάζεται PNP ή “Plug and Play” με αποτέλεσμα το PNP συχνά σημαίνει PNP στο λεωφορείο ISA. Αλλά το PNP σε αυτά τα έγγραφα σημαίνει συνήθως PNP είτε στον λεωφορείο ISA είτε στο PCI.
Εδώ είναι πώς το PNP πρέπει να λειτουργεί θεωρητικά. Το υποθετικό πρόγραμμα διαμόρφωσης PNP βρίσκει όλες τις συσκευές PNP και ζητά από το καθένα από τις οποίες οι resources χρειάζονται. Στη συνέχεια, ελέγχει τι ληστές λεωφορείων (IRQ, κ.λπ.) Πρέπει να δώσει μακριά. Φυσικά, εάν διαθέτει επιφυλάξεις από τους πόρους λεωφορείων που χρησιμοποιούνται από μη-PNP (Legacy) Devices (αν το γνωρίζει γι ‘αυτούς), δεν τα δίνει μακριά. Στη συνέχεια, χρησιμοποιεί ορισμένα κριτήρια (που δεν καθορίζονται από τις προδιαγραφές PNP) για να δώσουν τις πόρτες λεωφορείων έτσι ώστε να μην υπάρχουν συγκρούσεις και έτσι ώστε όλες οι συσκευές να πάρουν αυτό που χρειάζονται (αν είναι δυνατόν). Στη συνέχεια, αναφέρει έμμεσα σε κάθε φυσική συσκευή ποιες πόρτες διαύλου έχουν εκχωρηθεί σε αυτήν και οι συσκευές έχουν ρυθμιστεί για να χρησιμοποιήσουν μόνο τις εκχωρημένες διαδρομές-πόρους. Στη συνέχεια, τα προγράμματα οδήγησης συσκευών ανακαλύπτουν με κάποιο τρόπο τι διατίθενται διαύλου που χρησιμοποιούν οι συσκευές τους και έτσι είναι σε θέση να επικοινωνούν αποτελεσματικά με τις συσκευές που ελέγχουν.
Για παράδειγμα, ας υποθέσουμε ότι μια κάρτα χρειάζεται μία διακοπή (αριθμός IRQ) και 1 MB κοινόχρηστης μνήμης. Το πρόγραμμα PNP διαβάζει αυτό το αίτημα από τους καταχωρητές διαμόρφωσης στην κάρτα. Στη συνέχεια, εκχωρεί την κάρτα IRQ5 και 1 MB του χώρου διευθύνσεων μνήμης, ξεκινώντας από τη διεύθυνση 0xE9000000. Το πρόγραμμα PNP διαβάζει επίσης την αναγνώριση πληροφοριών από την κάρτα που λέει τι είδους συσκευή είναι, ο αριθμός αναγνώρισης του κ.λπ. Τότε λέει άμεσα ή έμμεσα στο κατάλληλο πρόγραμμα οδήγησης συσκευής τι έχει γίνει. Εάν είναι ο ίδιος ο οδηγός που κάνει το PNP, τότε δεν υπάρχει λόγος να βρείτε ένα πρόγραμμα οδήγησης για τη συσκευή (αφού το πρόγραμμα οδήγησης λειτουργεί ήδη). Διαφορετικά, πρέπει να βρεθεί ένα κατάλληλο πρόγραμμα οδήγησης συσκευής και αργά ή γρήγορα είπε πώς έχει ρυθμιστεί η συσκευή του.
Δεν είναι πάντα τόσο απλό, αφού η κάρτα (ή ο πίνακας δρομολόγησης για PCI) μπορεί να καθορίσει ότι μπορεί να χρησιμοποιήσει μόνο ορισμένους αριθμούς IRQ ή ότι το 1 MB μνήμης πρέπει να βρίσκεται μέσα σε ένα συγκεκριμένο εύρος διευθύνσεων. Οι λεπτομέρειες είναι διαφορετικές για τα λεωφορεία PCI και ISA με μεγαλύτερη πολυπλοκότητα στο λεωφορείο ISA.
Ένας τρόπος που χρησιμοποιείται συνήθως για την κατανομή των πόρων είναι να ξεκινήσετε με μία συσκευή και να το διαθέσει διαύλου-resources. Στη συνέχεια, κάντε το ίδιο για την επόμενη συσκευή κ.λπ. Στη συνέχεια, αν τελικά όλες οι συσκευές λαμβάνουν πόρους χωρίς συγκρούσεις, τότε όλα είναι εντάξει. Αλλά αν η κατανομή ενός απαραίτητου πόρου θα δημιουργήσει μια σύγκρουση, τότε είναι απαραίτητο να επιστρέψουμε και να προσπαθήσουμε να κάνουμε κάποιες αλλαγές σε προηγούμενες κατανομές, ώστε να αποκτήσουν την απαραίτητη διαύλου-πόρου. Αυτό ονομάζεται επανεξισορρόπηση. Το Linux δεν κάνει επανεξισορρόπηση, αλλά το MS Windows κάνει σε ορισμένες περιπτώσεις. Για το Linux, όλα αυτά γίνονται από το BIOS ή/και τον πυρήνα και/ή τα προγράμματα οδήγησης συσκευών. Στο Linux, το πρόγραμμα οδήγησης συσκευής δεν παίρνει την τελική κατανομή των πόρων μέχρι να ξεκινήσει ο οδηγός, οπότε ένας τρόπος για να αποφευχθούν οι συγκρούσεις είναι απλώς να μην ξεκινήσετε οποιαδήποτε συσκευή που μπορεί να προκαλέσει σύγκρουση. Ωστόσο, το BIOS συχνά κατανέμει πόρους στη φυσική συσκευή πριν από την εκκίνηση του Linux και ο πυρήνας ελέγχει τις συσκευές PCI για τις συγκρούσεις διευθύνσεων κατά τη διάρκεια της εκκίνησης.
Υπάρχουν μερικές συντομεύσεις που μπορεί να χρησιμοποιήσει το λογισμικό PNP. Το ένα είναι να παρακολουθείτε τον τρόπο με τον οποίο εκχωρούσε τους πόρους διαύλου στην τελευταία διαμόρφωση (όταν ο υπολογιστής χρησιμοποιήθηκε για τελευταία φορά) και επαναχρησιμοποιεί αυτό. Το Bioss το κάνει όπως και τα παράθυρα MS και αυτό, αλλά το πρότυπο Linux δεν το κάνει. Αλλά κατά κάποιο τρόπο το κάνει, αφού χρησιμοποιεί συχνά αυτό που έχει κάνει το BIOS. Τα Windows αποθηκεύουν αυτές τις πληροφορίες στο “μητρώο” του στον σκληρό δίσκο και το PNP/PCI BIOS το αποθηκεύει σε μη πτητική μνήμη στον υπολογιστή σας (γνωστή ως ESCD, δείτε τη βάση δεδομένων ESCD του BIOS). Κάποιοι λένε ότι η μη κατοχή μητρώου (όπως το Linux) είναι καλύτερο, αφού με τα Windows, το μητρώο μπορεί να καταστραφεί και είναι δύσκολο να επεξεργαστεί. Αλλά το PNP στο Linux έχει επίσης προβλήματα.
Ενώ τα MS Windows (εκτός από τα Windows 3.X και NT4) ήταν PNP, το Linux δεν ήταν αρχικά ένα λειτουργικό σύστημα PNP, αλλά σταδιακά έγινε ένα λειτουργικό σύστημα PNP. Το PNP εργάστηκε αρχικά για το Linux επειδή ένα BIOS PNP θα διαμορφώσει τις πόρτες διαύλου και τα προγράμματα οδήγησης συσκευών θα έμαθαν (χρησιμοποιώντας προγράμματα που παρέχονται από τον πυρήνα Linux) τι έκανε το BIOS. Σήμερα, οι περισσότεροι οδηγοί μπορούν να εκδώσουν εντολές για να κάνουν τη δική τους διαμόρφωση διαύλου-πόρου και δεν χρειάζεται πάντα να βασίζονται στο BIOS. Δυστυχώς, ένας οδηγός θα μπορούσε να αρπάξει ένα ληστό λεωφορείων που θα χρειαστεί μια άλλη συσκευή αργότερα. Ορισμένα προγράμματα οδήγησης συσκευών μπορούν να αποθηκεύσουν την τελευταία διαμόρφωση που χρησιμοποιούν σε ένα αρχείο διαμόρφωσης και να το χρησιμοποιήσουν την επόμενη φορά που ο υπολογιστής είναι ενεργοποιημένος.
Εάν το υλικό της συσκευής θυμήθηκε την προηγούμενη διαμόρφωσή του, τότε δεν θα υπήρχε κανένα υλικό για το PNP ρύθμιση κατά τον επόμενο χρόνο εκκίνησης. Αλλά το υλικό φαίνεται να ξεχνά τη διαμόρφωσή του όταν η ισχύς είναι απενεργοποιημένη. Ορισμένες συσκευές περιέχουν μια προεπιλεγμένη διαμόρφωση (αλλά όχι απαραίτητα η τελευταία που χρησιμοποιείται). Επομένως, μια συσκευή PNP πρέπει να επανασυνδέεται κάθε φορά που ενεργοποιείται ο υπολογιστής. Επίσης, εάν έχει προστεθεί μια νέα συσκευή, τότε πρέπει επίσης να διαμορφωθεί. Η κατανομή των πόρων διαύλου σε αυτή τη νέα συσκευή μπορεί να περιλαμβάνει τη λήψη κάποιων πόρων διαύλου μακριά από μια υπάρχουσα συσκευή και την ανάθεση της υπάρχουσας συσκευής εναλλακτικές ληστές λεωφορείων που μπορεί να χρησιμοποιήσει αντ ‘αυτού. Προς το παρόν, το Linux δεν μπορεί να διαθέσει με αυτήν την πολυπλοκότητα (και τα MS Windows XP ενδέχεται να μην είναι σε θέση να το κάνουν).
Όταν ο υπολογιστής ενεργοποιείται για πρώτη φορά το τσιπ BIOS τρέχει το πρόγραμμά του για να ξεκινήσει ο υπολογιστής (το πρώτο βήμα είναι να ελέγξετε το υλικό της μητρικής πλακέτας). Εάν το λειτουργικό σύστημα αποθηκεύεται στο σκληρό δίσκο (όπως είναι κανονικά) τότε το BIOS πρέπει να γνωρίζει για το σκληρό δίσκο. Εάν η σκληρή κίνηση είναι PNP τότε το BIOS μπορεί να χρησιμοποιήσει μεθόδους PNP για να το βρει. Επίσης, προκειμένου να επιτρέπεται στον χρήστη να διαμορφώσει με μη αυτόματο τρόπο τα CMOs του BIOS και να ανταποκριθεί σε μηνύματα σφάλματος όταν ξεκινά ο υπολογιστής, απαιτούνται επίσης οθόνη (κάρτα βίντεο) και πληκτρολόγιο. Έτσι, το BIOS πρέπει πάντα να διαμορφώνει συσκευές PNP που απαιτούνται για τη φόρτωση του λειτουργικού συστήματος από τη σκληρή μονάδα.
Μόλις το BIOS εντοπίσει το σκληρό δίσκο, την κάρτα βίντεο και το πληκτρολόγιο είναι έτοιμο να ξεκινήσει την εκκίνηση (φόρτωση του λειτουργικού συστήματος στη μνήμη από το σκληρό δίσκο). Εάν έχετε πει στο BIOS ότι έχετε ένα λειτουργικό σύστημα PNP (PNP OS), θα πρέπει να ξεκινήσει την εκκίνηση του υπολογιστή όπως παραπάνω και να αφήσει το λειτουργικό σύστημα να ολοκληρώσει τη διαμόρφωση του PNP. Διαφορετικά, ένα PNP-BIOS (πριν από την εκκίνηση) πιθανόν να προσπαθήσει να κάνει το υπόλοιπο PNP διαμόρφωση συσκευών (αλλά δεν ενημερώνει τα προγράμματα οδήγησης συσκευών για το τι έκανε). Αλλά οι οδηγοί μπορούν ακόμα να το μάθουν χρησιμοποιώντας λειτουργίες διαθέσιμες στον πυρήνα Linux.
Για να δείτε τι υπάρχει στον τύπο PCI τύπου LSPCI ή LSPCI -VV . Ή πληκτρολογήστε SCANPCI -V για τις ίδιες πληροφορίες στη μορφή αριθμητικού κώδικα όπου η συσκευή εμφανίζεται κατά αριθμό (όπως: “Συσκευή 0x122D” αντί για το όνομα κ.λπ. Σε σπάνιες περιπτώσεις, το SCANPCI θα βρει μια συσκευή που δεν μπορεί να βρει η LSPCI.
Τα μηνύματα boot-time στις συσκευές εμφάνισης της οθόνης που έχουν βρεθεί σε διάφορα λεωφορεία (χρησιμοποιήστε το Shift-Pageup για να δημιουργήσετε αντίγραφα ασφαλείας τους). Δείτε μηνύματα εκκίνησης χρόνου
Το ISA είναι το παλιό λεωφορείο των παλιών υπολογιστών συμβατών με IBM, ενώ το PCI είναι ένα νεότερο και ταχύτερο λεωφορείο από την Intel. Το λεωφορείο PCI σχεδιάστηκε για αυτό που ονομάζεται σήμερα PNP. Αυτό το καθιστά εύκολο (σε σύγκριση με το λεωφορείο ISA) για να μάθετε πώς έχουν ανατεθεί οι resources PNP λεωφορείων σε συσκευές υλικού.
Για το λεωφορείο ISA υπήρχε ένα πραγματικό πρόβλημα με την εφαρμογή του PNP, αφού κανείς δεν είχε στο μυαλό του PNP όταν σχεδιάστηκε ο δίαυλος ISA και σχεδόν δεν υπάρχουν διαθέσιμες διευθύνσεις I/O για το PNP για χρήση για την αποστολή πληροφοριών διαμόρφωσης σε μια φυσική συσκευή. Ως αποτέλεσμα, ο τρόπος με τον οποίο το PNP ήταν ντεκόρ πάνω στο λεωφορείο ISA είναι πολύ περίπλοκος. Έχουν γραφτεί ολόκληρα βιβλία για αυτό. Δείτε το βιβλίο PNP. Μεταξύ άλλων, απαιτεί να εκχωρηθεί κάθε συσκευή PNP μια προσωρινή “λαβή” από το πρόγραμμα PNP, έτσι ώστε να μπορεί κανείς να το αντιμετωπίσει για διαμόρφωση PNP. Η ανάθεση αυτών των “λαβών” είναι η κλήση “Απομόνωση”. Δείτε την απομόνωση ISA για τις πολύπλοκες λεπτομέρειες.
Καθώς το λεωφορείο ISA εξαφανίζεται, το PNP θα είναι λίγο πιο εύκολο. Στη συνέχεια, δεν θα είναι μόνο ευκολότερο να μάθετε πώς έχει διαμορφώσει το BIO. Θα εξακολουθεί να υπάρχει η ανάγκη να ταιριάζει με τα προγράμματα οδήγησης συσκευών με συσκευές και επίσης την ανάγκη διαμόρφωσης συσκευών που προστίθενται όταν ο υπολογιστής είναι σε λειτουργία. Το σοβαρό πρόβλημα ορισμένων συσκευών που δεν υποστηρίζονται από το Linux θα παραμείνει.
Το Linux είχε σοβαρά προβλήματα στο παρελθόν στην αντιμετώπιση του PNP, αλλά τα περισσότερα από αυτά τα προβλήματα έχουν πλέον λυθεί (από τα μέσα του 2004). Το Linux έχει περάσει από ένα σύστημα μη-PNP αρχικά, σε ένα που μπορεί να είναι PNP εάν ορισμένες επιλογές έχουν επιλεγεί κατά την κατάρτιση του πυρήνα. Το BIOS μπορεί να αναθέσει IRQs, αλλά το Linux μπορεί επίσης να εκχωρήσει μερικά από αυτά ή ακόμα και να αναβαθμίσει τι έκανε το BIOS. Το τμήμα διαμόρφωσης του ACPI (Advance Configuration and Power Interface) έχει σχεδιαστεί για να διευκολύνει τα λειτουργικά συστήματα να κάνουν τη δική τους διαμόρφωση. Το Linux μπορεί να χρησιμοποιήσει το ACPI εάν έχει επιλεγεί όταν καταρτιστεί ο πυρήνας.
Στο Linux, είναι παραδοσιακό για κάθε πρόγραμμα οδήγησης συσκευής να κάνει το δικό του χαμηλού επιπέδου διαμόρφωση. Αυτό ήταν δύσκολο μέχρι το λογισμικό του Linux στον πυρήνα που θα μπορούσαν να χρησιμοποιήσουν οι οδηγοί για να το διευκολύνουν. Σήμερα (2005) έχει φτάσει στο σημείο όπου ο οδηγός καλεί απλώς τη λειτουργία του πυρήνα: PCI_ENABLE_DEVICE () και η συσκευή διαμορφώνεται με την ενεργοποίηση και την κατοχή τόσο IRQ (αν χρειαστεί) όσο και διευθύνσεις που έχουν εκχωρηθεί στη συσκευή. Αυτή η ανάθεση θα μπορούσε να είναι αυτό που είχε ανατεθεί προηγουμένως από το BIOS ή τι είχε προηγουμένως ο πυρήνας για αυτό όταν η συσκευή PCI ή ISAPNP ανιχνεύθηκε από τον πυρήνα. Υπάρχει ακόμη και μια επιλογή ACPI για το Linux να εκχωρήσει όλες τις συσκευές IRQs κατά το χρόνο εκκίνησης.
Έτσι, σήμερα, κατά μία έννοια, οι οδηγοί εξακολουθούν να κάνουν τη διαμόρφωση, αλλά μπορούν να το κάνουν απλά λέγοντας στο Linux να το κάνει (και το Linux μπορεί να μην χρειαστεί να κάνει πολλά, αφού μερικές φορές είναι σε θέση να χρησιμοποιήσει αυτό που έχει ήδη ρυθμιστεί από το BIOS ή το Linux). Έτσι είναι πραγματικά το τμήμα μη οδηγού του πυρήνα του Linux που κάνει το μεγαλύτερο μέρος της διαμόρφωσης. Έτσι, μπορεί να είναι σωστό να καλέσετε το Linux ένα λειτουργικό σύστημα PNP, τουλάχιστον για τις κοινές αρχιτεκτονικές υπολογιστών.
Στη συνέχεια, όταν ένα πρόγραμμα οδήγησης συσκευής βρει τη συσκευή του, ζητά να δει ποιες διευθύνσεις και IRQ έχουν εκχωρηθεί (από το BIOS και/ή το Linux) και κανονικά τις αποδέχεται μόνο. Αλλά αν ο οδηγός θέλει να το κάνει, μπορεί να προσπαθήσει να αλλάξει τις διευθύνσεις, χρησιμοποιώντας λειτουργίες που παρέχεται από τον πυρήνα. Αλλά ο πυρήνας δεν θα δεχτεί διευθύνσεις που έρχονται σε σύγκρουση με άλλες συσκευές ή εκείνες που το υλικό δεν μπορεί να υποστηρίξει. Όταν ξεκινήσει ο υπολογιστής, μπορείτε να σημειώσετε μηνύματα στην οθόνη που δείχνουν ότι ορισμένοι οδηγοί συσκευών Linux έχουν βρει τις συσκευές υλικού τους και ποιες είναι οι περιοχές IRQ και διευθύνσεων.
Έτσι, ο πυρήνας παρέχει στους οδηγούς λειτουργίες (κωδικός προγράμματος) που μπορούν να χρησιμοποιήσουν οι οδηγοί για να μάθουν εάν υπάρχει η συσκευή τους, πώς έχει ρυθμιστεί και λειτουργεί για να τροποποιήσει τη διαμόρφωση εάν χρειαστεί. Πυρήνας 2.2 θα μπορούσε να το κάνει αυτό μόνο για το λεωφορείο PCI, αλλά ο πυρήνας 2.4 Είχε αυτό το χαρακτηριστικό τόσο για τα λεωφορεία ISA όσο και για PCI (υπό την προϋπόθεση ότι έχουν επιλεγεί οι κατάλληλες επιλογές PNP και PCI κατά την κατάρτιση του πυρήνα). Πυρήνας 2.6 βγήκε με καλύτερη χρήση του ACPI. Αυτό δεν εγγυάται ότι όλοι οι οδηγοί θα χρησιμοποιήσουν πλήρως και σωστά αυτές τις λειτουργίες. Και οι συσκευές κληρονομιάς που δεν γνωρίζουν το BIOS, ενδέχεται να μην ρυθμιστούν μέχρι εσείς (ή κάποια χρησιμότητα διαμόρφωσης) να θέσει τη διεύθυνσή του, IRQ κ.λπ. σε ένα αρχείο διαμόρφωσης.
Επιπλέον, ο πυρήνας βοηθά στην αποφυγή συγκρούσεων πόρων, μη επιτρέποντας δύο συσκευές που γνωρίζει να χρησιμοποιεί ταυτόχρονα οι ίδιες πόρτες λεωφορείων ταυτόχρονα. Αρχικά αυτό ήταν μόνο για IRQ, και DMAs, αλλά τώρα είναι και για τους πόρους διευθύνσεων.
Εάν έχετε ένα παλιό λεωφορείο ISA, το πρόγραμμα ISAPNP θα πρέπει να τρέξει στο Boottime για να βρείτε και να ρυθμίσετε τις συσκευές PNP στο λεωφορείο ISA. Κοιτάξτε τα μηνύματα με το “DMESG”.
Για να δείτε τι βοηθά ο πυρήνας μπορεί να παρέχει στους οδηγούς συσκευών δείτε τον κατάλογο /usr /. /. /Τεκμηρίωση όπου ένα από τα . περιέχει τη λέξη “kernel-doc” ή κάτι παρόμοιο. ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η τεκμηρίωση εδώ τείνει να είναι εκτός ημερομηνίας, ώστε να λάβετε τις τελευταίες πληροφορίες που θα χρειαστεί να διαβάσετε μηνύματα στις λίστες αλληλογραφίας που αποστέλλονται από τους προγραμματιστές του Kernel και ενδεχομένως τον κωδικό υπολογιστή που γράφουν συμπεριλαμβανομένων των σχολίων. Σε αυτόν τον κατάλογο τεκμηρίωσης του πυρήνα, βλ. PCI.TXT (“Πώς να γράψετε οδηγούς Linux PCI”) και το αρχείο:/usr/include/linux/pci.h. Εκτός αν είστε γκουρού του οδηγού και γνωρίζετε τον προγραμματισμό C, αυτά τα αρχεία είναι γραμμένα τόσο πολύ που δεν θα σας επιτρέψουν να γράψετε ένα πρόγραμμα οδήγησης. Αλλά θα σας δώσει κάποια ιδέα για τις λειτουργίες τύπου PNP για να χρησιμοποιήσετε τους οδηγούς.
Για πυρήνα 2.4 Βλέπε ISAPNP.κείμενο. Για πυρήνα 2.6, ISAPNP.Το TXT αντικαθίσταται από το PNP.TXT που είναι εντελώς διαφορετικό από το ISAPNP.TXT και επίσης ασχολείται με το λεωφορείο PCI. Δείτε επίσης το βιβλίο O’Reilly: Linux Device Drivers, 3rd ed., 2005. Το πλήρες κείμενο είναι στο Διαδίκτυο.
Αλλά υπάρχουν πολλά πράγματα που ένα πραγματικό λειτουργικό σύστημα PNP θα μπορούσε να χειριστεί καλύτερα:
- Διαθέστε τους πόρους λεωφορείων όταν είναι ελλιπείς με την ανακατανομή των πόρων εάν είναι απαραίτητο
- Αντιμετωπίστε την επιλογή ενός οδηγού όταν υπάρχουν περισσότερα από ένα προγράμματα οδήγησης για μια φυσική συσκευή
Δεδομένου ότι είναι κάθε οδηγός για τον εαυτό του, ένας οδηγός θα μπορούσε να αρπάξει τις πόρτες λεωφορείων που χρειάζονται από άλλες συσκευές (αλλά δεν τους έχουν ακόμη διατεθεί από τον πυρήνα). Έτσι, ένας πιο εξελιγμένος πυρήνας PNP Linux θα ήταν καλύτερος, όπου ο πυρήνας έκανε την κατανομή μετά από όλα τα αιτήματα. Μια άλλη εναλλακτική λύση θα ήταν μια προσπάθεια να ανακατανεμηθούν οι πόροι που έχουν ήδη ανατεθεί εάν μια συσκευή δεν μπόρεσε να πάρει τους πόρους που ζήτησε.
Το πρόβλημα “έλλειψης διαύλου-πόρων” γίνεται λιγότερο πρόβλημα για δύο λόγους: ένας λόγος είναι ότι ο λεωφορείο PCI αντικαθιστά το λεωφορείο ISA. Κάτω από το PCI δεν υπάρχει έλλειψη IRQ, αφού τα IRQ μπορεί να μοιραστούν (αν και η κοινή χρήση είναι λίγο λιγότερο αποτελεσματική). Επίσης, το PCI δεν χρησιμοποιεί πόρους DMA (αν και το ισοδύναμο του DMA χωρίς να χρειάζεται τέτοιους πόρους).
Ο δεύτερος λόγος είναι ότι είναι διαθέσιμος περισσότερος χώρος διευθύνσεων για τη συσκευή I/0. Ενώ ο συμβατικός χώρος διεύθυνσης I/O του λεωφορείου ISA περιοριζόταν σε 64KB, ο δίαυλος PCI έχει 4GB του. Δεδομένου ότι περισσότερες φυσικές συσκευές χρησιμοποιούν κύριες διευθύνσεις μνήμης αντί για χώρο διευθύνσεων IO, υπάρχει ακόμα περισσότερο διαθέσιμος χώρος, ακόμη και στο λεωφορείο ISA. Σε υπολογιστές 32 bit υπάρχει 4GB του κεντρικού χώρου διευθύνσεων μνήμης και μεγάλο μέρος αυτού του πόρου διαύλου είναι διαθέσιμο για τη συσκευή IO (εκτός αν έχετε εγκατεστημένη 4GB κύρια μνήμη).
Γενικές πληροφορίες σχετικά με την υποστήριξη για συσκευές Plug & Play
Οι συσκευές Plug & Play μπορούν να χρησιμοποιηθούν αμέσως, χωρίς καμία ανάγκη εγκατάστασης. Αυτά ανιχνεύονται και διαμορφώνονται αυτόματα μόλις συνδεθούν με έναν υπολογιστή. Τα κατάλληλα προγράμματα οδήγησης συσκευών εγκαθίστανται αυτόματα. Ο χρήστης δεν απαιτείται για να πραγματοποιήσει εισόδους.
Η αυτόματη εγκατάσταση από το λειτουργικό σύστημα λειτουργεί μόνο, ωστόσο, υπό ορισμένες προϋποθέσεις, e.σολ. (Δείτε περισσότερα σχετικά με αυτό στο Windows Βοήθεια):
- Το πρόγραμμα οδήγησης της συσκευής έχει είτε το “Αναπτύχθηκε για Windows” λογότυπο ή ψηφιακή υπογραφή.
- Το πρόγραμμα οδήγησης συσκευής είναι ήδη παρούσα στον υπολογιστή.
Εάν δεν πληρούνται αυτές οι προϋποθέσεις, το λειτουργικό σύστημα ξεκινά τον οδηγό υλικού. Εάν ο χρήστης δεν διαθέτει δικαιώματα τοπικού διαχειριστή, δεν μπορεί να ολοκληρώσει την εγκατάσταση με αυτόν τον οδηγό.
Σε αυτές τις περιπτώσεις, DSM ’Η υποστήριξη για τις συσκευές Plug & Play επιτρέπει την εγκατάσταση συσκευών χωρίς ο χρήστης να έχει τα δικαιώματα του τοπικού διαχειριστή.
- Wan Miniport Drivers
- Εικονικοί προσαρμογείς δικτύου
Ήταν χρήσιμο αυτό το άρθρο?
Force Plug-N-Play Device για να χρησιμοποιήσετε συγκεκριμένο πρόγραμμα οδήγησης
Εξοπλισμός: Presonus Revelator Microphone Ο στόχος: Θα ήθελα να χρησιμοποιήσω το μικρόφωνο μου πιο μακριά μέσω μιας επέκτασης USB-to-RJ45. Βασικά στέλνοντας το USB πάνω από ένα καλώδιο Ethernet. Το πρόβλημα: Όταν το μικρόφωνο είναι συνδεδεμένο απευθείας στον φορητό υπολογιστή, λειτουργεί καλά. Αλλά όταν το συνδέω πάνω από την επέκταση δεν μπορώ να καταγράψω τίποτα και ο υπολογιστής δεν καταγράφει καθόλου τη συσκευή. Το μικρόφωνο λαμβάνει ισχύ και ο υπολογιστής κάνει το θόρυβο “σύνδεσης”, αλλά τίποτα πέρα από αυτό. Διαχειριστή της συσκευής: Έλεγξα τον διαχειριστή συσκευών και στα δύο σενάρια. Όταν συνδέονται απευθείας, βλέπω “μικρόφωνο (Revelator)” σε “εισόδους ήχου και εξόδους”. Όταν συνδέεται πάνω από το RJ45, βλέπω απλώς τον “Revelator” κάτω από “άγνωστες συσκευές” καθώς και το κίτρινο τρίγωνο προειδοποίησης που δείχνει ότι κανένας οδηγός δεν έχει φορτωθεί. Πληροφορίες οδηγού: Χρησιμοποίησα το πρόγραμμα USBDEVIEW για να συγκεντρώσω κάποιες σε βάθος πληροφορίες στη συσκευή όταν συνδέτηκα χρησιμοποιώντας τις διαφορετικές συνδέσεις. Παρακάτω είναι μια σύγκριση δίπλα-δίπλα.
Συνδεδεμένο απευθείας | Συνδεδεμένο μέσω RJ45 | |
---|---|---|
Ονομα της συσκευής | Ανακαλύπτης | Ανακαλύπτης |
Περιγραφή | Συσκευή σύνθετης USB | Ανακαλύπτης |
Τύπος συσκευής | Αγνωστος | Ειδικός από τον προμηθευτή |
Συνδεδεμένος | Ναί | Ναί |
Ασφαλές για αποσύνδεση | Ναί | Οχι |
άτομα με ειδικές ανάγκες | Οχι | Οχι |
Διανομέας USB | Οχι | Οχι |
Σειριακός αριθμός | JM1C20431589 | JM1C20431589 |
Πωλητής | 194f | 194f |
Προϊόντος | 0d01 | 0d01 |
Αναθεώρηση υλικολογισμικού | 1.02 | 1.02 |
Usb class | 0 | FF |
Υποκατηγορία USB | 0 | 0 |
Πρωτόκολλο USB | 0 | 0 |
Πρόθεμα γονέων | 6 & 1EA95F5F & 0 | 6 & 1EA95F5F & 0 |
Όνομα Υπηρεσίας | USBCCGP | |
Περιγραφή υπηρεσίας | @USB.inf,%genericparent.SVCDESC%, Microsoft USB γενικός οδηγός γονέα | |
Όνομα αρχείου οδηγού | USBCCGP.σύσρο | |
Συσκευή MFG | (Τυπικός ελεγκτής κεντρικού υπολογιστή USB) | |
Εξουσία | 200 μ.Μ | 200 μ.Μ |
Έκδοση USB | 2 | 2 |
Περιγραφή οδηγού | Συσκευή σύνθετης USB | |
Έκδοση οδηγού | 10.0.19041.1949 | |
Μόλυνση οδηγού | Σύνθετος.Δούλος.Nt | |
Οδηγός infpath | USB.inf | |
Αναγνωριστικό στιγμιότυπου | USB \ VID_194F & PID_0D01 \ JM1C20431589 | USB \ VID_194F & PID_0D01 \ JM1C20431589 |
Δυνατότητες | “Αφαιρούμενο, μοναδικό, SUBRISEREMOVALOK” | “Αφαιρούμενο, μοναδικό” |
Η κύρια διαφορά είναι ότι όταν συνδέεται απευθείας, το μικρόφωνο αναγνωρίζεται ως σύνθετη συσκευή (το USBDEVIEW δείχνει επίσης αρκετές άλλες συσκευές USB που φορτώνονται ταυτόχρονα). Όταν συνδέεται με το RJ45, δεν αναγνωρίζεται ως τέτοια και χωρίς φορτία προγράμματος οδήγησης. Μπορούν να συνδεθούν άλλες συσκευές?: Δοκίμασα το σύνδεσμο RJ45 με μια μονάδα USB και μια διαφορετική μάρκα μικροφώνου (Audio-Technica AT2020). Και στις δύο περιπτώσεις εργάστηκαν καλά και φόρτωσαν τους ίδιους οδηγούς. Το μικρόφωνο είναι ιδιαίτερα ενδιαφέρον, καθώς είναι επίσης μια σύνθετη συσκευή, αλλά δεν έχει προβλήματα. Ερώτηση: Είναι δυνατόν να αναγκάσει τον υπολογιστή μου να χρησιμοποιήσει τον ίδιο οδηγό και στα δύο σενάρια? Έχω κάνει κάποια googling, αλλά το μόνο που μπορώ να βρω είναι πράγματα που σχετίζονται με τη λήψη οδηγών από την ιστοσελίδα της εταιρείας (δεν υπάρχει κανένας που θα μπορούσα να βρω). Δοκίμασα χειροκίνητα να επιλέξω τα αρχεία SYS και INF μέσω του Διαχειριστή συσκευών, αλλά αυτό δεν φαίνεται να λειτουργεί. Πιθανό να κάνω αυτό το βήμα λάθος όμως.
Τι είναι ένα πρόγραμμα οδήγησης συσκευής? Ορισμός, τύποι και εφαρμογές
Ένα πρόγραμμα οδήγησης συσκευής είναι ένα πρόγραμμα χωρίς UI που διαχειρίζεται το υλικό που συνδέεται με έναν υπολογιστή και υποστηρίζει τη λειτουργία του.
Τεχνικός συγγραφέας Chiradeep Basumallick
12 Οκτωβρίου 2022
Ένα πρόγραμμα οδήγησης συσκευής ορίζεται ως πρόγραμμα λογισμικού χωρίς διεπαφή χρήστη (UI) που διαχειρίζεται τα εξαρτήματα υλικού ή τα περιφερειακά που συνδέονται με έναν υπολογιστή και τους επιτρέπει να λειτουργούν με τον υπολογιστή ομαλά. Αυτό το άρθρο εξηγεί τη λειτουργία των οδηγών συσκευών, τους διάφορους τύπους τους και πέντε κρίσιμες εφαρμογές.
Πίνακας περιεχομένων
-
- Τι είναι ένα πρόγραμμα οδήγησης συσκευής?
- 9 τύποι οδηγών συσκευών
- Εφαρμογές προγραμμάτων οδήγησης συσκευών
Τι είναι ένα πρόγραμμα οδήγησης συσκευής?
Ένα πρόγραμμα οδήγησης συσκευής είναι ένα πρόγραμμα λογισμικού χωρίς διεπαφή χρήστη (UI) που διαχειρίζεται τα εξαρτήματα υλικού ή τα περιφερειακά που συνδέονται με έναν υπολογιστή και τους επιτρέπει να λειτουργούν ομαλά με τον υπολογιστή.
Ένα πρόγραμμα οδήγησης συσκευής είναι ένα εξειδικευμένο λογισμικό που λειτουργεί μια συγκεκριμένη συσκευή συνδεδεμένη με υπολογιστή-προσφέροντας μια διεπαφή λογισμικού στο υλικό επιτρέπει στα λειτουργικά συστήματα και άλλες εφαρμογές υπολογιστή για πρόσβαση σε λειτουργίες υλικού.
Το υλικό συνδέεται με ένα υποσύστημα λεωφορείου/επικοινωνίας μέσω του οποίου τα προγράμματα οδήγησης συσκευών αλληλεπιδρούν με τη συσκευή. Είναι εξαρτώμενα από υλικό και συγκεκριμένο σύστημα λειτουργικού συστήματος (OS). Προσφέρουν την επεξεργασία διακοπής που είναι απαραίτητη για οποιαδήποτε εξαρτώμενη από το χρόνο ασύγχρονη διεπαφή υλικού.
Πρόγραμμα οδήγησης συσκευής’S Πρωτογενής στόχος είναι να επιτρέπεται στους υπολογιστές και τα στοιχεία του δικτύου υλικού να διασυνδέονται και να αλληλεπιδρούν με συγκεκριμένες συσκευές. Χειρίζονται αιτήματα που υποβάλλονται από τον πυρήνα σχετικά με έναν συγκεκριμένο τύπο συσκευής. Οι οδηγοί συσκευών ορίζουν μηνύματα και μηχανισμούς μέσω των οποίων ο υπολογιστής’Το λειτουργικό σύστημα και οι εφαρμογές μπορούν να έχουν πρόσβαση στη συσκευή ή να υποβάλλουν αιτήματα για τη συσκευή. Διαχειρίζονται επίσης απαντήσεις συσκευών και μηνύματα για παράδοση στον υπολογιστή.
Πώς λειτουργούν τα προγράμματα οδήγησης συσκευών
Οι οδηγοί συσκευών λειτουργούν μέσα στο στρώμα του πυρήνα του OS. Λειτουργούν σε ένα πολύ προνομιούχο περιβάλλον, επειδή χρειάζονται πρόσβαση χαμηλού επιπέδου σε λειτουργίες υλικού για λειτουργία. Ενεργοποιούν τον υπολογιστή’S Λειτουργικό Σύστημα (OS) για τη διασύνδεση με το υλικό για το οποίο αναπτύχθηκαν. Και μέσω ενός δίαυλου υπολογιστή που συνδέει τη συσκευή με τον υπολογιστή, τους οδηγούς και τη συσκευή επικοινωνούν.
Τα προγράμματα οδήγησης συσκευών πρέπει να λαμβάνουν συμβουλές από το λειτουργικό σύστημα για πρόσβαση και εκτέλεση οδηγιών συσκευής. Μετά την ολοκλήρωση της εργασίας, μεταδίδουν τη συσκευή υλικού’έξοδος ή μήνυμα στο λειτουργικό σύστημα. Συσκευές όπως μόντεμ, δρομολογητές, ηχεία, πληκτρολόγια και εκτυπωτές απαιτούν από τους οδηγούς συσκευών να λειτουργούν.
Κατανόηση της ανάπτυξης του προγράμματος οδήγησης της συσκευής
Τα προγράμματα οδήγησης συσκευών ενεργοποιούν τις περιφερειακές συσκευές, όπως εκτυπωτές ή πληκτρολόγια, να αλληλεπιδρούν με τον υπολογιστή. Τα παρακάτω περιγράφουν τα βήματα που μπορούν να λάβουν οι προγραμματιστές ή οι προγραμματιστές κατά την ανάπτυξη προγραμμάτων οδήγησης συσκευών για λειτουργικά συστήματα όπως Windows, Linux ή MacOS.
1. Γνωρίστε τον εξοπλισμό
Κατά το σχεδιασμό ενός προγράμματος οδήγησης συσκευής, οι προγραμματιστές πρέπει να έχουν μια σε βάθος αντίληψη της πλατφόρμας’υλικό υλικό. Πρέπει να γνωρίζουν τη διεπαφή λεωφορείου που χρησιμοποιεί το υλικό για να επικοινωνήσει με τον κεντρικό υπολογιστή και τη θέση του λογισμικού του προγράμματος οδήγησης συσκευής. Θα πρέπει να διαβάσουν το φύλλο δεδομένων της συσκευής για να κατανοήσουν τους σχετικούς όρους και ορισμούς. Θα πρέπει επίσης να γνωρίζουν τη μέθοδο μέσω της οποίας λαμβάνει χώρα η μεταφορά δεδομένων.
Εάν η κύρια συσκευή είναι ένα σύστημα σε τσιπ, οι προγραμματιστές πρέπει να γνωρίζουν πώς αλληλεπιδρά ο οδηγός με τα πρωτόκολλα υλικολογισμικού και εντολών του. Επιπλέον, οι προγραμματιστές θα πρέπει να προετοιμαστούν για την τεκμηρίωση να υπολείπεται όταν χειρίζεται ένα νέο είδος υλικού. Έτσι, θα πρέπει να είναι έτοιμοι να εκτελέσουν περισσότερες δοκιμές από το συνηθισμένο.
2. Γράψτε τον κωδικό προγράμματος οδήγησης
Σε αυτό το βήμα, οι προγραμματιστές θα πρέπει να αποκτήσουν ένα πρωτότυπο εργασίας του προτιμώμενου υλικού τους. Τότε θα πρέπει να αρχίσουν να γράφουν το πρόγραμμα οδήγησης λειτουργίας πυρήνα.
Εάν μια συσκευή είναι λανθασμένα σχεδιασμένη, οι οδηγοί που τρέχουν σε λειτουργία χρήστη μπορεί να προκαλέσουν συντριβή συστήματος. Ομοίως, εάν κάτι πάει στραβά όταν οι οδηγοί λειτουργούν σε εξαιρετικά προνομιούχους ρυθμίσεις, ενδέχεται να προκύψουν επιχειρησιακές ανησυχίες. Έτσι, οι προγραμματιστές θα πρέπει να επωφεληθούν από τις πληροφορίες στην τεκμηρίωση ανάπτυξης οδηγών που είναι διαθέσιμα για το επιλεγμένο λειτουργικό σύστημα, είτε πρόκειται για Windows είτε για Linux.
Οι πρώτες λειτουργίες του προγράμματος οδήγησης συσκευής που αναπτύσσονται είναι οι λειτουργίες φόρτωσης και εκφόρτωσης. Όταν το λειτουργικό σύστημα ξεκινά και σταματά, αυτές οι λειτουργίες καλούνται. Μία από τις πρωταρχικές ευθύνες των λειτουργιών φόρτωσης/εκφόρτωσης είναι να ανιχνευθεί εάν το υλικό είναι συνδεδεμένο στο σύστημα ή όχι. Οι χρήστες μπορούν να ανιχνεύσουν υλικό χρησιμοποιώντας το αναγνωριστικό συσκευής που καθορίζεται από τον συγκεκριμένο δίαυλο. Εάν το υλικό είναι συνδεδεμένο, τότε η λειτουργία φόρτωσης είναι επιτυχής. Εάν όχι, καλέστε τη λειτουργία εκφόρτωσης.
3. Αρχικοποιήστε το υλικό
Μόλις η συσκευή μπορεί να ανιχνεύσει το υλικό, το επόμενο βήμα είναι η προετοιμασία του. Ο τύπος αρχικοποίησης μπορεί να διαφέρει ανάλογα με το είδος του υλικού. Η αρχικοποίηση μπορεί να κυμαίνεται από τη γραφή στο μητρώο συσκευής για τη λήψη ενός μικροκώδικα στη συσκευή και την επικοινωνία σε μακροπρόθεσμη βάση χρησιμοποιώντας πρωτόκολλα ιδιοκτησίας εντολών.
4. Ελέγξτε το υλικό
Ο έλεγχος του υλικού είναι δυνατός μόνο εάν οι προγραμματιστές μπορούν να αρχικοποιηθούν και να επικοινωνήσουν με το υλικό. Η διαδικασία ελέγχου εξαρτάται από τη συσκευή. Οι προγραμματιστές θα πρέπει να εξετάσουν εάν η συσκευή θα μεταδίδει απλά δεδομένα από τη μια συσκευή στην άλλη.
Για παράδειγμα, όταν αναμεταδίδετε μουσική από ένα smartphone σε ένα ηχείο. Θα πρέπει επίσης να εξετάσουν εάν η συσκευή θα στέλνει συνεχώς δεδομένα και οδηγίες σε άλλες συσκευές. Για παράδειγμα, λέγοντας σε έναν εκτυπωτή να εκτυπώνει ασπρόμαυρο στη μία πλευρά του χαρτιού που ακολουθείται από μια διπλή όψη εκτύπωση σε χρώμα.
Ο οδηγός της συσκευής ενεργοποιεί τις ρυθμίσεις δεδομένων όπως η ταχύτητα αναπαραγωγής και η γρήγορη είσοδος μέσω του υπολογιστή σε εντολές για τη συσκευή. Σε αντίθεση με τα προηγούμενα τρία βήματα, αυτό μπορεί να πάρει περισσότερο χρόνο. Τα πρώτα τρία βήματα μπορεί να είναι μια μοναδική λειτουργία, καθώς τα φορτία του λειτουργικού συστήματος. Ωστόσο, οι προγραμματιστές ενδέχεται να χρειαστεί να εκτελέσουν το βήμα 4 αρκετές φορές μετά την εκτέλεση του λειτουργικού συστήματος. Οι χρήστες ενδέχεται μερικές φορές να συγχωνεύσουν το 3ο και 4ο βήματα σε ένα μόνο βήμα.
5. Ξεκινήστε την επικοινωνία δεδομένων με το υλικό
Αρκετές συσκευές ασχολούνται με κάποια μορφή δεδομένων, είτε πρόκειται για ήχο είτε για βίντεο. Μόλις αρχικοποιηθεί η συσκευή, οι προγραμματιστές μπορούν να στείλουν μια σταθερή ροή δεδομένων όπως απαιτείται. Ο οδηγός της συσκευής λειτουργεί ως σωλήνας μεταξύ της εφαρμογής υψηλότερου επιπέδου και του υλικού χαμηλότερου επιπέδου ή του υλικολογισμικού για μεταφορά δεδομένων.
Όπως σημειώνεται στο πρώτο βήμα, οι προγραμματιστές πρέπει να γνωρίζουν τα πρωτόκολλα που έχουν σχεδιαστεί για επικοινωνία δεδομένων. Οι μεταφορές δεδομένων ενδέχεται να μεταφέρονται ή να ερωτηθούν. Το λειτουργικό σύστημα παρέχει εγκαταστάσεις όπως μηνύματα ή ρουτίνες υπηρεσιών διακοπής που χρησιμοποιούνται κατά τη διάρκεια της διαδικασίας μεταφοράς δεδομένων. Οι προγραμματιστές θα πρέπει να ξεκινήσουν με τη μεταφορά ενός πακέτου δεδομένων και διασφαλίζοντας ότι ολόκληρη η διαδικασία από τα βήματα 1 έως 3 λειτουργεί καλά.
6. Ελέγξτε την επικοινωνία δεδομένων
Σε αυτό το βήμα, οι προγραμματιστές πρέπει να ελέγχουν τη μεταφορά δεδομένων και τη διαχείριση της επικοινωνίας σε διάφορες περιπτώσεις. Όταν προκύπτουν προβλήματα, οι χρήστες πρέπει να εμποδίσουν τις περιφερειακές συσκευές να στέλνουν το ίδιο μήνυμα σφάλματος. Σε μια ροή ήχου, όταν υπάρχει υπερχείλιση buffer ή ένα σημαντικό πρόβλημα με την ποιότητα του ήχου, θα πρέπει να στείλουν μια εντολή stop.
7. Δοκιμάστε το πρόγραμμα οδήγησης και εντοπίστε τον εντοπισμό σφαλμάτων
Η δοκιμή είναι μια κρίσιμη πτυχή. Οι προγραμματιστές θα πρέπει να δοκιμάσουν τη συσκευή για να εξασφαλίσουν ότι αναγνωρίζεται και αρχικοποιείται. Θα πρέπει επίσης να εκτελούν λειτουργικές δοκιμές για να εξασφαλίσουν ότι οι οδηγοί συσκευών λειτουργούν όπως αναμενόταν. Θα πρέπει επίσης να είναι έτοιμοι να κάνουν αλλαγές στο υλικό για να εξασφαλίσουν την ομαλή λειτουργία. Επιπλέον, οι προγραμματιστές θα πρέπει να δοκιμάσουν τα προγράμματα οδήγησης συσκευών σε διαφορετικές εκδόσεις λειτουργικού συστήματος για να επαληθεύσουν ότι είναι συμβατά με προς τα εμπρός και προς τα πίσω. Μόλις λειτουργήσει ο οδηγός της συσκευής, οι προγραμματιστές μπορούν να το καταχωρήσουν.
9 τύποι οδηγών συσκευών
Οι προγραμματιστές μπορούν να διακρίνουν τους ακόλουθους τύπους οδηγών συσκευών:
1. Οδηγοί συσκευών πυρήνα
Τα προγράμματα οδήγησης συσκευών πυρήνα αποτελούνται από κάποιο γενικό υλικό φορτωμένο με το λειτουργικό σύστημα (OS) ως μέρος του λειτουργικού συστήματος. Περιλαμβάνουν μητρικές, επεξεργαστές και BIOS. Επικαλούνται και φορτώνονται στη μνήμη τυχαίας πρόσβασης (RAM) όταν απαιτείται. Όταν πολλά από αυτά λειτουργούν ταυτόχρονα, το μηχάνημα μπορεί να επιβραδυνθεί. Έτσι, υπάρχει μια ελάχιστη απαίτηση για κάθε λειτουργικό σύστημα.
Τα προγράμματα οδήγησης συσκευών πυρήνα είναι στρωματοποιημένα. Οι οδηγοί υψηλότερου επιπέδου, όπως τα προγράμματα οδήγησης αρχείων, λαμβάνουν δεδομένα από εφαρμογές, φιλτράρουν το και μεταβιβάζονται σε ένα πρόγραμμα οδήγησης χαμηλότερου επιπέδου, υποστηρίζοντας τη λειτουργικότητα του δίσκου. Τα προγράμματα οδήγησης συσκευών πυρήνα εφαρμόζονται ως διακριτά και αρθρωτά εξαρτήματα που έχουν ένα καλά καθορισμένο σύνολο απαιτούμενων λειτουργιών.
2. Προγράμματα οδήγησης συσκευών λειτουργίας χρήστη
Οδηγοί συσκευών λειτουργίας Λειτουργίας εκτελούνται σε λειτουργία χρήστη. Αναφέρονται στους οδηγούς συσκευών που μπορούν να ενεργοποιήσουν οι χρήστες κατά τη διάρκεια μιας συνεδρίας. Όταν χρησιμοποιούν ένα σύστημα, οι χρήστες ενδέχεται να διαθέτουν τις δικές τους εξωτερικές συσκευές που χρησιμοποιούν, όπως εξωτερικές συσκευές plug-and-play. Αυτές οι συσκευές απαιτούν επίσης από τους οδηγούς να λειτουργούν. Στα συστήματα Windows, τα προγράμματα οδήγησης συσκευών λειτουργίας χρήστη παρέχουν μια διεπαφή μεταξύ μιας εφαρμογής Win32 και των οδηγών πυρήνα ή άλλων λειτουργικών συστημάτων. Οι χρήστες μπορούν να γράψουν αυτούς τους οδηγούς στο δίσκο για να μειώσουν την πίεση στους πόρους του υπολογιστή.
3. Οδηγοί χαρακτήρων
Οι οδηγοί συσκευών χαρακτήρων παρέχουν μη δομημένη πρόσβαση στο υλικό. Μεταφέρουν δεδομένα από και από συσκευές χωρίς να χρησιμοποιούν μια συγκεκριμένη διεύθυνση συσκευής. Επιτρέπουν την ανάγνωση ή τη γραφή ενός byte κάθε φορά ως ρεύμα διαδοχικών δεδομένων. Οι οδηγοί χαρακτήρων δεν χειρίζονται την είσοδο/έξοδο (I/O) μέσω της προσωρινής μνήμης buffer, έτσι είναι πιο ευέλικτοι στο χειρισμό I/O. Συνδυάζονται με συσκευές μπλοκ για να παρακάμψουν την προσωρινή μνήμη buffer για να προσφέρουν ακατέργαστες λειτουργίες I/O κατευθείαν στο χώρο διευθύνσεων του προγράμματος του χρήστη.
Επιπλέον, παρέχουν πρόσθετες διεπαφές όπως εντολές ελέγχου I/O, δημοσκοπήσεις συσκευών και χαρτογράφηση μνήμης. Παραδείγματα είναι μόντεμ και ελεγκτές λεωφορείων.
4. Οδηγών μπλοκ
Τα προγράμματα οδήγησης συσκευών παρέχουν δομημένη πρόσβαση στο υλικό. Χρησιμοποιούν buffers μεγέθους συστήματος αρχείων από μια προσωρινή μνήμη buffer που παρέχεται από τον πυρήνα για εκτέλεση I/O. Μια προσωρινή μνήμη buffer είναι μια πισίνα μνήμης που δημιουργείται από τον πυρήνα για την αποθήκευση συχνά πρόσβασης μπλοκ μέσω συσκευών μπλοκ. Η προσωρινή μνήμη buffer μειώνει την ποσότητα των ερωτημάτων I/O που χρειάζονται λειτουργία I/O από τη συσκευή.
Επιπλέον, τα προγράμματα οδήγησης συσκευών μπλοκ παρέχουν προσανατολισμένη σε μπλοκ I/O και επιδείξουν ανθεκτικότητα δεδομένων. Λαμβάνουν ένα αίτημα συστήματος αρχείων και εκδίδουν τις διαδικασίες εισόδου/εξόδου στον δίσκο για τη μεταφορά του ζητούμενου μπλοκ. Παραδείγματα είναι πλήκτρα μνήμης USB και μονάδες δίσκου.
5. Οδηγοί κατασκευαστή πρωτότυπου εξοπλισμού (OEM)
Τα προγράμματα οδήγησης συσκευών μπορούν να κατηγοριοποιηθούν ως γενικά ή που σχετίζονται με το OEM. Οι γενικοί οδηγοί αναφέρονται στα προγράμματα οδήγησης συσκευών με το λειτουργικό λογισμικό τους που συνδέονται με το υλικό OEM. Μπορεί κανείς να χρησιμοποιήσει γενικούς οδηγούς με διαφορετικές μάρκες συγκεκριμένου τύπου συσκευής. Για παράδειγμα, το Linux λειτουργεί με διάφορους γενικούς οδηγούς που λειτουργούν χωρίς να χρειάζεται να εγκαταστήσουν οποιοδήποτε άλλο λογισμικό με μη αυτόματο τρόπο.
Οι ΚΑΕ μπορούν να δημιουργήσουν τα ιδιόκτητα προγράμματα οδήγησης συσκευών, τα οποία πρέπει να εγκατασταθούν ξεχωριστά μετά την εγκατάσταση του λειτουργικού συστήματος. Οι οδηγοί OEM επιτρέπουν στο υλικό όπως τα πληκτρολόγια να επικοινωνούν με το λειτουργικό σύστημα υποδοχής. Για παράδειγμα, οι οδηγοί OEM επιτρέπουν λειτουργίες όπως η ενσωμάτωση του συστήματος ελέγχου φωτισμού με υλικό OEM στο Google Assistant και Alexa.
6. Προγράμματα οδήγησης εικονικών συσκευών
Τα προγράμματα οδήγησης εικονικών συσκευών είναι απαραίτητα για τον έλεγχο των εικονικών μηχανών ή των VM . Λειτουργούν τόσο σε περιβάλλοντα εικονικοποίησης όσο και σε μη εορτασμούς. Σε περιβάλλοντα εικονικοποίησης, αυτοί οι οδηγοί χρησιμοποιούνται για να μιμηθούν το υλικό της συσκευής υποδοχής. Ελέγχουν ή διαχειρίζονται το υλικό πόρων της συσκευής κεντρικού υπολογιστή για να εξασφαλίσουν ότι τόσο η συσκευή επισκεπτών όσο και η συσκευή υποδοχής όπως αναμένεται.
Για παράδειγμα, όταν ένα λειτουργικό σύστημα επισκεπτών λειτουργεί σε έναν κεντρικό υπολογιστή, κάνει τις λειτουργίες κλήσεις σε προγράμματα οδήγησης εικονικών συσκευών για πρόσβαση στο υλικό. Επιπλέον, μιμούνται περιστατικά σε επίπεδο επεξεργαστή όπως διακόπτες και μεταδίδουν τα στην εικονική μηχανή.
7. BIOS
Το βασικό σύστημα εξόδου εισόδου (BIOS) είναι το πιο θεμελιώδες πρόγραμμα οδήγησης σε έναν υπολογιστή. Βρίσκεται σε τσιπ μνήμης μόνο για ανάγνωση (ROM), το οποίο εξασφαλίζει ότι το BIOS θα είναι διαθέσιμο ακόμη και όταν ο σκληρός δίσκος είναι μορφοποιημένος. Είναι υπεύθυνος για την εκκίνηση ενός υπολογιστή και την παροχή ενός συνόλου οδηγιών κατά τη διάρκεια αυτής της διαδικασίας. Εκτελεί επίσης power-on αυτο-δοκιμές (post) που απαιτούνται κατά την εκκίνηση. Το BIOS παρέχει επίσης οδηγούς για το βασικό υλικό, όπως τα πληκτρολόγια και τις οθόνες, για να εξασφαλίσει ότι θα διασυνδέονται με το λειτουργικό σύστημα για να λειτουργούν όπως προβλέπεται.
8. Οδηγοί μητρικής πλακέτας
Οι οδηγοί της μητρικής πλακέτας είναι απλές εφαρμογές που μπορούν να χρησιμοποιήσουν τόσο τα Windows όσο και το Linux. Υπάρχουν εντός του λειτουργικού συστήματος και επιτρέπουν τις θεμελιώδεις λειτουργίες υπολογιστών. Αυτοί οι οδηγοί περιλαμβάνουν εφαρμογές που επιτρέπουν το πληκτρολόγιο και το ποντίκι’Συσκευές USB και θύρες I/O για εργασία. Ορισμένες μητρικές πλακέτες έχουν οδηγούς που υποστηρίζουν βίντεο και ήχο.
Οι οδηγοί της μητρικής πλακέτας είναι ειδικοί για το μοντέλο chipset, όπως το B460 για τους υπολογιστές Intel. Για να συνειδητοποιήσετε τη μητρική πλακέτα’S πλήρες δυναμικό και να ενεργοποιήσει τα εξαρτήματα που συνδέονται με αυτό για να λειτουργούν σωστά, οι χρήστες ενδέχεται να χρειαστεί να εγκαταστήσουν πρόσθετα προγράμματα οδήγησης.
9. Οδηγοί ανοιχτού κώδικα
Οι οδηγοί ανοιχτού κώδικα αναφέρονται σε οδηγούς που κυκλοφορούν με άδεια ελεύθερης και ανοικτού κώδικα. Για παράδειγμα, οι οδηγοί γραφικών ανοιχτού κώδικα ελέγχουν την έξοδο στην οθόνη εάν η οθόνη είναι μέρος του υλικού γραφικών. Ο πηγαίος κώδικας για τους οδηγούς ανοιχτού κώδικα είναι διαθέσιμος σε όλους, διευκολύνοντας τις συνεργασίες του λογισμικού. Είναι πιο αξιόπιστο, καθώς οι άνθρωποι μπορούν να τα ελέγξουν για οποιονδήποτε κακόβουλο κωδικό.
Οι οδηγοί ανοικτού κώδικα προσφέρουν περισσότερη ιδιωτικότητα. Εάν παρακολουθούν τους χρήστες, οι άνθρωποι μπορούν να αναδιανείμει ένα αντίγραφο του λογισμικού με την απομάκρυνση της παρακολούθησης. Οι οδηγοί ανοιχτού κώδικα διαρκούν περισσότερο καθώς περισσότεροι άνθρωποι συνεχίζουν να βελτιώνουν, εξασφαλίζοντας έτσι ότι ακόμη και όταν η εταιρεία σταματήσει να τις διανείμει, παραμένει αντίγραφο.
Εφαρμογές προγραμμάτων οδήγησης συσκευών
Αυτά τα βασικά δομικά στοιχεία προσωπικών και επιχειρηματικών υπολογιστών χρησιμοποιούνται με τους ακόλουθους τρόπους:
1. Προγράμματα οδήγησης συσκευών για πρόσβαση σε συστήματα αποθήκευσης
Τα συστήματα αποθήκευσης υπολογιστών επιτρέπουν στους χρήστες να αποθηκεύουν δεδομένα και να το κάνουν διαθέσιμο κατόπιν ζήτησης. Περιλαμβάνουν εξωτερικές και εσωτερικές συσκευές, όπως μονάδες flash USB, σκληρούς δίσκους και αποθηκευμένο στο δίκτυο. Οι οδηγοί στα συστήματα αποθήκευσης τους επιτρέπουν να αλληλεπιδρούν με τον υπολογιστή. Αυτό εξασφαλίζει ότι ο υπολογιστής μπορεί να έχει πρόσβαση στα εσωτερικά ή εξωτερικά συστήματα αποθήκευσης, να διερευνήσει τις πληροφορίες τους και να επιτρέψει τη μεταφορά δεδομένων.
Η σύνδεση συσκευών αποθήκευσης στον υπολογιστή χωρίς οδηγούς γίνεται δύσκολη καθώς το λειτουργικό σύστημα δεν τις ανιχνεύει. Συνήθως, οι σκληροί δίσκοι και τα CD-ROM αναγνωρίζονται από το λειτουργικό σύστημα και δεν απαιτούν εγκατεστημένους οδηγούς. Οι χρήστες πρέπει να εγκαταστήσουν προγράμματα οδήγησης από τον κατασκευαστή’S Ιστοσελίδα εάν δεν ανιχνεύονται αυτόματα.
2. Τα προγράμματα οδήγησης συσκευών για συσκευές εισόδου και εξόδου
Ο υπολογιστής’Το S OS αλληλεπιδρά με τα προγράμματα οδήγησης συσκευών για να εξασφαλίσει τις λειτουργίες του υλικού όπως αναμενόταν. Οι συσκευές εισόδου περιλαμβάνουν ποντίκια και πληκτρολόγια, ενώ οι συσκευές εξόδου περιλαμβάνουν συσκευές προβολής όπως οθόνες. Τα πληκτρολόγια, τα ποντίκια και οι οθόνες κατηγοριοποιούνται ως συσκευές plug-and-play.
Συνήθως, οι οδηγοί για συσκευές plug-and-play είναι γενικές και δεν απαιτούν χειροκίνητη εγκατάσταση, ως υπολογιστή’Το S OS τα αναγνωρίζει και τα εγκαθιστά αυτόματα. Ωστόσο, εάν μια εξωτερική συσκευή δεν είναι συσκευή plug-and-play, οι χρήστες ενδέχεται να χρειαστεί να εγκαταστήσουν χειροκίνητα τα προγράμματα οδήγησης από το δίσκο εγκατάστασης ή να τα κατεβάσετε. Αυτό θα επιτρέψει στο λειτουργικό σύστημα να αναγνωρίσει αυτές τις συσκευές.
3. Προγράμματα οδήγησης συσκευών για ψηφιακές κάμερες
Ένα πρόγραμμα οδήγησης ψηφιακής φωτογραφικής μηχανής είναι ένα πρόγραμμα που επιτρέπει την επικοινωνία μεταξύ πληροφορικής και άλλων συσκευών, όπως υπολογιστές. Χωρίς τους οδηγούς, το λειτουργικό σύστημα δεν θα ανιχνεύσει αυτήν τη συσκευή. Οι περισσότερες ψηφιακές κάμερες είναι μόνο συμβατές με το λειτουργικό σύστημα Windows, όπως το Linux Systems Lag.
Οι οδηγοί ψηφιακών φωτογραφικών μηχανών επιτρέπουν τη μεταφορά φωτογραφιών από την κάμερα στον υπολογιστή. Επιτρέπουν στις ψηφιακές κάμερες να εκτυπώνουν φωτογραφίες χρησιμοποιώντας το PictBridge Standard απευθείας σε έναν εκτυπωτή υπολογιστή με δυνατότητα Pictbridge χωρίς να χρειάζονται υπολογιστή. Οι οδηγοί στη θύρα εξόδου βίντεο επιτρέπουν στους χρήστες να εμφανίζουν εικόνες στην τηλεόραση επιλέγοντας ένα βίντεο ή φωτογραφία κάθε φορά.
4. Οι οδηγοί για κινητά λειτουργικά συστήματα όπως το Android
Τα κινητά τηλέφωνα έχουν οδηγούς για να τους επιτρέψουν να επικοινωνούν με υπολογιστές. Οι οδηγοί έρχονται συνδεδεμένοι με το υλικολογισμικό στα περισσότερα τηλέφωνα, τα οποία επιτρέπουν στους υπολογιστές να τα φορτώσουν για να υποστηρίξουν το υλικό καθώς το λειτουργικό σύστημα δεν έχει καθοριστεί. Ωστόσο, μερικές φορές οι χρήστες μπορεί να χρειαστεί να εγκαταστήσουν πρώτα το λογισμικό OEM PC για την εγκατάσταση των οδηγών και να επιτρέψουν τη μεταφορά δεδομένων.
Οι οδηγοί επιτρέπουν την ενσωμάτωση περιφερειακών συσκευών, όπως ελεγκτές παιχνιδιών ή πληκτρολόγια που βασίζονται σε λειτουργικά συστήματα όπως Android Things και Android. Οι οδηγοί επιτρέπουν την πρόσβαση και τον έλεγχο του υλικού. Επιπλέον, επιτρέπουν στις έξυπνες συσκευές να λειτουργούν με προσαρμοσμένες εφαρμογές.
5. Προγράμματα οδήγησης συσκευών για ανώτερη απόδοση βίντεο
Οι κάρτες γραφικών είναι βασικά στοιχεία ενός συστήματος υπολογιστή και είναι υπεύθυνες για την ανώτερη απόδοση βίντεο σε υπολογιστές, παιχνίδια ή άλλες εργασίες έντασης γραφικών. Τα γραφικά προγράμματα οδήγησης επιτρέπουν σε κάρτες γραφικών να αλληλεπιδρούν με τον υπολογιστή’λειτουργικό σύστημα S και επομένως είναι απαραίτητα για την απόκτηση κορυφαίων επιδόσεων από τις κάρτες γραφικών.
Η ενημέρωση των προγραμμάτων οδήγησης γραφικών και άλλων προγραμμάτων οδήγησης των Windows 11 (ή μεγαλύτερης) μπορεί να δώσει στους χρήστες μια ώθηση ταχύτητας, να διορθώσουν προβλήματα και μερικές φορές ακόμη και να παρέχουν στους χρήστες νέες λειτουργίες. Για παράδειγμα, η ενημέρωση των οδηγών παιχνιδιών μπορεί να αυξήσει τα πλαίσια ανά δευτερόλεπτο, μειώνοντας την καθυστέρηση.
Πάρε μακριά
Καθώς οι καταναλωτές και οι επιχειρήσεις χρησιμοποιούν όλο και περισσότερο συσκευές και περιφερειακά, οι οδηγοί συσκευών είναι απαραίτητα για την υποδομή πληροφορικής . Η σύγχρονη τεχνολογία οδηγών μπορεί να βελτιώσει τη λειτουργία του υπολογιστή μειώνοντας την κατανάλωση πόρων και την ταχύτητα ενίσχυσης. Αυτός είναι ο λόγος για τον οποίο είναι απαραίτητο να γνωρίζουμε πώς λειτουργούν οι οδηγοί και να έχουν ένα κανονικό πρόγραμμα επιδιόρθωσης και ενημέρωσης οδηγού έτσι ώστε ολόκληρο το οικοσύστημα της συσκευής να λειτουργεί ομαλά.
Βρήκατε αυτό το άρθρο χρήσιμο όταν μαθαίνετε για τους οδηγούς συσκευών? Πες μας Facebook Ανοίγει ένα νέο παράθυρο , Κελάδημα Ανοίγει ένα νέο παράθυρο , και LinkedIn Ανοίγει ένα νέο παράθυρο . Εμείς’μου αρέσει να ακούω από εσάς!
Περισσότερα για το DevOps
- Top 10 Azure DevOps Certifications το 2022
- Τι είναι ο κύκλος ζωής DevOps? Ορισμός, βασικά στοιχεία και βέλτιστες πρακτικές διαχείρισης
- Top 10 Master Certifications το 2022
- Top 18 Azure DevOps Interview Ερωτήσεις το 2022
- Top 10 πιστοποιήσεις και μαθήματα DevOps το 2022