Forum: Mikrocontroller und Digitale Elektronik ST USB Host Driver, STM32F401 - Probleme mit sauberer Deinitialisierung?


von Holger A. (tschip)


Lesenswert?

Hallo Zusammen,

ich versuche mich gerade am ST USB Host Driver in seiner neuen 
HAL-Version. Irgendwie ist das Teil alles andere als Robust. Überrascht 
mich auch wenig, da kaum Rückgabewerte überprüft werden.

Nun zu meinem Problem:

Ich initalisiere beim Einstecken des USB-Geräts sauber mit dem 
Init-Callback die Pipes - was im ersten Durchlauf auch sauber 
funktioniert.

Folgende Aufrufe:
 - USBH_FindInterface (...)
 - USBH_SelectInterface (...)
 - USBH_OpenPipe (...)

Stecke ich das USB-Device ab, wird das deinit-Callback aufgerufen. Im 
wesentlichen folgende Methoden

 - USBH_ClosePipe (...)
 - USBH_FreePipe (...)

Auf Nullpointer wird überall geprüft.

Das an- und abstecken geht ein/zweimal gut, dann hängt die ganze Kiste 
fest.

Man sieht das er im Hintergrund noch versucht, den 
HAL_HCD_Connect_Callback aufzurufen, diese wird aber nicht mehr an die 
USB Host Lib durchgereicht (ergo keine Klassen-Callbacks mehr 
aufgerufen).

Kenn wer von euch dieses Problem? Muss ich wirklich immer die ganze USB 
Host Lib neu starten? :-/

von Falko J. (spacefrog)


Lesenswert?

Hallo Holger,

ich habe hier das gleiche Problem. Mit MSC USB Sticks. Ein paar mal 
funktioniert das ganze und dann erkennt er die Sticks nicht mehr.

Hast du eine Lösung gefunden

>Kenn wer von euch dieses Problem? Muss ich wirklich immer die ganze USB
>Host Lib neu starten? :-/


Wie machst du das?


Gruß
Falko

von temp (Gast)


Lesenswert?

Wenn mit der aktuellen CubeMx Usb-Code für stm32f1 und f4 erzeugt wird, 
wird beim Deinitialisieren free() auf einen Pointer gerufen der gar 
keiner ist. Je nach Entwicklungsumgebenung passieren dann die tollsten 
Dinge als Folge. Kannst ja mal suchen ob solche Leichen auch in deinem 
Code versteckt sind.

Beitrag "STM32CubeMX USB-CDC Fehler im Code"

von Falko Jahn (Gast)


Lesenswert?

Das scheint hier nicht der Fall zu sein

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.