Émulateur de disque USB. Création d'un lecteur flash virtuel sur l'exemple du programme OSFMount

Projet Olof Lagerquiste, un excellent programme d'émulation de disques, mais comme il peut tous imiter des disques, mais ne pas créer de lecteur flash ni une disquette. Les disques sont créés dans la mémoire virtuelle, vous pouvez les décharger physiquement en images de fichier. Après l'installation, le programme est disponible sur le panneau de commande PC.

Cliquez sur "OK" toute l'image virtuelle est prête.

Forme
L'image peut être sauvegardée et montée si nécessaire. Où sera-t-il utile? Par exemple, pour le paresseux d'un tel lecteur flash virtuel, vous pouvez lancer des certificats pour Cryptopro.)) Ou utiliser comme disque dans la RAM pour stocker un cache, un fichier de pagination et d'autres choses.
Il y a aussi une graphique alternative -

Connexion automatique:
Écho off
rEM Place en AutoLoad pour un montage automatique
c: \\ Windows \\ System32 \\ imdisk.exe -a -f "% programfiles% \\ flash.img" -M F: -O REM

Quelques paramètres de ligne de commande:

iMDISK.EXE -E -S 300M -M B: - Zoom d'un disque B 300 Mo

iMDISK -A -T Fichier -o ro -m y: -f c: \\ boot.img - Montez le disque boot.img Y, seulement la lecture

iMDISK -A -T Fichier -M Y: -F C: \\ BOOT.IMG - Montez le disque boot.img y, lecture / écriture seulement

iMDISK -D -M Y: - Démonter le lecteur Y

iMDISK -A -S 150M -M #: -P "/ FS: NTFS / Y / Q / V: IMDISK - Créez un disque de 150 Mo, l'affichage de la première version gratuite dans NTFS, étiquette de disque IMDISK

imdisk -a -a -s 10% -m #: -P "/ fs: NTFS / Y / Q / V: IMDISK - également comme le précédent, seule la taille est indiquée comme 10% de la mémoire libre.

imdisk -a -s -500m -m #: -p "/ fs: NTFS / Y / Q / V: IMDISK - également comme le précédent, seule la taille est indiquée avec un signe moins, c'est-à-dire un volume égal de la mémoire libre moins la taille spécifiée. Avec 1200 Mo de mémoire libre, la taille du disque sera de 1200-500 \u003d 700 Mo

imdisk.exe -a -t proxy -o ip -f 127.0.0.1:80 -M Z: - Utilisez avec le serveur, trouvé sur Internet, n'a pas réellement vérifié.

A - Connecter WIRTH. disque.

D - Désactiver le wirth. disque.

E - Edition WIRTH. disque.

_________________________

B - Spécifiez le décalage, c'est-à-dire le début des données sur le disque indiqué pour les disques créés dans différents programmes, dans les images dont vous avez besoin pour ignorer les attributs initiaux dans le fichier.

S - la taille du disque virtuel. La taille est le nombre d'octets si le suffixe A (Auto), B (Quantité 512 Blocs), K (mille octets), M (million d'octets), G (milliards d'octets), T (billets d'octets), K (kilobyte) , M (mégaoctet), g (gigaoctet) ou t (téraoctet). Mille octets et kilo-octets, diffèrent dans cela en kilobaite 1024 octets, et pas 1000. Par exemple. -S 150m ou -S 10% - 10% de la mémoire libre. Le paramètre -500m - avec un signe moins détermine la taille du disque généré sous forme de volume de mémoire libre moins la taille spécifiée.

OPTIONS O-SET, appliquées conjointement avec les paramètres spécifiés ci-dessous

ro - seule lecture

rw - lire / enregistrer

rEM - Installez comme disque à décalage (lecteur flash). Cela détermine les propriétés du disque, la mise en cache, etc.

correction - défini comme un disque fixe permanent (contrairement à la REM)

cD - Création d'un CD-ROM virtuel / DVD-ROM.

fD - Création d'une disquette. Par défaut Pour la taille de 160K, 180K, 320K, 360K, 640K, 720K, 820K, 1200K, 1440K, 2880K, 2880K, 123264K ou 234752K.

hD - Créer une section difficile.

iP - Paramètre Pour se connecter à un serveur proxy.

comm - Connexion à un serveur de mémoire via un port COM.

________________

M - Définit la lettre de lecteur. Par exemple -M B: ou -M Y: ou -M #: - La première lettre libre du disque.

F - Nom du fichier WIRTH. disque, par exemple -f c: \\ boot.img ou -f \\\\ serveur \\ partager \\ image.bin ou -F \\ périphérique \\ harddisk0 \\ partition1 \\ image.bin - Enfin, lorsque la lettre du disque n'est pas affectée et la définition par le nombre difficile, le numéro du numéro de partition (disque logique) et la voie réelle.

Parfois, il existe des situations lorsque vous devez travailler avec des services publics (comptabilité, sociale, qui nécessite la disponibilité obligatoire du transporteur externe de l'ordinateur). Ou vous avez juste besoin d'installer une nouvelle version du système d'exploitation. Mais que faire s'il n'y a pas de lecteur flash, pas de CD gratuit. Il y a une sortie! Besoin d'un programme spécial qui fonctionnera comme un lecteur flash virtuel.

Osfmount-Circle de sauvetage pour ceux qui n'ont pas de médias amovibles

Osfmount est un petit programme qui aidera à créer un lecteur. Cette application peut créer à la fois l'image à l'emploi (image) du lecteur et la RAM, qui n'existe que dans la RAM. Disque dur, disque optique artificiel, et, surtout, un lecteur flash virtuel - un programme peut monter toutes ces images. Windows 10, Windows 8, le lecteur flash USB virtuel Windows 7 sera créé sur n'importe quel système d'exploitation Windows et à la fois dans un environnement 64 bits et 32 \u200b\u200bbits. Dans le mont, vous pouvez même déterminer la lettre définie pour un disque artificiel et installer les attributs souhaités. Dans le même temps, la taille de l'utilitaire n'atteint même pas jusqu'à 2 mégaoctets, sa taille est à seulement 1,95 MB. Des minus, seul le fait que le programme ne soutient pas le russe.

Osfmount à l'aide des instructions

En utilisation, il est facile et de créer un lecteur flash ne nécessitera pas beaucoup de temps et d'effort. Donc, comment créer un lecteur flash USB virtuel à l'aide de osfmount:


De plus, dans le document, vous pouvez avoir besoin d'options ouvertes après avoir cliqué sur Actions de lecteur. Dans cette option, il y a ce qui suit:

  • Distount - démonter;
  • Format- Utilisation de cette option, vous pouvez créer un formatage;
  • SavetOimageFile - Pour enregistrer dans le format souhaité;
  • Ouvert - pour l'ouverture;
  • Définir les médias en lecture seule - interdit un enregistrement;
  • Étend - sert à se développer;
  • Définir les médias écrits est un enregistrement.

C'est pourquoi il est très facile de créer un flash USB virtuel sur l'ordinateur. Les images pour le flash virtuel peuvent choisir. Mais dans le cas d'une image amorçable, le lecteur devra le formater et l'ouvrir uniquement dans cette application.

Une version alternative de cette application est le lecteur flash virtuel, également très simple et pratique lors de la création de stockage d'informations artificielles. Leur différence est que, dans Ostmount, des options supplémentaires et en plus du flash USB, d'autres disques artificiels peuvent être effectués.

Conclusion

Maintenant, il devient clair, même s'il n'y a pas de transporteurs externes à portée de main, et ils sont très nécessaires, vous pouvez les faire créer artificiellement analogique en plusieurs clics.

Qu'est-ce que c'est et pourquoi est-ce nécessaire?
Si le magnétol dans la voiture a une entrée pour CD Chander, vous pouvez connecter un adaptateur similaire à celui-ci, il trompera la radio et il décidera que le changeur a été connecté à celui-ci et que le lecteur flash habituel avec la musique est utilisé au lieu de disques. L'adaptateur peut être géré par des moyens réguliers, y compris le contrôle du volant.

Il y avait déjà plusieurs critiques de tels adaptateurs, le plus célèbre Yatour chinois.

J'ai décidé d'aller de manière non standard, j'ai décidé d'essayer le trône russe Flipper 2.
L'évaluation globale est excellente, je suis ravi de l'achat, je recommande.

Pour plus de détails, je demande sous le chat

Préface

Il y a un simple désir - je veux écouter de la musique dans la voiture. À la radio, il est loin de toujours venir par quelque chose qui convient, porte un tas de CD de disques, et même les enregistrer constamment, fatigué.
Dans ma Peugeot 407 2007, il y a un gu (unité de tête), à \u200b\u200bl'avenir visité simplement par radio, sans USB, Bluetooth et sans entrée AUX normale.

Si la machine vaut la radio habituelle, non liée à contrôler certaines fonctions de la machine, le moyen le plus simple d'acheter un nouveau magnétophone radio. L'enregistreur de ruban radio de marque avec une entrée USB peut être acheté à une centaine d'euros. Quel montant devra dépenser pour qu'il comprend la gestion du volant.

Vous pouvez battre et joindre une entrée AUX (Audio), mais une source sonore aura toujours besoin, et le contrôle du volant devra oublier.

Options avec des émetteurs FM J'ai longtemps chuté - j'ai essayé quelques émetteurs différents, la qualité sonore n'était pas très.

Il y a un moyen d'autre, connectez-vous au magnétol à l'entrée de CD de l'adaptateur de changeur, qui permettra d'écouter de la musique à partir des lecteurs de flash, en contrôlant l'adaptateur par le moyen régulier de l'enregistreur de ruban radio, y compris le volant. Vous pouvez trouver des adaptateurs similaires de différents fabricants avec différents paramètres et mettant en vedette la qualité, la fiabilité, la commodité ou le prix.
L'adaptateur le plus célèbre est Yatur. Le plus cool, peut-être, l'American Grom Audio, qui joue, y compris FLAC. Eh bien, à un tas de quelques appareils supplémentaires - Audiolink, Xcarlink, DMC, la cesse.

Tout d'abord, j'ai commencé à regarder Yatat. Sur Ali, theties de 50 $. Mais les critiques sur l'enthousiasme d'Internet un peu pritriily. Sur la sortie linéaire adaptateur avec un niveau fixe, donc sur de nombreux enregistreurs de bande radio, le niveau de volume est sensiblement inférieur à celui de la radio. Travail parfois instable, suspendre, critique pour empêcher les fichiers étrangers sur le lecteur flash. Le nombre de répertoires pris en charge - combien de disques soutiennent la radio, dans mon cas, c'est 6.

YATOU n'a aucun site officiel, les sites d'Internet sont des sites de vendeurs. Et les informations doivent être assemblées sur des grains dans différents endroits, qui se désabonne principalement à ceux qui l'ont mis, mais leur expérience ne convient pas toujours à votre radio.
Mais j'ai eu de la chance, je suis tombé sur le vendeur biélorusse Yatour Sergei Aka SSD, qui a répondu à toutes mes questions, y compris les caractéristiques de travailler avec ma radio.
En général, cela fonctionne, mais il peut y avoir des problèmes avec le volume et le travail instable. De Sergey a d'abord entendu parler de Grom Audio et du Triome, qu'il vend aussi.

Grom Audio sur Android, prend en charge FLAC, mais il n'y a pas de modèle pour ma voiture.

Mais Troma Flipper 2 intéressé. Tout d'abord, la possibilité de régler le niveau de sortie (volume). En outre, il a une organisation beaucoup plus pratique de dossiers et il peut y avoir beaucoup plus. Et il est beaucoup moins gluchny.
En emprunté une bonne table de comparaison Yator et Trioma


Raffinement par animaux de compagnie:
1. Les fichiers étrangers n'interfèrent pas avec la lecture. Au minimum, sur un firmware.

Donc, j'ai fait mon choix. Troma !!!
Lors de l'achat d'un adaptateur similaire, vous devez choisir un modèle sous votre voiture. Plus précisément, sous la machine de voiture de votre voiture. Différents magnétol peuvent avoir différents connecteurs sous un changeur qui ne sont pas compatibles les uns avec les autres.

Où puis-je acheter Trioma?

Le site Web du fabricant a celui-ci à vendre des produits Triom. Avec l'achat d'un adaptateur en Russie ou en Biélorussie, il n'y a aucun problème. Et en Europe, où m'acheter plus facilement et ne pas avoir à personnaliser et à payer la NSO, les prix sont deux fois plus élevés, de 120EUR sans frais d'expédition.

Il a commencé à chercher des connaissances capables de m'adapter à la Russie ou à la Biélorussie. Trouvé!!! Il a trouvé un ami de Russie, qui a commandé et au début de février m'a déjà apporté un adaptateur! Oleg, merci!

Et voici l'adaptateur à la maison!



Le kit comprend l'adaptateur lui-même, le câble de connexion à la radio et au câble USB.
La longueur du câble pour la connexion à la radio n'est que de 40 cm, qui impose immédiatement des restrictions sur la disposition de l'adaptateur dans la machine - il doit être placé directement derrière la radio, avant même que la boîte à gants ne l'atteigne pas.
L'adaptateur de taille est quelque part avec une boîte de cigarette. Une boîte en plastique simple avec un câble saillant pour la connexion sous dispositifs ou un câble auxiliaire. Cependant, après avoir connecté l'adaptateur à la radio, personne d'autre ne le voit.
En outre, a pris un câble auxiliaire avec Minijack à la fin (+ 500R)


Quelques photos de plus

Connecteur de connexion de périphériques supplémentaires, câble AUX ou adaptateur Bluetooth


Maman sur l'adaptateur


Papa sur le câble


Connecteur magnétique RD4


Ne pas ouvrir


Installation

Radio RD4, hexagone révèle deux vis et obtenez la radio.

Derrière deux connecteurs appropriés, il ne fonctionnera pas sur l'un d'entre eux - vérifié;)
La photo spécifie le connecteur souhaité. En y compte, l'affichage est déjà connecté pour connecter le Chandger, retirer le connecteur installé et allumer son propre.


Nous connectons le câble avec l'adaptateur, allumez le contact et le miracle - tout a été immédiatement gagné !!! De plus, le niveau de volume est approximativement identique à celui du CD intégré.

Mais ensuite, nous commençons à penser - où afficher le câble USB. Le moyen le plus simple dans mon cas Il s'est avéré blocage du câble sous le volant dans un petit joueur au pilote de gauche.


L'adaptateur lui-même a sauté dans une niche arrière à gauche de la radio. Endroits, il y a un peu, après l'installation de la radio en place, l'adaptateur s'est avéré être serré avec des câbles, il n'était donc pas nécessaire de fixer l'adaptateur pour renforcer la consolidation.

Tous les forums écrivent que le magnétol nécessite l'activation du changeur dans le service. J'ai tout ce qu'il s'est avéré beaucoup plus facile. Après l'allumage, le magnétol lui-même a déterminé qu'un changeur est connecté à celui-ci et il est devenu possible de sélectionner via l'interrupteur d'entrée (radio / CD / changeur).
Comme il s'est avéré, l'activation n'est pas nécessaire pour la radio, mais pour l'affichage afin qu'il puisse refléter les informations pour le chargeur.
Mais il y a une demi-année, je et les Chinois, bien joué, envoyez un écran avec toutes les fonctionnalités activées. Donc, tout a fonctionné pour moi sans activation supplémentaire.

Travail de l'adaptateur

Qualité sonore. Comparable avec un lecteur CD. L'acoustique de la planche dans la voiture est tout à fait médiocre, vous n'avez donc certainement pas entendu la différence avec le lecteur CD ordinaire sur ma voiture.
Vitesse de puissance. Moins de secondes après avoir activé le contact sur un lecteur flash avec une paire de dizaines de répertoires. Il est écrit sur les forums qui avec plusieurs centaines de catalogues, la vitesse est plus petite. L'adaptateur se souvient où il a joué avant de s'éteindre et commence à jouer du même endroit. Cette propriété est précieuse pour écouter des livres audio. L'adaptateur se souvient de l'endroit des 4ème entraînements flash /
Commutateur de pistes. La fraction d'une seconde, il n'y a pas de différence dans le même catalogue ou autre catalogue qu'il y a une piste. Pendant la commutation, il n'y a pas de sons superflus.
Remplacer un lecteur flash. Avec une radio en cours d'exécution, retirez un lecteur flash et mettez un nouveau. Il est déterminé pendant la paire de secondes et commence immédiatement à jouer. Pendant le remplacement, un trille court très silencieux peut sembler.

L'adaptateur comprend le catalogue 32 dans lequel il peut y avoir 32 sous-répertoire, dans chacun d'eux peut comporter jusqu'à 99 fichiers. Mais bientôt, j'ai réalisé que le commutateur de disque ne change que les six premiers disques. Bien que dans le mode aléatoire, l'adaptateur voit tous les répertoires.

J'ai posé une question sur le forum de triométrie, le soutien a répondu très rapidement et offert les options pour organiser des annuaires. Le problème était que sur les boutons RD4, même effectuer la fonction DISC + / DISK, en réalité, ils sont envoyés à la commande DIRECT Disc Sélectionnez 1-6 à l'adaptateur. Donc, ces boutons vous ne pouvez changer que 6 répertoires racines ou 6 sous-répertoires.
Et gérer 1024 catalogues sur ma radio ne fonctionnera pas. Vous pouvez gérer seulement 32 * 6 \u003d 192 ou catalogues;)

La description dit que les boutons FF / FR effectuent une double fonction - modifier des répertoires / sous-répertoires et rembobinent.
Mais sur la piste RD4 + / piste, associée à FF / FR et pour l'adaptateur, ces boutons ont un objet triple but:
1. Presse courte - piste + / piste-
2. Appuyez sur 2-3s, appuyé sur, lorsque le son de la piste en cours disparaît - commutation du répertoire
3. Appuyez longuement sur\u003e 3sek, il y a un son sourdle accéléré - rembobiner
Le temps est approximatif, orienter vers le son

Même avant d'acheter, il a été supposé que j'écrirais un grand mégaflushka avec des centaines de répertoires. Mais maintenant, je vois qu'il est plus pratique d'avoir plusieurs lecteurs flash avec différentes sélections.
Je l'ai maintenant:
1. Étape russe 80-90s
2. Pop étrangère 80-90-E
3. instrumental

LE TOTAL. Pour de l'argent relativement petit, j'ai obtenu un adaptateur sans moteur avec une bonne qualité sonore et un simple contrôle intuitif. L'achat est très heureux, troma - bien fait !!!

Liens supplémentaires

Mini chavo.

Certaines questions sont restées en dehors de cet examen, j'ai décidé de les prendre dans un minipath distinct. Ici, je vais ajouter des questions qui surviendront dans les commentaires.
  • Qu'est-ce qui doit être fait pour les noms (noms de fichiers, tags ou au moins quelque chose) affiché à l'écran?
  • Les adaptateurs Troma seront définitivement «voir» et des balises, ainsi que des noms de fichiers et des noms de dossiers. Là où il est possible, ils affichent des chaînes de texte sur l'affichage régulier de la radio: BMW et toutes les voitures avec un pneu optique du plus. Peut-être que la sortie de texte sera bientôt implémentée pour certains périphériques Toyota / Lexus.
  • Changles de changement de CD sans problèmes en fonction de la tâche.
  • Je crains que vous soyez trompé: des chandgeurs externes sont inconnus, en plus des modèles énumérés ci-dessus, ce qui fait face à cette tâche. Les chandelles intégrées dans l'unité de tête sont une autre affaire, la sortie du texte se produit directement dans le contrôleur d'affichage, est un mécanisme complètement différent.
  • Est-il possible de connecter des périphériques supplémentaires à l'adaptateur Triom?
  • L'adaptateur peut être connecté ou un câble d'adaptateur aux mini-mini-mini-mini-mini-mini.
Je prévois d'acheter +23. Ajouter aux Favoris J'ai aimé l'examen +21 +46

Le développement de divers appareils basés sur les microcontrôleurs est une leçon digne de cet ordinateur. Sans aucun doute, une astuce utile de n'importe quel gadget sera une interface USB pour se connecter à un ordinateur. Mais que faire si la puce AVR ne fournit pas de support matérielle USB?

V-usb: taille compte

Lors du développement de votre propre gadget, il est souvent confronté à sa connexion à l'ordinateur. Je dois dire que les ports LPT et COM sont maintenant exotiques sur des cartes mères PC, sans parler des ordinateurs portables qui ont disparu ces interfaces il y a longtemps. Par conséquent, les ordinateurs modernes n'ont presque aucune alternative à l'interface USB.

Si les ressources de la puce sont utilisées pour cent pour cent, il est préférable de rechercher immédiatement les périphériques avec support matériel pour le pneu séquentiel universel (ces microcontrôleurs sont présents dans la ligne de tout fabricant). Dans d'autres cas, vous pouvez utiliser le logiciel USB.

Pour les microcontrôleurs de l'Atmel, il existe un magnifique projet V-USB qui offre une implémentation logicielle d'un périphérique USB 1.1 à basse vitesse. Le code V-USB fonctionnera sur n'importe quel périphérique AVR, qui comporte au moins 2 Ko mémoire flash et 128 octets de RAM, avec une fréquence d'horloge 12; 12.8; quinze; seize; 16,8 ou 20 MHz.

L'utilisation du produit est possible à la fois dans la licence open source GPL et sur une base commerciale. Afin de développer vos propres périphériques USB, vous devez généralement acheter quelque chose comme une licence. Mais les gars de V-usb s'occupaient de cela en achetant un couple d'identifiant de fournisseur - ID de produit et en leur permettant d'utiliser quiconque le souhaite.

La liaison matérielle pour connecter le bus USB au microcontrôleur est très simple. Si l'appareil ne consomme pas trop, il peut être alimenté directement dans le pneu (on considère que la ligne d'alimentation USB de l'ordinateur est capable de donner jusqu'à 500 mA). Étant donné que des lignes d'information (D + et D-) utilisent le niveau de signal de 3,6 V, en plus des résistances de limitation de courant, des stabilidations sont nécessaires pour correspondre à la logique de puces 5 volts. Pour désigner le type de connexion, vous devez "extraire" la tension d'alimentation à travers la résistance de 1,5 kΩ à la ligne D-.

Alternative à l'option de jumelage USB - Réduisez la tension d'alimentation du contrôleur au moyen d'une puce de stabilisation appropriée ou d'une paire de diodes. Le dernier schéma est disponible sur le site du projet V-USB.

Programmeur USBTIDY

Pour les microcontrôleurs AVR, il existe de nombreux programmeurs différents. L'USBTIDY est mentionné ici, en particulier, car il contient un logiciel USB implémentant de la même manière à V-USB. Le schéma de ce programmeur est simple: la version 2 contient deux puces et la première version n'est qu'une (Attich2313 elle-même). En raison de la description détaillée sur le site et des composants simples, l'appareil est facile à fabriquer même un débutant. L'USBTINY est compatible avec le programme AVRDUDE populaire utilisé pour programmer les microcontrôleurs AVR.

Le seul problème est de remplir le micrologiciel dans la puce de programmeur - pour cela, vous devez ... programmer. S'il y a un ordinateur avec le port LPT, vous pouvez faire l'une des options FBPRG AKA "Five Câblage", qui est du fer

Traîneaux de cuisson

Outils logiciels requis pour mettre en œuvre le micrologiciel de gadget USB le plus simple, extrêmement ascétique: Compilateur GCC-AVR, Bibliothèque AVR-LIBC, Programmeur AVRDEDE et Binutils Set pour AVR. Dans Debian / Ubuntu, tout ce dont vous avez besoin est défini par une commande:

$ sudo apt-get installer AVRDUDE BINUTILS-AVR GCC-AVR AVR-LIBC

Sur les espaces Internet sans bornes, il est facile de trouver un guide très détaillé sur V-USB et libusb (en anglais). Selon le manuel, ajouter une prise en charge USB au projet, vous aurez besoin d'un dossier USBDRV de l'archive avec la dernière version V-USB. La racine de ce dossier a un modèle de configuration USBConfig-prototype.h. Vous devez effectuer une copie de ce fichier en l'appelant USBConfig.h. Suivant - CORRECT USBCONFIG.H, spécifiant le port (D), dont les lignes seront utilisées pour des E / S, directement le nombre D + (2) et D- (3), et la fréquence (12 MHz) sur que la puce fonctionne (ATTINY2313):

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

Pour tirer parti de la licence V-USB pour le périphérique, les identificateurs numériques du fabricant et de l'appareil n'ont pas besoin d'être modifiés. Mais les noms de caractère peuvent être sélectionnés à votre goût (ils vous permettront de distinguer plusieurs périphériques basés sur V-USB connectés au même ordinateur):

#Define usb_cfg_vendor_id 0xc0, 0x16 #define usb_cfg_device_id 0xdc, 0x05 #define usb_cfg_vendor_name "N", "T", "T", "S", "G" "," E "," K "," K " , "S", ".", "C", "o", "m" #define usb_cfg_vendor_name_len 14 #define usb_cfg_device_name "u" "," B "," E "," X "," A "," A " , "M", "p", "l", "e" #define usb_cfg_device_name_len 10

Une variété de gadgets

Avez-vous une idée de certains appareils? Ne vous précipitez pas pour souder et aller et regarder, peut-être que quelqu'un a déjà fait cela. S'il n'est pas possible d'utiliser des schémas et des sources prêtes à l'emploi, alors au moins vous n'avez pas besoin de tout démarrer à partir de zéro.

Par exemple, le projet V-USB grâce à la politique autorisée a accumulé une base décente de solutions prêtes à l'emploi (y compris librement distribuées). Ici, vous trouverez ici diverses implémentations de clavier, des adaptateurs USB pour les joysticks, des gamesPads (y compris rares, tels que SNES / NES, Nintendo 64, ZX Spectrum Joystick, Sony PlayStation 1/2) et similaires. Adaptateurs DMX, com et UART, I2C, ports Servo, interfaces sans fil DCF77, IR - Tout ce qui permettra de connecter plus de nouveaux périphériques à PC. Les enregistreurs, les plates-formes de capteurs et capteurs, adaptateurs pour écrans LCD, programmeurs et chargeurs peuvent également être utiles dans l'économie.

Le programme de puce est élémentaire!

Lors de l'interaction sur le bus USB, l'ordinateur est l'appareil principal qui envoie périodiquement des messages de messagerie de contrôle. Le contrôleur, respectivement, subordonné et doit répondre aux demandes. Le format de message de contrôle est déterminé par la structure USBREQUEST_T à partir du fichier USBDRV.H:

Typedeft struct USBrequest (Uchare Brequest: Uchare Brequest; USBWord_t WValue; USBWord_t Windex; USBWord_t Wltength;) USBREQUEST_T;

Créez un fichier principal.c à un niveau avec un dossier USBDRV et décrivez les fichiers d'en-tête nécessaires, les définitions et les variables:

#Inclure. #Inclure. #Inclure. #include "usbdrv.h" #define f_cpu 12000000L // fréquence mk #include #Define data_out 1 // Envoyer #define data_in 2 // Recevoir la commande // statique UCHAR ReplyBuf \u003d "Hello World!" Tampon; Uchar DataLength \u003d 0, DataReceived \u003d 0;

Dans Main.c, remplacez la fonction USBFonctionsConctionSEUP, qui est automatiquement appelée à la réception d'une nouvelle demande:

USB_Public Uchare Data (USBREQUEST_T * RQ \u003d (VOID *) Données; Commutateur (RQ-\u003e BREQUEST) (CAS DATA_OUT: // Traitement de la commande USBMSGPTR \u003d RépondreBUF Commande de données; // Spécifier la taille de la tampon de retour de la mémoire tampon (Réponsebuf); / / renvoyer data_in Taille de la mémoire tampon: // Traitement DataLength \u003d (Uchar) Traitement des données RQ-\u003e WLENGTH.WORD; // Obtenir la longueur DataReceiveived \u003d 0; // Les appels USBFonctionwrite Il y aura beaucoup de si (DataLength\u003e Tailleof (ReplyBuf)) // Vérifiez sur la longueur d'accès de débordement \u003d Tailleof (Répondrebuf); renvoyer USB_NO_MSG; // Retour 255) Retournez 0;)

Comme on peut le voir à partir de la liste, le moyen le plus simple d'envoyer des données à l'ordinateur consiste à définir la valeur du pointeur USBMSGPTR sur le tampon RAM (Répondrebuf), où les données sont situées, puis le renvoient à la longueur. La taille de la mémoire tampon ne doit pas dépasser 254 octets. Pour Attichy2313 avec ses 128 octets de RAM, cela suffit. Pour plus de périphériques fonctionnels, il y a une seconde manière - remplacez la fonction USBFunectionRead.

Pour obtenir les données, vous devez d'abord supprimer la longueur du message du champ de requête Wlength dans le champ Longueur et enregistrez-le dans la variable globale de la longueur de données. Deuxièmement, dans Main.c doit remplacer la fonction USBfonctionwrite conçue pour traiter les données obtenues et l'appelée automatiquement (et évidemment plusieurs fois) si l'USBFonctionSetup renvoie la valeur de USB_NO_MSG (255):

USB_Public Uchar * DATA, UCHAR LEN (UCHAR I; // Enregistrez la partie de données obtenue à la (i \u003d 0; Datarçue< dataLength && i < len; i++, dataReceived++) replyBuf = data[i]; return (dataReceived == dataLength); }

En réalité, la fonction USBFUNCTIONWRITE est engagée dans le fait qu'elle remplit le tampon Répondrebuf avec les données obtenues.

Au fait, pour travailler cette méthode, vous devez apporter des modifications à usbconfig.h:

#Define usb_cfg_implément_fn_write 1.

Eh bien, la dernière fonction de firmware - principale:

Int Main () (USBinit (); // Initialiser USB USBDeviceconnect (); // Connectez le périphérique SEI (); // Autoriser les interruptions // dans un cycle infini pour attendre les messages de contrôle tandis que (1) USBPoll (); 0;)

Nous utilisons usart / uart

Une bonne alternative au logiciel / matérielle USB utilise une interface USART / UART populaire avec un convertisseur tiers de ce protocole en USB, qui peut être effectué, par exemple, sur la base de la puce FT232RL.

Libusb: Et pas habillé, et pas nu

Vous demandez: Devez-vous écrire un pilote pour un système d'exploitation informatique pour connecter un périphérique USB? Si vous utilisez libusb, vous pouvez faire sans implémenter un module de noyau à part entière. Libusb est une bibliothèque open source qui vous permet de programmer rapidement, d'abord, recherchez un périphérique dans le bus et d'autre part - l'échange de données avec elle.

Sous la bibliothèque Linux et les fichiers d'en-tête nécessaires peuvent être obtenus à partir du code source. Et il est préférable d'utiliser le référentiel standard de votre distribution. Pour Debian / Ubuntu, par exemple, donc:

$ sudo apt-get install libusb-dev

Il existe également un port libusb sous Windows - Libusb-Win32. Contrairement au nom du projet, le système d'exploitation 64 bits de Microsoft est également pris en charge (à partir de la version 1.2.0.0).

Mais librusb est un sujet de conversation séparé. Je pense avec la programmation pour PC que vous connaissez et vous pouvez le comprendre. Par conséquent, je serai bref. Créez un fichier USBTEST.C et commencez à le remplir avec du contenu. Premièrement, les fichiers d'en-tête nécessaires et définitions:

#Inclure. [...] // Pour l'ordinateur, la signification des commandes est inversée, // mais les symboles restent les mêmes #define data_out 1 #define data_in 2

Fonction USBOPEMDevice pour initialiser le périphérique:

USB_INIT (); // initialiser USB USB_FIND_BUSSES (); // trouve les pneus USB_Find_Devices (); // Trouver des périphériques // Side Tous les pneus pour (bus \u003d USB_GET_BUSSES (); bus; bus \u003d bus-\u003e suivant) (// surexploitation Tous les périphériques sur le (Dev \u003d Bus-\u003e Périphériques; Dev; Dev \u003d Dev-\u003e Suivant) (// Si le fournisseur et les identificateurs de produit ne correspondent pas ... si (dev-\u003e descriptor.idvendor! \u003d Vendeur || dev-\u003e descriptor.idproduct! \u003d Produit) Continuer; // ... Ignorer cette itération // Essayez d'obtenir un descripteur de périphérique si (! (Poignée \u003d USB_OPEN (DEV)) (FPRRTINF (STDRINTF (StDrintf (% S \\ N », USB_StrError ()); Continuer;) Retourne la poignée; // retourne un descripteur) / / périphérique non trouvé retour NULL;

Comme on peut le voir, les paramètres USBOREPENDEVICE sont les identificateurs et les appareils numériques du fabricant. Si l'appareil est présent dans le bus, son descripteur est renvoyé. Si les périphériques du V-usb seront un peu - vous devrez ajouter la numérisation des noms symboliques du fournisseur et du produit.

Et l'utilitaire de console USBTEST Fonction principale:

Int Main (int argc, char * ** argv) (// descripteur USB_Dev_handle * poignée \u003d null; int NBYtes \u003d 0; tampon de char; // Nous recherchons un périphérique de poignée \u003d USBOPENDEVICE (0x16C0, 0x05DC); si (gérer \u003d \u003d null) (fprintf (stardr, "Impossible de trouver un périphérique USB! \\ n"); sortie (1);) // Out Argument - Obtenez des données de si "STRCMP (ARGV, OUT") \u003d\u003d 0) (NBYTES \u003d USB_CONTROL_MSG (poignée, USB_TYPE_Vendor | USB_RECIP_Device | USB_ENDPOIND_IN, DATA_OUT, 0, 0, 0, 0, 0, 0, 0, TAILOFOF (tampon), 5000); Printf ("got% d Bytes:% s \\ n", NBYtes, tampon); // Argument dans - envoyer une chaîne (argument suivant)) sinon si (STRCMP (argv, "in") \u003d\u003d 0 && argc\u003e 2) (NBYtes \u003d USB_CONTROL_MSG (Poignée, USB_TYPE_Vendor | USB_RECIP_DEVICE | USB_ENDPOIND_OUT, DATA_IN, 0, 0, ARGV , SHLEN (ARGV) +1, 5000);) Si (NBYTES< 0) fprintf(stderr, "%s\n", usb_strerror()); usb_close(handle); // Закрыть дескриптор return 0; }

Ici, la balle règne la fonction USB_CONTROL_MSG, qui est déclarée dans le fichier USB inclus. Il a un tas de paramètres et crée des messages de contrôle, dont le traitement est implémenté dans le micrologiciel du microcontrôleur.

Proteus repose

Simulateur bien-aimé nocturne des schémas électriques Proteus ISIS est inutile lorsque vous développez des appareils avec une mise en œuvre du logiciel USB. Son émulateur USB ne prend en charge que les puces avec support matériel pour le pneu de série universel (par exemple, AT90USB646 ou AT90USB1286).

Nous recueillons, nous flashons, test

Vous trouverez ci-dessous un petit fabricant, mais très utile, avec lequel la commande de marque de MAINT.C et USBTEST.C est facile à obtenir le firmware pour la puce - Main.Hex et la binar de l'utilitaire USBTest:

CC \u003d AVR-GCC Objcopy \u003d AVR-OBJCOPY CFLAGS \u003d -WALL -OS -IUSIUSBDRV -MMCU \u003d ATTINY2313 Objflags \u003d -J .text -O -O -O -O -O OBJETS \u003d USBDRV / USBDRV.O USBDRV / USBDRV / USBDRVASM .o Main.O cmdline \u003d USBTest # Objectif: Récupérez tous: Main.HEX $ (CMDLINE) # Assemblée d'un utilitaire d'ordinateur $ (CMDLINE): USBTEST.C GCC -I -I ./libusb/include -l ./libusb/ Lib / gcc -o -wall usbest.c-woo usbtest -Lusb # Clear Project à partir du code de nettoyage binaire: $ (RM) * .O * .hex * .WELF *. O # obtenir le fichier de micrologiciel d'un elfe Fichier%. Hex:% .FR $ (ObjCopy) $ (Objflags) $< [Email protégé] # Assemblage de fichier elfe principal.elf: $ (objets) $ (cc) $ (cflags) $ (objets) -O [Email protégé] # Assemblage V-USB $ Bibliothèque (Objets): USBDRV / USBCONFIG.H # C à code objet% .o:% .c $ (cc) $ (CFLAGS) -C $< -o [Email protégé] # ASM dans le code d'objet% .o:% .s $ (cc) $ (CFLAGS) -X assembleur-with-cpp -c $< -o [Email protégé]

Pour verser le firmware dans un microcontrôleur à l'aide du programmateur USBTINY, tapez:

$ sudo avrdude -p T2313 -C USBTYTINY -E -U -UL Flash: W: Main.Hex: I -u Lfuse: W: 0xf: m

À AVRDUDE, les fusibles ne sont pas très clairement définis, mais ils peuvent être facilement calculés dans l'une des calculatrices en ligne.


Nous connectons le périphérique à l'ordinateur et vérifiez comment cela fonctionne (USBTest With Out Paramètre lit la chaîne, écrit la chaîne spécifiée sur le tampon de puce):

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

Une cuillère de goudron

Le logiciel USB n'est pas une panacée. Les implémentations logicielles ont généralement un certain nombre de simplifications, telles que l'absence de vérification de la somme de contrôle et de la symétrie du canal, qui affecte négativement l'immunité du bruit. De plus, généralement des bibliothèques de logiciels utilisent des modes USB à basse vitesse. Oui, et le code de la bibliothèque USB "mange" et sans la petite mémoire de la puce.

Peep ...

Au niveau logique, le protocole USB est en fait des données de paquets de données multi-niveaux. Ce n'est pas difficile de s'assurer (et d'apprendre en même temps beaucoup d'intéressant à propos de USB), à l'aide de l'analyseur de protocoles réseau Wireshark. Téléchargez auparavant le pilote de moniteur USB:

$ sudo modprobe USBMON

Maintenant, dans la liste des interfaces Wireshark, vous pouvez choisir le bus USB. Afficher le numéro de pneu de périphériques peut être, par exemple, dans les journaux.

Conclusion

J'espère qu'après avoir appris à envoyer des données entre l'ordinateur et le microcontrôleur AVR, votre passion pour l'électronique se réveille avec une nouvelle force, élevant beaucoup d'appareils originaux et utiles. Il ne reste plus que de vous souhaiter du succès sur ce domaine compliqué mais intéressant.