Le pilote Microchip USB-CDC met-il en mémoire tampon sa sortie?

varesa

Le pilote Microchip USB-CDC met-il en mémoire tampon sa sortie?


J’essaie de communiquer entre un ordinateur et un PIC32 à l’aide du pilote de périphérique CDC des bibliothèques d’applications Microchip. J’ai un problème, où si je putrsUSBUSART() quelques phrases en utilisant putrsUSBUSART() je ne reçois rien. Cependant, si j’ajoute cela à une boucle qui spams par exemple « test r n », je les reçois finalement (et au moins certaines des phrases que je voulais voir).

J’utilise minicom sur une machine Linux comme programme terminal. Si le pilote CDC ne doit pas faire cela, je devrai ensuite regarder le programme pilote / terminal hôte.

Réponses


 Chris Stratton

Il semble que vous utilisiez un appel de sortie descendant ou conçu à l’imitation de put. puts() est traditionnellement une fonction de flux et ne devrait donc pas nécessairement engager la sortie jusqu’à ce que quelque chose se produise tel que:

  • il voit un caractère de fin de ligne
  • il remplit un tampon interne
  • vous décidez d’appeler fflush () sur stdout

(et peut-être quelques autres déclencheurs connexes qui ne me viennent pas immédiatement à l’esprit)


Comme l’USB est une interface en paquets, vous pouvez également avoir un algorithme inapproprié dans le firmware pour décider quand cela vaut la peine d’envoyer un paquet.


Enfin, alors que le pilote CDC-ACM doit être indépendant du fournisseur, l’API série posix par laquelle les programmes d’application y accèdent peut être configurée pour une grande variété de comportements. Les programmes de terminal le mettent normalement dans un mode assez brut et réactif, mais si vous finissez par écrire votre propre client, vous aurez probablement besoin de quelques ajustements termios. Vous pouvez jouer avec plusieurs de ces paramètres à partir de la ligne de commande en utilisant le programme stty .

Scott Seidman

J’adore travailler avec USB. Lorsque cela ne fonctionne pas, vous devez déterminer si le problème est lié au descripteur, à votre pile USB, au reste de votre micrologiciel ou au matériel. Les outils qui peuvent vous aider à le faire au mieux sont souvent chers! Il n’y a pas grand-chose de plus satisfaisant pour moi que d’entendre le GADUNK d’un périphérique USB correctement énuméré.

Chris Stratton

En effet (moins les effets sonores du système d’exploitation grand public). J’ai appris à ne pas créer de carte connectée USB sans casser au moins un UART … pour les messages de débogage pour comprendre pourquoi l’USB ne fonctionne pas!

Chris Stratton

@varesa – par curiosité, qu’avez-vous fini par faire?


 daniel.franzini

Je conçois toujours des trucs avec au moins un port série RS232. J’essaie fortement de le connecter à l’UART que le chargeur de démarrage utilise, s’il est présent.

Les raisons:

1.) Parce qu’il peut être utilisé pour déboguer d’autres sous-systèmes (USB inclus)

2.) Parce que c’est un port fiable où je peux télécharger le firmware quand rien d’autre ne fonctionne

varesa

La carte (dev-) possède un port série avec convertisseur de niveau et un connecteur D9. Je devrais peut-être configurer cela pour déboguer le bus que j’essaie d’utiliser pour déboguer d’autres choses: D

daniel.franzini

Je pense que cela vous sera très utile.

 

#en, Le, mémoire, met-il, Microchip, pilote, sa, sortie, Tampon, USB-CDC

 

google

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *