Erstellen eines virtuellen Flash-Laufwerks am Beispiel des Programms OSFmount. Wir erstellen ein virtuelles USB-Laufwerk im Computer Wo kann ich Trioma kaufen?

Manchmal tritt eine Situation auf, in der Sie ein Flash-Laufwerk benötigen, es jedoch nicht zur Hand ist. Einige Abrechnungs- und Berichterstellungsprogramme erfordern zum Beispiel, dass ein externes Speichergerät ausgeführt wird. In einer solchen Situation können Sie einen virtuellen Informationsspeicher erstellen.

Mit einer speziellen Software kann dies auf verschiedene Weise erfolgen. Betrachten wir jeden von ihnen Schritt für Schritt.

Methode 1: OSFmount

Dieses kleine Programm ist sehr hilfreich, wenn kein Flash-Laufwerk zur Hand ist. Es funktioniert auf jeder Windows-Version.

Nachdem Sie das Programm heruntergeladen haben, gehen Sie wie folgt vor:



Während der Arbeit mit diesem Programm können zusätzliche Funktionen erforderlich sein. Dazu müssen Sie im Hauptfenster im Artikel eingeben "Drive-Aktionen"... Und dann können Sie die folgenden Optionen verwenden:

  • Dismount - das Volume aushängen;
  • Format - Formatieren des Volumes;
  • Medien schreibgeschützt einstellen - sperrt die Aufnahme;
  • Extendsize - erweitert die Größe des virtuellen Geräts;
  • Savetoimagefile - dient zum Speichern im gewünschten Format.

Methode 2: Virtuelles Flash-Laufwerk

Eine gute Alternative zur obigen Methode. Beim Erstellen eines virtuellen Flash-Laufwerks können Sie mit diesem Programm Informationen darauf mit einem Passwort schützen. Dies hat den Vorteil, dass Sie in älteren Windows-Versionen arbeiten können. Wenn Sie also eine Version von Windows XP oder niedriger auf Ihrem Computer haben, hilft Ihnen dieses Dienstprogramm, schnell ein virtuelles Speichergerät auf Ihrem Computer vorzubereiten.

Die Anweisungen zur Verwendung dieses Programms sehen wie folgt aus:

  1. Laden Sie das virtuelle Flash-Laufwerk herunter und installieren Sie es.
  2. Klicken Sie im Hauptfenster auf die Schaltfläche Neu montieren.
  3. Es erscheint ein Fenster "Neues Volume erstellen", geben Sie den Pfad zum Erstellen der virtuellen Medien darin an und klicken Sie auf "OK".


Wie Sie sehen, ist das Programm sehr einfach zu bedienen.

Methode 3: ImDisk

Es ist eines der beliebtesten virtuellen Diskettenprogramme. Mithilfe einer Image-Datei oder eines Computerspeichers werden virtuelle Festplatten erstellt. Wenn Sie beim Laden Sondertasten verwenden, wird ein Flash-Laufwerk als virtueller Wechseldatenträger angezeigt.


Methode 4: Cloud-Speicher

Die Entwicklung der Technologie ermöglicht es Ihnen, virtuelle Flash-Laufwerke zu erstellen und Informationen darauf im Internet zu speichern. Diese Methode ist ein Ordner mit Dateien, der einem bestimmten Benutzer von jedem Computer aus zur Verfügung steht, der mit dem Internet verbunden ist.

Zu diesen Datenspeichern gehören Yandex.Disk, Google Drive und Cloud Mail.ru. Das Prinzip der Nutzung dieser Dienste ist das gleiche.

Lassen Sie uns überlegen, wie Sie mit Yandex Disk arbeiten. Mit dieser Ressource können Sie kostenlos Informationen bis zu 10 GB speichern.



Wenn Sie mit einem solchen virtuellen Speichermedium arbeiten, können Sie Ihre Daten vollständig verwalten: Sie können sie in Ordnern gruppieren, unnötige Daten löschen und sogar Links zu ihnen mit anderen Benutzern teilen.

