USB Treiber XMEGA nur in 64Byte Schritten

tdeck
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 54
Beiträge: 6
Dabei seit: 05 / 2026
Betreff:

USB Treiber XMEGA nur in 64Byte Schritten

 · 
Gepostet: 12.06.2026 - 18:46 Uhr  ·  #1
Damit die Installation bei unseren Kunden keine Probleme macht, haben wir wegen dem Thema "Treiber-Signatur" den kompletten Prozess bei Microsoft durchlaufen.

Meine Windows Tools habe ich schon komplett auf den Microsoft WinUSB-Treiber umgestellt, dabei ist mir ein Problem aufgefallen.

Ich hatte im BULK Transfer Windows => XMEGA 520 Byte (512 Payload und Overhead) übertragen und die letzten 8 Byte wurden immer verschlugt, bzw. einfach mit $00 befüllt.

Wir haben das nach langen suchen jetzt soweit rausgefunden, dass wir immer 64Byte vom PC an den XMEGA senden müssen, damit die Daten auch richtig ankommen.

Code
  tRec512                = record
    Size    : Word;
    RType   : tXferTyp;
    SType   : char;
    ParmW   : Word;
    ParmL   : boolean;
    ParmB   : byte;
    Payload : Array[ 0..cPayloadSize - 1 ] of byte;
    Padding : Array[0..55] of byte;  // 56 Bytes Padding für USB Alignment    
  end;


Wir haben das jetzt soweit aufgefüllt, dass die Struktur sauber durch 64 teilbar ist.
Im Handbuch hatte ich dazu nichts gefunden, ist das so ein XMEGA-Problem oder ein alter Bug im USB-Treiber.
Gibt es evtl. eine andere Lösung / Einstellung.

Thorsten
miparo
PowerUser
Avatar
Geschlecht:
Herkunft: Germany
Alter: 60
Beiträge: 1016
Dabei seit: 09 / 2007
Betreff:

Re: USB Treiber XMEGA nur in 64Byte Schritten

 · 
Gepostet: 12.06.2026 - 19:42 Uhr  ·  #2
Hallo tdeck,
natürlich kann der Xmega auch Pakete > 64 bytes senden und empfangen.

Dazu mal mein Demo anschauen unter Demos\XMega_USBport\. , dort liegt auch ein Delphi Demo PC > Xmega

miparo
tdeck
Benutzer
Avatar
Geschlecht: keine Angabe
Alter: 54
Beiträge: 6
Dabei seit: 05 / 2026
Betreff:

Re: USB Treiber XMEGA nur in 64Byte Schritten

 · 
Gepostet: 14.06.2026 - 14:14 Uhr  ·  #3
Hallo miparo,

mit dem libusb USB Treiber hatte das ja auch funktioniert.

Mit dem WinUSB Treiber funktioniert es nur, wenn ich voll 64 Byte sende.
XMEGA => PC hat damit keine Probleme, aber PC => XMEGA bekomme ich zwar den Interrupt das die Daten abholbereit sind, aber der Empfangspuffer ist dann komplett "00". Sende ich aber immer auf 64 Byte aufgerundet vom PC stimmen die Daten.

Ich meine es ist jetzt nicht SUPER dramatisch, aber kostet halt zusätzlich Zeit bei der Übertragung.

Aber ich schaue mir noch mal das Demo an, die USB Übertragung ist bei unserer Steuerung eigentlich nur für Config-Änderungen neue Firmware auf die SDCard kopieren und etwas Steuerungen / Online Werte.

Thorsten
miparo
PowerUser
Avatar
Geschlecht:
Herkunft: Germany
Alter: 60
Beiträge: 1016
Dabei seit: 09 / 2007
Betreff:

Re: USB Treiber XMEGA nur in 64Byte Schritten

 · 
Gepostet: 14.06.2026 - 15:00 Uhr  ·  #4
Hi Torsten,
vermutlich fehlt dem WinUSB ein ZLP Cmd ?

Bei unserem Thesycon USB Treiber kann man das in der *.inf angeben :

HKR,,ShortTransferOk, %REG_DWORD%, 1


Beim WinUSB gibt es das wohl ähnlich ?

0x01 SHORT_PACKET_TERMINATE Sends a zero length packet for a write request in which the buffer is a multiple of the maximum packet size supported by the endpoint. Bulk (OUT) Interrupt (OUT)

Der Treiber weiß ja sonst nicht , das dein 514 Bytes Paket jetzt fertig ist und der Xmega auch nicht.

Alles <> Enpointsize 64 bytes macht den USB natürlich nicht gerade schneller .

Beim AVRprog ist das auch Historisch schlecht gewählt.

514 Bytes für 2 Bytes Data Count und 512 Bytes Daten, da muss ein extra Paket mit nur 2 Bytes + ZLP gesendet werden, was natürlich Zeit kostet.


miparo
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   81   95 · Page-Gen-Time: 0.021686s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI