Bilgisayarda sanal bir USB sürücü oluşturuyoruz. Bilgisayarınızda sanal bir USB flash sürücü oluşturun Windows altında bir usb aygıtı için bir öykünücü oluşturun

Olof Lagerkvist projesi, diskleri taklit etmek için mükemmel bir programdır, ancak diskler herkesi taklit edebileceğinden, ancak herkes bir USB flash sürücü veya disket oluşturmakla övünemez. Diskler sanal bellekte oluşturulur, fiziksel olarak dosya görüntülerine boşaltılabilirler. Kurulumdan sonra program PC kontrol panelinden kullanılabilir.

"Tamam" ı tıklayın, tüm sanal görüntü hazır.

resim
Görüntü kaydedilebilir ve gerektiğinde monte edilebilir. Nerede işe yarar? Örneğin, tembeller için CryptoPro için sertifikaları böyle bir sanal flash sürücüye yükleyebilirsiniz.)) Veya önbelleği, disk belleği dosyasını ve diğer şeyleri depolamak için RAM'de bir disk olarak kullanabilirsiniz.
Ayrıca alternatif bir GUI var -

Otomatik bağlantı:
Eko kapalı
otomatik montaj için otomatik yükleme için rem
c: \ WINDOWS \ system32 \ imdisk.exe -a -f "% PROGRAMFILES% \ flash.img" -m f: -o rem

Bazı komut satırı seçenekleri:

imdisk.exe -e -s 300M -m B: - B diskini 300 MB artırın

imdisk -a -t dosyası -o ro -m y: -f C: \ Boot.img- Boot.img görüntüsünü Y sürücüsüyle, salt okunur olarak bağlayın

imdisk -a -t dosyası -m y: -f C: \ Boot.img- Boot.img görüntüsünü Y sürücüsüne monte edin, salt okunur/yazılır

imdisk -d -m y: - Y sürücüsünün bağlantısını kes

imdisk -a -s 150M -m #: -p "/ fs: ntfs / y / q / v: imdisk- 150 MB disk, ilk boş sürücü harfi, NTFS biçimlendirme, imdisk disk etiketi oluşturun

imdisk -a -s %10 -m #: -p "/ fs: ntfs / y / q / v: imdisk- öncekiyle aynı, yalnızca boyut boş belleğin yüzde 10'u olarak belirtilir.

imdisk -a -s -500M -m #: -p "/ fs: ntfs / y / q / v: imdisk- öncekiyle aynı, yalnızca boyut bir eksi işaretiyle gösterilir, yani boş bellek miktarı eksi belirtilen boyuta eşittir. 1200 MB boş bellek ile disk boyutu 1200-500 = 700 MB olur

imdisk.exe -a -t proxy -o ip -f 127.0.0.1:80 -m Z:- İnternette bulunan bir sunucu ile kullanım, aslında kontrol etmedi.

A - Wirt bağlantısı. disk.

D - sanal devre dışı bırakın. disk.

E - sanal düzenleme. disk.

_________________________

B - ofseti, yani diskteki verilerin başlangıcını belirtin, farklı programlarda oluşturulan diskler için, dosyadaki ilk öznitelikleri atlamanız gereken görüntülerde belirtilir.

S, sanal diskin boyutudur. Boyut, a (otomatik), b (512 bayt blok), k (bin bayt), m (milyon bayt), g (milyar bayt), t (trilyon bayt), K soneki eklenmedikçe bayt sayısıdır. (kilobayt) , M (megabayt), G (gigabayt) veya T (terabayt). Bin bayt ve kilobayt, bir kilobaytta 1000 değil 1024 bayt olması bakımından farklılık gösterir. Örneğin. -s 150M veya -s %10 - %10 boş bellek. -500M - eksi işaretli parametre, oluşturulan diskin boyutunu, boş bellek miktarı eksi belirtilen boyut olarak tanımlar.

O - seçenekleri ayarlayın, aşağıdaki seçeneklerle birlikte geçerlidir

ro - salt okunur

rw - okuma / yazma

rem - çıkarılabilir disk (flash sürücü) olarak yükleyin. Bu, disk özelliklerini, önbelleğe almayı ve daha fazlasını belirler.

fix - kalıcı, sabit disk olarak ayarlayın (rem yerine)

cd - sanal bir CD-ROM / DVD-ROM oluşturun.

fd - bir disket oluşturun. 160K, 180K, 320K, 360K, 640K, 720K, 820K, 1200K, 1440K, 1680K, 1722K, 2880K, 123264K veya 234752K boyutları için varsayılan.

hd - sabit bir bölüm oluşturun.

ip - bir proxy sunucusuna bağlanmak için parametre.

comm - COM bağlantı noktası aracılığıyla bir bellek sunucusuna bağlanır.

________________

M - Sürücü harfini tanımlar. Örneğin -m B: veya -m y: veya -m #: ilk boş sürücü harfidir.

F - dosya adı sanal. sürücü, örneğin -f C: \ Boot.img veya -f \\ server \ share \ image.bin veya -F \ Device \ Harddisk0 \ Partition1 \ image.bin- sonuncusu, bir sürücü harfi atanmadığında ve tanım sabit numaraya, bölümün (mantıksal disk) numarasına ve ardından gerçek yola göre yapıldığında.

Mikrodenetleyicilere dayalı çeşitli cihazların geliştirilmesi, gerçek bir bilgisayar meraklısına layık bir meslektir. Kuşkusuz, herhangi bir gadget'ın kullanışlı bir özelliği, bir bilgisayara bağlanmak için bir USB arayüzü olacaktır. Peki ya AVR çipinin USB donanım desteği yoksa?

V-USB: boyut önemlidir

Kendi gadget'ınızı geliştirirken, genellikle onu bir bilgisayara bağlama sorunuyla karşılaşırsınız. LPT ve COM bağlantı noktalarının artık PC anakartlarında egzotik olduğunu söylemeliyim, bu arayüzlerin uzun zaman önce kaybolduğu dizüstü bilgisayarlardan bahsetmiyorum bile. Bu nedenle, modern bilgisayarların USB arabirimine pratikte hiçbir alternatifi yoktur.

Çipin kaynakları yüzde yüz kullanılıyorsa, evrensel seri veri yolu için donanım desteği olan cihazlara hemen bakmak daha iyidir (bu tür mikrodenetleyiciler herhangi bir üreticinin hattında bulunur). Diğer durumlarda, bir yazılım USB'si kullanabilirsiniz.

Atmel mikrodenetleyicileri için, düşük hızlı USB 1.1 cihazının yazılım uygulamasını sunan harika bir V-USB projesi var. V-USB kodu, saat 12'de en az 2KB Flash ve 128 Bayt RAM'e sahip herhangi bir AVR cihazında çalışır; 12.8; 15; 16; 16.8 veya 20 MHz.

Ürünün kullanımı hem açık kaynak GPL lisansı altında hem de ticari olarak mümkündür. Kendi USB cihazlarınızı geliştirmek için genellikle lisans gibi bir şey satın almanız gerekir. Ancak V-USB'den gelenler, bir çift Satıcı Kimliği - Ürün Kimliği edinerek ve herkesin bunları kullanmasına izin vererek bununla da ilgilendi.

USB veri yolunu mikrodenetleyiciye bağlamak için donanım bağlantısı çok basittir. Cihaz çok fazla tüketmiyorsa, doğrudan veri yolundan beslenebilir (bilgisayarın USB güç hattının 500 mA'ya kadar akım verebildiğine inanılır). Veri hatları (D + ve D–) 3.6V sinyal seviyesi kullandığından, akım sınırlayıcı dirençlere ek olarak, çip üzerindeki 5V mantığına uyması için Zener diyotlarına ihtiyaç vardır. Bağlantı türünü belirtmek için, besleme gerilimini 1,5 kOhm'luk bir direnç üzerinden D– hattına "çekmeniz" gerekir.

USB üzerinden eşleştirme için alternatif bir seçenek, uygun bir stabilizasyon mikro devresi veya sadece bir çift diyot aracılığıyla kontrolörün besleme voltajını azaltmaktır. En son şema V-USB proje web sitesinde bulunabilir.

USB küçük programcı

AVR mikrodenetleyicileri için birçok farklı programlayıcı mevcuttur. USBtiny'den burada kısmen bahsedilmiştir, çünkü V-USB'ye benzer bir USB yazılım uygulaması içerir. Bu programcının şeması basittir: sürüm 2 iki mikro devre içerir ve ilk sürüm yalnızca bir tane içerir (ATtiny2313 yongasının kendisi). Web sitesindeki ayrıntılı açıklama ve basit aksesuarlar sayesinde, yeni başlayanlar için bile cihazın yapımı kolaydır. USBtiny, AVR mikro denetleyicilerini programlamak için kullanılan popüler avrdude programıyla uyumludur.

Tek sorun, bellenimi programlayıcı çipine yüklemektir - bunun için bir programcıya ihtiyacınız vardır. LPT bağlantı noktasına sahip bir bilgisayarınız varsa, o zaman FBPRG, yani "beş telli" seçeneklerden birini yapabilirsiniz.

Kızağın hazırlanması

En basit USB aygıtı aygıt yazılımını uygulamak için gereken yazılım araçları son derece münzevidir: gcc-avr derleyicisi, avr-libc kitaplığı, avrdude programcısı ve AVR için ayarlanmış binutils. Debian / Ubuntu'da ihtiyacınız olan her şey tek bir komutla kurulur:

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

İnternetin geniş alanlarında, V-USB ve libusb (İngilizce) hakkında çok ayrıntılı bir kılavuz bulmak kolaydır. Kılavuza göre, bir projeye USB desteği eklemek için arşivden en son V-USB sürümüne sahip usbdrv klasörüne ihtiyacınız var. Bu klasörün kökünde usbconfig-prototype.h yapılandırma şablonu bulunur. Bu dosyanın bir kopyasını oluşturmanız ve usbconfig.h olarak adlandırmanız gerekir. Sonraki - hatları G / Ç için kullanılacak olan bağlantı noktasını (D), doğrudan D + (2) ve D– (3) satır numaralarını ve ayrıca frekansı (12 MHz) gösteren usbconfig.h'yi düzeltin ) çipin çalıştığı (ATtiny2313 ):

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

V-USB cihaz lisansını kullanmak için üretici ve cihaz sayısal kimliklerini değiştirmeniz gerekmez. Ancak sembolik adlar beğeninize göre seçilebilir (aynı bilgisayara bağlı birkaç V-USB cihazını ayırt ederler):

#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

Çeşitli gadget'lar

Bir cihaz için bir fikriniz var mı? Lehimlemek ve kodlamak için acele etmeyin, ama bakın, belki birileri bunu zaten yapmıştır. Hazır şemaları ve kaynakları kullanamıyorsanız, en azından sıfırdan başlamak zorunda kalmazsınız.

Örneğin, V-USB projesi, lisanslama politikası sayesinde, iyi bir hazır (ücretsiz dağıtım dahil) çözümler tabanı biriktirmiştir. Burada çeşitli klavye uygulamalarını, joystick'ler için USB adaptörlerini, gamepad'leri (nadir olanlar dahil, örneğin SNES / NES, Nintendo 64, ZX Spectrum joystick, Sony PlayStation 1/2) ve benzerlerini bulabilirsiniz. DMX adaptörleri, sanal COM ve UART bağlantı noktaları, i2c, Servo, DCF77, IR kablosuz arabirimler - PC'nize daha fazla yeni cihaz bağlamanıza yardımcı olacak her şey. Kaydediciler, sensörler ve sensörler için platformlar, LCD ekranlar için adaptörler, programcılar ve yükleyiciler de çiftlikte faydalı olabilir.

Çip için program temeldir!

USB veri yolu üzerinden iletişim kurarken bilgisayar, periyodik olarak kontrol talebi mesajları gönderen ana cihazdır. Kontrolör sırasıyla bir bağımlıdır ve isteklere cevap vermelidir. Kontrol mesajının formatı usbdrv.h dosyasındaki usbRequest_t yapısı tarafından belirlenir:

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

Usbdrv klasörü ile aynı seviyede bir main.c dosyası oluşturalım ve içindeki gerekli başlık dosyalarını, tanımları ve değişkenleri tanımlayalım:

#Dahil etmek #Dahil etmek #Dahil etmek #include "usbdrv.h" #define F_CPU 12000000L // MK frekansı #include #define DATA_OUT 1 // Komut gönder #define DATA_IN 2 // Komut al // Statik uchar yanıtı arabelleğiBuf = "Merhaba Dünya!"; static uchar dataLength = 0, dataReceived = 0;

main.c'de, yeni bir istek alındığında otomatik olarak çağrılan usbFunctionSetup işlevini geçersiz kılın:

USB_PUBLIC uchar usbFunctionSetup (uchar verisi) (usbRequest_t * rq = (void *) verisi; geçiş (rq-> bRequest) (durum DATA_OUT: // İşlem verisi gönderme komutu usbMsgPtr = answerBuf; // Tampon dönüş boyutunu belirtin (replyBuf); / / Tampon durumunun boyutunu döndür DATA_IN: // Veri almak için komut işleniyor dataLength = (uchar) rq-> wLength.word; // dataReceived'in uzunluğunu al = 0; // Eğer usbFunctionWrite'a birçok çağrı yapılacaksa (dataLength> sizeof (replyBuf)) // Taşma kontrolü dataLength = sizeof (replyBuf); geri USB_NO_MSG; // 255 döndür; 0;)

Listeden de görebileceğiniz gibi bilgisayara veri göndermenin en kolay yolu usbMsgPtr işaretçisinin değerini verinin bulunduğu RAM arabelleğine (replyBuf) ayarlamak ve ardından uzunluğunu döndürmektir. Arabellek boyutu 254 baytı geçmemelidir. 128 bayt RAM'e sahip ATtiny2313 için bu yeterli. Daha işlevsel aygıtlar için ikinci bir yol daha vardır - usbFunctionRead işlevini geçersiz kılmak.

Verileri almak için öncelikle usbFunctionSetup işlevindeki isteğin wLength alanından mesaj uzunluğunu çıkarmanız ve global dataLength değişkeninde saklamanız gerekir. İkinci olarak, main.c'de, alınan verileri işlemek için tasarlanmış ve usbFunctionSetup USB_NO_MSG (255) döndürürse otomatik olarak (ve tabii ki birkaç kez) çağrılan usbFunctionWrite işlevini geçersiz kılmanız gerekir:

USB_PUBLIC uchar usbFunctionWrite (uchar * data, uchar len) (uchar i; // Alınan veri yığınını (i = 0; dataReceived) için arabelleğe kaydedin< dataLength && i < len; i++, dataReceived++) replyBuf = data[i]; return (dataReceived == dataLength); }

Aslında, usbFunctionWrite işlevi, alınan verilerle answerBuf arabelleğini doldurur.

Bu arada, bu yöntemin çalışması için usbconfig.h dosyasında değişiklik yapmanız gerekir:

#define USB_CFG_IMPLEMENT_FN_WRITE 1

Eh, bellenimin son işlevi ana:

Int main () (usbInit (); // USB usbDeviceConnect'i başlat (); // Aygıtı bağla sei (); // Kesintileri etkinleştir // Sonsuz bir döngüde kontrol mesajlarını bekle while (1) usbPoll (); 0 döndür; )

USART / UART'ı kullanma

Yazılım / donanım USB'sine iyi bir alternatif, bu protokolün USB'ye üçüncü taraf dönüştürücüsü ile çipte popüler USART / UART arayüzünün kullanılmasıdır; bu, örneğin FT232RL çipine dayalı olarak yapılabilir.

Libusb: ne giyinik ne çıplak

Soruyorsunuz: Bir USB cihazını bağlamak için bilgisayar işletim sistemi için bir sürücü yazmanız gerekiyor mu? Libusb kullanıyorsanız, tam teşekküllü bir çekirdek modülü uygulamadan yapabilirsiniz. Libusb, öncelikle veri yolu üzerinde bir cihaz bulmayı ve ikinci olarak onunla veri alışverişini hızlı bir şekilde programlamanıza izin veren açık kaynaklı bir kütüphanedir.

Linux için kütüphane ve gerekli başlık dosyaları kaynak kodlardan temin edilebilir. Dağıtımınızın standart deposunu kullanmak daha iyidir. Debian / Ubuntu için örneğin şöyle:

$ sudo apt-get install libusb-dev

Ayrıca Windows için bir libusb bağlantı noktası vardır - libusb-win32. Projenin adının aksine, Microsoft'un 64-bit işletim sistemleri de desteklenmektedir (sürüm 1.2.0.0'dan itibaren).

Ancak libusb ayrı bir konuşma konusudur. PC programlamaya aşina olduğunuzu düşünüyorum ve bunu kendiniz çözebilirsiniz. Bu nedenle kısa keseceğim. Bir usbtest.c dosyası oluşturun ve onu içerikle doldurmaya başlayın. İlk olarak, gerekli başlık dosyaları ve tanımları:

#Dahil etmek [...] // Bir bilgisayar için komutların anlamı tersine çevrilir, // ancak atamalar aynı kalır #define DATA_OUT 1 #define DATA_IN 2

Cihazı başlatmak için UsbOpenDevice işlevi:

Usb_init(); // USB usb_find_buss'ı başlat (); // otobüsleri bul usb_find_devices(); // Cihazları bul // (bus = usb_get_busses (); bus; bus = bus-> next) için tüm veriyollarını gözden geçir (// (dev = bus-> devices; dev; dev = için veri yolundaki tüm cihazları gözden geçir) dev-> sonraki) (// Satıcı ve ürün kimlikleri eşleşmiyorsa ... if (dev-> descriptor.idVendor! = satıcı || dev-> descriptor.idProduct! = ürün) devam; // ... atla bu yineleme // Aygıt tanıtıcısını almaya çalışın if (! (Handle = usb_open (dev))) (fprintf (stderr, "% s \ n", usb_strerror ()); devam;) dönüş tanıtıcısı; // tanıtıcıyı döndür )) // Cihaz bulunamadı dönüş NULL;

Gördüğünüz gibi usbOpenDevice parametreleri üretici ve cihazın sayısal tanımlayıcılarıdır. Aygıt veri yolunda mevcutsa, tanımlayıcısı döndürülür. V-USB'de birden fazla cihaz varsa, satıcının ve ürünün sembolik adları için bir kontrol eklemeniz gerekecektir.

Ve usbtest konsol yardımcı programının ana işlevi:

Int main (int argc, char ** argv) (// Aygıt tanıtıcı usb_dev_handle * tanıtıcı = NULL; int nBytes = 0; karakter arabelleği; // Aygıt tanıtıcı aranıyor = usbOpenDevice (0x16C0, 0x05DC); if (tutamaç == NULL ) (fprintf (stderr, "USB aygıtı bulunamadı! \ n"); çıkış (1);) // Out argümanı - çipten veri alın if (strcmp (argv, "out") == 0) (nBytes = usb_control_msg (tanıtıcı, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPOINT_IN, DATA_OUT, 0, 0, (char *) arabellek, sizeof (arabellek), 5000); printf ("Got% d bayt:% s \ n", nBytes, arabellek); // Argümanda - bir dize gönderin (sonraki argüman)) else if (strcmp (argv, "in") == 0 && argc> 2) (nBytes = usb_control_msg (tutamak, 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; }

Burada usb.h dahil dosyasında bildirilen usb_control_msg işlevi topu yönetir. Bir dizi parametreye sahiptir ve aslında işlenmesi mikrodenetleyicinin belleniminde uygulanan bu kontrol mesajlarını oluşturur.

proteus dinlenme

Popüler olarak sevilen Proteus ISIS kablolama simülatörü, USB yazılım uygulamasına sahip cihazlar tasarlarken işe yaramaz. USB öykünücüsü yalnızca Evrensel Seri Veri Yolu (AT90USB646 veya AT90USB1286 gibi) için donanım desteği olan yongaları destekler.

Topluyoruz, parlıyoruz, test ediyoruz

Aşağıda, main.c ve usbtest.c'deki make komutunun chip - main.hex ve usbtest yardımcı programı ikili için aygıt yazılımını kolayca alabileceği küçük ama çok kullanışlı bir Makefile bulunmaktadır:

CC = avr-gcc OBJCOPY = avr-objcopy CFLAGS = -Wall -Os -Iusbdrv -mmcu = attiny2313 OBJFLAGS = -j .text -j .data -O ihex NESNELER = usbdrv / usbdrv.o usbdrv / tuhafrvug. .o ana. o CMDLINE = usbtest # Amaç: her şeyi oluştur: main.hex $ (CMDLINE) # Bilgisayar için yardımcı program oluştur $ (CMDLINE): usbtest.c gcc -I ./libusb/include -L ./libusb/lib / gcc -O -Wall usbtest.c -o usbtest -lusb # Projeyi ikili dosyadan temizleyin clean: $ (RM) * .o * .hex * .elf usbdrv / *. o # Elf dosyasından ürün yazılımı dosyasını alın% hex: % .elf $ (OBJKOPYA) $ (OBJFLAGS) $< [e-posta korumalı]# Bina elf dosyası main.elf: $ (OBJECTS) $ (CC) $ (CFLAGS) $ (OBJECTS) -o [e-posta korumalı]# V-USB $ (OBJECTS) kütüphane dosyaları oluşturun: usbdrv / usbconfig.h # C nesne koduna % .o:% .c $ (CC) $ (CFLAGS) -c $< -o [e-posta korumalı]# nesne koduna asm % .o:% .S $ (CC) $ (CFLAGS) -x assembler-with-cpp -c $< -o [e-posta korumalı]

Firmware'i usbtiny programlayıcı kullanarak mikrodenetleyiciye yüklemek için şu komutu yazıyoruz:

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

Avrdude'de sigortalar çok net değil, ancak çevrimiçi hesap makinelerinden birinde kolayca hesaplanabilirler.


Cihazı bilgisayara bağlarız ve nasıl çalıştığını kontrol ederiz (out parametresi ile usbtest stringi okur, in - belirtilen stringi chip tamponuna yazar):

$ sudo ./usbtest içinde all_ok $ sudo ./usbtest çıkışı

bir kaşık katran

Yumuşak USB her derde deva değildir. Yazılım uygulamalarının genellikle sağlama toplamı ve kanal simetri denetimlerinin olmaması gibi gürültü bağışıklığını olumsuz etkileyen bir takım basitleştirmeleri vardır. Ayrıca, genellikle yazılım kitaplıkları düşük hızlı USB modlarını kullanır. Ve USB kitaplığının kodu, çipin zaten küçük olan hafızasını "yiyor".

gözetleme...

Mantık düzeyinde, USB protokolü esasen çok katmanlı bir paket veri aktarımıdır. Wireshark ağ protokolü analizörünü kullanarak bunu doğrulamak (ve aynı zamanda USB hakkında birçok ilginç şey öğrenmek) kolaydır. Önce USB monitör sürücüsünü indirmelisiniz:

$ sudo modprobe usbmon

Artık Wireshark arayüzleri listesinden USB veriyollarını seçebilirsiniz. Cihaz veri yolu numarasını örneğin günlüklerde görebilirsiniz.

Çözüm

Umarım, bir bilgisayar ve bir AVR mikro denetleyicisi arasında nasıl veri aktarılacağını öğrendikten sonra, elektronik tutkunuz yenilenen bir güçle ateşlenecek ve birçok orijinal ve kullanışlı cihaza yol açacaktır. Geriye bu zor ama ilginç alanda başarılar dilemek kalıyor.

11

Bazı testleri otomatikleştirmek istediğim bir Linux uygulamam var ve durumu belirli cihazların, yani USB cihazlarının, WLAN cihazlarının, WAN cihazlarının durumuna bağlı olarak değişmelidir. Ancak artık fiziksel USB aygıtlarımız, WLAN, WAN vb. aygıtlarımız yok, bu yüzden bu programı fiziksel aygıtları gerçekten bağlamadan, açıp/kapatmadan vb. test etmenin bir yolunu bulmam gerekiyor.

Kullanıcı alanından kontrol edebileceğim bir sanal USB cihazı oluşturarak başlıyorum, ancak bu forumlarda benzer konuları benimsememi ve projeme uygulamamı engelleyen temel bir bilgi eksikliğim var. Bir tür sanal USB sürücüsü oluşturmam ve ardından bunu usbfs'ye değil, bir tür kullanıcı düzeyinde programa bağlamam gerektiğini hissediyorum. Ancak, bu sanal sürücüyü oluştursam bile, bu kullanıcı alanı aygıtını nasıl "takabilirim" ve programımı o sürücüye nasıl kaydettirebilirim? Yapmaya çalıştığım şey mümkün mü?

  • 2 cevap
  • Sıralama:

    Aktivite

0

VMWare kullanarak uygulamayı sanal bir ortamda test edemiyor musunuz? Ardından, bilgisayarınızdaki herhangi bir sanal aygıtı konuk sanal makinesine "bağlayabilir" ve uygulamayı bu şekilde test edebilirsiniz.

8

En iyi yol, bir USB aygıtı olmanızı sağlayan Linux gadget sürücülerini ve donanımını kullanmaktır. Gadget sürücüsü, bilgisayarın herhangi bir aygıt gibi "taklit etmesine" izin verir. Ardından, test edilen sisteminizde gadget için bir USB OTG kablosu bulunur. Gadget'ınız doğru donanıma sahipse kabloyu çıkarmanıza bile gerek yoktur. Gadget Box, Linux masaüstünüz / dizüstü bilgisayarınız (USB OTG'yi destekliyorsa) veya hatta bir Android telefon veya bir Raspberry Pi olabilir. (USB kablolarının dışarı çekildiğine dikkat edin. İpin uygun olması, USB OTG'ye doğru şekilde bağlandığı anlamına gelmez.).

USB OTG donanımı için uygun olduğunuzda, gadget tüm yazılımı kutular:

1) Test edilen cihaz OTG'yi destekliyorsa, gadget'ınızın denemediğinden ve bir USB ana bilgisayarı olmadığından emin olun. (Ardından test edilen cihazınız bir USB istemcisi olacaktır.) Yani. usb_storage gibi şeylerin otomatik olarak yüklenmediğinden emin olun.

2) Çekirdek, USB Hub'ları, USB-Ethernet, USB-Seri Bağlantı Noktaları ve USB çubukları için gadget'ları destekler. Sadece istediğiniz modülleri gadget'ınıza yükleyin ve “çalışır”. Örneğin, bir USB çubuğu oluşturmak için şöyle bir şey yapın: "insmod g_file_storage.ko file = / dev / ram0". Uzak taraf, bir USB çubuğu taktığınızı düşünecektir.

Seri cihazlar için gadget, / dev / USBx üzerindeki telefonu alan ve test edilen cihazla konuşan kullanıcı alanı kodunda çalışabilir. (Görünüşe göre taklit bir 4G modem ya da her neyse.)

Üretici USB'yi anlayamayacak kadar tembel olduğundan, tonlarca cihaz kaputun altında gerçekten "USB-seri".

3) Küçük bir yeniden derleme veya ince ayar ile, bu genel cihazları gadget, kimlik veya farklı satıcı dizeleri vb. için kullanabilirsiniz. Bu, "gerçek donanım üzerinde test etme" ile aynı olmayacak, ancak en azından test edeceksiniz. bu cihazların standart versiyonu.

4) Henüz çekirdekte olmayan cihaz türleri için (Wi-Fi veya her neyse) kendi başınızasınız. Yeterince ter ve kan gözyaşı ile kendi gadget'ınızı yazabilirsiniz. (İdeal olarak, mümkün olduğu kadar çok kullanıcı alanı kullanın ve yalnızca çekirdekteki kritik bileşenleri kullanın.)

Bazen bir flash sürücüye ihtiyacınız olduğunda bir durum ortaya çıkar, ancak elinizin altında değildir. Örneğin, bazı muhasebe ve raporlama programlarının çalışması için harici bir depolama aygıtı gerekir. Böyle bir durumda, sanal bir bilgi deposu oluşturabilirsiniz.

Özel bir yazılım kullanarak, bu birkaç yolla yapılabilir. Her birini adım adım ele alalım.

Yöntem 1: OSFmount

Bu küçük program, elinizde flash sürücü olmadığında çok faydalıdır. Windows'un herhangi bir sürümünde çalışır.

Programı indirdikten sonra şunu yapın:



Bu programla çalışırken ek işlevler gerekebilir. Bunu yapmak için, öğedeki ana pencereye girmeniz gerekir. "Sürücü Eylemleri"... Ve sonra aşağıdaki seçenekleri kullanmak mümkün olacak:

  • Çıkarma - birimin bağlantısını kesin;
  • Biçim - birimi biçimlendirme;
  • Medyayı salt okunur olarak ayarla - kaydı yasaklar;
  • Extendsize - sanal aygıtın boyutunu genişletir;
  • Savetoimagefile - istenilen formatta kaydetmeye yarar.

Yöntem 2: Sanal Flash Sürücü

Yukarıdaki yönteme iyi bir alternatif. Sanal bir flash sürücü oluştururken, bu program üzerindeki bilgileri bir parola ile korumanıza izin verir. Bu, Windows'un eski sürümlerinde çalışabilme avantajına sahiptir. Bu nedenle, bilgisayarınızda Windows XP veya daha düşük bir sürümü varsa, bu yardımcı program bilgisayarınızda hızlı bir şekilde sanal bir depolama aygıtı hazırlamanıza yardımcı olacaktır.

Bu programı kullanma talimatları şöyle görünür:

  1. Sanal Flash Sürücüyü indirin ve yükleyin.
  2. Ana pencerede, düğmesine tıklayın yeni tak.
  3. Bir pencere görünecek "Yeni birim oluştur", içinde sanal ortam oluşturma yolunu belirtin ve "TAMAM".


Görüldüğü gibi programın kullanımı oldukça kolaydır.

Yöntem 3: ImDisk

Daha popüler sanal disket yazılımlarından biridir. Bir görüntü dosyası veya bilgisayar belleği kullanarak sanal diskler oluşturur. Yükleme sırasında özel anahtarlar kullanıldığında, sanal bir çıkarılabilir disk olarak bir flash sürücü görünecektir.


Yöntem 4: bulut depolama

Teknolojinin gelişimi, sanal flash sürücüler oluşturmanıza ve bunlar hakkında internette bilgi depolamanıza olanak tanır. Bu yöntem, İnternet'e bağlı herhangi bir bilgisayardan belirli bir kullanıcı tarafından kullanılabilen dosyaların bulunduğu bir klasördür.

Bu tür veri depoları Yandex.Disk, Google Drive ve Cloud Mail.ru'yu içerir. Bu hizmetleri kullanma prensibi aynıdır.

Yandex Disk ile nasıl çalışılacağını düşünelim. Bu kaynak, üzerinde 10 GB'a kadar bilgileri ücretsiz olarak saklamanıza izin verir.



Böyle bir sanal depolama ortamıyla çalışmak, verilerinizi tamamen yönetmenize olanak tanır: bunları klasörler halinde gruplandırın, gereksiz verileri silin ve hatta diğer kullanıcılarla bağlantılarını paylaşın.

Nedir ve neden gereklidir?
Arabadaki radyoda bir CD değiştirici girişi varsa, buna benzer bir adaptör bağlayabilirsiniz, radyoyu aldatır ve ona bir değiştiricinin bağlı olduğuna karar verir ve diskler yerine normal bir flash sürücü müzik eşliğinde kullanılır. Adaptör, direksiyon simidinden yönlendirme dahil olmak üzere standart yollarla kontrol edilebilir.

Muska, bu tür adaptörler hakkında zaten birkaç incelemeye sahipti, en ünlüsü Çin Yatour.

Standart olmayan bir yoldan gitmeye karar verdim, Rus Trioma Flipper 2'yi denemeye karar verdim.
Genel derecelendirme - mükemmel, satın alma işleminden memnunum, tavsiye ederim.

Detaylar için kesimin altında soruyorum

Önsöz

Basit bir arzu var - arabada müzik dinlemek istiyorum. Radyoda, her zaman uygun bir şey yoktur, yanınızda bir sürü CD taşımak ve sürekli onları kaydetmek yorgun.
2007'de Peugeot 407'mde daha sonra USB, bluetooth ve hatta normal AUX girişi olmadan sadece bir radyo teyp kaydedici olarak adlandırılan bir GU (Baş Ünite) var.

Arabada, arabanın herhangi bir işlevini kontrol etmeye bağlı olmayan normal bir radyo kayıt cihazı varsa, en kolay yol yeni bir radyo kayıt cihazı satın almaktır. USB girişli markalı bir radyo yüzlerce Euro'ya satın alınabilir. Direksiyon simidinden direksiyonu anlaması için biraz daha para harcanması gerekecek.

AUX (ses) girişini kurcalayabilir ve bağlayabilirsiniz, ancak yine de bir ses kaynağına ihtiyacınız var ve direksiyon simidinden direksiyonu unutmanız gerekecek.

Uzun süre FM verici seçeneklerinden vazgeçtim - birkaç farklı verici denedim, ses kalitesi çok iyi değildi.

Radyo teyp kaydedicisine CD değiştirici girişine bir aporter bağlamanın bir yolu daha var; bu, flash sürücülerden müzik dinlemenize izin verecek, adaptörü direksiyondan da dahil olmak üzere radyo teyp kaydedicisinin standart araçlarıyla kontrol edecek. teker. Farklı parametrelere sahip ve kalite, güvenilirlik, rahatlık veya fiyat açısından farklılık gösteren farklı üreticilerin benzer adaptörlerini bulabilirsiniz.
En ünlü adaptör Yatour'dur. Belki de en havalı olanı, diğer şeylerin yanı sıra FLAC oynayan Amerikan Grom Audio'dur. Eh, yığına birkaç cihaz daha var - Audiolink, Xcarlink, DMC, Dension.

Her şeyden önce, yatour'a bakmaya başladım. Hepsinde 50 dolardan başlıyor. Ancak internetteki incelemeler coşkuyu biraz azalttı. Adaptörün sabit seviyeli bir çıkışı vardır, bu nedenle birçok radyo teyp kaydedicisinde ses seviyesi, radyo teyp kaydedicisinden belirgin şekilde daha düşüktür. Bazen kararsız çalışma, donma, flash sürücüde gereksiz dosyaların varlığı için kritiklik. Desteklenen dizin sayısı - radyo teyp kaydedicisinin desteklediği disk sayısı, benim durumumda bu 6'dır.

Yatour'un resmi bir web sitesi yoktur, Yatour'un internetteki web siteleri satıcıların web siteleridir. Ve bilgilerin farklı yerlerde azar azar toplanması gerekir, esas olarak bunu kendilerine ayarlayanlar abonelikten çıkar, ancak deneyimleri her zaman radyonuz için uygun değildir.
Ancak, radyo teyp kayıt cihazımla çalışmanın özellikleri de dahil olmak üzere tüm sorularımı yanıtlayan Belaruslu bir satıcı yatour Sergey aka SSD'ye rastladığım için şanslıydım.
Genel olarak çalışır, ancak hacim ve kararsız çalışma ile ilgili sorunlar olabilir. Sergey'den ilk kez Grom Audio ve kendisinin de sattığı Triome hakkında bir şeyler duydum.

Android'de Grom Audio, FLAC'ı destekliyor, ancak arabam için model yok.

Ancak Trioma Flipper 2 ilgileniyor. Her şeyden önce, çıkış seviyesini (ses seviyesini) ayarlama yeteneği. Ayrıca çok daha uygun bir klasör organizasyonuna sahiptir ve daha pek çok şey olabilir. Ve çok daha az buggy.
Yator ve Trioma arasında iyi bir karşılaştırma tablosu ödünç aldım.


Yatura ile ilgili açıklama:
1. Gereksiz dosyalar oynatmayı engellemez. En azından bazı yazılımlarda.

Ben de seçimimi yaptım. Üçlü !!!
Böyle bir adaptör alırken, arabanız için bir model seçtiğinizden emin olun. Daha doğrusu aracınızın araç radyosunun altında. Farklı radyo teyp kaydedicileri, birbiriyle uyumlu olmayan farklı değiştirici konektörlere sahip olabilir.

Trioma'yı nereden satın alabilirim?

Üreticinin web sitesinde Trioma ürünlerini satanlar var. Rusya veya Beyaz Rusya'da bir adaptör satın almakta sorun yok. Ve benim için satın almanın daha kolay olduğu ve gümrükleri temizlemek ve KDV ödemek zorunda olmadığım Avrupa'da, nakliye masrafları olmadan 120 avrodan iki kat daha yüksek fiyatlar.

Bana Rusya veya Beyaz Rusya'dan bir adaptör getirebilecek arkadaşlar aramaya başladım. Bulundu!!! Şubat başında bana bir adaptör sipariş eden ve getiren Rusya'dan bir arkadaş buldum! Oleg, teşekkürler!

Ve işte benim yerimdeki adaptör!



Kit, adaptörün kendisini, radyoya bağlanmak için bir kabloyu ve bir USB kablosunu içerir.
Radyo kayıt cihazına bağlanmak için kullanılan kablonun uzunluğu sadece 40 cm'dir, bu da adaptörün arabadaki konumuna hemen kısıtlamalar getirir - doğrudan radyo kayıt cihazının arkasına yerleştirilmesi gerekir, torpido gözüne bile ulaşamazsınız Bununla.
Adaptör yaklaşık bir sigara kutusu büyüklüğündedir. Cihazların veya AUX kablosunun altına bağlantı için çıkıntılı kabloya sahip basit plastik kutu. Ancak adaptörü radyoya bağladıktan sonra başka kimse görmeyecek.
Ek olarak, sonunda mini jak bulunan bir AUX kablosu aldım (+ 500r)


Birkaç fotoğraf daha

Ek cihazlar, AUX kablosu veya bluetooth adaptörü bağlamak için konektör


Adaptördeki anne


baba üzerinde kablo


Radyo RD4 için konektör


açmayın garanti


Kurulum

Radyo teyp kaydedici RD4, iki vidayı altıgen ile sökün ve radyo teyp kaydedicisini çıkarın.

Arkada iki uygun konektör var, biri çalışmıyor - kontrol edildi ;)
Fotoğraf gerekli konektörü göstermektedir. İçinde kablolama zaten değiştiriciye bağlı, kurulu konektörü çıkarıyoruz ve kendi başımıza açıyoruz.


Kabloyu adaptöre bağlıyoruz, kontağı açıyoruz ve bir mucize - her şey hemen çalıştı !!! Ayrıca, ses düzeyi yerleşik CD'dekiyle hemen hemen aynıdır.

Ama sonra düşünmeye başlıyoruz - USB kablosunu nereye getireceğimiz. Benim durumumda en kolay yol, direksiyon simidinin altındaki kabloyu sürücünün solundaki küçük torpido gözüne sokmaktı.


Adaptörün kendisi, radyonun sol arka tarafındaki bir boşluğa sıkışmıştı. Fazla yer yok, radyo teyp kaydediciyi yerine taktıktan sonra, adaptör kablolarla oraya kenetlendi, bu yüzden adaptörü ayrıca tutturmaya gerek yoktu.

Tüm forumlar, radyonun hizmetteki değiştiriciyi etkinleştirmesini gerektirdiğini yazıyor. Benim için her şey çok daha basit çıktı. Açıldıktan sonra, radyo teyp kaydedici kendisine bir değiştiricinin bağlı olduğunu belirledi ve giriş anahtarı (radyo / CD / değiştirici) aracılığıyla seçmek mümkün oldu.
Görünüşe göre, radyo için değil, değiştirici için bilgileri yansıtabilmesi için ekran için aktivasyon gerekli.
Ama altı ay önce, ben ve Çinliler, aferin, tüm aktif fonksiyonların olduğu bir ekran gönderdik. Bu yüzden ek aktivasyon olmadan her şey benim için çalıştı.

Adaptör çalışması

Ses kalitesi. CD çalar ile karşılaştırılabilir. Arabadaki standart akustik oldukça vasat, bu yüzden arabamdaki standart CD çalar ile farkı kesinlikle duymayacaksınız.
Açılma hızı... Birkaç düzine katalog içeren bir USB flash sürücüde kontağı açtıktan birkaç saniye sonra. Forumlarda, birkaç yüz dizinle hızın daha düşük olduğunu yazıyorlar. Adaptör, kapatılmadan önce nerede çaldığını hatırlar ve aynı yerden çalmaya başlar. Bu özellik sesli kitap dinlemeyi sevenler için değerlidir. Adaptör, son 4 flash sürücüden konumu hatırlar /
Parça değiştirme. Saniyenin kesirlerinde, aynı veya başka bir dizinde iz farkı yoktur. Anahtarlama sırasında yabancı sesler yoktur.
Flash sürücüyü değiştirme. Radyo çalışırken, USB flash sürücüyü çıkarır ve yenisini takarız. Birkaç saniye içinde belirlenir ve hemen oynamaya başlar. Değiştirme sırasında çok sessiz kısa bir tril duyulabilir.

Bağdaştırıcı, her biri en fazla 99 dosya içerebilen 32 alt dizini içerebilen 32 dizini anlar. Ancak çok geçmeden disk anahtarının yalnızca ilk altı diski değiştirdiğini fark ettim. Rastgele modda olmasına rağmen, adaptör tüm dizinleri görür.

Trioma forumunda bir soru sorulduğunda, destek çok hızlı yanıt verdi ve dizinleri düzenlemek için seçenekler önerdi. Sorun, RD4'teki düğmelerin Disk + / Disk- işlevini yerine getirmelerine rağmen, aslında 1-6 disk seçimini adaptöre yönlendirmek için komutlar göndermeleriydi. Yani bu düğmelerle sadece 6 kök dizini veya 6 alt dizini değiştirebilirsiniz.
Ve radyomdaki 1024 dizini yönetmek işe yaramayacak. Yalnızca 32 * 6 = 192 dizini yönetebilirsiniz;)

Açıklama, FF / FR düğmelerinin çift işlev gerçekleştirdiğini söylüyor - dizinleri / alt dizinleri değiştirmek ve geri sarmak.
Ancak RD4 Track + / Track-'de FF / FR ile birleştirilir ve adaptör için bu düğmelerin Üçlü bir amacı vardır:
1. Kısa basış - Parça + / Parça-
2. 2-3 saniye basmak, mevcut parçanın sesi kaybolduğunda bırakmak - dizini değiştirmek
3. Uzun basın> 3sn, hızlandırılmış bir boğuk ses var - geri sarma
Süre yaklaşıktır, sese odaklanmanız gerekir

Satın almadan önce bile, yüzlerce katalog içeren büyük bir mega flash sürücü yazacağımı varsaydım. Ama şimdi farklı koleksiyonlara sahip birkaç flash sürücüye sahip olmanın daha uygun olduğunu görüyorum.
Şimdi buna sahibim:
1. Rus sahnesi 80-90'lar
2. Yabancı sahne 80-90'lar
3. Enstrümantal

Toplam. Nispeten az para karşılığında, iyi ses kalitesine ve basit, sezgisel kontrollere sahip hatasız bir adaptör aldım. Satın alma işleminden çok memnunum, Trioma harika !!!

Ek bağlantılar

Mini SSS

Bazı sorular bu incelemenin dışında kaldı, onları ayrı bir minifakta çıkarmaya karar verdim. Burada yorumlarda ortaya çıkan soruları da ekleyeceğim.
  • Adların (dosya adları, etiketler veya herhangi bir şey) ekranda gösterilmesi için ne yapılması gerekiyor?
  • Triom adaptörleri kesinlikle etiketleri, dosya adlarını ve klasör adlarını "görür". Mümkün olan her yerde, radyo teyp kaydedicilerinin standart ekranlarında metin dizileri gösterirler: BMW ve optik MOST veri yoluna sahip tüm araçlar. Belki yakında bazı Toyota / Lexus cihazları için metin çıktısı uygulanacaktır.
  • CD değiştiriciler işi sorunsuz bir şekilde yapar.
  • Korkarım yanılıyorsunuz: Yukarıda listelenen modeller dışında bu görevle başa çıkan harici değiştiriciler bilmiyoruz. Ana ünitede yerleşik olan değiştiriciler, metnin doğrudan ekran denetleyicisine gönderildiği başka bir konudur - bu tamamen farklı bir mekanizmadır.
  • Trioma Flipper 2 adaptörüne ek cihazlar bağlamak mümkün müdür?
  • Adaptöre veya bir kablo adaptörüne AUX-minijack 3.5 erkek bağlayabilirsiniz.
+23 almayı planlıyorum Favorilere ekle incelemeyi beğendim +21 +46