Δημιουργία μιας εικονικής μονάδας flash χρησιμοποιώντας ένα παράδειγμα του προγράμματος OSFMount. Δημιουργήστε μια εικονική μονάδα flash USB σε έναν υπολογιστή όπου μπορείτε να αγοράσετε triom

Μερικές φορές υπάρχει μια κατάσταση όταν χρειάζεστε μια μονάδα flash, και δεν είναι στο χέρι. Για παράδειγμα, για το έργο ορισμένων προγραμμάτων λογιστικής και αναφοράς απαιτεί εξωτερική μονάδα δίσκου. Σε μια τέτοια κατάσταση, μπορείτε να δημιουργήσετε μια εικονική συσκευή αποθήκευσης πληροφοριών.

Χρησιμοποιώντας ειδικό λογισμικό, μπορεί να γίνει με διάφορους τρόπους. Εξετάστε το καθένα από αυτά βήμα προς βήμα.

Μέθοδος 1: Osfmount

Αυτό το μικρό πρόγραμμα βοηθάται πολύ όταν δεν υπάρχει μονάδα flash. Λειτουργεί σε οποιαδήποτε έκδοση των Windows.

Αφού κατεβάσετε το πρόγραμμα, κάντε αυτό:



Σε αυτό το πρόγραμμα, ενδέχεται να απαιτούνται πρόσθετες λειτουργίες. Για να το κάνετε αυτό, πρέπει να εισάγετε το κύριο παράθυρο στο στοιχείο Ενέργειες κίνησης. Και τότε θα είναι δυνατή η χρήση των ακόλουθων επιλογών:

  • Distunt - Undount όγκου.
  • Μορφή - Μορφοποίηση όγκου.
  • Ορισμός μόνο για ανάγνωση μέσων - θέτει απαγόρευση της ηχογράφησης.
  • Επέκταση - επεκτείνει το μέγεθος της εικονικής συσκευής.
  • Το Savetoimagefile - χρησιμεύει για να αποθηκεύσει στην επιθυμητή μορφή.

Μέθοδος 2: Εικονική μονάδα flash

Μια καλή εναλλακτική λύση στη μέθοδο που περιγράφεται παραπάνω. Κατά τη δημιουργία μιας εικονικής μονάδας flash, αυτό το πρόγραμμα σας επιτρέπει να προστατεύετε τις πληροφορίες σε αυτό χρησιμοποιώντας έναν κωδικό πρόσβασης. Το πλεονέκτημα είναι η απόδοσή του σε παλιές εκδόσεις των Windows. Επομένως, εάν έχετε μια έκδοση Windows XP στον υπολογιστή σας ή παρακάτω, αυτό το βοηθητικό πρόγραμμα θα σας βοηθήσει να προετοιμάσει γρήγορα μια εικονική μονάδα δίσκου πληροφοριών σε έναν υπολογιστή.

Οδηγίες για τη χρήση αυτού του προγράμματος μοιάζει με αυτό:

  1. Κατεβάστε και εγκαταστήστε εικονική μονάδα flash.
  2. Στο κύριο παράθυρο, κάντε κλικ στην επιλογή Mount new.
  3. Θα εμφανιστεί ένα παράθυρο "Δημιουργία νέου όγκου", Καθορίστε τη διαδρομή σε αυτό για να δημιουργήσετε ένα εικονικό μέσο και κάντε κλικ "ΕΝΤΑΞΕΙ".


Όπως μπορείτε να δείτε, το πρόγραμμα είναι πολύ απλό σε κυκλοφορία.

Μέθοδος 3: imdisk

Αυτό είναι ένα από τα πιο δημοφιλή προγράμματα για τη δημιουργία μιας εικονικής δισκέτας. Χρησιμοποιώντας το αρχείο εικόνας ή τη μνήμη του υπολογιστή, δημιουργεί εικονικούς δίσκους. Όταν χρησιμοποιείτε ειδικά πλήκτρα κατά τη φόρτωσή του, ένας εικονικός αφαιρούμενος δίσκος θα εμφανιστεί το Flash Media.


Μέθοδος 4: Αποθήκευση σύννεφων

Η ανάπτυξη των τεχνολογιών σας επιτρέπει να δημιουργείτε δίσκους εικονικών φλας και να αποθηκεύσετε πληροφορίες σχετικά με αυτά στο Διαδίκτυο. Αυτή η μέθοδος είναι ένας φάκελος με αρχεία που είναι διαθέσιμα σε έναν συγκεκριμένο χρήστη από οποιονδήποτε υπολογιστή συνδεδεμένο στο Internet.

Τέτοιες αποθήκες δεδομένων περιλαμβάνουν το Yandex.Disk, το Google Drive και το Mail.ru Cloud. Η αρχή της χρήσης αυτών των υπηρεσιών είναι η ίδια.

Εξετάστε τον τρόπο εργασίας με τον δίσκο Yandex. Αυτός ο πόρος σας επιτρέπει να αποθηκεύετε πληροφορίες σε 10 GB δωρεάν.



Η συνεργασία με τέτοια εικονικά μέσα ενημέρωσης σας επιτρέπει να διαχειριστείτε πλήρως τα δεδομένα σας: Ομάδα τους σε φακέλους, διαγράψτε περιττά δεδομένα και ακόμη και μοιραστείτε συνδέσμους σε αυτούς με άλλους χρήστες.

Η ανάπτυξη διαφόρων συσκευών που βασίζονται σε μικροελεγκτές είναι ένα μάθημα που αξίζει τον υπολογιστή αυτό. Αναμφισβήτητα, ένα χρήσιμο τέχνασμα οποιουδήποτε gadget θα είναι μια διεπαφή USB για σύνδεση με έναν υπολογιστή. Αλλά τι να κάνετε εάν το Chip AVR δεν παρέχει υποστήριξη υλικού USB;

V-USB: Matters μεγέθους

Όταν αναπτύσσετε το δικό σας gadget, αντιμετωπίζει συχνά τη σύνδεσή του με τον υπολογιστή. Πρέπει να πω ότι οι λιμένες LPT και COM είναι τώρα εξωτικές στις μητρικές PC, για να μην αναφέρουμε τους φορητούς υπολογιστές που έχουν εξαφανιστεί αυτές τις διεπαφές εδώ και πολύ καιρό. Ως εκ τούτου, οι σύγχρονοι υπολογιστές δεν έχουν σχεδόν καμία εναλλακτική λύση στη διασύνδεση USB.

Εάν οι πόροι τσιπ χρησιμοποιούνται για εκατό τοις εκατό, είναι καλύτερο να κοιτάξουμε αμέσως προς τις συσκευές με υποστήριξη υλικού για το καθολικό διαδοχικό ελαστικό (τέτοιοι μικροελεγκτές υπάρχουν στη γραμμή οποιουδήποτε κατασκευαστή). Σε άλλες περιπτώσεις, μπορείτε να χρησιμοποιήσετε το λογισμικό USB.

Για Microcontrollers Atmel, υπάρχει ένα θαυμάσιο έργο V-USB που προσφέρει μια υλοποίηση λογισμικού μιας συσκευής USB χαμηλής ταχύτητας USB 1.1. Ο κωδικός V-USB θα λειτουργήσει σε οποιαδήποτε συσκευή AVR, η οποία έχει τουλάχιστον 2 KB μνήμη flash και 128 bytes μνήμης RAM, με συχνότητα ρολογιού 12. 12,8; δεκαπέντε; δεκαέξι; 16,8 ή 20 MHz.

Η χρήση του προϊόντος είναι δυνατή τόσο εντός της άδειας ανοικτής πηγής GPL όσο και σε εμπορική βάση. Για να αναπτύξετε τις δικές σας συσκευές USB, συνήθως πρέπει να αγοράσετε κάτι σαν άδεια. Αλλά οι τύποι από το V-USB φροντίζουν αυτό, αγοράζοντας ένα ζευγάρι ταυτότητας προμηθευτή - αναγνωριστικό προϊόντος και επιτρέποντάς τους να χρησιμοποιήσουν κάποιον που θέλει.

Η δέσμευση υλικού για τη σύνδεση του δίαυλου USB στο μικροελεγκτή είναι πολύ απλή. Εάν η συσκευή καταναλώσει πάρα πολύ, τότε μπορεί να τροφοδοτηθεί απευθείας από το ελαστικό (θεωρείται ότι η γραμμή ισχύος USB του υπολογιστή είναι σε θέση να δώσει έως και 500 mA). Δεδομένου ότι οι ενημερωτικές γραμμές (D + και D-) χρησιμοποιούν το επίπεδο σήματος των 3,6 V, εκτός από τις αντιστάσεις που περιορίζουν τον τρέχοντα, απαιτούνται stabilids για να ταιριάζουν με τη λογική του τσιπ 5 volt. Για να ορίσετε τον τύπο σύνδεσης, πρέπει να "τραβήξετε" την τάση τροφοδοσίας μέσω της αντίστασης 1,5 kΩ στη γραμμή D-Line.

Εναλλακτική λύση για την επιλογή αντιστοίχισης USB - Μειώστε την τάση τροφοδοσίας ελεγκτή μέσω ενός κατάλληλου τσιπ σταθεροποίησης ή απλά ένα ζεύγος διόδων. Το τελευταίο σχήμα μπορεί να βρεθεί στο χώρο του έργου V-USB.

Ο προγραμματιστής USTBTiny

Για Microcontrollers AVR, υπάρχουν πολλοί διαφορετικοί προγραμματιστές. Το Usbtiny αναφέρεται εδώ, ειδικότερα, επειδή περιέχει ένα λογισμικό USB που εφαρμόζει παρόμοιο με το V-USB. Το σχέδιο αυτού του προγραμματιστή είναι απλό: Η έκδοση 2 περιέχει δύο μάρκες και η πρώτη έκδοση είναι μόνο μία (adultiny2313). Λόγω της λεπτομερούς περιγραφής στην περιοχή και τα απλά εξαρτήματα, η συσκευή είναι εύκολο να γίνει ακόμη και ένας αρχάριος. Το Usbtiny είναι συμβατό με το δημοφιλές πρόγραμμα AVRDUDE που χρησιμοποιείται για τον προγραμματισμό των μικροελεγκτών AVR.

Το μόνο πρόβλημα είναι να γεμίσετε το υλικολογισμικό στο τσιπ προγραμματιστή - για αυτό που χρειάζεστε ... προγραμματιστής. Εάν υπάρχει ένας υπολογιστής με το λιμάνι LPT, τότε μπορείτε να κάνετε μία από τις επιλογές FBPRG γνωστού και «πέντε καλωδίωση», η οποία είναι σίδηρος

Μαγειρεύοντας έλκηθρα

Εργαλεία λογισμικού που απαιτούνται για την εφαρμογή του απλούστερου υλικολογισμικού USB Gadget, εξαιρετικά ασκητικό: Compiler GCC-AVR, Βιβλιοθήκη AVR-LIBC, προγραμματιστές Avrdede και Binutils για AVR. Στο Debian / Ubuntu, όλα όσα χρειάζεστε καθορίζονται από μία εντολή:

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

Στους απεριόριστους χώρους του Διαδικτύου, είναι εύκολο να βρείτε έναν πολύ λεπτομερή οδηγό για V-USB και Libusb (στα αγγλικά). Σύμφωνα με το εγχειρίδιο, για να προσθέσετε υποστήριξη USB στο έργο, θα χρειαστείτε ένα φάκελο USBDRV από το αρχείο με την τελευταία έκδοση V-USB. Η ρίζα αυτού του φακέλου έχει ένα πρότυπο διαμόρφωσης usbconfig-prototype.h. Πρέπει να δημιουργήσετε ένα αντίγραφο αυτού του αρχείου, καλώντας το Usbconfig.h. Στη συνέχεια, σωστός usbconfig.h, καθορίζοντας τη θύρα (D), οι γραμμές των οποίων θα χρησιμοποιηθούν για I / O, απευθείας η γραμμή D + (2) και D- (3) και η συχνότητα (12 MHz) που λειτουργεί το τσιπ (Attiny2313):

#Define usb_cfg_ioportname d #define usb_cfg_dminus_bit 3 #depine usb_cfg_dplus_bit 2 #define usb_cfg_clock_khz 12000

Για να επωφεληθείτε από την άδεια V-USB για τη συσκευή, τα αριθμητικά αναγνωριστικά του κατασκευαστή και της συσκευής δεν χρειάζεται να αλλάξουν. Αλλά τα ονόματα χαρακτήρων μπορούν να επιλεγούν στο γούστο σας (θα σας επιτρέψουν να διακρίνετε πολλές συσκευές με βάση το V-USB συνδεδεμένο στον ίδιο υπολογιστή):

#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", "k" , "S", "", "C", "O", "M" #DEFINE USB_CFG_VENDOR_NAME_LEN 14 #DEFINE_NAME_LEN 14 #DEFINE_NAME_LEN 14 #DEFINE_NAME_LEN 14 #DEVICE_NAME_CFG_DEVICE_NAME "U", "S", "B", "E", "X", "Α" , "M", "p", "l", "e" #define usb_cfg_device_name_len 10

Μια ποικιλία από gadgets

Έχετε μια ιδέα για κάποια συσκευή; Μην βιαστείτε στην επίλυση και πηγαίνετε, και κοιτάξτε, ίσως κάποιος έχει ήδη κάνει αυτό. Εάν δεν είναι δυνατό να χρησιμοποιήσετε έτοιμα προγράμματα και πηγές, τότε τουλάχιστον δεν χρειάζεται να ξεκινήσετε τα πάντα από το μηδέν.

Για παράδειγμα, το έργο V-USB χάρη στην εξαγωγική πολιτική έχει συσσωρεύσει μια αξιοπρεπή βάση έτοιμων (συμπεριλαμβανομένων των ελεύθερα κατανεμημένων) λύσεων. Εδώ μπορείτε να βρείτε διάφορες υλοποιήσεις πληκτρολογίου, προσαρμογείς USB για joysticks, gamepads (συμπεριλαμβανομένων σπάνιων, όπως SNES / NES, Nintendo 64, Joystick ZX Spectrum, Sony Playstation 1/2) και τα παρόμοια. Οι προσαρμογείς DMX, COM και UART, I2C, Servo Ports, ασύρματες διεπαφές DCF77, IR - όλα όσα θα βοηθήσουν στη σύνδεση περισσότερων νέων συσκευών στον υπολογιστή. Οι καταγραφείς, οι πλατφόρμες για αισθητήρες και αισθητήρες, προσαρμογείς για οθόνες LCD, προγραμματιστές και φορτωτές μπορεί επίσης να είναι χρήσιμες στην οικονομία.

Το πρόγραμμα για το τσιπ είναι το στοιχειώδες!

Όταν αλληλεπιδρούν μέσω του λεωφορείου USB, ο υπολογιστής είναι η κύρια συσκευή που στέλνει περιοδικά μηνύματα μηνυμάτων ελέγχου. Ο ελεγκτής, αντίστοιχα, υποδεέστερα και πρέπει να ανταποκρίνεται στα αιτήματα. Η μορφή μηνύματος ελέγχου καθορίζεται από τη δομή USBREQUEST_T από το αρχείο USBDRV.H:

Typedef ust Usbrequest (Uchar Brevest: USBWORD_T WVALUE, USBWORD_T WINEEX, USBWORD_T.) USBRECEST_T;

Δημιουργήστε ένα αρχείο main.coc σε ένα επίπεδο με ένα φάκελο USBDRV και περιγράψτε τα απαραίτητα αρχεία κεφαλίδας, ορισμοί και μεταβλητές:

#Περιλαμβάνω. #Περιλαμβάνω. #Περιλαμβάνω. #include "usbdrv.h" #define f_cpu 12000000L // συχνότητα mk #include #Define data_out 1 // Αποστολή #define data_in 2 // Λήψη εντολών // Static Uchar Replybuf \u003d "Hello World!" Buffer, Στατική Utar Datalength \u003d 0, DataReceived \u003d 0;

Στο Main.c, αντικατέστησε τη λειτουργία USBFUNCTUTET, η οποία καλείται αυτόματα την παραλαβή μιας νέας αίτησης:

USB_Public Data (USBREQUEST_T * RQ \u003d (κενό *) Δεδομένα; \u200b\u200bΔιακόπτης (RQ-\u003e Breveest) (Case Data_OUT: // Επεξεργασία της εντολής δεδομένων USBMSGPTR \u003d Replybuf, // Καθορίστε το buffer buffer (Replybuf); / / Μέγεθος Buffer: // επεξεργασίας Datalength \u003d (UCRAR) επεξεργασία δεδομένων RQ-\u003e WLENGENT.WORD; // Λάβετε το μήκος DataReceived \u003d 0; // κλήσεις USBfunctionWrite Θα υπάρξουν πολλά αν (datalenth\u003e sizeof (Replybuf)) // Ελέγξτε το μήκος της υπερχείλισης \u003d μέγεθος (Replybuf), επιστρέψτε USB_NO_MSG, // Επιστροφή 255) Επιστροφή 0;)

Όπως μπορεί να δει από την καταχώριση, ο ευκολότερος τρόπος αποστολής δεδομένων στον υπολογιστή είναι να ορίσετε την τιμή του δείκτη USBMSGPTR στο ρυθμιστικό RAM (Replybuf), όπου τα δεδομένα βρίσκονται και στη συνέχεια επιστρέψτε το στο μήκος. Το μέγεθος του ρυθμιστή δεν πρέπει να υπερβαίνει τα 254 bytes. Για το Attiny2313 με τα 128 bytes του RAM, αυτό είναι αρκετό. Για περισσότερες λειτουργικές συσκευές, υπάρχει ένας δεύτερος τρόπος - αντικατέστησε τη λειτουργία USBFunectionRead.

Για να πάρετε τα δεδομένα, πρώτα, θα πρέπει να αφαιρέσετε το μήκος του μηνύματος από το πεδίο ερώτησης του WLIGNT στο πεδίο WLITNT και να το αποθηκεύσετε στη μεταβλητή Global Datength. Δεύτερον, στο main.c απαιτείται να παρακάμψει τη λειτουργία USBfunctionWrite που έχει σχεδιαστεί για να επεξεργάζεται τα ληφθέντα δεδομένα και να καλέσετε αυτόματα (και προφανώς αρκετές φορές) εάν το USBFunctionsetup επιστρέφει την τιμή του USB_NO_MSG (255):

USB_Public Ucher * Δεδομένα, Len Uchar (Uchar i, // Αποθηκεύστε το ληφθέν τμήμα δεδομένων στο για (i \u003d 0, dataRcive< dataLength && i < len; i++, dataReceived++) replyBuf = data[i]; return (dataReceived == dataLength); }

Στην πραγματικότητα, η λειτουργία USBfunctionwrite ασχολείται με το γεγονός ότι συμπληρώνει το ρυθμιστικό Replybuf με τα ληφθέντα δεδομένα.

Με την ευκαιρία, για να εργαστείτε αυτή τη μέθοδο, πρέπει να κάνετε αλλαγές στο Usbconfig.h:

#Define usb_cfg_implement_fn_write 1.

Λοιπόν, η τελευταία λειτουργία υλικολογισμικού - κύριο:

Int Main () (Usbinit (); // Αρχικοποιήστε το USB USBDEVICONNECONECONCE (); // Συνδέστε τη συσκευή SEI (), // επιτρέπουν τις διακοπές // σε έναν άπειρο κύκλο να περιμένετε τα μηνύματα ελέγχου ενώ (1) USBPoll (); Επιστροφή 0;)

Χρησιμοποιούμε Usart / UART

Μια καλή εναλλακτική λύση για το λογισμικό / το υλικό USB χρησιμοποιεί μια δημοφιλή διεπαφή USART / UART με μετατροπέα τρίτων αυτού του πρωτοκόλλου σε USB, το οποίο μπορεί να εκτελεστεί, για παράδειγμα, με βάση το τσιπ FT232RL.

Libusb: και δεν ντυμένος, και όχι γυμνός

Ρωτάτε: Πρέπει να γράψετε ένα πρόγραμμα οδήγησης για ένα λειτουργικό σύστημα υπολογιστή για να συνδέσετε μια συσκευή USB; Εάν χρησιμοποιείτε libusb, μπορείτε να κάνετε χωρίς να εφαρμόσετε μια πλήρη μονάδα πυρήνα. Το Libusb είναι μια βιβλιοθήκη ανοιχτού κώδικα που σας επιτρέπει να προγραμματίσετε γρήγορα, πρώτον, να αναζητήσετε μια συσκευή στο λεωφορείο και δεύτερον - την ανταλλαγή δεδομένων με αυτό.

Στο πλαίσιο της βιβλιοθήκης Linux και τα απαραίτητα αρχεία κεφαλίδας μπορούν να ληφθούν από τον πηγαίο κώδικα. Και είναι καλύτερο να χρησιμοποιήσετε το πρότυπο αποθετήριο της διανομής σας. Για το Debian / Ubuntu, για παράδειγμα, έτσι:

$ sudo apt-get install libusb-dev

Υπάρχει επίσης ένα λιμάνι libusb κάτω από τα Windows - libusb-win32. Σε αντίθεση με το όνομα του έργου, υποστηρίζεται επίσης 64-bit OS από τη Microsoft (ξεκινώντας από την έκδοση 1.2.0.0).

Αλλά το libusb είναι ένα ξεχωριστό θέμα συνομιλίας. Νομίζω ότι με τον προγραμματισμό για τον υπολογιστή που ξέρετε και μπορείτε να το καταλάβετε. Ως εκ τούτου, θα είμαι σύντομη. Δημιουργήστε ένα αρχείο USBTEST.C και αρχίστε να το γεμίζετε με περιεχόμενο. Πρώτον, τα απαραίτητα αρχεία κεφαλίδας και ορισμοί:

#Περιλαμβάνω. [...] // Για τον υπολογιστή, η έννοια των εντολών αντιστρέφεται, // αλλά τα σύμβολα παραμένουν τα ίδια #define data_out 1 #define data_in 2

Usbopemdevice Λειτουργία για την προετοιμασία της συσκευής:

USB_INIT (); // Αρχικοποιήστε το USB USB_FIND_BUSSES (); // Βρείτε usb_find_devices () ελαστικά. // Βρείτε συσκευές // Side Όλα τα ελαστικά για (λεωφορείο \u003d USB_GET_BUSSES (), λεωφορείο, λεωφορείο \u003d λεωφορείο-\u003e επόμενο) (// overbid όλες οι συσκευές για (dev \u003d bus-\u003e συσκευές, dev; dev \u003d dev-\u003e Επόμενο) (// Εάν ο πωλητής και τα αναγνωριστικά του προϊόντος δεν ταιριάζουν ... αν (dev-\u003e descriptor.idvendor! \u003d Προμηθευτής || dev-\u003e descripttor.idproduct! \u003d Προϊόν) Συνεχίστε; // ... Περάστε αυτή την επανάληψη // Προσπαθήστε να πάρετε έναν περιγραφέα συσκευών (! (Λαβή \u003d USB_OPEN (DEV)) (FPRINTF (STERDR, "% S \\ N", USB_TRERROR ()), Συνέχεια;) Λαβή επιστροφής; // Επιστρέψτε έναν περιγραφέα)) / / συσκευή δεν βρέθηκε επιστροφή null;

Όπως μπορεί να δει, οι παράμετροι Usbopeendevice είναι τα αριθμητικά αναγνωριστικά και συσκευές του κατασκευαστή. Εάν η συσκευή υπάρχει στο δίαυλο, ο περιγραφικός του επιστρέφει. Εάν οι συσκευές στο V-USB θα είναι κάπως - θα πρέπει να προσθέσετε τη σάρωση των συμβολικών ονομάτων του προμηθευτή και του προϊόντος.

Και η κύρια λειτουργία της κύριας λειτουργίας της κονσόλας κονσόλας USTTEST:

Int Main (Int Argc, Char ** ARGV) (// Περιγραφέας USB_DEV_HANDLE * ΧΕΙΡΟΠΟΙΗΤΟ \u003d NULL, INT NBYTES \u003d 0; Char Buffer, // Ψάχνουμε για μια διάταξη λαβής \u003d Usbopendevice (0x16c0, 0x05dc); αν (λαβή \u003d \u003d null) (fprintf (stderr, "δεν μπόρεσε να βρει συσκευή USB! \\ n"); έξοδος (1);) // out Argument - Λάβετε δεδομένα από το αν "strcmp (ARGV, OUT") \u003d\u003d 0) (NBYTES \u003d Usb_control_msg (λαβή, usb_type_vendor | usb_recip_device | usb_endpoint_in, data_out, 0, 0, char *) buffer, μέγεθος (buffer), 5000); printf ("got% d bytes:% s \\ n", nbytes, buffer); // Argument in - Στείλτε μια συμβολοσειρά (επόμενο επιχείρημα)) αλλιώς εάν (strcmp (ARGV, "σε") \u003d\u003d 0 && ARG\u003e 2) (NBYTES \u003d USB_CYPE_MENDOR (HARD, USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_ENDPORE_OUT, Data_IN, 0, 0, ARGV , Stlen (ARGV) +1, 5000);) εάν (Nbytes< 0) fprintf(stderr, "%s\n", usb_strerror()); usb_close(handle); // Закрыть дескриптор return 0; }

Εδώ η μπάλα κανονίζει τη λειτουργία USB_CONTROL_MSG, η οποία δηλώνεται στο παρεχόμενο αρχείο USB. Έχει μια δέσμη παραμέτρων και δημιουργεί πραγματικά αυτά τα μηνύματα ελέγχου, η επεξεργασία της οποίας υλοποιείται στο υλικολογισμικό του μικροελεγκτή.

Η πρωτεΐνη στηρίζεται

Νυχτερινός αγαπημένος προσομοιωτής των ηλεκτρικών προγραμμάτων Η Proteus Isis είναι άχρηστη κατά την ανάπτυξη συσκευών με την υλοποίηση λογισμικού USB. Ο εξομοιωτής USB υποστηρίζει μόνο τις μάρκες με υποστήριξη υλικού για το παγκόσμιο σειριακό ελαστικό (για παράδειγμα, AT90USB646 ή AT90USB1286).

Συλλέγουμε, αναβοσβήνουμε, δοκιμάζουμε

Παρακάτω είναι ένα μικρό, αλλά πολύ χρήσιμο makefile, με το οποίο η εντολή από το main.c και το USBTest.ce είναι εύκολο να πάρει το υλικολογισμικό για το τσιπ - main.hex και το binar της USTTEST UTITY:

CC \u003d AVR-GCC OBJCOPY \u003d AVR-OBJCOPY CFLAGS \u003d -WALL -OS -OUSBDRV -MMCU \u003d ATTLY2313 OBJFLAGS \u003d -J.TEXT -JECTS \u003d USBDRV / USBDRV.O USBDRV / ODBDRV / USBDRVASM .o main.o cmdline \u003d USTTEST # Σκοπός: Συλλέξτε όλα τα: main.hex $ (cmdline) # Συνέδριο ενός βοηθητικού υπολογιστή $ (cmdline): USBTEST.c gcc -i/libusb/include -l ./libusb/include -l ./libusb/ LIB / GCC -O -WALL USBTEST.c -OO USBTEST -LUSB # Clear Project από τον δυαδικό καθαρό κώδικα: $ (RM) * .O * .HEX * usbdrv / *. O # Αποκτήστε το αρχείο υλικολογισμικού από ένα Elf Αρχείο%. hex:% {% $ (objcopy) $ (objflags) $ (objflags) $< [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου] # Συναρμολόγηση αρχείων ELF main.elf: $ (αντικείμενα) $ (cc) $ (cflags) $ (αντικείμενα) -ο [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου] # Συναρμολόγηση V-USB $ Βιβλιοθήκη (Αντικείμενα): USBDRV / USBCONFIG.H # C στο κώδικα αντικειμένων% .O:% .c $ (cc) $ (cflags) -c $< -o [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου] # Asm στον κώδικα αντικειμένου% .O:% .s $ (cc) $ (cflags) -x συναρμολόγηση-με-cpp -c $< -o [Προστατεύεται μέσω ηλεκτρονικού ταχυδρομείου]

Για να ρίξετε το υλικολογισμικό σε ένα μικροελεγκτή χρησιμοποιώντας τον προγραμματιστή USTBOTINE, πληκτρολογήστε:

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

Στην Avrdude, οι ασφάλειες δεν είναι σαφώς καθορισμένες, αλλά μπορούν εύκολα να υπολογιστούν σε έναν από τους ηλεκτρονικούς αριθμομηχανές.


Συνδέουμε τη συσκευή στον υπολογιστή και ελέγξουμε τον τρόπο με τον οποίο λειτουργεί (USTTEST χωρίς παράμετρο διαβάζει τη συμβολοσειρά, In - Γράφει την καθορισμένη συμβολοσειρά στο Buffer Chip):

$ sudo ./usbtest στο all_ok $ sudo ./usbtest out

Ένα κουτάλι πίσσας

Το λογισμικό USB δεν είναι πανάκεια. Οι εφαρμογές λογισμικού έχουν συνήθως ορισμένες απλουστεύσεις, όπως η έλλειψη ελέγχου του ελέγχου και της συμμετρίας του καναλιού, η οποία επηρεάζει δυσμενώς την ανοσία θορύβου. Επίσης, συνήθως οι βιβλιοθήκες λογισμικού χρησιμοποιούν λειτουργίες USB χαμηλής ταχύτητας. Ναι, και ο κώδικας της βιβλιοθήκης USB "τρώει" και χωρίς τη μικρή μνήμη του τσιπ.

Peep ...

Στο λογικό επίπεδο, το πρωτόκολλο USB είναι στην πραγματικότητα δεδομένα πακέτου δεδομένων πολλαπλών επιπέδων. Αυτό δεν είναι δύσκολο να σιγουρευτείτε (και ταυτόχρονα να μάθετε πολλά ενδιαφέροντα για το USB), χρησιμοποιώντας τον αναλυτή πρωτοκόλλων δικτύου Wireshark. Προηγουμένως κατεβάστε το πρόγραμμα οδήγησης οθόνης USB:

$ sudo modprobe usbmon

Τώρα στη λίστα των διεπαφών Wireshark, μπορείτε να επιλέξετε λεωφορείο USB. Προβολή αριθμού ελαστικού συσκευής μπορεί να είναι, για παράδειγμα, σε κούτσουρα.

συμπέρασμα

Ελπίζω αφού μάθετε να στέλνετε δεδομένα μεταξύ του υπολογιστή και του Microcontroller AVR, το πάθος σας για τα ηλεκτρονικά ξυπνά με μια νέα δύναμη, αναπαραγωγή πολλές πρωτότυπες και χρήσιμες συσκευές. Παραμένει μόνο για να σας ευχηθώ την επιτυχία σε αυτό το περίπλοκο, αλλά ενδιαφέρον τομέα.

Project Olof Lagerquist, ένα εξαιρετικό πρόγραμμα για την εξομοίωση δίσκων, αλλά επειδή μπορεί να συγχωρήσει δίσκους, αλλά να μην δημιουργήσει μια μονάδα flash ή μια δισκέτα. Οι δίσκοι δημιουργούνται σε εικονική μνήμη, μπορείτε να τα ξεφορτώσετε φυσικά σε εικόνες αρχείων. Μετά την εγκατάσταση, το πρόγραμμα διατίθεται από τον πίνακα ελέγχου PC.

Κάντε κλικ στο "OK" Όλη η εικονική εικόνα είναι έτοιμη.

Μορφή
Η εικόνα μπορεί να αποθηκευτεί και να τοποθετηθεί εάν είναι απαραίτητο. Πού θα έρθει σε εύχρηστο; Για παράδειγμα, για το τεμπέλης σε μια τέτοια εικονική μονάδα flash, μπορείτε να ρίξετε πιστοποιητικά για cryptopro)) ή να χρησιμοποιήσετε ως δίσκο σε μνήμη RAM για να αποθηκεύσετε μια μνήμη cache, αρχείο τηλεειδοποίησης και άλλα πράγματα.
Υπάρχει επίσης εναλλακτική GUI -

Αυτόματη σύνδεση:
Echo off
rem θέση σε αυτόματη πρόσβαση για αυτόματη βάση
c: \\ Windows \\ System32 \\ imdisk.exe -a -f "% programfiles% \\ flash.img" -m f: -o rem

Ορισμένες παραμέτρους γραμμής εντολών:

imdisk.exe -e -s 300m -m b: - μεγέθυνση ενός δίσκου B 300 MB

imdisk -a -t file -o ro-m: -f c: \\ boot.img - Τοποθετήστε το boot.img δίσκο y, μόνο ανάγνωση

imdisk -a -t αρχείο -m y: -f c: \\ boot.img - Τοποθετήστε το δίσκο boot.img y, μόνο ανάγνωση / εγγραφή

imdisk -d -m y: - αποσυναρμολογήστε τη μονάδα δίσκου y

imdisk -a -s 150m-m #: -p "/ fs: ntfs / y / q / v: imdisk - Δημιουργήστε ένα δίσκο 150 MB, η εμφάνιση της πρώτης ελεύθερης, μορφοποίησης σε NTFS, IMDISK Ετικέτα δίσκου

imdisk -a -a -s 10% -m #: -p "/ fs: ntfs / y / q / v: imdisk - Επίσης, όπως το προηγούμενο, μόνο το μέγεθος υποδεικνύεται ως 10 τοις εκατό της ελεύθερης μνήμης.

imdisk -a -s -500m -m #: -p "/ fs: ntfs / y / q / v: imdisk - Επίσης, όπως το προηγούμενο, μόνο το μέγεθος υποδεικνύεται με ένα σύμβολο μείον, δηλαδή ένας ίσος όγκος ελεύθερης μνήμης μείον το καθορισμένο μέγεθος. Με 1200 MB ελεύθερης μνήμης, το μέγεθος του δίσκου θα είναι 1200-500 \u003d 700MB

imdisk.exe -a -t proxy -o IP -F 127.0.0.1:80-m z: - Χρησιμοποιήστε το διακομιστή, που βρέθηκαν στο Internet, δεν ελέγχονταν πραγματικά.

A - Σύνδεση Wirth. δίσκος.

D - Απενεργοποίηση Wirth. δίσκος.

E - Επεξεργασία Wirth. δίσκος.

_________________________

Β - Καθορίστε την αντιστάθμιση, δηλαδή η αρχή των δεδομένων στο δίσκο εμφανίζεται για δίσκους που δημιουργούνται σε διαφορετικά προγράμματα, στις εικόνες των οποίων πρέπει να παραλείψετε τα αρχικά χαρακτηριστικά στο αρχείο.

S - το μέγεθος του εικονικού δίσκου. Το μέγεθος είναι ο αριθμός των bytes εάν το επίθεμα Α (Auto), Β (ποσότητα 512 byte μπλοκ), k (χιλιάδες byte), m (εκατομμύρια byte), g (δισεκατομμύριο byte), k (kilobyte), k (kilobyte), k (kilobyte), k (kilobyte), K (κιλόβιο), , M (megabyte), g (gigabyte) ή t (terabyte). Χίλιες bytes και kilobytes, διαφέρουν σε αυτό σε kilobaite 1024 byte και όχι 1000. Για παράδειγμα. -s 150m ή -s 10% - 10 τοις εκατό της ελεύθερης μνήμης. Παράμετρος -500m - Με ένα σήμα μείον καθορίζει το μέγεθος του δημιουργού δίσκου ως όγκο ελεύθερης μνήμης μείον το καθορισμένο μέγεθος.

O - Ορισμός επιλογών, που εφαρμόζονται σε συνδυασμό με τις παραμέτρους που καθορίζονται παρακάτω

rO - μόνο ανάγνωση

rW - Διαβάστε / εγγραφή

rEM - Εγκαταστήστε ως δίσκος αλλαγής ταχυτήτων (μονάδα flash). Αυτό καθορίζει τις ιδιότητες δίσκου, την προσωρινή αποθήκευση και ούτω καθεξής.

fix - Ορίστε ως μόνιμο, σταθερό δίσκο (σε αντίθεση με το REM)

cD - Δημιουργία εικονικού CD-ROM / DVD-ROM.

fD - Δημιουργία δισκέτας. Προεπιλεγμένο μέγεθος 160k, 180k, 320k, 360k, 640k, 720k, 820k, 1200k, 1440k, 1680k, 1722k, 2880k, 123264k ή 234752K.

hD - Δημιουργία ενός σκληρού τμήματος.

iP - παράμετρος για σύνδεση σε διακομιστή μεσολάβησης.

comm - Σύνδεση σε διακομιστή μνήμης μέσω θύρας COM.

________________

M - Ορίζει το γράμμα της μονάδας δίσκου. Για παράδειγμα -M Β: ή -M Y: ή -M #: - το πρώτο ελεύθερο γράμμα του δίσκου.

F - Όνομα αρχείου Wireth. δίσκος, για παράδειγμα -F C: \\ boot.img ή -f \\\\ server \\ share \\ image.bin ή -F \\ Device \\ harddisk0 \\ partition1 \\ image.bin - Τέλος, όταν το γράμμα του δίσκου δεν έχει εκχωρηθεί και ορισμό από τον σκληρό αριθμό, ο αριθμός του αριθμού διαμερίσματος (λογικός δίσκος) και ο πραγματικός τρόπος.

11

Έχω μια εφαρμογή Linux για την οποία θα ήθελα να αυτοματοποιήσω ορισμένες δοκιμές και η κατάστασή της θα πρέπει να ποικίλει ανάλογα με την κατάσταση ορισμένων συσκευών, δηλαδή συσκευές USB, συσκευές WLAN, συσκευές WAN. Ωστόσο, δεν έχουμε πλέον φυσικές συσκευές USB, WLAN, WAN, κλπ. Συσκευές, οπότε πρέπει να μάθω τη μέθοδο της δοκιμής αυτού του προγράμματος χωρίς να συνδέουμε πραγματικά τις φυσικές συσκευές, να ενεργοποιήσετε / απενεργοποιήσετε τους κλπ.

Αρχίζω με μια απλή δημιουργία μιας εικονικής συσκευής USB που μπορώ να ελέγξω από το χώρο του χρήστη, αλλά από μέρους μου υπάρχει μια θεμελιώδης έλλειψη γνώσης, που με εμποδίζει να λάβω κάποια από αυτά τα φόρουμ σε αυτά τα φόρουμ και να τα εφαρμόσω στο έργο μου . Αισθάνομαι ότι πρέπει να δημιουργήσω κάποιο είδος εικονικού οδηγού USB και στη συνέχεια να το συνδέσετε με κάποιο είδος προγράμματος χρηστών και όχι με USBFs. Ωστόσο, ακόμη και αν δημιουργώ αυτόν τον εικονικό οδηγό, πώς μπορώ να "συνδέσω" αυτή τη συσκευή από το χώρο χρήστη και να πάρω το πρόγραμμά μου να καταχωρίσει το συγκεκριμένο πρόγραμμα οδήγησης; Είναι αυτό που προσπαθώ να κάνω είναι ακόμα δυνατό;

  • 2 απάντηση
  • Ταξινόμηση:

    Δραστηριότητα

0

Μπορείτε να δοκιμάσετε την εφαρμογή σε ένα εικονικό περιβάλλον χρησιμοποιώντας το VMware; Στη συνέχεια, μπορείτε να "συνδέσετε" οποιαδήποτε εικονική συσκευή στον υπολογιστή σας στο εικονικό μηχάνημα του επισκέπτη και να δοκιμάσετε την εφαρμογή με αυτόν τον τρόπο.

8

Ο καλύτερος τρόπος είναι να χρησιμοποιήσετε προγράμματα οδήγησης και εξοπλισμού για gadgets Linux που σας επιτρέπουν να είστε μια συσκευή USB. Ο οδηγός gadget επιτρέπει σε έναν υπολογιστή να "προσποιείται" από οποιαδήποτε συσκευή. Στη συνέχεια, το δοκιμασμένο σύστημα έχει ένα καλώδιο USB OTG για ένα gadget. Δεν χρειάζεται καν να απενεργοποιήσετε το καλώδιο εάν το gadget σας έχει κατάλληλο εξοπλισμό. Το "Gadget Box" μπορεί να είναι η επιφάνεια εργασίας / φορητό σας Linux (εάν υποστηρίζει USB OTG) ή ακόμα και ένα Android-Phone ή Malina Pi. (Προσεκτικά, ότι τα καλώδια απορρόφησης USB απλά επειδή οι κρίσεις σχοινιού δεν σημαίνει ότι συνδέεται σωστά με το USB OTG.).

Αφού έχετε το δικαίωμα του Hardware USB OTG, Gadgets κουτιά Όλα λογισμικά:

1) Εάν η συσκευή δοκιμής υποστηρίζει OTG, βεβαιωθείτε ότι το gadget σας δεν προσπαθεί και δεν είναι κεντρικός υπολογιστής USB. (Στη συνέχεια, η δοκιμασμένη συσκευή σας θα γίνει πελάτης USB.) Ι.Ε. Βεβαιωθείτε ότι τα πράγματα όπως το USB_Storage δεν φορτώνονται αυτόματα.

2) Ο πυρήνας υποστηρίζει gadgets για κόμβους USB, USB-Ethernet, σειριακές θύρες USB και μονάδες USB. Απλά εκκινήστε τις επιθυμητές μονάδες στο gadget σας, και "απλά λειτουργεί". Για παράδειγμα, για να δημιουργήσετε μια μονάδα USB, κάντε κάτι σαν αυτό: "icsmod g_file_storage.ko αρχείο \u003d / dev / ram0". Η μακρά στρογγυλή πλευρά θα σκεφτεί ότι έχετε συνδέσει μια μονάδα USB.

Για τις σειριακές συσκευές, το gadget μπορεί να λειτουργήσει στον κωδικό χώρου χρήστη που "αυξάνει το σωλήνα" σε / dev / USBX "και διαπραγματεύσεις στη δοκιμή της συσκευής. (Προφανώς, ένα μόντεμ εξυγίανσης 4G ή οποιοδήποτε άλλο.)

Οι τόνοι συσκευών είναι πραγματικά "σειριακό USB" κάτω από την κουκούλα, επειδή ο κατασκευαστής ήταν πολύ τεμπέλης για να καταλάβει το USB.

3) Με μια μικρή εκ νέου συλλογή ή ρύθμιση, μπορείτε να χρησιμοποιήσετε αυτές τις καθολικές συσκευές για το gadget, την ταυτότητα ή να επιστρέψετε διάφορες σειρές του προμηθευτή κλπ. Αυτό δεν θα είναι το ίδιο με το "testing on real hardware", αλλά τουλάχιστον εσείς Δοκιμάστε μια τυπική έκδοση αυτών των συσκευών.

4) Για τους τύπους συσκευών που δεν βρίσκονται ακόμα στον πυρήνα (για παράδειγμα, Wi-Fi ή κάτι άλλο), είστε μόνοι σας. Με αρκετό ιδρώτα και δάκρυα αίματος μπορείτε να γράψετε το δικό σας τύπο gadget. (Ιδανικά, χρησιμοποιήστε όσο το δυνατόν περισσότερο στον χώρο του χρήστη και χειριστείτε μόνο κρίσιμα συστατικά στον πυρήνα ..)

Συνεχίζοντας το θέμα:
Λινάρι

Ο χρήστης στην ορολογία των προδιαγραφών) είναι ένα λογισμικό στο πλάι του συνδρομητή, το οποίο σας επιτρέπει να λαμβάνετε, να στείλετε, να δείτε και να επεξεργαστείτε ...

Νέα άρθρα
/
Δημοφιλής