Forum: Mikrocontroller und Digitale Elektronik USB lib stm32


von Ch. K. (Gast)


Lesenswert?

Hallo,

ich verwende KEIL + stm32f4 und wollte mal in die USB Welt einsteigen. 
Jetzt frage ich mich, welche USB lib ich nutzen sollte.

Von KEIL gibts ja eine, aber leider sind da ja die Source-Codes nicht 
dabei. Aber Vertrauen in KEIL und deren Support ist hoch. Hat jemand 
schon Erfahrung mit der Lib gemacht?

Von ST gibts ja auch eine.  Ist umsonst + Source Codes... schön, aber 
mein Vertrauen in die Libs ist nicht wirklich hoch... Daher auch hier 
Frage, ob jemand damit schon gearbeitet hat und wie gut die lib so 
läuft?


Mir wäre es wichtig die SourceCodes mitgeliefert zu bekommen, so dass 
man im Falle aller Fälle doch noch selber ran kann. Hat hier jemand 
vielleicht noch andere Tips?

Danke und LG

von Ch. K. (Gast)


Lesenswert?

USB scheint ja nicht so gebräuchlich zu sein?

von Ch. K. (Gast)


Lesenswert?

**push**

von Programmierer (Gast)


Lesenswert?

Ich habe mal mit der ST USB Library gearbeitet, um die Daten vom 
Accelerometer auf dem STM32F4Discovery Board per USB zum PC zu schicken. 
Erstellung des USB-Deskriptors ist wie üblich etwas Fummelei, 
Integration der Library in das Projekt ist machbar. Beachten muss man 
einen Buffer-Overflow-Bug in der Library, denn sie speichert empfangene 
USB-Pakete immer komplett in den Empfangspuffer, selbst wenn dieser zu 
klein ist (und die Library das auch "weiß"). Daher muss der Puffer immer 
groß genug für ein komplettes Packet ( USBD_EP0_MAX_PACKET_SIZE ) sein, 
wenn man ihn an DCD_EP_PrepareRx übergibt.
Ist halt typische ST-Software-Qualität - "funktioniert irgendwie"...

von Ch. K. (Gast)


Lesenswert?

Programmierer schrieb:
> Beachten muss man
> einen Buffer-Overflow-Bug in der Library

selber rausgefunden oder stand das in irgendeinem errata sheet? wenn 
ersteres, wie schwierig einfach ist es, sich in die quelldateien 
einzuarbeiten?

von Programmierer (Gast)


Lesenswert?

Selber rausgefunden, mithilfe des Debuggers und Watchpoints... Besonders 
fies war dass der Overflow einen vtable Pointer überschrieb, und dadurch 
ein scheinbar harmloser (virtueller) Funktionsaufruf zum Absturz 
führte...

Und naja, eingearbeitet hab ich mich nicht wirklich, nur per Debugger 
die Stelle gefunden. Schau dir doch den Code einfach an und entscheide 
selbst ob du dich einarbeiten kannst...

von Ch. K. (Gast)


Lesenswert?

Programmierer schrieb:
> Schau dir doch den Code einfach an und entscheide
> selbst ob du dich einarbeiten kannst...

da führt wohl kein weg daran vorbei ;) das mit dem einarbeiten ist ja 
immer eine frage der zeit und nerven... daher hatte ich gehofft, im 
vorhinein schonmal in die richtige richtung gelotst werden zu können, 
damit man gleich mit was vernünftigen arbeitet.

vielen dank auf jeden fall für deine erfahrungswerte

lg

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

Ich bin auch gerade an der ST USB Lib dran und habe damit auch Probleme.

Ich habe es soweit hin bekommen dass ich mit einerm PC Programm Daten 
austauschen kann. Wenn jedoch STM32 seitig der TX Buffer nonstop befüllt 
wird, dann "Hängt" der STM32 im USB Interrupt fest (Empty EP Interrupt)

PC Seitig habe ich LibUSB mit einem Programm das per Timer alls 10ms den 
USB Buffer ausliest.

Ich habe schon viel debuggt, aber irgendwie finde ich den Bug nicht :-/

Weiß jemand Rat?

Ansonsten habe ich zufällig heute ein STM32F4 Demo gefunden, das WinUSB 
nutzt, und zwar so dass man keine extra INF/SYS Datei benötigt, getestet 
habe ich das noch nicht:
http://searchingforbit.blogspot.com/2014/05/winusb-communication-with-stm32-round-2.html

Quellen gibt es per SVN.

Die Beschreibung von MSDN:
http://msdn.microsoft.com/en-us/library/ff540196.aspx

Die Sachen von Keil wollte ich jetzt nicht nehmen, ist mir zu teuer für 
Hobby. Schreibe bitte was für Fortschritte Du mit USB gemacht hast.

von Ch. K. (Gast)


Lesenswert?

Markus Müller schrieb:
> Schreibe bitte was für Fortschritte Du mit USB gemacht hast

Mach ich... wird aber wohl etwas länger dauern.

vielleicht finden sich ja auch noch mehr Leute in der Zwischenzeit? mal 
schauen und lg

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.