Anzeige:
Ergebnis 1 bis 1 von 1

Thema: USB GadgetFS + FunctionFS: read() von Endpoint 1 bündelt Packete

  1. #1
    Registrierter Benutzer
    Registriert seit
    25.06.2019
    Beiträge
    1

    USB GadgetFS + FunctionFS: read() von Endpoint 1 bündelt Packete

    Hallo zusammen,

    ich versuche mich in letzter Zeit daran, ein SOM mit einem iMX7 als USB-Device an einem Windows 10-Rechner mit den WinUSB-Treibern anzumelden.
    Betrieben wird das SOM mit einem Yocto-Linux (Angstrom) mit Kernelversion 4.9.166. ConfigFS ist im Kernel aktiviert und libcomposite wurde geladen.

    Bein bisheriger Stand ist, dass ich mit libusbgx das Gadget einrichten, das FunctionFS mounten und schlussendlich Endpoint 0 mit den USB-Deskriptoren beschreiben kann. Das SOM meldet sich erfolgreich unter Windows mit den Endpoints 0 und 1 an und der WinUSB-Treiber wird draufgeschaltet.

    So weit so schön.

    Mein Problem ist nun das Lesen von Endpoint 1.
    Ich öffne ihn mit
    Code:
    int ep_fd = open("/ffs/ep1", O_RDWR);
    und lese von ihm mit
    Code:
    unsigned char buffer[65535];
    
    int ret = read(ep_fd, buffer, sizeof(buffer));
    Die read()-Funktion kommt aber nur aller 4 empfangener USB-Pakete zurück. Dabei ist es unerheblich, ob ich 4 Datenpakete oder 1 Daten- und 3 Zero-Pakete schicke. Auch die Größe der Pakete spielt keine Rolle.

    Ein anderes SOM mit einem Snapdragon 410 von Qualcomm zeigt dasselbe Verhalten.

    Weiß jemand, wie ich den Endpoint so konfigurieren kann, dass ich auch ein einzeln empfangenes USB-Paket aus dem Endpoint auslesen kann? Nach jedem Paket 3 Zero-Pakete schicken zu müssen fände ich jetzt nicht so elegant ...

    Viele Grüße,
    Mowlwurf
    Geändert von Mowlwurf (02-07-2019 um 13:13 Uhr)

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •