I dispositivi di plug e riproduzione necessitano di driver?
Informazioni generali sul supporto per i dispositivi plug & play
Una volta che il BIOS ha identificato il drive hard, la scheda video e la tastiera è pronta per iniziare l’avvio (caricando il sistema operativo in memoria dal disco duro). Se hai detto al BIOS di avere un sistema operativo PNP (sistema operativo PNP), dovrebbe iniziare ad avviare il PC come sopra e lasciare che il sistema operativo finisca il PNP configurazione. Altrimenti, un PNP-BIO (prima di avvio) probabilmente proverà a fare il resto del PNP configurazione di dispositivi (ma non informare i driver di dispositivi di ciò che ha fatto). Ma i driver possono ancora scoprirlo utilizzando le funzioni disponibili nel kernel Linux.
I dispositivi di plug e riproduzione necessitano di driver?
Se non capisci questa sezione, leggi i dispositivi hardware della sezione successiva e la comunicazione con loro
Plug-and-play semplificato eccessivo dice al software (driver di dispositivi) dove trovare vari pezzi di hardware (dispositivi) come modem, schede di rete, schede audio, ecc. L’attività di plug-and-play è quella di abbinare i dispositivi fisici con il software (driver di dispositivi) che li gestiscono e stabilire canali di comunicazione tra ciascun dispositivo fisico e il suo driver. Per raggiungere questo obiettivo, PNP assegna e imposta le seguenti “risorse bus” in hardware: indirizzi I/O, regioni di memoria, canali IRQS, DMA (solo bus LPC e ISA). Queste 4 cose sono talvolta chiamate “risorse del 1 ° ordine” o semplicemente “risorse”. PNP mantiene un record di ciò che è fatto e consente ai driver di dispositivo di ottenere queste informazioni. Se non capisci cosa siano queste 4 risorse bus, leggi le seguenti sottosezioni di questo: indirizzi I/O, IRQS, canali DMA, regioni di memoria. Un articolo su Linux Gazette riguardo a 3 di queste risorse di autobus è l’introduzione di IRQ, DMA e indirizzi di base. Una volta assegnate queste risorse bus (e se è installato il driver corretto), il driver effettivo e i “file” per esso nella directory /dev sono pronti per l’uso.
Questa assegnazione PNP di risorse bus è talvolta chiamata “configurazione” ma è solo un tipo di configurazione di basso livello. La directory /etc ha molti file di configurazione, ma la maggior parte di essi non è per la configurazione di PNP. Quindi la maggior parte della configurazione di dispositivi hardware non ha nulla a che fare con PNP o risorse bus. Per esempio, l’inizializzazione di un modem da parte di una “stringa init” o imposta la sua velocità non è PNP. Pertanto, quando si parla di PNP, “configurazione” significa solo un certo tipo di configurazione. Mentre l’altra documentazione (come per MS Windows) chiama semplicemente “risorse” per le risorse degli autobus, a volte uso il termine “risorse di autobus” anziché solo “risorse” in modo da distinguerlo dalla moltitudine di altri tipi di risorse.
PNP è un processo che viene eseguito da vari software e hardware. Se ci fosse solo un programma che gestiva PNP in Linux, sarebbe semplice. Ma con Linux, ogni driver del dispositivo fa il proprio PNP, utilizzando il software fornito dal kernel. L’hardware del BIOS del PC fa PNP quando un PC viene alternato per la prima volta. E c’è molto di più di questo.
Un computer è costituito da una CPU/processore per eseguire la memoria di elaborazione e RAM per archiviare programmi e dati (per un accesso rapido). Inoltre, ci sono un certo numero di dispositivi come vari tipi di disco-disco, una scheda video, una tastiera, dispositivi di rete, schede modem, dispositivi audio, bus USB, porte seriali e parallele, ecc. Ai vecchi giorni la maggior parte dei dispositivi era su carte inserite in slot nel PC. Oggi, molti dispositivi che in precedenza erano le carte sono ora a bordo poiché sono contenute in chip sulla scheda madre. C’è anche un alimentatore per fornire energia elettrica, vari autobus su una scheda madre per collegare i dispositivi alla CPU e un caso per inserire tutto questo.
Le schede che si collegano alla scheda madre possono contenere più di un dispositivo. Anche i chip di memoria sono anche considerati dispositivi ma non sono plug-and-play nel senso usato in questo Howto.
Affinché il sistema informatico funzioni correttamente, ogni dispositivo deve essere sotto il controllo del suo “driver del dispositivo”. Questo è un software che fa parte del sistema operativo (forse caricato come modulo) e funziona sulla CPU. I driver di dispositivo sono associati a “file speciali” nella directory /dev sebbene non siano realmente file. Hanno nomi come HDA3 (terza partizione sul disco rigido A), TTYS1 (la seconda porta seriale), ETH0 (la prima scheda Ethernet), ecc.
Il dispositivo ETH0 è per una scheda Ethernet (scheda NIC). Precedentemente era /dev /eth0 ma ora è solo un dispositivo virtuale nel kernel. A cosa si riferisce Eth0 dipende dal tipo di carta Ethernet che hai. Se il driver è un modulo, questo incarico è probabilmente in una tabella del kernel interno ma potrebbe essere trovato in /etc /moduli.conf (chiamato “alias”). Ad esempio, se si dispone di una scheda Ethernet che utilizza il chip “Tulip”, potresti mettere “alias Eth0 Tulip” in /etc /moduli.Conf in modo che quando il tuo computer richieda eth0 trova il driver tulipano. Tuttavia, i kernel moderni di solito possono trovare il modulo driver giusto in modo da raramente devi specificarlo da solo.
Per controllare un dispositivo, la CPU (sotto il controllo del driver del dispositivo) invia comandi e dati e legge lo stato e i dati dai vari dispositivi. Per fare ciò, ogni driver del dispositivo deve conoscere l’indirizzo del dispositivo che controlla. Conoscere un tale indirizzo è equivalente alla creazione di un canale di comunicazione, anche se il “canale” fisico è in realtà il bus dati all’interno del PC che è condiviso con molti altri dispositivi.
Questo canale di comunicazione è in realtà un po ‘più complesso di quanto descritto sopra. Un “indirizzo” è in realtà una serie di indirizzi, quindi a volte viene utilizzata la parola “intervallo” invece di “indirizzo”. Potrebbe esserci anche più di un intervallo (senza sovrapposizione) per un singolo dispositivo. Inoltre, esiste una parte inversa del canale (noto come interrupt) che consente ai dispositivi di inviare una richiesta di “aiuto” urgente al driver del dispositivo.
Il bus PCI ha 3 spazi di indirizzo: I/O, memoria principale (memoria IO) e configurazione.
Informazioni generali sul supporto per i dispositivi plug & play
Una volta che il BIOS ha identificato il drive hard, la scheda video e la tastiera è pronta per iniziare l’avvio (caricando il sistema operativo in memoria dal disco duro). Se hai detto al BIOS di avere un sistema operativo PNP (sistema operativo PNP), dovrebbe iniziare ad avviare il PC come sopra e lasciare che il sistema operativo finisca il PNP configurazione. Altrimenti, un PNP-BIO (prima di avvio) probabilmente proverà a fare il resto del PNP configurazione di dispositivi (ma non informare i driver di dispositivi di ciò che ha fatto). Ma i driver possono ancora scoprirlo utilizzando le funzioni disponibili nel kernel Linux.
I dispositivi di plug e riproduzione necessitano di driver?
Se non capisci questa sezione, leggi i dispositivi hardware della sezione successiva e la comunicazione con loro
Plug-and-play semplificato eccessivo dice al software (driver di dispositivi) dove trovare vari pezzi di hardware (dispositivi) come modem, schede di rete, schede audio, ecc. L’attività di plug-and-play è quella di abbinare i dispositivi fisici con il software (driver di dispositivi) che li gestiscono e stabilire canali di comunicazione tra ciascun dispositivo fisico e il suo driver. Per raggiungere questo obiettivo, PNP assegna e imposta le seguenti “risorse bus” in hardware: indirizzi I/O, regioni di memoria, canali IRQS, DMA (solo bus LPC e ISA). Queste 4 cose sono talvolta chiamate “risorse del 1 ° ordine” o semplicemente “risorse”. PNP mantiene un record di ciò che è fatto e consente ai driver di dispositivo di ottenere queste informazioni. Se non capisci cosa siano queste 4 risorse bus, leggi le seguenti sottosezioni di questo: indirizzi I/O, IRQS, canali DMA, regioni di memoria. Un articolo su Linux Gazette riguardo a 3 di queste risorse di autobus è l’introduzione di IRQ, DMA e indirizzi di base. Una volta assegnate queste risorse bus (e se è installato il driver corretto), il driver effettivo e i “file” per esso nella directory /dev sono pronti per l’uso.
Questa assegnazione PNP di risorse bus è talvolta chiamata “configurazione” ma è solo un tipo di configurazione di basso livello. La directory /etc ha molti file di configurazione, ma la maggior parte di essi non è per la configurazione di PNP. Quindi la maggior parte della configurazione di dispositivi hardware non ha nulla a che fare con PNP o risorse bus. Per esempio, l’inizializzazione di un modem mediante una “stringa init” o l’impostazione della sua velocità non è PNP. Pertanto, quando si parla di PNP, “configurazione” significa solo un certo tipo di configurazione. Mentre l’altra documentazione (come per MS Windows) chiama semplicemente “risorse” per le risorse degli autobus, a volte uso il termine “risorse di autobus” anziché solo “risorse” in modo da distinguerlo dalla moltitudine di altri tipi di risorse.
PNP è un processo che viene eseguito da vari software e hardware. Se ci fosse solo un programma che gestiva PNP in Linux, sarebbe semplice. Ma con Linux ogni driver del dispositivo fa il proprio PNP, utilizzando il software fornito dal kernel. L’hardware del BIOS del PC fa PNP quando un PC viene alternato per la prima volta. E c’è molto di più di questo.
Un computer è costituito da una CPU/processore per eseguire la memoria di elaborazione e RAM per archiviare programmi e dati (per un accesso rapido). Inoltre, ci sono un certo numero di dispositivi come vari tipi di disco-disco, una scheda video, una tastiera, dispositivi di rete, schede modem, dispositivi audio, bus USB, porte seriali e parallele, ecc. Ai vecchi giorni la maggior parte dei dispositivi era su carte inserite in slot nel PC. Oggi, molti dispositivi che in precedenza erano carte sono ora a bordo poiché sono contenuti in chip sulla scheda madre. C’è anche un alimentatore per fornire energia elettrica, vari autobus su una scheda madre per collegare i dispositivi alla CPU e un caso per inserire tutto questo.
Le schede che si collegano alla scheda madre possono contenere più di un dispositivo. Anche i chip di memoria sono anche considerati dispositivi ma non sono plug-and-play nel senso usato in questo Howto.
Affinché il sistema informatico funzioni correttamente, ogni dispositivo deve essere sotto il controllo del suo “driver del dispositivo”. Questo è un software che fa parte del sistema operativo (forse caricato come modulo) e funziona sulla CPU. I driver di dispositivo sono associati a “file speciali” nella directory /dev sebbene non siano realmente file. Hanno nomi come HDA3 (terza partizione sul disco rigido A), TTYS1 (la seconda porta seriale), ETH0 (la prima scheda Ethernet), ecc.
Il dispositivo ETH0 è per una scheda Ethernet (scheda NIC). Precedentemente era /dev /eth0 ma ora è solo un dispositivo virtuale nel kernel. A cosa si riferisce Eth0 dipende dal tipo di carta Ethernet che hai. Se il driver è un modulo, questo incarico è probabilmente in una tabella del kernel interno ma potrebbe essere trovato in /etc /moduli.conf (chiamato “alias”). Ad esempio, se si dispone di una scheda Ethernet che utilizza il chip “Tulip”, potresti mettere “alias Eth0 Tulip” in /etc /moduli.Conf in modo che quando il tuo computer richieda eth0 trova il driver tulipano. Tuttavia, i kernel moderni di solito possono trovare il modulo driver giusto in modo da raramente devi specificarlo da solo.
Per controllare un dispositivo, la CPU (sotto il controllo del driver del dispositivo) invia comandi e dati e legge lo stato e i dati dai vari dispositivi. Per fare questo, ogni driver del dispositivo deve conoscere l’indirizzo del dispositivo che controlla. Conoscere un tale indirizzo è equivalente alla creazione di un canale di comunicazione, anche se il “canale” fisico è in realtà il bus dati all’interno del PC che è condiviso con molti altri dispositivi.
Questo canale di comunicazione è in realtà un po ‘più complesso di quanto descritto sopra. Un “indirizzo” è in realtà una gamma di indirizzi in modo che a volte viene utilizzata la parola “intervallo” invece di “indirizzo”. Potrebbe anche esserci più di un intervallo (senza sovrapposizione) per un singolo dispositivo. Inoltre, esiste una parte inversa del canale (noto come interrupt) che consente ai dispositivi di inviare una richiesta di “aiuto” urgente al driver del dispositivo.
Il bus PCI ha 3 spazi di indirizzo: I/O, memoria principale (memoria IO) e configurazione. Il vecchio bus Isa manca di uno spazio di indirizzo “configurazione” autentico. Solo gli spazi di memoria I/0 e IO sono usati per il dispositivo IO. Gli indirizzi di configurazione sono fissi e non possono essere modificati, quindi non devono essere allocati. Per maggiori dettagli, consultare lo spazio degli indirizzi di configurazione PCI
Quando la CPU desidera accedere a un dispositivo, mette l’indirizzo del dispositivo su un bus principale del computer (per PCI: l’indirizzo/bus dati). Tutti i tipi di indirizzi (come l’I/O e la memoria principale) condividono lo stesso bus all’interno del PC. Ma la presenza o l’assenza di tensione su alcuni fili dedicati nel bus del PC indica in quale “spazio” si trova un indirizzo: I/O, memoria principale (vedi gamme di memoria) o configurazione (solo PCI). Questo è un po ‘troppo semplificato poiché dire a un dispositivo PCI che si tratta di un accesso allo spazio di configurazione è in realtà più complesso di quanto sopra descritto. Vedere lo spazio dell’indirizzo di configurazione PCI per i dettagli. Vedere i dettagli dell’indirizzo per maggiori dettagli sull’indirizzo in generale.
Gli indirizzi di un dispositivo sono archiviati nei suoi registri nel dispositivo fisico. Possono essere modificati dal software e possono essere disabilitati in modo che il dispositivo non abbia alcun indirizzo. Tranne il fatto che l’indirizzo di configurazione PCI non può essere modificato o disabilitato.
I dispositivi erano originariamente situati nello spazio dell’indirizzo I/O ma oggi possono usare lo spazio nella memoria principale. Un indirizzo I/0 viene talvolta chiamato solo “I/O”, “IO”, “I/O” o “IO”. Vengono anche utilizzati i termini “porta I/O” o “gamma I/O”. Non confondere queste porte IO con “Io Memory” situato nella memoria principale. Ci sono due passaggi principali per allocare gli indirizzi I/O (o alcune altre risorse di autobus come interruzioni sul bus ISA):
- Imposta l’indirizzo I/O, ecc. nell’hardware (in uno dei suoi registri)
- Fai sapere al suo driver del dispositivo cosa questo indirizzo I/O, ecc. È
Spesso, il driver del dispositivo fa entrambi (una specie di). Il driver del dispositivo non ha effettivamente bisogno di impostare un indirizzo I/O se scopre che l’indirizzo è stato precedentemente impostato (forse dal BIOS) ed è disposto ad accettare quell’indirizzo. Una volta che il driver ha scoperto quale indirizzo è stato precedentemente impostato o imposta l’indirizzo stesso, allora ovviamente sa qual è l’indirizzo, quindi non è necessario far sapere al conducente l’indirizzo, lo sa già.
Il processo a due fasi sopra (1. Imposta l’indirizzo nell’hardware. 2. Fai sapere al conducente.) è qualcosa come il problema in due parti di trovare il numero di casa di qualcuno in una strada. Qualcuno deve installare un numero sul davanti della casa in modo che possa essere trovato e quindi le persone che potrebbero voler andare a questo indirizzo devono ottenere (e scrivere) questo numero di casa in modo che possano trovare la casa. Per i computer, l’hardware del dispositivo deve prima inserire il suo indirizzo in un registro speciale nel suo hardware (mettere il numero della casa) e quindi il driver del dispositivo deve ottenere questo indirizzo (scrivere il numero della casa nella sua rubrica). Entrambi devono essere eseguiti, automaticamente tramite software o inserendo i dati manualmente in file di configurazione. Possono verificarsi problemi quando solo uno di essi viene fatto bene.
Per la configurazione PNP manuale alcune persone commettono solo uno di questi due passaggi e poi si chiedono perché il computer non riesca a trovare il dispositivo. Ad esempio, possono usare “setSerial” per assegnare un indirizzo a una porta seriale senza rendersi conto che questo indica al driver solo un indirizzo. Non imposta l’indirizzo nell’hardware della porta seriale stessa. Se hai detto al conducente sbagliato, allora sei nei guai. Un altro modo per dire al driver è dare l’indirizzo come opzione a un modulo kernel (driver del dispositivo). Se quello che dici è sbagliato, potrebbero esserci problemi. Un driver intelligente può rilevare il modo in cui l’hardware è effettivamente impostato e rifiutare le informazioni errate fornite dall’opzione (o almeno emettere un messaggio di errore).
Un requisito ovvio è che prima che il driver del dispositivo possa utilizzare un indirizzo deve essere impostato per la prima volta nel dispositivo fisico (come una scheda). Poiché i driver del dispositivo si avviano spesso subito dopo aver avviato il computer, a volte cercano di accedere a una scheda (per vedere se è lì, ecc.) prima che l’indirizzo sia stato impostato nella scheda da un programma di configurazione PNP. Quindi vedi un messaggio di errore che non riescono a trovare la carta anche se è lì (ma non ha ancora un indirizzo).
Ciò che è stato detto negli ultimi paragrafi relativi agli indirizzi I/O si applica con la stessa forza per la maggior parte delle altre risorse di bus: gamme di memoria, IRQS-Overview e canali DMA. Ciò che questi sono saranno spiegati nelle prossime 3 sezioni. L’eccezione è che gli interrupt sul bus PCI non sono impostati dai registri delle schede ma vengono invece instradati (mappati) su IRQ da un chip sulla scheda madre. Quindi la scheda IRQ A PCI viene instradata è scritta nel registro della scheda solo a scopo informativo.
Per vedere quali indirizzi IO vengono utilizzati sul tuo PC, guarda il file /proc /ioports.
A molti dispositivi viene assegnato lo spazio degli indirizzi nella memoria principale. A volte si chiama “Memoria condivisa” o “IO mappata dalla memoria” o “IO Memoria”. Questa memoria si trova fisicamente all’interno del dispositivo fisico ma il computer lo accede proprio come accederebbe alla memoria sui chip di memoria. Quando si discute di risorse di bus è spesso solo chiamato “memoria”, “mem” o “iomem”. Oltre a utilizzare tale “memoria”, un tale dispositivo potrebbe anche utilizzare lo spazio degli indirizzi IO convenzionale. Per vedere cosa è in uso MEM sul tuo computer, guarda /proc /iomem. Questo “file” include la memoria utilizzata dai dispositivi di memoria RAM ordinari in modo che mostri l’allocazione della memoria in generale e non solo l’allocazione di iomem. Se vedi uno strano numero anziché un nome, è probabile che il numero di un dispositivo PCI che puoi verificare digitando “LSPCI”.
Quando si inserisce una scheda che utilizza iomem, stai effettivamente inserendo un modulo di memoria per la memoria principale. Un indirizzo elevato è selezionato per esso da PNP in modo che non sia in conflitto con i moduli di memoria principale (chips). Questa memoria può essere ROM (lettura solo memoria) o memoria condivisa. La memoria condivisa è condivisa tra il dispositivo e la CPU (in esecuzione del driver del dispositivo) proprio come lo spazio dell’indirizzo IO è condiviso tra il dispositivo e la CPU. Questa memoria condivisa funge da mezzo di “trasferimento” tra il dispositivo e la memoria principale. È input-output (IO) ma non è fatto nello spazio IO. Sia la scheda che il driver del dispositivo devono conoscere l’intervallo di memoria.
ROM (lettura solo memoria) su schede è un diverso tipo di iomem. È probabilmente un programma (forse un driver del dispositivo) che verrà utilizzato con il dispositivo. Potrebbe essere il codice di inizializzazione in modo che sia ancora richiesto un driver del dispositivo. Spero che funzionerà con Linux e non solo MS Windows. Potrebbe essere necessario ombreggiare, il che significa che viene copiato ai tuoi chip di memoria principale per funzionare più velocemente. Una volta che è in ombra non è più “lettura solo”.
Dopo aver letto questo, potresti voler leggere gli interrupt -details per molti altri dettagli. Quello che segue è intenzionalmente semplificato: oltre all’indirizzo, esiste anche un numero di interrupt da affrontare (come IRQ 5). Si chiama un numero IRQ (richiesta di interruzione) o solo un “IRQ” in breve. Abbiamo già menzionato sopra che il driver del dispositivo deve conoscere l’indirizzo di una scheda per poter comunicare con essa.
Ma che dire della comunicazione nella direzione opposta? Supponiamo che il dispositivo debba dire immediatamente al driver del dispositivo. Ad esempio, il dispositivo potrebbe ricevere molti byte destinati alla memoria principale e il suo buffer utilizzato per archiviare questi byte è quasi pieno. Pertanto, il dispositivo deve dire al suo driver di recuperare questi byte contemporaneamente prima che il buffer trabocca dal flusso in arrivo di byte. Un altro esempio è segnalare il driver che il dispositivo ha finito di inviare un mucchio di byte e ora sta aspettando altri byte dal driver in modo che possa inviarli anche loro.
In che modo il dispositivo dovrebbe segnalare rapidamente il suo driver? Potrebbe non essere in grado di utilizzare il bus dati principale poiché è probabilmente già in uso. Invece mette una tensione su un filo di interrupt dedicato (chiamato anche linea o traccia) che è spesso riservato per quel solo dispositivo. Questo segnale di tensione è chiamato una richiesta di interruzione (IRQ) o solo un “interrupt” in breve. Ci sono l’equivalente di 16 (o 24, ecc.) tali fili in un PC e ogni filo conduce (indirettamente) a un determinato driver del dispositivo. Ogni filo ha un numero IRQ univoco (richiesta di interruzione). Il dispositivo deve mettere il suo interrupt sul filo corretto e il driver del dispositivo deve ascoltare l’interrupt sul filo corretto. In quale filo il dispositivo invia tali “richieste di aiuto” è determinato dal numero IRQ memorizzato nel dispositivo. Lo stesso numero IRQ deve essere noto al driver del dispositivo in modo che il driver del dispositivo sappia su quale linea IRQ ascolta.
Una volta che il driver del dispositivo ottiene l’interrupt dal dispositivo, deve scoprire perché l’interrupt è stato emesso e intraprendere le azioni appropriate per servire l’interruzione. Sul bus ISA, ogni dispositivo di solito ha bisogno del proprio numero IRQ unico. Per il bus PCI e altri casi speciali, è consentita la condivisione di IRQS (due o più dispositivi PCI possono avere lo stesso numero IRQ). Inoltre, per PCI, ogni dispositivo PCI ha un filo fisso “interrupt PCI”. Ma un chip di routing programmabile mappa i fili PCI su interruzioni di tipo ISA. Vedi interrupt -Details per dettagli su come funziona tutto quanto sopra.
- Leggere un pezzo di byte dallo spazio di memoria I/O del dispositivo e mettere questi byte nella stessa CPU
- Scrivere questi byte dalla CPU alla memoria principale
Con DMA è un processo unico per inviare i byte direttamente dal dispositivo alla memoria. Il dispositivo deve avere le funzionalità DMA integrate nel suo hardware e quindi non tutti i dispositivi possono fare DMA. Mentre DMA sta andando avanti, la CPU non può fare troppo poiché l’autobus principale viene utilizzato dal trasferimento DMA.
Il vecchio autobus ISA può fare lento DMA mentre il bus PCI fa “DMA” da Bus Mastering. Il bus LPC ha sia il vecchio DMA che il nuovo DMA (Mastering degli autobus). Sul bus PCI, ciò che più precisamente dovrebbe essere chiamato “Mastering degli autobus” è spesso chiamato “Ultra DMA”, “BM-DNA”, “UDMA” o semplicemente “DMA”, il mastering degli autobus consente ai dispositivi di diventare temporaneamente maestri di autobus e di trasferire byte quasi come il maestro del bus era il Master della CPU. Non utilizza numeri di canale poiché l’organizzazione del bus PCI è tale che l’hardware PCI sappia quale dispositivo è attualmente il master del bus e quale dispositivo richiede di diventare un master bus. Pertanto non esiste alcuna allocazione delle risorse dei canali DMA per il bus PCI e non esistono risorse del canale DMA per questo bus. Il bus LPC (a basso numero di pin) dovrebbe essere configurato dal BIOS, quindi gli utenti non dovrebbero preoccuparsi dei suoi canali DMA.
Questo è solo per l’autobus LPC e il vecchio autobus ISA. Quando un dispositivo desidera fare DMA, emette una ricerca DMA utilizzando fili di richiesta DMA dedicati in modo molto simile a una richiesta di interrupt. DMA in realtà avrebbe potuto essere gestito usando gli interrupt, ma ciò introdurrebbe alcuni ritardi, quindi è più veloce farlo avendo un tipo speciale di interrupt noto come DMA-Request. Come gli interrupt, le richieste DMA sono numerate in modo da identificare quale dispositivo sta facendo la richiesta. Questo numero è chiamato un canale DMA. Poiché i trasferimenti DMA usano tutti il bus principale (e solo uno può funzionare alla volta), tutti usano lo stesso canale per il flusso di dati, ma il numero “DMA Channel” serve a identificare chi sta usando il “canale”. I registri hardware esistono sulla scheda madre che memorizzano lo stato corrente di ciascun “canale”. Pertanto, al fine di emettere una richiesta DMA, il dispositivo deve conoscere il suo numero di canale DMA che deve essere archiviato in un registro speciale sul dispositivo fisico.
Pertanto i driver di dispositivo devono essere “collegati” in qualche modo all’hardware che controllano. Questo viene fatto allocando risorse di bus (I/O, Memoria, IRQ, DMA) sia al dispositivo fisico che lasciando che il driver del dispositivo lo scoprisse. Ad esempio, una porta seriale utilizza solo 2 risorse: un indirizzo I/O I/O. Entrambi questi valori devono essere forniti al driver del dispositivo e al dispositivo fisico. Il driver (e il suo dispositivo) ricevono anche un nome nella directory /dev (come TTYS1). L’indirizzo e il numero IRQ sono archiviati dal dispositivo fisico nei registri di configurazione sulla sua scheda (o in un chip sulla scheda madre). Il vecchio hardware (a metà degli anni ’90) ha usato gli switch (o i maglioni) per impostare fisicamente l’IRQ e l’indirizzo nell’hardware. Questa impostazione è rimasta fissa fino a quando qualcuno rimuove la copertura del computer e ha spostato i ponticelli.
Ma per il caso di PNP (senza jumper), i dati del registro di configurazione vengono generalmente persi quando il PC è alimentato (disattivato) in modo che i dati di risorse bus devono essere forniti di nuovo a ciascun dispositivo ogni volta che il PC è acceso.
Computer ideali
L’architettura del PC fornisce solo un numero limitato di risorse: canali IRQ, canali DMA, indirizzo I/O e regioni di memoria. Se esistessero solo un numero di numeri limitati e tutti usavano valori standardizzati per le risorse bus (come indirizzi I/O univoci e numeri IRQ) non vi sarebbe alcun problema di collegare i driver dei dispositivi ai dispositivi. Ogni dispositivo avrebbe una risorsa fissa che non sarebbe in conflitto con nessun altro dispositivo sul tuo computer. Non ci sono due dispositivi avere gli stessi indirizzi, non ci sarebbero conflitti IRQ sul bus ISA, ecc. Ogni driver sarebbe programmato con gli indirizzi univoci, IRQ, ecc. Codifica dura nel programma. La vita sarebbe semplice.
Un altro modo per prevenire i conflitti dell’indirizzo sarebbe quello di includere il numero di slot di ciascuna carta come parte dell’indirizzo. Quindi non potrebbe esserci alcun conflitto di indirizzi tra due carte diverse (poiché sono in diverse slot). La progettazione della carta non consentirebbe conflitti di indirizzi tra diverse funzioni della carta. Si scopre che lo spazio dell’indirizzo di configurazione (utilizzato per la richiesta e l’assegnazione delle risorse) lo fa effettivamente. Ma non è fatto per gli indirizzi I/O né le regioni di memoria. La condivisione di IRQS come sul bus PCI evita anche i conflitti ma può causare altri problemi.
Computer reali
Ma l’architettura PC ha problemi di conflitto. L’aumento del numero di dispositivi (inclusi più dispositivi dello stesso tipo) ha tende ad aumentare potenziali conflitti. Allo stesso tempo, l’introduzione del bus PCI, in cui due o più dispositivi possono condividere lo stesso interrupt e l’introduzione di più interrupt, ha tende a ridurre i conflitti. Il risultato complessivo, a causa di PCI, è stato una riduzione dei conflitti poiché la risorsa più scarsa è IRQS. Tuttavia, anche sul bus PCI è più efficiente evitare la condivisione dell’IRQ. In alcuni casi in cui gli interrupt si verificano in rapida successione e devono essere agiti sulla condivisione rapida (come audio) può causare un degrado delle prestazioni. Quindi non è bene assegnare a tutti i dispositivi PCI lo stesso IRQ, il compito deve essere bilanciato. Eppure alcune persone scoprono che tutti i loro dispositivi PCI sono sullo stesso IRQ.
Quindi i dispositivi devono avere una certa flessibilità in modo che possano essere impostati su qualsiasi indirizzo, IRQ, ecc. è necessario per evitare eventuali conflitti e ottenere il bilanciamento. Ma alcuni IRQ e indirizzi sono piuttosto standard come quelli per l’orologio e la tastiera. Questi non hanno bisogno di tale flessibilità.
Oltre al problema dell’allocazione contrastante delle risorse di autobus, c’è il problema di commettere un errore nel dire al driver del dispositivo quali sono le risorse di autobus. Ciò è più probabile che accada per il caso della configurazione manuale vecchio stile in cui i tipi di utente nelle risorse utilizzati in un file di configurazione memorizzati su HardDrive. Questo spesso funzionava bene quando le risorse venivano impostate dai saltatori sulle schede (a condizione che l’utente sapesse come venivano impostate e non commetteva errori nella digitazione di questi dati su file di configurazione). Ma con le risorse impostate dal software PNP, potrebbero non essere sempre impostare lo stesso e questo può significare problemi per qualsiasi configurazione manuale in cui l’utente tipi nei valori delle risorse di bus che sono state impostate da PNP.
L’allocazione delle risorse di bus, se eseguita correttamente, stabilisce canali di comunicazione non conflitti tra hardware fisico e driver di dispositivo. Ad esempio, se un certo intervallo di indirizzi I/O (risorsa) viene assegnato sia a un driver di dispositivo che a un pezzo di hardware, questo ha stabilito un canale di comunicazione a senso unico tra di loro. Il driver può inviare comandi e altre informazioni al dispositivo. In realtà sono più che comunicazioni a senso unico poiché il driver può ottenere informazioni dal dispositivo leggendo i suoi registri. Ma il dispositivo non può avviare alcuna comunicazione in questo modo. Per avviare la comunicazione il dispositivo ha bisogno di un IRQ in modo che possa inviare interruzioni al suo driver. Questo crea un canale di comunicazione a due vie in cui sia il driver che il dispositivo fisico possono iniziare la comunicazione.
Il termine plug-and-play (PNP) ha vari significati. In senso lato è solo la configurazione automatica in cui si collega solo a un dispositivo e si configura. Nel senso usato in questo Howto, PNP significa configurazione di risorse Bus PNP (impostarli nei dispositivi fisici) e far conoscere i driver dei dispositivi. Nel caso di Linux, spesso è solo un driver che determina come il BIOS ha impostato risorse di bus e, se necessario, il conducente che dà un comando per cambiare (ripristinare) le risorse del bus). “PNP” spesso significa solo PNP sul bus ISA in modo che il messaggio di ISAPNP: “Nessun dispositivo plug e riproduzione trovato” significa solo che non sono stati trovati dispositivi PNP ISA. Le specifiche PCI standard (che sono state inventate prima di coniare il termine “PNP”) forniscono l’equivalente di PNP per il bus PCI.
PNP corrisponde ai dispositivi con i conducenti di dispositivi e specifica i loro canali di comunicazione (allocando risorse di bus). Comunica elettronicamente con registri di configurazione situati all’interno dei dispositivi fisici utilizzando un protocollo standardizzato. Sul bus ISA prima del plug-and-play, le risorse degli autobus erano precedentemente ambientate in dispositivi hardware da saltatori o switch. A volte le risorse di bus potrebbero essere impostate nell’hardware elettronicamente da un driver (di solito scritto solo per un sistema operativo MS ma in rari casi supportati da un driver Linux). Questo era qualcosa come PNP ma non c’era un protocollo standardizzato usato, quindi non era davvero PNP. Alcune carte avevano un’impostazione del jumper che poteva essere sovrascritta da tale software. Per Linux prima del PNP, alla maggior parte dei conducenti di software sono stati assegnati risorse bus mediante file di configurazione (o simili) o sondando il dispositivo per gli indirizzi in cui si prevede che risiedesse. Ma questi metodi sono ancora in uso oggi per consentire a Linux di utilizzare il vecchio hardware non PNP. E a volte questi vecchi metodi sono ancora usati oggi su hardware PNP (dopo che il BIOS ha assegnato risorse all’hardware con i metodi PNP).
Il bus PCI era simile a un PNP dall’inizio, ma di solito non è chiamato PNP o “Plug and Play” con il risultato che PNP spesso significa PNP sul bus ISA. Ma il PNP in questi documenti di solito significa PNP sul bus ISA o PCI.
Ecco come il PNP dovrebbe funzionare in teoria. L’ipotetico programma di configurazione PNP trova tutti i dispositivi PNP e chiede a ciascuno di cosa ha bisogno di bus. Quindi controlla ciò che le risorse di autobus (IRQS, ecc.) deve regalare. Naturalmente, se ha risorse di autobus riservate utilizzate dai dispositivi non PNP (legacy) (se ne sa) non li dà via. Quindi utilizza alcuni criteri (non specificati dalle specifiche PNP) per distribuire le risorse degli autobus in modo che non vi siano conflitti e in modo che tutti i dispositivi ottengano ciò di cui hanno bisogno (se possibile). Quindi indica indirettamente a ciascun dispositivo fisico quali risorse bus sono assegnati e i dispositivi si sono preparati per utilizzare solo le risorse di bus assegnate. Quindi i driver del dispositivo scoprono in qualche modo cosa usano i loro dispositivi di bus e sono quindi in grado di comunicare efficacemente con i dispositivi che controllano.
Ad esempio, supponiamo che una scheda abbia bisogno di un interrupt (numero IRQ) e 1 MB di memoria condivisa. Il programma PNP legge questa richiesta dai registri di configurazione sulla scheda. Assegna quindi la scheda IRQ5 e 1 MB di spazio di memoria, a partire dall’indirizzo 0xe9000000. Il programma PNP legge anche le informazioni di identificazione dalla scheda che racconta che tipo di dispositivo è, il suo numero ID, ecc. Quindi dice direttamente o indirettamente al driver del dispositivo appropriato cosa è fatto. Se è il driver stesso che sta facendo il PNP, allora non è necessario trovare un driver per il dispositivo (poiché il suo driver è già in esecuzione). Altrimenti è necessario trovare un driver di dispositivo adatto e prima o poi racconta come è configurato il suo dispositivo.
Non è sempre così semplice poiché la scheda (o la tabella di routing per PCI) può specificare che può utilizzare solo determinati numeri IRQ o che l’1 MB di memoria deve trovarsi all’interno di un certo intervallo di indirizzi. I dettagli sono diversi per gli autobus PCI e ISA con maggiore complessità sul bus ISA.
Un modo comunemente usato per allocare le risorse è iniziare con un dispositivo e allocare le risorse di bus IT. Quindi fai lo stesso per il dispositivo successivo, ecc. Quindi se finalmente tutti i dispositivi ricevono risorse allocate senza conflitti, allora è tutto ok. Ma se allocare una risorsa necessaria creerebbe un conflitto, allora è necessario tornare indietro e provare a apportare alcune modifiche alle allocazioni precedenti in modo da ottenere la risoluzione degli autobus necessari. Questo si chiama ribilanciamento. Linux non fa riequilibrarsi ma in alcuni casi Windows. Per Linux, tutto ciò viene fatto dal BIOS e/o dai driver del kernel e/o del dispositivo. In Linux, il driver del dispositivo non ottiene la sua allocazione finale delle risorse fino all’avvio del driver, quindi un modo per evitare i conflitti non è semplicemente avviare alcun dispositivo che potrebbe causare un conflitto. Tuttavia, il BIOS alloca spesso le risorse al dispositivo fisico prima che Linux venga persino avviato e il kernel controlla i dispositivi PCI per gli indirizzi i conflitti al tempo di avvio.
Ci sono alcune scorciatoie che il software PNP può utilizzare. Uno è tenere traccia di come ha assegnato le risorse del bus all’ultima configurazione (quando il computer è stato utilizzato l’ultima volta) e riutilizzarlo. Bioss lo fai così come MS Windows e questo, ma standard Linux no. Ma in un certo senso, poiché usa spesso ciò che il BIOS ha fatto. Windows memorizza queste informazioni nel suo “registro” sul disco rigido e un BIOS PNP/PCI le memorizza in memoria non volatile nel tuo PC (noto come ESCD; vedere il database ESCD del BIOS). Alcuni sostengono che non avere un registro (come Linux) è migliore poiché con Windows, il registro potrebbe essere corrotto ed è difficile da modificare. Ma anche il PNP in Linux ha problemi.
Mentre MS Windows (tranne Windows 3.X e NT4) erano PNP, Linux non era originariamente un sistema operativo PNP ma sta diventando gradualmente un sistema operativo PNP. PNP originariamente ha lavorato per Linux perché un BIOS PNP configurerebbe le risorse bus e i driver del dispositivo avrebbero scoperto (utilizzando i programmi forniti dal kernel Linux) ciò che il BIOS ha fatto. Oggi, la maggior parte dei conducenti può emettere comandi per configurare la propria risorsa in autobus e non è necessario fare sempre affidamento sul BIOS. Sfortunatamente un conducente potrebbe prendere una risorsa in bus di cui un altro dispositivo avrà bisogno in seguito. Alcuni driver di dispositivo possono archiviare l’ultima configurazione utilizzata in un file di configurazione e utilizzarlo la prossima volta che il computer è acceso.
Se l’hardware del dispositivo si ricordasse la sua configurazione precedente, non ci sarebbe alcun hardware da configurare PNP al momento di avvio successivo. Ma l’hardware sembra dimenticare la sua configurazione quando la potenza viene disattivata. Alcuni dispositivi contengono una configurazione predefinita (ma non necessariamente l’ultima usata). Pertanto, un dispositivo PNP deve essere riconfigurato ogni volta che il PC è acceso. Inoltre, se è stato aggiunto un nuovo dispositivo, anche questo deve essere configurato. Assegnare risorse di autobus a questo nuovo dispositivo potrebbe comportare la demolizione di alcune risorse di autobus da un dispositivo esistente e l’assegnazione delle risorse di bus alternative del dispositivo esistente che può utilizzare invece. Al momento, Linux non può allocare con questa raffinatezza (e MS Windows XP potrebbe non essere in grado di farlo).
Quando il PC viene acceso per la prima volta il chip BIOS esegue il suo programma per iniziare il computer (il primo passo è controllare l’hardware della scheda madre). Se il sistema operativo viene archiviato sull’affitto hard (così com’è normalmente), il BIOS deve conoscere il drive rigido. Se il drive hard è PNP, il BIOS può utilizzare i metodi PNP per trovarlo. Inoltre, al fine di consentire all’utente di configurare manualmente i CMO del BIOS e rispondere ai messaggi di errore all’avvio del computer, sono richiesti anche una schermata (scheda video) e una tastiera. Pertanto, il BIOS deve sempre i dispositivi di configurazione del PNP necessari per caricare il sistema operativo dal drive rigido.
Una volta che il BIOS ha identificato il drive hard, la scheda video e la tastiera è pronta per iniziare l’avvio (caricando il sistema operativo in memoria dal disco duro). Se hai detto al BIOS di avere un sistema operativo PNP (sistema operativo PNP), dovrebbe iniziare ad avviare il PC come sopra e lasciare che il sistema operativo finisca il PNP configurazione. Altrimenti, un PNP-BIO (prima di avvio) probabilmente proverà a fare il resto del PNP configurazione di dispositivi (ma non informare i driver di dispositivi di ciò che ha fatto). Ma i driver possono ancora scoprirlo utilizzando le funzioni disponibili nel kernel Linux.
Per vedere cosa c’è sul tipo Bus PCI LSPCI o LSPCI -vv . O digita scanpci -v per le stesse informazioni nel formato del codice numerico in cui il dispositivo è mostrato per numero (come: “dispositivo 0x122d” anziché per nome, ecc. In rari casi, ScanPCI troverà un dispositivo che LSPCI non può trovare.
I messaggi di avvio sul tuo display Show dispositivi che sono stati trovati su vari autobus (usa il padrone di casa per eseguire il backup attraverso di loro). Vedi i messaggi del tempo di avvio
Isa è il vecchio bus dei vecchi PC compatibili con IBM mentre PCI è un bus più recente e più veloce di Intel. Il bus PCI è stato progettato per quello che è oggi chiamato PNP. Questo lo rende facile (rispetto al bus ISA) per scoprire come le risorse di bus PNP sono state assegnate ai dispositivi hardware.
Per il bus ISA c’era un vero problema con l’implementazione di PNP poiché nessuno aveva in mente PNP quando il bus ISA è stato progettato e non ci sono quasi indirizzi I/O disponibili per PNP da utilizzare per l’invio di informazioni di configurazione a un dispositivo fisico. Di conseguenza, il modo in cui il PNP è stato calpestato sul bus ISA è molto complicato. Sono stati scritti interi libri al riguardo. Vedi libro PNP. Tra le altre cose, richiede che a ciascun dispositivo PNP sia assegnato un “manico” temporaneo dal programma PNP in modo che si possa risolverlo per la configurazione di PNP. Assegnare queste “maniglie” è chiamata “isolamento”. Vedi Isa Isolation per i dettagli complessi.
Man mano che il bus Isa si estingue, PNP sarà un po ‘più facile. Non sarà quindi più facile scoprire come il BIOS ha configurato l’hardware, ma ci saranno meno conflitti poiché PCI può condividere interrupt. Sarà ancora la necessità di abbinare i driver di dispositivi con i dispositivi e anche la necessità di configurare i dispositivi che vengono aggiunti quando il PC è attivo e in esecuzione. Il grave problema di alcuni dispositivi non supportati da Linux rimarrà.
Linux ha avuto seri problemi in passato nel trattare con PNP, ma la maggior parte di questi problemi è stata risolta (a metà del 2004). Linux è passato da un sistema non PNP originariamente, a uno che può essere PNP se alcune opzioni vengono selezionate quando si compila il kernel. Il BIOS può assegnare IRQS ma Linux può anche assegnarne alcuni o addirittura riassegnare ciò che il BIOS ha fatto. La parte di configurazione di ACPI (configurazione anticipata e interfaccia di potenza) è progettata per semplificare la configurazione dei sistemi operativi. Linux può usare ACPI se è selezionato quando viene compilato il kernel.
In Linux, è tradizionale per ogni driver del dispositivo fare il proprio livello basso configurazione. Questo è stato difficile fino a quando Linux ha fornito il software nel kernel che i driver potevano utilizzare per renderlo più semplice. Oggi (2005) ha raggiunto il punto in cui il driver chiama semplicemente la funzione del kernel: pci_enable_device () e il dispositivo viene configurato essendo abilitato e avendo sia un IRQ (se necessario) sia gli indirizzi assegnati al dispositivo. Questo incarico potrebbe essere ciò che era stato precedentemente assegnato dal BIOS o ciò che il kernel aveva precedentemente riservato quando il dispositivo PCI o ISAPNP era stato rilevato dal kernel. C’è anche un’opzione ACPI per Linux per assegnare tutti i dispositivi IRQ al tempo di avvio.
Quindi oggi, in un certo senso, i driver stanno ancora facendo la configurazione, ma possono farlo solo dicendo a Linux di farlo (e Linux potrebbe non aver bisogno di fare molto poiché a volte è in grado di usare ciò che è già stato impostato dal BIOS o Linux). Quindi è davvero la parte non con driver del kernel Linux che sta facendo la maggior parte della configurazione. Pertanto, può essere corretto chiamare Linux un sistema operativo PNP, almeno per le architetture di computer comuni.
Quindi quando un driver di dispositivo trova il suo dispositivo, chiede di vedere quali indirizzi e IRQ sono stati assegnati (dal BIOS e/o Linux) e normalmente li accetta semplicemente. Ma se il conducente vuole farlo, può provare a modificare gli indirizzi, utilizzando le funzioni fornite dal kernel. Ma il kernel non accetterà indirizzi quel conflitto con altri dispositivi o quelli che l’hardware non può supportare. All’avvio del PC, è possibile notare i messaggi sullo schermo che mostrano che alcuni driver di dispositivi Linux hanno trovato i loro dispositivi hardware e quali sono gli intervalli IRQ e l’indirizzo.
Pertanto, il kernel fornisce ai driver funzioni (codice programma) che i driver possono utilizzare per scoprire se il loro dispositivo esiste, come è stato configurato e funzioni per modificare la configurazione se necessario. Kernel 2.2 potrebbe farlo solo per il bus PCI ma il kernel 2.4 aveva questa funzione per entrambi i bus ISA e PCI (a condizione che le opzioni PNP e PCI appropriate siano state selezionate durante la compilazione del kernel). Kernel 2.6 è uscito con un migliore utilizzo di ACPI. Ciò non garantisce affatto che tutti i conducenti utilizzeranno pienamente e correttamente queste funzionalità. E i dispositivi legacy che il BIOS non conosce, potrebbero non essere configurati fino a quando non si è presentato il suo indirizzo, IRQ, ecc. in un file di configurazione.
Inoltre, il kernel aiuta a evitare i conflitti delle risorse non permettendo a due dispositivi che sa di utilizzare le stesse risorse di autobus allo stesso tempo. Inizialmente questo era solo per IRQS e DMA, ma ora è anche per le risorse di indirizzo.
Se hai un vecchio bus ISA, il programma ISAPNP dovrebbe funzionare a Boottime per trovare e configurare i dispositivi PNP sul bus ISA. Guarda i messaggi con “dmesg”.
Per vedere cosa aiuto il kernel può fornire ai driver di dispositivo vedere la directory /usr /. /. /Documentazione in cui uno dei . contiene la parola “kernel-doc” o simili. ATTENZIONE: la documentazione qui tende ad essere obsoleta, quindi per ottenere le ultime informazioni è necessario leggere i messaggi sulle mailing list inviate dagli sviluppatori del kernel e possibilmente il codice del computer che scrivono. In questa directory di documentazione del kernel vedi PCI.txt (“Come scrivere driver PCI Linux”) e il file:/usr/include/Linux/PCI.H. A meno che tu non sia un guru del driver e conosci la programmazione C, questi file sono scritti in modo così tempestivo che in realtà non ti consentiranno di scrivere un driver. Ma ti darà un’idea di quali funzioni di tipo PNP sono disponibili per i conducenti da usare.
Per il kernel 2.4 Vedi ISAPNP.TXT. Per il kernel 2.6, ISAPNP.txt è sostituito da PNP.txt che è totalmente diverso da ISAPNP.txt e si occupa anche del bus PCI. Vedi anche il libro O’Reilly: Driver di dispositivo Linux, 3a edizione., 2005. Il testo completo è su Internet.
Ma ci sono una serie di cose che un vero sistema operativo PNP potrebbe gestire meglio:
- Assegnare risorse di autobus quando sono scarsi dalla riallocazione delle risorse, se necessario
- Affronta la scelta di un driver quando c’è più di un driver per un dispositivo fisico
Dal momento che è ogni guidatore per se stesso, un conducente potrebbe afferrare risorse di autobus necessarie da altri dispositivi (ma non ancora assegnati a loro dal kernel). Quindi un kernel Linux PNP più sofisticato sarebbe migliore, dove il kernel ha fatto l’allocazione dopo tutte le richieste. Un’altra alternativa sarebbe un tentativo di riallocare le risorse già assegnate se un dispositivo non potesse ottenere le risorse richieste.
Il problema della “carenza di risorse bus” sta diventando meno un problema per due motivi: uno dei motivi è che il bus PCI sta sostituendo il bus ISA. In PCI non c’è carenza di IRQS poiché gli IRQS possono essere condivisi (anche se la condivisione è un po ‘meno efficiente). Inoltre, PCI non utilizza risorse DMA (sebbene faccia l’equivalente di DMA senza bisogno di tali risorse).
Il secondo motivo è che è disponibile più spazio per l’indirizzo per il dispositivo I/0. Mentre lo spazio di indirizzo I/O convenzionale del bus ISA era limitato a 64 kb, il bus PCI ne ha 4 GB. Poiché più dispositivi fisici utilizzano gli indirizzi di memoria principale anziché lo spazio degli indirizzi IO, c’è ancora più spazio disponibile, anche sul bus ISA. Su PC a 32 bit ci sono 4 GB di spazio per indirizzi di memoria principale e gran parte di questo bus-risorse è disponibile per il dispositivo IO (a meno che tu non abbia 4 GB di memoria principale installata).
Informazioni generali sul supporto per i dispositivi plug & play
I dispositivi plug & play possono essere utilizzati immediatamente, senza alcuna necessità di installazione. Questi vengono rilevati e configurati automaticamente non appena sono collegati a un computer. I driver del dispositivo appropriati sono installati automaticamente. L’utente non è tenuto a effettuare input.
L’installazione automatica da parte del sistema operativo funziona solo a determinate condizioni, E.G. (Vedi di più su questo in Windows Help):
- Il driver del dispositivo ha o “Sviluppato per Windows” logo o una firma digitale.
- Il driver del dispositivo è già presente sul computer.
Se queste condizioni non sono soddisfatte, il sistema operativo lancia la procedura guidata hardware. Se l’utente non ha i diritti dell’amministratore locale, non può completare l’installazione con questa procedura guidata.
In queste situazioni, DSM ’Il supporto S per i dispositivi Plug & Play consente di installare i dispositivi senza l’utente che ha i diritti dell’amministratore locale.
- Wan Miniport Driver
- Adattatori di rete virtuali
Questo articolo è stato utile?
Forzare il dispositivo plug-n-play per utilizzare un determinato driver
Attrezzatura: Presonus Revelator Microfono L’obiettivo: Vorrei usare il mio microfono più lontano tramite un’estensione da USB-RJ45. Fondamentalmente inviare USB su un cavo Ethernet. Il problema: Quando il microfono è collegato direttamente nel laptop funziona bene. Ma quando lo inserisco sull’estensione non posso registrare nulla e il computer non registra affatto il dispositivo. Il microfono sta ricevendo potenza e il computer fa il rumore “connessione”, ma nulla oltre a ciò. Gestore dispositivi: Ho controllato il gestore dei dispositivi in entrambi gli scenari. Se collegato direttamente vedo “microfono (rivelatore)” in “ingressi audio e output”. Se collegato su RJ45 vedo solo “rivelatore” sotto “dispositivi sconosciuti” e il triangolo di avviso giallo che indica che nessun driver è stato caricato. Informazioni del driver: Ho usato il programma USBDEVIEW per raccogliere alcune informazioni approfondite sul dispositivo quando ho collegato utilizzando le diverse connessioni. Di seguito è riportato un confronto fianco a fianco.
Collegato direttamente | Collegato tramite RJ45 | |
---|---|---|
Nome del dispositivo | Rivelatore | Rivelatore |
Descrizione | Dispositivo composito USB | Rivelatore |
Tipo di dispositivo | Sconosciuto | Fornitore specifico |
Collegato | SÌ | SÌ |
Sicuro da scollegare | SÌ | NO |
Disabilitato | NO | NO |
Hub USB | NO | NO |
Numero di serie | JM1C20431589 | JM1C20431589 |
ID del venditore | 194f | 194f |
Codice prodotto | 0d01 | 0d01 |
Revisione del firmware | 1.02 | 1.02 |
Classe USB | 0 | ff |
Sottoclasse USB | 0 | 0 |
Protocollo USB | 0 | 0 |
Prefisso parentid | 6 e 1ea95f5f e 0 | 6 e 1ea95f5f e 0 |
Nome di Servizio | USBCCGP | |
Descrizione del servizio | @USB.Inf,%generico.SVCDESC%; Microsoft USB generico driver genitore | |
FileName del driver | USBCCGP.sys | |
Dispositivo mfg | (Controller host USB standard) | |
Energia | 200 Ma | 200 Ma |
Versione USB | 2 | 2 |
Descrizione del driver | Dispositivo composito USB | |
Versione del driver | 10.0.19041.1949 | |
Infasezione del conducente | Composito.Dev.Nt | |
Driver Infpath | USB.inf | |
ID istanza | USB \ VID_194F e PID_0D01 \ JM1C20431589 | USB \ VID_194F e PID_0D01 \ JM1C20431589 |
Capacità | “Rimovibile, unicoid, SorticeEMeMovalok” | “Rimovibile, unicoid” |
La differenza principale è che, se collegato direttamente, il microfono viene riconosciuto come dispositivo composito (USBDEVIEW mostra anche molti altri dispositivi USB che vengono caricati contemporaneamente). Se collegato su RJ45 non è riconosciuto come tale e nessun caricamento del driver. Altri dispositivi possono connettersi?: Ho provato il connettore RJ45 con un’unità USB e una diversa marca di microfono (audio-technica AT2020). In entrambi i casi hanno funzionato bene e hanno caricato gli stessi driver. Il microfono è particolarmente interessante in quanto è anche un dispositivo composito ma non ha problemi. Domanda: È possibile costringere il mio computer a utilizzare lo stesso driver in entrambi gli scenari? Ho fatto un po ‘di googling ma tutto ciò che riesco a trovare è roba relativa al download di driver dal sito Web dell’azienda (non ce ne sono che potrei trovare). Ho provato a selezionare manualmente i file SYS e INF tramite Device Manager, ma questo non sembra funzionare. Possibile, però, sto facendo questo passo.
Cos’è un driver di dispositivo? Definizione, tipi e applicazioni
Un driver di dispositivo è un programma senza un’interfaccia utente che gestisce l’hardware collegato a un computer e ne supporta il funzionamento.
Scrittore tecnico di Chiradeep Basumallick
12 ottobre 2022
Un driver di dispositivo è definito come un programma software senza un’interfaccia utente (UI) che gestisce componenti hardware o periferiche collegate a un computer e consente loro di funzionare con il computer senza intoppi. Questo articolo spiega il funzionamento dei driver di dispositivi, dei loro vari tipi e cinque applicazioni critiche.
Sommario
-
- Cos’è un driver di dispositivo?
- 9 tipi di driver di dispositivo
- Applicazioni dei driver di dispositivo
Cos’è un driver di dispositivo?
Un driver del dispositivo è un programma software senza un’interfaccia utente (UI) che gestisce componenti hardware o periferiche collegate a un computer e consente loro di funzionare con il computer senza intoppi.
Un driver del dispositivo è un software specializzato che gestisce un particolare dispositivo connesso al computer, l’offerta di un’interfaccia software all’hardware consente a sistemi operativi e altre applicazioni per computer di accedere alle funzionalità hardware.
L’hardware è collegato a un sottosistema Bus/Comunicazione del computer tramite il quale i driver del dispositivo interagiscono con il dispositivo. Sono dipendenti da hardware e specifici del sistema operativo (OS). Offrono l’elaborazione di interrupt essenziale per qualsiasi interfaccia hardware asincrona dipendente dal tempo.
Un driver del dispositivo’L’obiettivo principale è consentire ai computer e ai componenti hardware di rete di interfacciarsi e interagire con dispositivi specifici. Gestiscono le richieste effettuate dal kernel riguardanti un particolare tipo di dispositivo. I driver di dispositivo definiscono messaggi e meccanismi attraverso i quali il computer’Il sistema operativo e le applicazioni possono accedere al dispositivo o effettuare richieste per il dispositivo. Gestiscono anche le risposte e i messaggi del dispositivo per la consegna al computer.
Come funzionano i driver del dispositivo
I driver di dispositivo operano all’interno del livello del kernel del sistema operativo. Lavorano in un ambiente altamente privilegiato perché hanno bisogno di un accesso di basso livello alle operazioni hardware per funzionare. Abilitano il computer’S Sistema operativo (OS) per interfacciarsi con l’hardware per il quale sono stati sviluppati. E tramite un bus del computer che collega il dispositivo al computer, i driver e il dispositivo comunicano.
I driver del dispositivo devono ricevere consigli dal sistema operativo per accedere ed eseguire le istruzioni del dispositivo. Dopo aver completato il lavoro, trasmettono il dispositivo hardware’s output o messaggio al sistema operativo. Dispositivi come modem, router, altoparlanti, tastiere e stampanti richiedono che i driver di dispositivi.
Comprensione dello sviluppo del driver del dispositivo
I driver di dispositivo consentono di interagire i dispositivi periferici, come stampanti o tastiere. Il seguente delinea i passaggi che gli sviluppatori o i programmatori possono svolgere durante lo sviluppo di driver di dispositivi per sistemi operativi come Windows, Linux o MacOS.
1. Conoscere l’attrezzatura
Quando si progettano un driver di dispositivo, i programmatori devono avere una comprensione approfondita della piattaforma’hardware S. Dovrebbero conoscere l’interfaccia del bus che l’hardware utilizza per comunicare con l’host e la posizione del software del driver del dispositivo. Dovrebbero leggere il foglio dati del dispositivo per comprendere i termini e le definizioni pertinenti. Dovrebbero anche conoscere il metodo attraverso il quale avviene il trasferimento dei dati.
Se il dispositivo primario è un sistema sul chip, gli sviluppatori dovrebbero sapere come il driver interagisce con i suoi protocolli di firmware e di comando. Inoltre, gli sviluppatori dovrebbero essere preparati affinché la documentazione non sia all’altezza di un nuovo tipo di hardware. Pertanto, dovrebbero essere pronti a eseguire più test del solito.
2. Scrivi il codice del driver
In questo passaggio, gli sviluppatori dovrebbero ottenere un prototipo funzionante del loro hardware preferito. Quindi dovrebbero iniziare a scrivere il driver della modalità kernel.
Se un dispositivo è progettato in modo errato, i driver in esecuzione in modalità utente possono causare un arresto anomalo del sistema. Allo stesso modo, se qualcosa va storto quando i conducenti operano in impostazioni altamente privilegiate, possono verificarsi problemi operativi. Pertanto, gli sviluppatori dovrebbero trarre vantaggio dalle informazioni nella documentazione di sviluppo del driver disponibile per il sistema operativo selezionato, che si tratti di Windows o Linux.
Le prime funzioni del driver del dispositivo sviluppate sono le funzioni di carico e scarico. Quando il sistema operativo inizia e si interrompe, queste funzioni vengono chiamate. Una delle responsabilità principali delle funzioni di carico/scarico è rilevare se l’hardware è collegato al sistema o meno. Gli utenti possono rilevare l’hardware utilizzando l’ID dispositivo specificato dal bus specifico. Se l’hardware è collegato, la funzione di caricamento ha esito positivo. In caso contrario, chiama la funzione di scarico.
3. Inizializza l’hardware
Una volta che il dispositivo è in grado di rilevare l’hardware, il passaggio successivo è inizializzarlo. Il tipo di inizializzazione richiesto può differire a seconda del tipo di hardware. L’inizializzazione può variare dalla scrittura al registro del dispositivo al download di un microcodice sul dispositivo e alla comunicazione a lungo termine utilizzando protocolli di comando proprietari.
4. Controlla l’hardware
Il controllo dell’hardware è possibile solo se gli sviluppatori possono inizializzare e comunicare con l’hardware. Il processo di controllo dipende dal dispositivo. Gli sviluppatori dovrebbero valutare se il dispositivo trasmetterà semplicemente i dati da un dispositivo a un altro.
Ad esempio, quando si trasmettono musica da uno smartphone a un altoparlante. Dovrebbero anche valutare se il dispositivo invierà continuamente dati e istruzioni ad altri dispositivi. Ad esempio, dire a una stampante di stampare in bianco e nero su un lato di carta seguito da una stampa a doppia faccia a colore.
Il driver del dispositivo attiva le impostazioni di dati come la velocità di riproduzione e l’ingresso di caduta rapida attraverso il computer in comandi per il dispositivo. A differenza dei tre passaggi precedenti, questo potrebbe richiedere più tempo. I primi tre passaggi potrebbero essere un’operazione una tantum quando il sistema operativo si carica. Tuttavia, gli sviluppatori potrebbero dover eseguire il passaggio 4 più volte dopo l’impostazione e in esecuzione. Gli utenti a volte potrebbero unire il terzo e il 4 ° passaggio in un unico passaggio.
5. Inizia la comunicazione dei dati con l’hardware
Diversi dispositivi trattano una qualche forma di dati, che si tratti di audio o video. Una volta inizializzato il dispositivo, gli sviluppatori possono inviare un flusso costante di dati come richiesto. Il driver del dispositivo funge da tubo tra l’applicazione di livello superiore e l’hardware o il firmware di livello inferiore per il trasferimento dei dati.
Come notato nel primo passo, gli sviluppatori dovrebbero conoscere i protocolli progettati per la comunicazione dei dati. I trasferimenti di dati potrebbero essere guidati da interruzioni o volati. Il sistema operativo fornisce strutture come la messaggistica o le routine di servizio di interruzione utilizzate durante il processo di trasferimento dei dati. Gli sviluppatori dovrebbero iniziare trasferendo un singolo pacchetto di dati e garantendo che l’intero processo dai passaggi da 1 a 3 funzioni bene.
6. Controllare la comunicazione dei dati
In questo passaggio, gli sviluppatori devono controllare il trasferimento dei dati e gestire la comunicazione in diverse situazioni. Quando sorgono problemi, gli utenti dovrebbero impedire ai dispositivi periferici di inviare lo stesso messaggio di errore. In un flusso audio, quando c’è un overflow buffer o un problema significativo con la qualità del suono, dovrebbero inviare un comando di arresto.
7. Metti alla prova il conducente e debug
Il test è un aspetto cruciale. Gli sviluppatori dovrebbero testare il dispositivo per assicurarsi che sia riconosciuto e inizializzato. Dovrebbero anche eseguire test funzionali per garantire che i driver del dispositivo funzionino come previsto. Dovrebbero anche essere pronti a apportare modifiche all’hardware per garantire un funzionamento regolare. Inoltre, gli sviluppatori dovrebbero testare i driver del dispositivo su diverse versioni del sistema operativo per verificare che siano in avanti e compatibili all’indietro. Una volta che il driver del dispositivo funziona, gli sviluppatori possono registrarlo.
9 tipi di driver di dispositivo
Gli sviluppatori possono distinguere i seguenti tipi di driver di dispositivo:
1. Driver del dispositivo kernel
I driver del dispositivo kernel sono costituiti da un hardware generico caricato con il sistema operativo (OS) come parte del sistema operativo. Includono schede madri, processori e BIOS. Vengono invocati e caricati nella memoria ad accesso casuale (RAM) quando richiesto. Quando molti di loro operano contemporaneamente, la macchina può rallentare. Pertanto, esiste un requisito minimo per ciascun sistema operativo.
I driver del dispositivo kernel sono stratificati. I driver di livello superiore, come i driver di file system, ricevono dati dalle applicazioni, filtrali e li passano a un driver di livello inferiore, a supporto della funzionalità. I driver del dispositivo kernel sono implementati come componenti discreti e modulari che hanno un insieme ben definito di funzionalità richieste.
2. Driver del dispositivo in modalità utente
I driver del dispositivo in modalità utente eseguono in modalità utente. Si riferiscono ai driver del dispositivo che gli utenti possono attivare durante una sessione. Quando si utilizzano un sistema, gli utenti possono avere i propri dispositivi esterni che portano in uso, come dispositivi plug-and-play esterni. Questi dispositivi richiedono anche ai conducenti di funzionare. Nei sistemi Windows, i driver dei dispositivi in modalità utente forniscono un’interfaccia tra un’applicazione Win32 e driver in modalità kernel o altri sistemi operativi. Gli utenti possono scrivere questi driver sul disco per ridurre la tensione delle risorse del computer.
3. Driver di personaggi
I driver del dispositivo di caratteri forniscono accesso non strutturato all’hardware. Trasferiscono i dati da e verso i dispositivi senza utilizzare un indirizzo di dispositivo specifico. Consentono la lettura o la scrittura di un byte alla volta come un flusso di dati sequenziali. I driver di caratteri non gestiscono l’ingresso/output (I/O) attraverso la cache del buffer, quindi sono più flessibili nella gestione dell’I/O. Sono accoppiati con dispositivi a blocchi per aggirare la cache del buffer per offrire operazioni di I/O grezzo direttamente allo spazio dell’indirizzo del programma dell’utente.
Inoltre, forniscono interfacce aggiuntive come comandi di controllo I/O, polling del dispositivo e mappatura della memoria. Esempi sono modem e controller del bus.
4. Blocca i conducenti
I driver di blocco del dispositivo forniscono accesso strutturato all’hardware. Usano i buffer delle dimensioni di un blocco del file system da una cache buffer fornita dal kernel per eseguire I/O. Una cache del buffer è un pool di memoria istituito dal kernel per archiviare i blocchi frequentemente accessibili tramite dispositivi a blocchi. La cache del buffer riduce la quantità di query I/O che richiedono un’operazione I/O dal dispositivo.
Inoltre, i driver dei dispositivi a blocchi forniscono I/O orientati al blocco accessibile e dimostrano la durata dei dati. Prendono una richiesta di file system e emettono le procedure I/O sul disco per trasferire il blocco richiesto. Esempi sono tasti di memoria USB e unità disco.
5. Driver del produttore di attrezzature originali (OEM)
I driver del dispositivo possono essere classificati come generici o correlati all’OEM. I driver generici si riferiscono ai driver di dispositivo con il loro software operativo in bundle nell’hardware OEM. Si possono usare driver generici con marchi diversi di un particolare tipo di dispositivo. Ad esempio, Linux funziona con diversi driver generici che funzionano senza la necessità di installare manualmente qualsiasi altro software.
Gli OEM possono creare i loro driver di dispositivo proprietario, che devono essere installati separatamente dopo aver installato il sistema operativo. I driver OEM abilitano l’hardware come le tastiere di comunicare con il sistema operativo host. Ad esempio, i driver OEM consentono funzioni come l’integrazione del sistema di controllo dell’illuminazione con hardware OEM in Google Assistant e Alexa.
6. Driver di dispositivi virtuali
I driver di dispositivi virtuali sono essenziali nel controllo delle macchine virtuali o delle macchine virtuali . Operano sia in ambienti di virtualizzazione che non virtualizzazione. In ambienti di virtualizzazione, questi driver vengono utilizzati per emulare l’hardware del dispositivo host. Controllano o gestiscono l’hardware delle risorse del dispositivo host per garantire che sia l’ospite che il dispositivo host funzionano come previsto.
Ad esempio, quando un sistema operativo ospite lavora su un host, effettua chiamate ai driver di dispositivi virtuali per accedere all’hardware. Inoltre, imitano gli eventi a livello di processore come gli interrupt e li trasmettono alla macchina virtuale.
7. BIOS
Il sistema di output di input di base (BIOS) è il driver più fondamentale su un computer. Si trova in un chip di memoria di sola lettura (ROM), che garantisce che il BIOS sarà disponibile anche quando il disco rigido è formattato. È responsabile dell’avvio di un computer e di fornirgli una serie di istruzioni durante questo processo. Esegue anche auto-test di accensione (post) richiesti durante l’avvio. Il BIOS fornisce anche driver per l’hardware di base, come tastiere e monitor, per garantire che si interfacciano con il sistema operativo per funzionare come previsto.
8. Driver della scheda madre
I driver della scheda madre sono applicazioni semplici che sia Windows che Linux possono utilizzare. Esistono all’interno del sistema operativo e consentono operazioni di computer fondamentali. Questi driver comprendono applicazioni che consentono la tastiera e il mouse’SEDICI USB e porte I/O per lavorare. Alcune schede madri hanno driver che supportano video e audio.
I driver della scheda madre sono specifici per il modello di chipset, come B460 per Intel Computers. Per realizzare la scheda madre’S Componente potenziale e abilita i componenti connessi ad esso per funzionare correttamente, gli utenti potrebbero dover installare driver aggiuntivi.
9. Driver open-source
I conducenti open source si riferiscono ai conducenti rilasciati con licenza gratuita e open source. Ad esempio, i driver grafici open source controllano l’output sul display se il display fa parte dell’hardware grafico. Il codice sorgente per i driver open source è disponibile per tutti, rendendo più facili le collaborazioni del software. Sono più affidabili in quanto le persone possono controllarli per qualsiasi codice dannoso.
I conducenti open source offrono più privacy. Se monitorano gli utenti, le persone possono ridistribuire una copia del software con il monitoraggio rimosso. I conducenti open source durano più a lungo quando più persone continuano a apportare miglioramenti, garantendo così che anche quando la società smette di distribuirli, rimane una copia.
Applicazioni dei driver di dispositivo
Questi elementi essenziali del calcolo personale e aziendale sono utilizzati nei seguenti modi:
1. Driver di dispositivo per l’accesso ai sistemi di archiviazione
I sistemi di archiviazione del computer consentono agli utenti di archiviare i dati e renderli disponibili su richiesta. Includono dispositivi esterni e interni come unità flash USB, dischi rigidi e archiviazione collegata alla rete. I driver nei sistemi di archiviazione consentono loro di interagire con il computer. Ciò garantisce che il computer possa accedere ai suoi sistemi di archiviazione interni o esterni, interrogare le loro informazioni e consentire il trasferimento dei dati.
Collegare i dispositivi di archiviazione al computer senza driver diventa difficile poiché il sistema operativo non li rileva. Di solito, i dischi rigidi e i CD-ROM sono riconosciuti dal sistema operativo e non richiedono l’installazione di driver manualmente. Gli utenti devono installare i driver dal produttore’S Web Web se non vengono rilevati automaticamente.
2. Driver di dispositivo per dispositivi di input e output
Il computer’S OS interagisce con i driver del dispositivo per garantire che le sue funzioni hardware previsto. I dispositivi di input includono topi e tastiere, mentre i dispositivi di output includono dispositivi di visualizzazione come i monitor. Tastiere, topi e monitor sono classificati come dispositivi plug-and-play.
Di solito, i driver per i dispositivi plug-and-play sono generici e non richiedono l’installazione manuale, poiché il computer’S OS li riconosce e li installa automaticamente. Tuttavia, se un dispositivo esterno non è un dispositivo plug-and-play, potrebbe essere necessario installare manualmente i driver dal disco di installazione o scaricarli. Ciò consentirà al sistema operativo di riconoscere questi dispositivi.
3. Driver di dispositivo per fotocamere digitali
Un driver della fotocamera digitale è un programma che consente la comunicazione tra IT e altri dispositivi, come i computer. Senza i driver, il sistema operativo non rileverà questo dispositivo. La maggior parte delle fotocamere digitali sono compatibili solo con il sistema operativo Windows, con il ritardo dei sistemi Linux.
I driver della fotocamera digitale consentono il trasferimento di foto dalla fotocamera al computer. Consentono alle telecamere digitali di stampare foto utilizzando lo standard PictBridge direttamente a una stampante per computer con capacità di Pictbridge senza bisogno di un computer. I driver nella porta di output video consentono agli utenti di visualizzare le immagini in televisione selezionando un video o una foto alla volta.
4. Driver per sistemi operativi mobili come Android
I telefoni cellulari hanno driver per consentire loro di comunicare con i computer. I driver vengono in bundle con il firmware sulla maggior parte dei telefoni, il che consente ai computer di caricarli per supportare l’hardware poiché il sistema operativo non è specificato. Tuttavia, a volte gli utenti potrebbero dover installare prima il software OEM per l’installazione dei driver e consentire il trasferimento dei dati.
I conducenti consentono l’integrazione di dispositivi periferici come controller di gioco o tastiere in base a sistemi operativi come Android Things e Android. I driver consentono l’accesso e il controllo dell’hardware. Inoltre, consentono ai dispositivi intelligenti di lavorare con applicazioni personalizzate.
5. Driver di dispositivo per prestazioni video superiori
Le schede grafiche sono componenti principali di un sistema informatico e sono responsabili delle prestazioni video superiori in computer, giochi o altre attività ad alta intensità di grafica. I driver grafici consentono alle schede grafiche di interagire con il computer’s sistema operativo e sono quindi essenziali per ottenere le migliori prestazioni dalle schede grafiche.
L’aggiornamento dei driver grafici e di altri driver di Windows 11 (o più vecchi) può dare agli utenti un aumento della velocità, risolvere i problemi e talvolta anche fornire agli utenti nuove funzionalità. Ad esempio, l’aggiornamento dei driver di gioco può aumentare i fotogrammi al secondo, riducendo il ritardo.
Porta via
Poiché i consumatori e le imprese utilizzano sempre più dispositivi e periferiche, i driver di dispositivi sono essenziali per l’infrastruttura IT . La moderna tecnologia del driver può migliorare il funzionamento del computer riducendo il consumo di risorse e aumentando la velocità. Ecco perché è necessario sapere come funzionano i driver e avere un normale programma di patch e aggiorna in modo che l’intero ecosistema del dispositivo funzioni senza intoppi.
Hai trovato questo articolo utile quando hai saputo sui driver di dispositivo? Raccontaci Facebook Apre una nuova finestra , Twitter Apre una nuova finestra , E LinkedIn Apre una nuova finestra . Noi’D ti adoro sentirti!
Altro su DevOps
- Top 10 certificazioni Azure DevOps nel 2022
- Cos’è Devops Lifecycle? Definizione, componenti chiave e migliori pratiche di gestione
- Top 10 certificazioni scrum master nel 2022
- Top 18 domande di intervista azure DevOps nel 2022
- Le prime 10 certificazioni e corsi DevOps nel 2022