Emulatori usb virtuali per computer. V-USB è un'implementazione software di USB per AVR. Libusb: né vestito né nudo

Lo sviluppo di vari dispositivi basati su microcontrollori è un'occupazione degna di un vero fanatico del computer. Indubbiamente, una caratteristica utile di qualsiasi gadget sarà un'interfaccia USB per la connessione a un computer. Ma cosa succede se il chip AVR non ha il supporto hardware USB?

V-USB: le dimensioni contano

Quando sviluppi il tuo gadget, spesso affronti il ​​problema di collegarlo a un computer. Devo dire che le porte LPT e COM sono ormai esotiche sulle schede madri dei PC, per non parlare dei laptop, per i quali queste interfacce sono scomparse molto tempo fa. Pertanto, i computer moderni non hanno praticamente alternative all'interfaccia USB.

Se le risorse del chip vengono utilizzate al cento per cento, è meglio guardare immediatamente ai dispositivi con supporto hardware per il bus seriale universale (tali microcontrollori sono presenti nella linea di qualsiasi produttore). In altri casi, puoi utilizzare un software USB.

Per i microcontrollori Atmel, esiste un meraviglioso progetto V-USB che offre un'implementazione software del dispositivo USB 1.1 a bassa velocità. Il codice V-USB funzionerà su qualsiasi dispositivo AVR che abbia almeno 2KB Flash e 128 Byte di RAM, con clock a 12; 12.8; 15; 16; 16,8 o 20 MHz.

L'utilizzo del prodotto è possibile sia sotto licenza open source GPL, sia su base commerciale. Per sviluppare i tuoi dispositivi USB, di solito devi anche acquistare qualcosa come una licenza. Ma i ragazzi di V-USB si sono occupati anche di questo, avendo acquisito una coppia di Vendor ID - Product ID e permettendo a chiunque di utilizzarli.

La connessione hardware per il collegamento del bus USB al microcontrollore è molto semplice. Se il dispositivo non consuma troppo, può essere alimentato direttamente dal bus (si ritiene che la linea di alimentazione USB del computer sia in grado di erogare corrente fino a 500 mA). Poiché le linee dati (D + e D–) utilizzano un livello di segnale di 3,6 V, a parte i resistori di limitazione della corrente, sono necessari diodi Zener per abbinare la logica a 5 V sul chip. Per indicare il tipo di connessione, è necessario "tirare su" la tensione di alimentazione attraverso una resistenza di 1,5 kOhm alla linea D–.

Un'opzione alternativa per l'accoppiamento tramite USB consiste nel ridurre la tensione di alimentazione del controller tramite un apposito microcircuito di stabilizzazione o solo una coppia di diodi. L'ultimo schema può essere trovato sul sito web del progetto V-USB.

USBpiccolo programmatore

Ci sono molti diversi programmatori disponibili per i microcontrollori AVR. USBtiny è menzionato qui, in parte, perché contiene un'implementazione software di USB, simile a V-USB. Il circuito di questo programmatore è semplice: la versione 2 contiene due microcircuiti e la prima versione ne contiene solo uno (il chip ATtiny2313 stesso). Grazie alla descrizione dettagliata sul sito Web e ai semplici accessori, il dispositivo è facile da realizzare anche per un principiante. USBtiny è compatibile con il popolare programma avrdude utilizzato per la programmazione dei microcontrollori AVR.

L'unico problema è caricare il firmware nel chip del programmatore: per questo è necessario ... un programmatore. Se hai un computer con una porta LPT, puoi creare una delle opzioni FBPRG alias "cinque fili", che è

Preparare la slitta

Gli strumenti software necessari per implementare il firmware del gadget USB più semplice sono estremamente ascetici: il compilatore gcc-avr, la libreria avr-libc, il programmatore avrdude e il set di binutils per AVR. Su Debian / Ubuntu, tutto ciò di cui hai bisogno viene installato con un comando:

$ sudo apt-get install avrdude binutils-avr gcc-avr avr-libc

Nelle vaste distese di Internet, è facile trovare molto manuale dettagliato tramite V-USB e libusb (in inglese). Secondo il manuale, per aggiungere il supporto USB al progetto, è necessaria la cartella usbdrv dall'archivio con ultima versione V-USB. Alla radice di questa cartella c'è il modello di configurazione usbconfig-prototype.h. Devi fare una copia di questo file e chiamarlo usbconfig.h. Successivamente: correggi usbconfig.h, indicando la porta (D), le cui linee verranno utilizzate per I / O, direttamente i numeri di linea D + (2) e D– (3), nonché la frequenza (12 MHz ) su cui opera il chip (ATtiny2313 ):

#define USB_CFG_IOPORTNAME D #define USB_CFG_DMINUS_BIT 3 #define USB_CFG_DPLUS_BIT 2 #define USB_CFG_CLOCK_KHZ 12000

Non è necessario modificare il produttore e gli ID numerici del dispositivo per utilizzare la licenza del dispositivo V-USB. Ma i nomi simbolici possono essere scelti a proprio piacimento (distinguono più dispositivi V-USB collegati allo stesso computer):

#define USB_CFG_VENDOR_ID 0xc0, 0x16 #define USB_CFG_DEVICE_ID 0xdc, 0x05 #define USB_CFG_VENDOR_NAME "n", "e", "t", "s", "4", "g", "e", "e", "" , "s", ".", "c", "o", "m" #define USB_CFG_VENDOR_NAME_LEN 14 #define USB_CFG_DEVICE_NAME "U", "S", "B", "e", "x", "a" , "m", "p", "l", "e" #define USB_CFG_DEVICE_NAME_LEN 10

Gadget vari

Hai un'idea per un dispositivo? Non affrettarti a saldare e codificare, ma guarda, forse qualcuno del genere l'ha già fatto. Se non puoi utilizzare schemi e fonti già pronti, almeno non dovrai ricominciare da capo.

Ad esempio, il progetto V-USB, grazie alla sua politica di licenza, ha accumulato una discreta base di soluzioni già pronte (compresa la distribuzione gratuita). Qui puoi trovare varie implementazioni di tastiere, adattatori USB per joystick, gamepad (compresi quelli rari, ad esempio SNES/NES, Nintendo 64, joystick ZX Spectrum, Sony PlayStation 1/2) e simili. Adattatori DMX, porte COM e UART virtuali, interfacce wireless i2c, Servo, DCF77, IR: tutto ciò che ti aiuterà a connettere più nuovi dispositivi al tuo PC. In azienda possono essere utili anche logger, piattaforme per sensori e sensori, adattatori per display LCD, programmatori e caricatori.

Il programma per il chip è elementare!

Quando si comunica tramite il bus USB, il computer è il dispositivo master che invia periodicamente messaggi di richiesta di controllo. Il controllore, rispettivamente, è uno slave e deve rispondere alle richieste. Il formato del messaggio di controllo è determinato dalla struttura usbRequest_t del file usbdrv.h:

Typedef struct usbRequest (uchar bmRequestType; uchar bRequest; usbWord_t wValue; usbWord_t wIndex; usbWord_t wLength;) usbRequest_t;

Creiamo un file main.c allo stesso livello della cartella usbdrv e descriviamo i file di intestazione, le definizioni e le variabili necessari al suo interno:

#includere #includere #includere #include "usbdrv.h" #define F_CPU 12000000L // Frequenza MK #include #define DATA_OUT 1 // Invia comando #define DATA_IN 2 // Ricevi comando // Buffer statico uchar replyBuf = "Hello World!"; static uchar dataLength = 0, dataReceived = 0;

In main.c, sovrascrivi la funzione usbFunctionSetup, che viene chiamata automaticamente quando viene ricevuta una nuova richiesta:

USB_PUBLIC uchar usbFunctionSetup (uchar data) (usbRequest_t * rq = (void *) data; switch (rq-> bRequest) (case DATA_OUT: // Elabora il comando di invio dati usbMsgPtr = replyBuf; // Specifica la dimensione di ritorno del buffer (replyBuf); / / Restituisce la dimensione del buffer case DATA_IN: // Elaborazione del comando per ricevere i dati dataLength = (uchar) rq-> wLength.word; // Ottiene la lunghezza di dataReceived = 0; // Ci saranno molte chiamate a usbFunctionWrite se (dataLength> sizeof (replyBuf)) // Controllo dell'overflow dataLength = sizeof (replyBuf); return USB_NO_MSG; // Return 255) return 0;)

Come puoi vedere dall'elenco, il modo più semplice per inviare dati al computer è impostare usbFunctionSetup sul valore del puntatore usbMsgPtr al buffer RAM (replyBuf) in cui si trovano i dati, quindi restituirne la lunghezza. La dimensione del buffer non deve superare i 254 byte. Per l'ATtiny2313 con i suoi 128 byte di RAM, questo è sufficiente. Per dispositivi più funzionali, esiste un secondo modo: sovrascrivere la funzione usbFunctionRead.

Per ottenere i dati, innanzitutto, è necessario estrarre la lunghezza del messaggio dal campo wLength della richiesta nella funzione usbFunctionSetup e memorizzarla nella variabile globale dataLength. In secondo luogo, in main.c, è necessario sovrascrivere la funzione usbFunctionWrite, progettata per elaborare i dati ricevuti e chiamata automaticamente (e ovviamente più volte) se usbFunctionSetup restituisce USB_NO_MSG (255):

USB_PUBLIC uchar usbFunctionWrite (uchar * data, uchar len) (uchar i; // Salva il blocco di dati ricevuto nel buffer per (i = 0; dataReceived< dataLength && i < len; i++, dataReceived++) replyBuf = data[i]; return (dataReceived == dataLength); }

In realtà, la funzione usbFunctionWrite riempie il buffer replyBuf con i dati ricevuti.

A proposito, affinché questo metodo funzioni, è necessario apportare modifiche a usbconfig.h:

#define USB_CFG_IMPLEMENT_FN_WRITE 1

Bene, l'ultima funzione del firmware è principale:

Int main() (usbInit (); // Inizializza USB usbDeviceConnect (); // Connetti dispositivo sei (); // Consenti interruzioni // Attendi i messaggi di controllo in un ciclo infinito while (1) usbPoll (); return 0; )

Utilizzo di USART / UART

Una buona alternativa all'USB software / hardware è l'uso della popolare interfaccia USART / UART nel chip con un convertitore di terze parti di questo protocollo su USB, che può essere fatto, ad esempio, sulla base del chip FT232RL.

Libusb: né vestito né nudo

Ti chiedi: devi scrivere un driver per il sistema operativo del computer per connettere un dispositivo USB? Se usi libusb, puoi fare a meno di implementare un modulo del kernel completo. Libusb è una libreria open source che consente di programmare rapidamente, in primo luogo, trovando un dispositivo sul bus e, in secondo luogo, scambiando dati con esso.

Per Linux, la libreria e i file di intestazione necessari possono essere ottenuti dai codici sorgente. Meglio usare il repository standard della tua distribuzione. Per Debian/Ubuntu, ad esempio, in questo modo:

$ sudo apt-get install libusb-dev

C'è anche una porta libusb per Windows - libusb-win32. Contrariamente al nome del progetto, sono supportati anche i sistemi operativi a 64 bit di Microsoft (a partire dalla versione 1.2.0.0).

Ma libusb è un argomento di conversazione separato. Penso che tu abbia familiarità con la programmazione del PC e puoi capirlo da solo. Pertanto, sarò breve. Crea un file usbtest.c e inizia a riempirlo di contenuto. Innanzitutto, i file di intestazione e le definizioni richiesti:

#includere [...] // Per un computer, il significato dei comandi è invertito, // ma le designazioni rimangono le stesse #define DATA_OUT 1 #define DATA_IN 2

Funzione UsbOpenDevice per inizializzare il dispositivo:

Usb_init (); // Inizializza USB usb_find_busses (); // Trova i bus usb_find_devices (); // Trova dispositivi // Passa attraverso tutti i bus per (bus = usb_get_busses (); bus; bus = bus-> next) (// Passa attraverso tutti i dispositivi sul bus per (dev = bus-> dispositivi; dev; dev = dev-> next) (// Se gli ID del fornitore e del prodotto non corrispondono ... if (dev-> descriptor.idVendor! = vendor || dev-> descriptor.idProduct! = product) continue; // ... skip questa iterazione // Prova a ottenere il descrittore del dispositivo if (! (Handle = usb_open (dev))) (fprintf (stderr, "% s \ n", usb_strerror ()); continue;) return handle; // Restituisce il descrittore )) // Il dispositivo non è stato trovato return NULL;

Come puoi vedere, i parametri di usbOpenDevice sono gli identificatori numerici del produttore e del dispositivo. Se il dispositivo è presente sul bus, viene restituito il suo descrittore. Se sono presenti più dispositivi sulla V-USB, sarà necessario aggiungere un segno di spunta per i nomi simbolici del fornitore e del prodotto.

E la funzione principale dell'utility console usbtest:

Int main (int argc, char ** argv) (// Device handle usb_dev_handle * handle = NULL; int nBytes = 0; char buffer; // Cercando device handle = usbOpenDevice (0x16C0, 0x05DC); if (handle == NULL ) (fprintf (stderr, "Impossibile trovare il dispositivo USB! \ n"); exit (1);) // Out argomento - ottiene i dati dal chip if (strcmp (argv, "out") == 0) (nBytes = usb_control_msg (handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, DATA_OUT, 0, 0, (char *) buffer, sizeof (buffer), 5000); printf ("Got% d bytes:% s \ n", nBytes, buffer); // In argomento - invia stringa (argomento successivo)) else if (strcmp (argv, "in") == 0 && argc> 2) (nBytes = usb_control_msg (handle, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_OUT, DATA_INg, 0, 0, argc strlen (argv) +1, 5000);) if (nBytes< 0) fprintf(stderr, "%s\n", usb_strerror()); usb_close(handle); // Закрыть дескриптор return 0; }

Qui la funzione usb_control_msg, che è dichiarata nel file include usb.h, governa la palla. Ha un sacco di parametri e crea effettivamente quei messaggi di controllo, la cui elaborazione è implementata nel firmware del microcontrollore.

Proteo che riposa

Il popolare simulatore di cablaggio Proteus ISIS è inutile quando si progettano dispositivi con implementazione software di USB. Il suo emulatore USB supporta solo chip con supporto hardware per Universal Serial Bus (come AT90USB646 o AT90USB1286).

Assemblaggio, lampeggio, test

Di seguito è riportato un Makefile piccolo ma molto utile, con l'aiuto del quale il comando make da main.c e usbtest.c può facilmente ottenere il firmware per il chip - main.hex e il binario dell'utilità usbtest:

CC = avr-gcc OBJCOPY = avr-objcopy CFLAGS = -Wall -Os -Iusbdrv -mmcu = attiny2313 OBJFLAGS = -j .text -j .data -O ihex OBJECTS = usbdrv / usbdrv.o usbdrv / oddrvvug. .o main.o CMDLINE = usbtest # Scopo: costruire tutto all: main.hex $ (CMDLINE) # Utilità di compilazione per computer $ (CMDLINE): usbtest.c gcc -I ./libusb/include -L ./libusb/ lib / gcc -O -Wall usbtest.c -o usbtest -lusb # Pulisce il progetto dal binario clean: $ (RM) * .o * .hex * .elf usbdrv / *. o # Recupera il file del firmware dall'elfo file%.hex:% .elf $ (OBJCOPY) $ (OBJFLAGS) $< [e-mail protetta]# Creazione del file elf main.elf: $ (OBJECTS) $ (CC) $ (CFLAGS) $ (OBJECTS) -o [e-mail protetta]# Crea file di libreria V-USB $ (OBJECTS): usbdrv / usbconfig.h # C nel codice oggetto% .o:% .c $ (CC) $ (CFLAGS) -c $< -o [e-mail protetta]# asm al codice oggetto% .o:% .S $ (CC) $ (CFLAGS) -x assembler-with-cpp -c $< -o [e-mail protetta]

Per caricare il firmware nel microcontrollore utilizzando il programmatore usbtiny, digitiamo il comando:

$ sudo avrdude -p t2313 -c usbtiny -e -U flash: w: main.hex: i -U lfuse: w: 0xef: m

In avrdude, i fusibili non sono molto chiari, ma possono essere facilmente calcolati in uno dei calcolatori online.


Colleghiamo il dispositivo al computer e controlliamo come funziona (usbtest con il parametro out legge la stringa, in - scrive la stringa specificata nel buffer del chip):

$ sudo ./usbtest in all_ok $ sudo ./usbtest out

Un cucchiaio di catrame

Soft USB non è una panacea. Le implementazioni software di solito hanno una serie di semplificazioni, come l'assenza di checksum e controlli di simmetria del canale, che influiscono negativamente sull'immunità al rumore. Inoltre, di solito le librerie software utilizzano modalità USB a bassa velocità. E il codice della libreria USB "mangia" la già piccola memoria del chip.

sbirciando...

A livello logico, il protocollo USB è essenzialmente un trasferimento di dati a pacchetti multistrato. È facile verificarlo (e allo stesso tempo imparare molte cose interessanti sull'USB) utilizzando l'analizzatore di protocollo di rete Wireshark. Devi prima scaricare il driver del monitor USB:

$ sudo modprobe usbmon

Ora puoi selezionare i bus USB nell'elenco delle interfacce Wireshark. È possibile vedere il numero del bus del dispositivo, ad esempio, nei registri.

Conclusione

Si spera che, dopo aver imparato a trasferire dati tra un computer e un microcontrollore AVR, la tua passione per l'elettronica si riaccenda con rinnovato vigore, dando vita a molti dispositivi originali e utili. Non resta che augurarvi successo in questo campo difficile ma interessante.

11

Ho un'applicazione Linux per la quale vorrei automatizzare alcuni test e il suo stato dovrebbe cambiare a seconda dello stato di determinati dispositivi, ad esempio dispositivi USB, dispositivi WLAN, dispositivi WAN. Tuttavia, non abbiamo più dispositivi USB fisici, dispositivi WLAN, WAN, ecc., quindi devo trovare un modo per testare questo programma senza effettivamente collegare dispositivi fisici, accenderli / spegnerli, ecc.

Inizio semplicemente creando un dispositivo USB virtuale che posso controllare dallo spazio utente, ma c'è una fondamentale mancanza di conoscenza da parte mia che mi impedisce di adottare uno qualsiasi degli argomenti simili in questi forum e applicarli al mio progetto. Sento di dover creare una sorta di driver USB virtuale e quindi collegarlo a un qualche tipo di programma a livello utente, non usbfs. Tuttavia, anche se creo questo driver virtuale, come posso "collegare" questo dispositivo dallo spazio utente e registrare il mio programma con quel particolare driver? È possibile quello che sto cercando di fare?

  • 2 risposte
  • Ordinamento:

    Attività

0

Non puoi testare l'applicazione in un ambiente virtuale usando VMWare? Puoi quindi "connettere" qualsiasi dispositivo virtuale sul tuo computer alla macchina virtuale guest e testare l'applicazione in questo modo.

8

Il modo migliore è utilizzare i driver dei gadget Linux e l'hardware che ti permetta di essere un dispositivo USB. Il driver del gadget consente al computer di "fingere" di essere un qualsiasi dispositivo. Quindi il tuo sistema in prova ha un cavo USB OTG per il gadget. Non hai nemmeno bisogno di scollegare il cavo se il tuo gadget ha l'hardware giusto. Il Gadget Box può essere il tuo desktop/laptop Linux (se supporta USB OTG) o anche un telefono Android o un Raspberry Pi. (Attenzione che i cavi USB stanno risucchiando. Solo perché la corda si adatta non significa che sia collegata correttamente all'USB OTG.).

Una volta che hai l'hardware USB OTG giusto, il gadget racchiude tutto il software:

1) Se il dispositivo in prova supporta OTG, assicurati che il tuo gadget non stia provando e non sia un host USB. (Quindi il tuo dispositivo in prova diventerà un client USB.) Ad es. assicurati che cose come usb_storage non vengano caricate automaticamente.

2) Il kernel supporta gadget per hub USB, USB-Ethernet, porte seriali USB e chiavette USB. Basta caricare i moduli che desideri nel tuo gadget e "funziona". Ad esempio, per creare una chiavetta USB, fai qualcosa del genere: "insmod g_file_storage.ko file = / dev / ram0". Il lato opposto penserà che tu abbia collegato una chiavetta USB.

Per i dispositivi seriali, il gadget può essere eseguito nel codice dello spazio utente che preleva il telefono su / dev / USBx e parla con il dispositivo in prova. (Apparentemente un modem 4G emulatore o altro.)

Tonnellate di dispositivi sono veramente "USB-seriale" sotto il cofano perché il produttore era troppo pigro per capire l'USB.

3) Con un po' di ricompilazione o modifica, puoi utilizzare questi dispositivi generici per il gadget, l'ID o restituire stringhe di fornitori diversi, ecc. Questo non sarà lo stesso di "test su hardware reale", ma almeno tu testare la versione standard di questi dispositivi.

4) Per i tipi di dispositivi che non sono ancora nel core (come Wi-Fi o altro), sei da solo. Con abbastanza sudore e lacrime di sangue, puoi scrivere il tuo tipo di gadget. (Idealmente, usa quanto più spazio utente possibile e gestisci solo i componenti critici nel kernel.)

Il progetto Olof Lagerkvist è un ottimo programma per emulare i dischi, ma poiché i dischi possono emulare tutti, ma non tutti possono vantarsi di creare un'unità flash USB o un floppy disk. I dischi vengono creati nella memoria virtuale, fisicamente possono essere scaricati in immagini di file. Dopo l'installazione, il programma è disponibile dal pannello di controllo del PC.

Fare clic su "OK" tutta l'immagine virtuale è pronta.

Immagine
L'immagine può essere salvata e montata secondo necessità. Dove torna utile? Ad esempio, per i più pigri, è possibile caricare i certificati per CryptoPro su un'unità flash virtuale di questo tipo.)) Oppure utilizzarlo come disco nella RAM per archiviare la cache, il file di paging e altre cose.
C'è anche una GUI alternativa -

Connessione automatica:
eco spento
rem da caricare automaticamente per il montaggio automatico
c: \ WINDOWS \ system32 \ imdisk.exe -a -f "% PROGRAMFILES% \ flash.img" -m f: -o rem

Alcune opzioni della riga di comando:

imdisk.exe -e -s 300M -m B: - aumenta il disco B di 300 MB

imdisk -a -t file -o ro -m y: -f C: \ Boot.img- monta l'immagine Boot.img con l'unità Y, in sola lettura

imdisk -a -t file -m y: -f C: \ Boot.img- montare l'immagine Boot.img con l'unità Y, solo lettura/scrittura

imdisk -d -m y: - smonta l'unità Y

imdisk -a -s 150M -m #: -p "/ fs: ntfs / y / q / v: imdisk- creare un disco con una dimensione di 150 MB, la prima lettera del disco è libera, formattazione in NTFS, etichetta disco imdisk

imdisk -a -s 10% -m #: -p "/ fs: ntfs / y / q / v: imdisk- uguale al precedente, solo la dimensione è indicata come 10 percento di memoria libera.

imdisk -a -s -500M -m #: -p "/ fs: ntfs / y / q / v: imdisk- uguale al precedente, solo la dimensione è indicata con un segno meno, cioè uguale alla quantità di memoria libera meno la dimensione specificata. Con 1200 MB di memoria libera, la dimensione del disco diventerà 1200-500 = 700 MB

imdisk.exe -a -t proxy -o ip -f 127.0.0.1:80 -m Z:- l'utilizzo con un server, trovato su internet, infatti non ha verificato.

A - Connessione Wirt. disco.

D - disabilita virtuale. disco.

E - editing virtuale. disco.

_________________________

B - indica l'offset, cioè l'inizio dei dati sul disco, è indicato per i dischi creati in programmi diversi, nelle immagini di cui è necessario saltare gli attributi iniziali nel file.

S è la dimensione del disco virtuale. La dimensione è il numero di byte se non viene aggiunto alcun suffisso a (auto), b (blocchi da 512 byte), k (mille byte), m (milioni di byte), g (miliardi di byte), t (trilioni di byte), K (kilobyte), M (megabyte), G (gigabyte) o T (terabyte). Mille byte e kilobyte differiscono per il fatto che ci sono 1024 byte in un kilobyte, non 1000. Ad esempio. -s 150 M o -s 10% - 10% della memoria libera. Il parametro -500M - con un segno meno definisce la dimensione del disco creato come la quantità di memoria libera meno la dimensione specificata.

O - imposta opzioni, si applica in combinazione con le opzioni seguenti

ro - sola lettura

rw - leggi / scrivi

rem - installa come disco rimovibile (unità flash). Ciò determina le proprietà del disco, la memorizzazione nella cache e altro.

fix - impostato come un disco fisso fisso (al contrario di rem)

cd - crea un CD-ROM/DVD-ROM virtuale.

fd - crea un floppy disk. L'impostazione predefinita per le dimensioni 160K, 180K, 320K, 360K, 640K, 720K, 820K, 1200K, 1440K, 1680K, 1722K, 2880K, 123264K o 234752K.

hd - crea una partizione rigida.

ip - parametro per la connessione a un server proxy.

comm - si connette a un server di memoria tramite una porta COM.

________________

M - Definisce la lettera dell'unità. Ad esempio -m B: o -m y: o -m #: è la prima lettera di unità libera.

F - nome file virtuale. unità, ad esempio -f C: \ Boot.img o -f \\ server \ share \ image.bin o -F \ Dispositivo \ Harddisk0 \ Partition1 \ image.bin- l'ultimo, quando la lettera dell'unità non è assegnata e la determinazione dal numero dell'hard, il numero della partizione (disco logico) e quindi il percorso reale.

A volte ci sono situazioni in cui devi lavorare con utilità (contabilità, social, che richiedono la presenza obbligatoria di un supporto esterno nel computer). Oppure hai solo bisogno di installare una nuova versione del sistema operativo. Ma cosa succede se non ci sono unità flash o CD gratuiti. C'è un'uscita! Hai bisogno di un programma speciale che funzioni come un'unità flash virtuale.

OSFmount: un'ancora di salvezza per coloro che non hanno supporti rimovibili a portata di mano

OSFmount è un piccolo programma che ti aiuterà a creare un'unità. Questa applicazione può creare sia un'immagine (immagine) già pronta dell'unità, sia la RAM, che esiste solo nella RAM. Un disco rigido floppy, un disco ottico artificiale e, soprattutto, un'unità flash virtuale: il programma può montare tutte queste immagini. L'unità flash virtuale di Windows 10, Windows 8, Windows 7 può essere creata su qualsiasi sistema operativo Windows, sia in ambiente a 64 bit che in ambiente a 32 bit. In mount, puoi anche definire una lettera specifica per il disco artificiale e impostare gli attributi desiderati. Allo stesso tempo, la dimensione dell'utilità non raggiunge nemmeno i 2 megabyte, la sua dimensione è di soli 1,95 megabyte. L'unico inconveniente è che il programma non supporta la lingua russa.

OSFmount manuale di istruzioni

È facile da usare e non richiede molto tempo e fatica per creare un'unità flash. Quindi, come creare un'unità USB virtuale su un computer utilizzando OSFmount:


Inoltre, nel lavoro potresti aver bisogno di alcune opzioni che si aprono dopo aver fatto clic su "Drive Actions". Questa opzione ha quanto segue:

  • Smonta - per smontare;
  • Format- con questa opzione puoi fare la formattazione;
  • Savetoimagefile - per salvare nel formato richiesto;
  • Aperto - per aprire;
  • Imposta supporto di sola lettura - vieta la registrazione;
  • Estendi - serve per l'espansione;
  • Imposta supporto scrivibile: abilita la scrittura.

In questo modo puoi rendere molto semplice il flash USB virtuale sul tuo computer. Puoi scegliere qualsiasi immagine per il flash virtuale. Ma nel caso di un'immagine avviabile, l'unità dovrà essere formattata e si aprirà solo in questa applicazione.

Una versione alternativa di questa applicazione è Virtual Flash Drive, che è anche molto semplice e conveniente quando si crea un archivio artificiale di informazioni. La loro differenza è che OSTmount ha più opzioni aggiuntive e oltre al flash USB, puoi creare altre unità artificiali.

Conclusione

Ora diventa chiaro che anche se non ci sono supporti esterni a portata di mano e sono molto necessari, puoi crearne un analogo creato artificialmente in pochi clic.

Pubblicazioni correlate