STM32G484 USB CDC Code läuft nur wenn mit <= -O1 kompiliert

OP #8090403
Lesenswert?

Hallo,

habe ein Board (Eigenentwicklung) mit STM32G484 und würde gerne den virtuellen Comport über USB verwenden. Habe dazu den Code von Stefan Frings Webseite (https://stefanfrings.de/stm32/stm32g4.html#vcpnohal) verwendet: https://stefanfrings.de/stm32/STM32G431CB_usb_test.zip

Im ersten Schritt habe ich das Projekt "so wie es aus dem Zip-Archiv kommt" kompiliert (Die Optimierung war dabei auf -O1 eingestellt) und auf den Mikrocontroller geflasht. Es hat alles direkt funktioniert, ohne Anpassungen. Das Gerät wird damit bei jedem Anstecken sauber erkannt und sendet auch den String, welchen ich mit einem Terminal-Programm am PC empfangen kann.

Dann habe ich die Optimierung auf -O2 (und später auch auf -O3) gestellt. Damit Enumeriert das Device nicht mehr, bzw. nur noch in sehr seltenen Fällen (gefühlt 1 von 100 Ansteckversuchen klappt).

Woran kann das liegen? Ist da irgendwo ein Bug im Code?

dmesg unter Ubuntu liefert:

1
[ 7273.530542] usb 3-1: new full-speed USB device number 22 using xhci_hcd
2
[ 7273.646576] usb 3-1: device descriptor read/64, error -32
3
[ 7273.868572] usb 3-1: device descriptor read/64, error -32
4
[ 7273.976592] usb usb3-port1: attempt power cycle
5
[ 7274.356538] usb 3-1: new full-speed USB device number 23 using xhci_hcd
6
[ 7274.356872] usb 3-1: Device not responding to setup address.
7
[ 7274.560871] usb 3-1: Device not responding to setup address.
8
[ 7274.768530] usb 3-1: device not accepting address 23, error -71
9
[ 7274.768619] usb 3-1: WARN: invalid context state for evaluate context command.

Habe leider keine Ahnung, wie ich das weiter debuggen kann. Habt ihr da Tipps für mich?

Vielen Dank und viele Grüße, Georg

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren