Je traîne un problème de liaison USB depuis plusieurs années et là j'arrive au pied du mur.
Mon but :
Que ma plateforme PIC soit vue comme un device USB de type MSD (mass storage device).
Matériellement :
Plateforme PIC24FJ1024GB610 accueillant aussi une carte SD qui communique avec le PIC via SPI. Programmateur PICKit5.
Logiciellement :
XC16 sous Windows et librairie MLA, environnement MPLabX.
Ce qui fonctionne : ma plateforme tire correctement parti de la carte SD, formatée en FAT. Je peux créer, lire, effacer des fichiers, tout va bien de ce côté. Donc c'est OK du point de vue carte SD et SPI.
Ce qui ne va pas : Windows ne parvient pas à prendre en compte ma plateforme. Au mieux, il voit qu'un périphérique tente de se connecter mais signale que celui n'est pas configuré correctement. Et je pense qu'à ce moment, Windows est encore loin de vouloir accéder au système de fichier de ma plateforme.
Le problème est sans doute en amont, purement USB, mais j'ai essayé tellement de réglages et la librairie est tellement fournie que je ne sais plus par où prendre le problème. Et personne d'autre que moi ne maîtrise le sujet au boulot, je suis seul en bas niveau
Le process de connexion s'arrête lors du tests if( USBDeviceState < DEFAULT_STATE) (usb_device.c, fonction USBDeviceTasks()). Il faudrait avoir atteint ce DEFAULT_STATE pour aller plus loin, mais ce n'est jamais mon cas.
J'ai essayé en polling et par interruptions : les 2 cas échouent.
Voilà, si l'un ou l'une d'entre vous avait une expérience à partager ça pourrait m'ouvrir des horizons.
À bientôt