Die Entwicklung verschiedener Geräte auf Basis von Mikrocontrollern ist eine Beschäftigung, die eines echten Computerfreaks würdig ist. Zweifellos ist eine nützliche Funktion jedes Gadgets eine USB-Schnittstelle zum Anschluss an einen Computer. Aber was ist, wenn der AVR-Chip keine USB-Hardware-Unterstützung bietet?

V-USB: Größe zählt

Bei der Entwicklung eines eigenen Gadgets tritt häufig das Problem auf, es an einen Computer anzuschließen. Ich muss sagen, dass LPT- und COM-Ports mittlerweile Exoten auf PC-Motherboards sind, ganz zu schweigen von Laptops, für die diese Schnittstellen längst verschwunden sind. Daher haben moderne Computer praktisch keine Alternativen zur USB-Schnittstelle.

Wenn die Ressourcen des Chips zu 100 Prozent ausgelastet sind, ist es besser, sofort nach Geräten mit Hardwareunterstützung für den universellen seriellen Bus zu suchen (solche Mikrocontroller sind bei jedem Hersteller vorhanden). In anderen Fällen können Sie einen Software-USB verwenden.

Für Atmel-Mikrocontroller gibt es ein wunderbares V-USB-Projekt, das eine Softwareimplementierung des langsamen USB 1.1-Geräts bietet. Der V-USB-Code funktioniert auf jedem AVR-Gerät mit mindestens 2 KB Flash und 128 Byte RAM, getaktet mit 12; 12,8; fünfzehn; Sechszehn; 16,8 oder 20 MHz.

Die Nutzung des Produkts ist sowohl unter der Open Source GPL-Lizenz als auch auf kommerzieller Basis möglich. Um eigene USB-Geräte zu entwickeln, müssen Sie in der Regel auch so etwas wie eine Lizenz kaufen. Aber auch die Jungs von V-USB haben sich darum gekümmert, indem sie ein Paar Vendor ID - Product ID erworben haben und jedem erlauben, sie zu verwenden.

Der Hardwareanschluss zum Anschluss des USB-Busses an den Mikrocontroller ist denkbar einfach. Wenn das Gerät nicht zu viel verbraucht, kann es direkt über den Bus mit Strom versorgt werden (es wird angenommen, dass die USB-Stromleitung des Computers einen Strom von bis zu 500 mA liefern kann). Da die Datenleitungen (D+ und D–) einen 3,6-V-Signalpegel verwenden, werden zusätzlich zu den Strombegrenzungswiderständen Zener-Dioden benötigt, um die 5-V-Logik auf dem Chip anzupassen. Um die Anschlussart anzuzeigen, müssen Sie die Versorgungsspannung über einen Widerstand von 1,5 kOhm auf die Leitung D– „heraufziehen“.

Eine alternative Möglichkeit für das Pairing über USB besteht darin, die Versorgungsspannung des Controllers durch eine entsprechende Stabilisierungs-Mikroschaltung oder nur ein Diodenpaar zu reduzieren. Den neuesten Schaltplan finden Sie auf der V-USB-Projektwebsite.

USBtiny-Programmierer

Es gibt viele verschiedene Programmierer für AVR-Mikrocontroller. USBtiny wird hier zum Teil erwähnt, weil es eine Softwareimplementierung von USB enthält, ähnlich wie V-USB. Die Schaltung dieses Programmierers ist einfach: Version 2 enthält zwei Mikroschaltungen und die erste Version enthält nur eine (den ATtiny2313-Chip selbst). Dank der ausführlichen Beschreibung auf der Website und einfachem Zubehör ist das Gerät auch für Anfänger leicht zu bauen. USBtiny ist mit dem beliebten avrdude-Programm kompatibel, das zum Programmieren von AVR-Mikrocontrollern verwendet wird.

Das einzige Problem ist das Laden der Firmware in den Programmierer-Chip - dazu braucht man ... einen Programmierer. Wenn Sie einen Computer mit einem LPT-Anschluss haben, können Sie eine der Optionen FBPRG alias "fünf Drähte" auswählen, die lautet

Vorbereitung des Schlittens

Die Softwaretools, die zur Implementierung der einfachsten USB-Gadget-Firmware erforderlich sind, sind äußerst asketisch: der gcc-avr-Compiler, die avr-libc-Bibliothek, der avrdude-Programmierer und das Binutils-Set für AVR. Unter Debian / Ubuntu wird alles, was Sie brauchen, mit einem Befehl installiert:

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

In den Weiten des Internets findet man leicht ein sehr ausführliches Handbuch zu V-USB und libusb (in englischer Sprache). Um dem Projekt USB-Unterstützung hinzuzufügen, benötigen Sie laut Handbuch den Ordner usbdrv aus dem Archiv mit der neuesten Version von V-USB. Im Stammverzeichnis dieses Ordners befindet sich die Konfigurationsvorlage usbconfig-prototype.h. Sie müssen eine Kopie dieser Datei erstellen und sie usbconfig.h nennen. Als nächstes fixieren Sie usbconfig.h, geben Sie den Port (D) an, dessen Leitungen für I / O verwendet werden, direkt die Leitungsnummern D + (2) und D– (3) sowie die Frequenz (12 MHz .) ) an dem der Chip arbeitet (ATtiny2313 ):

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

Sie müssen die numerischen Hersteller- und Geräte-IDs nicht ändern, um die V-USB-Gerätelizenz zu verwenden. Die symbolischen Namen können jedoch nach Belieben gewählt werden (sie unterscheiden mehrere V-USB-Geräte, die an denselben Computer angeschlossen sind):

#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

Verschiedene Geräte

Sie haben eine Idee für ein Gerät? Beeilen Sie sich nicht, zu löten und zu codieren, aber schauen Sie, vielleicht hat das schon jemand getan. Wenn Sie keine vorgefertigten Schemata und Quellen verwenden können, müssen Sie zumindest nicht bei Null anfangen.

Zum Beispiel hat das V-USB-Projekt dank seiner Lizenzpolitik eine anständige Basis an vorgefertigten (einschließlich kostenloser Verteilung) Lösungen angesammelt. Hier finden Sie verschiedene Implementierungen von Tastaturen, USB-Adapter für Joysticks, Gamepads (auch seltene, wie SNES/NES, Nintendo 64, ZX Spectrum Joystick, Sony PlayStation 1/2) und dergleichen. DMX-Adapter, virtuelle COM- und UART-Ports, i2c, Servo, DCF77, IR-Funkschnittstellen - alles, was Ihnen hilft, mehr neue Geräte an Ihren PC anzuschließen. Logger, Plattformen für Sensoren und Sensoren, Adapter für LCD-Displays, Programmierer und Lader können auch auf der Farm nützlich sein.

Das Programm für den Chip ist elementar!

Bei der Kommunikation über den USB-Bus ist der Computer das Hauptgerät, das regelmäßig Ssendet. Der Controller ist jeweils ein Slave und muss auf Anfragen antworten. Das Format der Steuernachricht wird durch die usbRequest_t-Struktur aus der Datei usbdrv.h bestimmt:

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

Lassen Sie uns eine main.c-Datei auf der gleichen Ebene wie den usbdrv-Ordner erstellen und die erforderlichen Header-Dateien, Definitionen und Variablen darin beschreiben:

#enthalten #enthalten #enthalten #include "usbdrv.h" #define F_CPU 12000000L // MK-Frequenz #include #define DATA_OUT 1 // Befehl senden #define DATA_IN 2 // Befehl empfangen // Statischer Puffer uchar answerBuf = "Hello World!"; statische uchar dataLength = 0, dataReceived = 0;

Überschreiben Sie in main.c die Funktion usbFunctionSetup, die automatisch aufgerufen wird, wenn eine neue Anfrage eingeht:

USB_PUBLIC uchar usbFunctionSetup (uchar data) (usbRequest_t * rq = (void *) data; switch (rq-> bRequest) (case DATA_OUT: // Prozessdaten-Sendebefehl usbMsgPtr = responseBuf; // Pufferrückgabegröße von (replyBuf) angeben; / / Größe des Puffers zurückgeben DATA_IN: // Verarbeitung des Befehls zum Empfangen von Daten dataLength = (uchar) rq-> wLength.word; // Hole die Länge von dataReceived = 0; // Es wird viele Aufrufe von usbFunctionWrite geben if (dataLength> sizeof (replyBuf)) // Überlaufprüfung dataLength = sizeof (replyBuf); return USB_NO_MSG; // Return 255) return 0;)

Wie Sie der Auflistung entnehmen können, besteht die einfachste Möglichkeit zum Senden von Daten an den Computer darin, usbFunctionSetup auf den Wert des usbMsgPtr-Zeigers auf den RAM-Puffer (replyBuf) zu setzen, in dem sich die Daten befinden, und dann seine Länge zurückzugeben. Die Puffergröße sollte 254 Byte nicht überschreiten. Für den ATtiny2313 mit seinen 128 Byte RAM reicht das. Für funktionellere Geräte gibt es einen zweiten Weg - das Überschreiben der usbFunctionRead-Funktion.

Um die Daten abzurufen, müssen Sie zunächst die Nachrichtenlänge aus dem wLength-Feld der Anforderung in der Funktion usbFunctionSetup extrahieren und in der globalen dataLength-Variablen speichern. Zweitens müssen Sie in main.c die Funktion usbFunctionWrite überschreiben, die die empfangenen Daten verarbeitet und automatisch (und offensichtlich mehrmals) aufgerufen wird, wenn usbFunctionSetup USB_NO_MSG (255) zurückgibt:

USB_PUBLIC uchar usbFunctionWrite (uchar * data, uchar len) (uchar i; // Den empfangenen Datenblock im Puffer speichern für (i = 0; dataReceived< dataLength && i < len; i++, dataReceived++) replyBuf = data[i]; return (dataReceived == dataLength); }

Tatsächlich füllt die usbFunctionWrite-Funktion den ReplyBuf-Puffer mit den empfangenen Daten.

Damit diese Methode funktioniert, müssen Sie übrigens Änderungen an usbconfig.h vornehmen:

#define USB_CFG_IMPLEMENT_FN_WRITE 1

Nun, die letzte Funktion der Firmware ist die Hauptsache:

Int main () (usbInit (); // USB initialisieren usbDeviceConnect (); // Gerät verbinden sei (); // Interrupts aktivieren // Warte auf Steuernachrichten in einer Endlosschleife während (1) usbPoll (); return 0; )

Verwendung von USART / UART

Eine gute Alternative zu Soft-/Hardware-USB ist die Verwendung der beliebten USART/UART-Schnittstelle im Chip mit einem Fremdkonverter dieses Protokolls auf USB, was beispielsweise auf Basis des FT232RL-Chips erfolgen kann.

Libusb: weder angezogen noch nackt

Sie fragen: Müssen Sie einen Treiber für das Betriebssystem des Computers schreiben, um ein USB-Gerät anzuschließen? Wenn Sie libusb verwenden, können Sie auf die Implementierung eines vollwertigen Kernelmoduls verzichten. Libusb ist eine Open-Source-Bibliothek, mit der Sie schnell programmieren können, erstens ein Gerät am Bus finden und zweitens Daten damit austauschen können.

Für Linux können die Bibliothek und die notwendigen Header-Dateien aus den Quellcodes bezogen werden. Verwenden Sie besser das Standard-Repository Ihrer Distribution. Für Debian / Ubuntu zum Beispiel so:

$ sudo apt-get install libusb-dev

Es gibt auch einen libusb-Port für Windows - libusb-win32. Entgegen dem Projektnamen werden auch 64-Bit-Betriebssysteme von Microsoft unterstützt (ab Version 1.2.0.0).

Aber libusb ist ein separates Gesprächsthema. Ich denke, Sie sind mit der PC-Programmierung vertraut und können es selbst herausfinden. Daher fasse ich mich kurz. Erstellen Sie eine Datei usbtest.c und beginnen Sie, sie mit Inhalten zu füllen. Zuerst die erforderlichen Header-Dateien und Definitionen:

#enthalten [...] // Bei einem Computer ist die Bedeutung der Befehle umgekehrt, // aber die Bezeichnungen bleiben gleich #define DATA_OUT 1 #define DATA_IN 2

UsbOpenDevice-Funktion zum Initialisieren des Geräts:

Usb_init(); // USB initialisieren usb_find_busses (); // Finde die Busse usb_find_devices (); // Geräte finden // Alle Busse durchgehen für (bus = usb_get_busses (); bus; bus = bus-> next) (// Alle Geräte am Bus durchgehen für (dev = bus-> devices; dev; dev = dev-> next) (// Wenn Vendor- und Produkt-IDs nicht übereinstimmen ... if (dev-> descriptor.idVendor! = Vendor || dev-> descriptor.idProduct! = product) continue; // ... skip this iteration // Versuchen Sie, den Gerätedeskriptor abzurufen if (! (Handle = usb_open (dev))) (fprintf (stderr, "% s \ n", usb_strerror ()); continue;) return handle; // Den Deskriptor zurückgeben )) // Das Gerät wurde nicht gefunden return NULL;

Wie Sie sehen, sind die Parameter von usbOpenDevice die numerischen Kennungen des Herstellers und des Geräts. Wenn das Gerät am Bus vorhanden ist, wird sein Deskriptor zurückgegeben. Wenn sich mehrere Geräte am V-USB befinden, müssen Sie die symbolischen Namen des Herstellers und des Produkts überprüfen.

Und die Hauptfunktion des usbtest-Konsolendienstprogramms:

Int main (int argc, char ** argv) (// Gerätehandle usb_dev_handle * handle = NULL; int nBytes = 0; char buffer; // Suche nach Gerätehandle = usbOpenDevice (0x16C0, 0x05DC); if (handle == NULL ) (fprintf (stderr, "USB-Gerät konnte nicht gefunden werden! \ n"); exit (1);) // Out-Argument - Daten vom Chip holen 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 Argument - sende einen String (nächstes Argument)) 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; }

Hier regiert die Funktion usb_control_msg, die in der Include-Datei usb.h deklariert ist, den Ball. Es hat eine Reihe von Parametern und erstellt tatsächlich diese Steuernachrichten, deren Verarbeitung in der Firmware des Mikrocontrollers implementiert ist.

Proteus ruht

Der im Volksmund beliebte Proteus ISIS-Verkabelungssimulator ist nutzlos, wenn Geräte mit Softwareimplementierung von USB entwickelt werden. Sein USB-Emulator unterstützt nur Chips mit Hardwareunterstützung für Universal Serial Bus (wie AT90USB646 oder AT90USB1286).

Wir sammeln, flashen, testen

Unten ist ein kleines, aber sehr nützliches Makefile, mit dessen Hilfe der make-Befehl von main.c und usbtest.c leicht die Firmware für den Chip bekommen kann - main.hex und das usbtest-Dienstprogramm-Binär:

CC = avr-gcc OBJCOPY = avr-objcopy CFLAGS = -Wall -Os -Iusbdrv -mmcu = attiny2313 OBJFLAGS = -j .text -j .data -O ihex OBJEKTE = usbdrv / usbdrv.o usbdrv / oddrvug.o usbdro / oddr . .o main.o CMDLINE = usbtest # Zweck: Alles bauen: main.hex $ (CMDLINE) # Dienstprogramm für Computer erstellen $ (CMDLINE): usbtest.c gcc -I ./libusb/include -L ./libusb/ lib / gcc -O -Wall usbtest.c -o usbtest -lusb # Bereinigen Sie das Projekt von der Binärdatei clean: $ (RM) * .o * .hex * .elf usbdrv / *. o # Holen Sie sich die Firmware-Datei von der elf file%.hex:% .elf $ (OBJCOPY) $ (OBJFLAGS) $< [E-Mail geschützt]# Gebäudeelf-Datei main.elf: $ (OBJECTS) $ (CC) $ (CFLAGS) $ (OBJECTS) -o [E-Mail geschützt]# V-USB $ (OBJECTS) Bibliotheksdateien erstellen: usbdrv / usbconfig.h # C in Objektcode% .o:% .c $ (CC) $ (CFLAGS) -c $< -o [E-Mail geschützt]# asm an Objektcode% .o:% .S $ (CC) $ (CFLAGS) -x Assembler-with-cpp -c $< -o [E-Mail geschützt]

Um die Firmware mit dem usbtiny-Programmierer in den Mikrocontroller hochzuladen, geben wir den Befehl ein:

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

Bei avrdude sind Sicherungen nicht ganz eindeutig, aber sie können einfach in einem der Online-Rechner berechnet werden.


Wir schließen das Gerät an den Computer an und prüfen, wie es funktioniert (usbtest mit dem Parameter out liest den String, in - schreibt den angegebenen String in den Chippuffer):

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

Ein Löffel Teer

Soft-USB ist kein Allheilmittel. Softwareimplementierungen weisen normalerweise eine Reihe von Vereinfachungen auf, wie das Fehlen von Prüfsummen- und Kanalsymmetrieprüfungen, was sich negativ auf die Störfestigkeit auswirkt. Außerdem verwenden Softwarebibliotheken normalerweise USB-Modi mit niedriger Geschwindigkeit. Und der Code der USB-Bibliothek "frisst" den ohnehin schon kleinen Speicher des Chips.

Guck...

Auf logischer Ebene ist das USB-Protokoll im Wesentlichen eine mehrschichtige Paketdatenübertragung. Mit dem Netzwerkprotokollanalysator Wireshark lässt sich dies leicht überprüfen (und gleichzeitig viel Interessantes über USB lernen). Sie müssen zuerst den USB-Monitortreiber herunterladen:

$ sudo modprobe usbmon

Nun können Sie in der Liste der Wireshark-Schnittstellen USB-Busse auswählen. In den Protokollen können Sie z. B. die Gerätebusnummer einsehen.

Abschluss

Nachdem Sie gelernt haben, Daten zwischen einem Computer und einem AVR-Mikrocontroller zu übertragen, wird Ihre Leidenschaft für Elektronik hoffentlich mit neuer Kraft entzündet und viele originelle und nützliche Geräte entstehen. Ihnen bleibt nur noch viel Erfolg in diesem schwierigen, aber interessanten Feld zu wünschen.

Das Olof Lagerkvist-Projekt ist ein ausgezeichnetes Programm zum Emulieren von Disketten, aber da Disketten jeden emulieren können, kann sich nicht jeder rühmen, einen USB-Stick oder eine Diskette zu erstellen. Festplatten werden im virtuellen Speicher erstellt, physisch können sie in Dateiabbilder entladen werden. Nach der Installation steht das Programm über die PC-Systemsteuerung zur Verfügung.

Klicken Sie auf "OK", das virtuelle Bild ist fertig.

Bild
Das Bild kann bei Bedarf gespeichert und gemountet werden. Wo ist es praktisch? Für die Faulen können Sie beispielsweise Zertifikate für CryptoPro auf ein solches virtuelles Flash-Laufwerk hochladen.)) Oder es als Festplatte im RAM verwenden, um den Cache, die Auslagerungsdatei und andere Dinge zu speichern.
Es gibt auch eine alternative GUI -

Automatische Verbindung:
Echo aus
rem to autoload für automatische Montage
c: \ WINDOWS \ system32 \ imdisk.exe -a -f "% PROGRAMFILES% \ flash.img" -m f: -o rem

Einige Befehlszeilenoptionen:

imdisk.exe -e -s 300M -m B: - Festplatte B um 300 MB vergrößern

imdisk -a -t Datei -o ro -m y: -f C: \ Boot.img- Mounten Sie das Boot.img-Image mit Laufwerk Y, schreibgeschützt

imdisk -a -t Datei -m y: -f C: \ Boot.img- Mounten Sie das Boot.img-Image mit Laufwerk Y, nur lesen / schreiben

imdisk -d -m y: - Laufwerk aushängen Y

imdisk -a -s 150M -m #: -p "/ fs: ntfs / y / q / v: imdisk- Disk mit einer Größe von 150 MB erstellen, der erste Diskbuchstabe ist frei, Formatierung in NTFS, imdisk Disk Label

imdisk -a -s 10% -m #: -p "/ fs: ntfs / y / q / v: imdisk- wie beim vorherigen, nur die Größe wird als 10 Prozent des freien Speichers angegeben.

imdisk -a -s -500M -m #: -p "/ fs: ntfs / y / q / v: imdisk- wie beim vorherigen, nur die Größe wird mit einem Minuszeichen angegeben, dh gleich der Menge des freien Speichers abzüglich der angegebenen Größe. Bei 1200 MB freiem Speicher beträgt die Festplattengröße 1200-500 = 700 MB

imdisk.exe -a -t proxy -o ip -f 127.0.0.1:80 -m Z:- Verwendung mit einem Server, der im Internet gefunden wurde, tatsächlich nicht überprüft.

A - Wirt-Verbindung. Scheibe.

D - virtuelle deaktivieren. Scheibe.

E - virtuelle Bearbeitung. Scheibe.

_________________________

B - Geben Sie den Offset an, dh den Anfang der Daten auf der Festplatte, wird für Festplatten angezeigt, die in verschiedenen Programmen erstellt wurden, in deren Bildern Sie die anfänglichen Attribute in der Datei überspringen müssen.

S ist die Größe der virtuellen Festplatte. Größe ist die Anzahl der Bytes, wenn kein Suffix hinzugefügt wird a (auto), b (512 Byte-Blöcke), k (tausend Bytes), m (Millionen Bytes), g (Milliarden Bytes), t (Billionen Bytes), K (Kilobyte), M (Megabyte), G (Gigabyte) oder T (Terabyte). Tausend Byte und Kilobyte unterscheiden sich darin, dass ein Kilobyte 1024 Byte enthält, nicht 1000. Zum Beispiel. -s 150M oder -s 10 % - 10 % des freien Speichers. Der Parameter -500M - mit einem Minuszeichen definiert die Größe der erstellten Festplatte als Menge des freien Speichers abzüglich der angegebenen Größe.

O - Set-Optionen, gilt in Verbindung mit den untenstehenden Optionen

ro - nur lesen

rw - lesen / schreiben

rem - als Wechseldatenträger (Flash-Laufwerk) installieren. Dies bestimmt Festplatteneigenschaften, Caching und mehr.

fix - wird als permanente Festplatte festgelegt (im Gegensatz zu rem)

cd - Erstellen Sie eine virtuelle CD-ROM / DVD-ROM.

fd - eine Diskette erstellen. Der Standardwert für die Größen 160 KB, 180 K, 320 K, 360 K, 640 K, 720 K, 820 K, 1200 K, 1440 K, 1680 K, 1722 K, 2880 K, 123264 K oder 234752 K.

hd - Erstellen Sie eine feste Partition.

ip - Parameter für die Verbindung zu einem Proxy-Server.

comm - verbindet sich über einen COM-Port mit einem Speicherserver.

________________

M - Definiert den Laufwerksbuchstaben. Zum Beispiel -m B: oder -m y: oder -m #: ist der erste freie Laufwerksbuchstabe.

F - Dateiname virtuell. Laufwerk, zum Beispiel -f C: \ Boot.img oder -f \\ server \ share \ image.bin oder -F \ Gerät \ Harddisk0 \ Partition1 \ image.bin- das letzte, wenn kein Laufwerksbuchstabe zugewiesen ist und die Definition durch die Festplattennummer, die Nummer der Partition (logische Platte) und dann den realen Pfad erfolgt.

11

Ich habe eine Linux-Anwendung, für die ich einige Tests automatisieren möchte und deren Zustand sich je nach Zustand bestimmter Geräte ändern soll, z.B. USB-Geräte, WLAN-Geräte, WAN-Geräte. Wir haben jedoch keine physischen USB-Geräte, WLAN-, WAN- usw. Geräte mehr, daher muss ich einen Weg finden, dieses Programm zu testen, ohne tatsächlich physische Geräte anzuschließen, sie ein- / auszuschalten usw.

Ich beginne damit, einfach ein virtuelles USB-Gerät zu erstellen, das ich vom Benutzerbereich aus steuern kann, aber es gibt einen grundlegenden Mangel an Wissen meinerseits, der mich daran hindert, ähnliche Themen in diesen Foren zu übernehmen und auf mein Projekt anzuwenden. Ich habe das Gefühl, dass ich eine Art virtuellen USB-Treiber erstellen und dann mit einer Art Programm auf Benutzerebene verknüpfen muss, nicht mit usbfs. Aber selbst wenn ich diesen virtuellen Treiber erstelle, wie kann ich dieses User-Space-Gerät „anschließen“ und mein Programm mit diesem bestimmten Treiber registrieren? Ist das, was ich versuche, überhaupt möglich?

  • 2 Antworten
  • Sortierung:

    Aktivität

0

Können Sie die Anwendung nicht in einer virtuellen Umgebung mit VMWare testen? Sie können dann jedes virtuelle Gerät auf Ihrem Computer mit der virtuellen Gastmaschine „verbinden“ und die Anwendung auf diese Weise testen.

8

Am besten verwenden Sie Linux-Gadget-Treiber und -Hardware, mit denen Sie ein USB-Gerät sein können. Der Gadget-Treiber ermöglicht es dem Computer, sich als ein beliebiges Gerät zu "täuschen". Dann hat Ihr zu testendes System ein USB-OTG-Kabel für das Gadget. Sie müssen nicht einmal das Kabel abziehen, wenn Ihr Gerät über die richtige Hardware verfügt. Die Gadget Box könnte Ihr Linux-Desktop / Laptop sein (wenn es USB OTG unterstützt) oder sogar ein Android-Telefon oder ein Raspberry Pi. (Achten Sie darauf, dass USB-Kabel heraussaugen. Nur weil das Seil passt, heißt das nicht, dass es richtig mit dem USB-OTG verbunden ist.)

Sobald Sie die richtige USB-OTG-Hardware haben, enthält das Gadget die gesamte Software:

1) Wenn das zu testende Gerät OTG unterstützt, stellen Sie sicher, dass Ihr Gadget es nicht versucht und kein USB-Host ist. (Dann wird Ihr zu testendes Gerät ein USB-Client.) D.h. Stellen Sie sicher, dass Dinge wie usb_storage nicht automatisch geladen werden.

2) Der Core unterstützt Gadgets für USB-Hubs, USB-Ethernet, USB-Seriell-Ports und USB-Sticks. Laden Sie einfach die gewünschten Module in Ihr Gadget und es „funktioniert einfach“. Um beispielsweise einen USB-Stick zu erstellen, gehen Sie wie folgt vor: "insmod g_file_storage.ko file = /dev / ram0". Die andere Seite wird denken, Sie hätten einen USB-Stick eingesteckt.

Bei seriellen Geräten kann das Gadget im User-Space-Code ausgeführt werden, der auf /dev/usbx „das Telefon abnimmt“ und mit dem zu testenden Gerät spricht. (Anscheinend ein emulierendes 4G-Modem oder was auch immer.)

Unmengen von Geräten sind wirklich "USB-seriell" unter der Haube, weil der Hersteller zu faul war, USB zu verstehen.

3) Mit ein wenig Neukompilierung oder Optimierung können Sie diese generischen Geräte für das Gadget, die ID verwenden oder verschiedene Herstellerzeichenfolgen usw Testen der Standardversion dieser Geräte.

4) Bei Gerätetypen, die noch nicht im Core sind (wie WLAN oder was auch immer), sind Sie auf sich allein gestellt. Mit genug Schweiß und Bluttränen können Sie Ihre eigene Art von Gadget schreiben. (Verwenden Sie idealerweise so viel Userspace wie möglich und behandeln Sie nur kritische Komponenten im Kernel.)

Fortsetzung des Themas:
Geräte

Freie Sonnenstrahlen effizient in Energie umzuwandeln, mit der Haushalte und andere Einrichtungen mit Strom versorgt werden können, ist der gehegte Traum vieler Verteidiger grüner ...