Forum: Mikrocontroller und Digitale Elektronik STM32F4 USB CDC


von Patrick B. (p51d)


Lesenswert?

Hallo miteinander

Ich möchte mich ein wenig in die USB-Welt einarbeiten. Leider stellt 
sich dies als äusserst schwierig. Es gibt eine grosse Lib, und auch 
Beispiele, aber ja...

Ich verwende die STM32_USB-Host-Device_Lib_V2.1.0 und möchte ein VCP zum 
laufen bringen. Aber ich habe bis jetzt niergnds ein lauffähiges 
Beispiel gesehen, dass ein wenig Licht ins Dunkle bringt (nichteinmal 
das Beispiel bei der Lib ist gut Dokumentiert).

Kann mir jemand ein wenig auf die Sprünge helfen?

MFG
Patrick

von Lothar (Gast)


Lesenswert?

Ist zwar für LPC1xxx aber gut dokumentiert:

VirtualComPort

https://www.olimex.com/Products/ARM/NXP/LPC-P1343/resources/LPC-P1343_Examples.zip

von Thomas W. (diddl)


Lesenswert?

Ich habe einen CooCox Beispielcode aus dem CooCox Forum für das 
Discovery F4. Der funktioniert tadellos:

https://rapidshare.com/#!download|150p8|3892093798|STM32F407VGT6_Cdc.zip|486|0|0

von Patrick B. (p51d)


Lesenswert?

Thomas Winkler schrieb:
> Der funktioniert tadellos:

Hallo

Danke für die Antworten.
Leider muss ich dir da wiedersprechen. Bei mir gibt es folgende 
Fehlermeldung:
1
../src/usb_conf.h:113:6: error: #error "USB_OTG_HS_CORE or USB_OTG_FS_CORE should be defined"
2
../src/usb_conf.h:126:6: error: #error "USE_USB_OTG_HS or USE_USB_OTG_FS should be defined"
3
..\Libraries\STM32_USB_OTG_Driver\src\usb_core.c: In function 'USB_OTG_CoreInitDev':
4
..\Libraries\STM32_USB_OTG_Driver\src\usb_core.c:1201:27: warning: variable 'txfifosize' set but not used [-Wunused-but-set-variable]
5
..\Libraries\STM32_USB_OTG_Driver\src\usb_core.c:1200:27: warning: variable 'nptxfifosize' set but not used [-Wunused-but-set-variable]
6
Build error occurred, build is stopped

Ich weiss nicht, ob ich mich nur unendlich blöd anstelle, oder ob die 
Welt des USB (was mitlerweile schon in der Version 3.0 besteht und seit 
über 14 Jahren existiert und fast in jedem Gerät vorhanden ist) so 
komplex ist.
http://www.st.com/internet/com/TECHNICAL_RESOURCES/TECHNICAL_LITERATURE/USER_MANUAL/CD00289278.pdf
Hier wird zwar schön erklährt, was welcher Treiber macht, welche 
Funktionen in welchen Files anzutreffen sind und was sie in etwa machen. 
Aber wie ich das ganze zusammen bringe, wird nirgends erwähnt: Welche 
Lib, welche Files muss ich einbinden und wo muss ich welche defines 
setzten damit ich schlussendlich im Main die wichtigen Funktionen (Init, 
send, get...) nutzen kann.
Als ich einmal bei einem Kollegen zugeschaut habe, wie der eine 
USB-Verbindung einrichtet, brauchte dieser nur das Framework 
einzubinden, die Defines anzupassen und noch 4-7 Funktionen im Main 
aufzurufen, damit alles lief. Ich selber habe das leider nie zum laufen 
gebracht.

Also, was mache ich falsch?
Welche Files muss ich wo und wie einbinden damit das ganze läuft? Und 
welche Defines müssen wo gemacht werden?

MFG
Patrick

von This is a required field (Gast)


Lesenswert?

>Also, was mache ich falsch?

Du stellst überflüssige Fragen im Forum, anstatt die  Fehlermeldungen zu 
lesen.

von Lothar (Gast)


Lesenswert?

Es gibt 3 unabhängige USB Controller: OTG, Host, Device.

Für Virtual COM Port braucht es nur USB Device also folgendes:

cd_class.c : CommunicationDeviceClass : UsbCdcInit()
usb_dev-descr.c : UsbStandardDeviceDescriptorStr etc.
usb_hw.c : USB Device Controller : USB_ConnectRes()
usb_hooks.c : USB Device Controller : USB_INTR_ENTRY_HOOK etc.
usb_t9.c : USB Device Controller : UsbCoreInit()
usb_buffer.c : USB Device Controller FIFO/DMA : USB_IO_Data()

USB Device geht mit oder ohne DMA.

von Tim1717 (Gast)


Lesenswert?

saug dir das stm32 inemo projekt da ist ein cdc vcom source der funzt

von Patrick B. (p51d)


Lesenswert?

Also ich bin mitlerweile (nach ca 3 Tagen) zum Schluss gekommen, dass 
die Lib von ST überhaupt nichts taugt. Ich habe kein einziges als 
lauffähiges Beispiel selber compilieren können, und sobald ich anfange, 
die Files selber nachzubauen kommen tonnenweise Fehler von der Lib, dass 
dies und das nicht Definiert sei und das dies unbekannt sei, selbst dass 
gewisse Pointer-Variablen nicht gingen...

Neuste Fehler sind diese:
1
..\Libraries\STM32_USB_OTG_Driver\inc/usb_otg.h:50:26: error: unknown type name 'USB_OTG_CORE_DEVICE'
2
..\Libraries\STM32_USB_OTG_Driver\inc/usb_otg.h:51:36: error: unknown type name 'USB_OTG_CORE_DEVICE'
3
..\Libraries\STM32_USB_OTG_Driver\src\usb_otg.c:167:17: error: static declaration of 'USB_OTG_HandleOTG_ISR' follows non-static declaration
4
..\Libraries\STM32_USB_OTG_Driver\src\usb_otg.c:81:10: note: previous declaration of 'USB_OTG_HandleOTG_ISR' was here
5
..\Libraries\STM32_USB_OTG_Driver\src\usb_otg.c: In function 'USB_OTG_HandleOTG_ISR':
6
..\Libraries\STM32_USB_OTG_Driver\src\usb_otg.c:170:3: error: unknown type name 'USB_OTG_GOTGCTL_TypeDef'
und noch viele mehr, die in Zusammenhang mit USB_OTG_CORE_DEVICE stehen. 
Und diese Variable findet man in der ganzen Lib nur in der Datei 
usb_otg.h/c
1
void USB_OTG_Switchback (USB_OTG_CORE_DEVICE *pdev);
2
uint32_t  USB_OTG_GetCurrentState (USB_OTG_CORE_DEVICE *pdev);

Ich werde mir einmal das Projekt ansehen... aber bis jetzt bin ich nicht 
wirklich begeistert von dem Support den ST bietet und schon gar nicht 
von den Libs die sie zur verfügung stellen.

Oder liegts an meiner IDE (Atollic TrueStudio), wobei ja Beispiele 
speziell auch auf diese IDE angepasst wurden und die laufen auch nicht.

von Ersi (cell85)


Lesenswert?

Ich benutze keil und bei mir gehts einwandfrei.  schaut aus als würde 
bei dir was fehlen.

von Ersi (cell85)


Angehängte Dateien:

Lesenswert?

bitte sehr

von Pit (Gast)


Lesenswert?

>Also ich bin mitlerweile (nach ca 3 Tagen) zum Schluss gekommen, dass
>die Lib von ST überhaupt nichts taugt.
Das denke ich auch jeden Tag wenn ich irgendwas nicht verstehe.

von Patrick B. (p51d)


Lesenswert?

Pit schrieb:
>>Also ich bin mitlerweile (nach ca 3 Tagen) zum Schluss gekommen, dass
>>die Lib von ST überhaupt nichts taugt.
> Das denke ich auch jeden Tag wenn ich irgendwas nicht verstehe.

Ich lach mich kaputt. das ist weder konstruktiv noch hilfreich, also 
enthalte dich bitte in Zukunft mit soch unnötigen Kommentaren, da du 
dich allem anschein nach sowieso nicht mit dem Thema befasst hast.

Sven S. schrieb:
> schaut aus als würde bei dir was fehlen.

Ich habe das ganze Projekt so wie du es verlinkt hast eingebunden und 
versucht zu compilieren. ABER USB_OTG_CORE_DEVICE ist in den neuen Libs 
niergends mehr anzufinden. Ich habe jede Datei der Lib 2.1 und 3.4 
durchsucht und es ist wird nur in der Datei usb_otg.h sowie usb_otg.c zu 
finden. Aber es wird niergends deklariert.
Ebendso gibt es viele neue Deklarationen welche ebenfall Fehler 
produzieren...
Also entweder sind die Compiler komplett unterschiedlich oder die Lib 
ist wirklich voller Fehler.

von Ersi (cell85)


Lesenswert?

downloade dir doch mal bitte die projekte des großen stm32f4 eval board, 
jenes mit display,lan, etc...
dort gibts projekte mit OTG etc. die lassen sich auch kompilieren.

du weißt schon das wenn du CDC haben willst das OTG auch gehen muss beim 
Discovery?

OTG -> role Device -> class CDC

von Patrick B. (p51d)


Lesenswert?

Hier ein kleiner Überblick über die Fehler, die ich versuche zu 
eliminieren:
1
Description  Resource  Path  Location  Type
2
'USB_OTG_CORE_HANDLE' has no member named 'otg'  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 285  C/C++ Problem
3
'USB_OTG_CORE_HANDLE' has no member named 'otg'  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 292  C/C++ Problem
4
'USB_OTG_CORE_HANDLE' has no member named 'otg'  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 402  C/C++ Problem
5
conflicting types for 'USB_OTG_InitiateHNP'  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 360  C/C++ Problem
6
conflicting types for 'USB_OTG_InitiateSRP'  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 338  C/C++ Problem
7
request for member 'b' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 198  C/C++ Problem
8
request for member 'b' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 206  C/C++ Problem
9
request for member 'b' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 222  C/C++ Problem
10
request for member 'b' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 280  C/C++ Problem
11
request for member 'b' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 317  C/C++ Problem
12
request for member 'b' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 321  C/C++ Problem
13
request for member 'b' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 345  C/C++ Problem
14
request for member 'b' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 349  C/C++ Problem
15
request for member 'b' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 374  C/C++ Problem
16
request for member 'b' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 375  C/C++ Problem
17
request for member 'b' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 383  C/C++ Problem
18
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 174  C/C++ Problem
19
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 177  C/C++ Problem
20
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 181  C/C++ Problem
21
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 197  C/C++ Problem
22
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 205  C/C++ Problem
23
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 207  C/C++ Problem
24
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 220  C/C++ Problem
25
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 273  C/C++ Problem
26
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 277  C/C++ Problem
27
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 313  C/C++ Problem
28
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 316  C/C++ Problem
29
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 342  C/C++ Problem
30
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 344  C/C++ Problem
31
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 350  C/C++ Problem
32
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 365  C/C++ Problem
33
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 368  C/C++ Problem
34
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 376  C/C++ Problem
35
request for member 'd32' in something not a structure or union  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 384  C/C++ Problem
36
static declaration of 'USB_OTG_HandleOTG_ISR' follows non-static declaration  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 167  C/C++ Problem
37
unknown type name 'USB_OTG_CORE_DEVICE'  usb_otg.h  /USB_CDC/Libraries/STM32_USB_OTG_Driver/inc  line 51  C/C++ Problem
38
unknown type name 'USB_OTG_CORE_DEVICE'  usb_otg.h  /USB_CDC/Libraries/STM32_USB_OTG_Driver/inc  line 52  C/C++ Problem
39
unknown type name 'USB_OTG_GOTGCTL_TypeDef'  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 170  C/C++ Problem
40
unknown type name 'USB_OTG_GOTGCTL_TypeDef'  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 268  C/C++ Problem
41
unknown type name 'USB_OTG_GOTGCTL_TypeDef'  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 310  C/C++ Problem
42
unknown type name 'USB_OTG_GOTGCTL_TypeDef'  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 340  C/C++ Problem
43
unknown type name 'USB_OTG_GOTGCTL_TypeDef'  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 362  C/C++ Problem
44
'USB_OTG_HandleOTG_ISR' defined but not used [-Wunused-function]  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 167  C/C++ Problem
45
'VCP_COMConfig' defined but not used [-Wunused-function]  usbd_cdc_vcp.c  /USB_CDC/src  line 328  C/C++ Problem
46
control reaches end of non-void function [-Wreturn-type]  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 403  C/C++ Problem
47
implicit declaration of function 'printf' [-Wimplicit-function-declaration]  usbd_cdc_vcp.c  /USB_CDC/src  line 330  C/C++ Problem
48
implicit declaration of function 'USB_OTG_CoreInitHost' [-Wimplicit-function-declaration]  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 290  C/C++ Problem
49
implicit declaration of function 'USB_OTG_ReadHPRT0' [-Wimplicit-function-declaration]  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 386  C/C++ Problem
50
implicit declaration of function 'USB_OTG_ResetPort' [-Wimplicit-function-declaration]  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 251  C/C++ Problem
51
incompatible implicit declaration of built-in function 'printf' [enabled by default]  usbd_cdc_vcp.c  /USB_CDC/src  line 330  C/C++ Problem
52
pointer targets in passing argument 1 of 'USBD_GetString' differ in signedness [-Wpointer-sign]  usbd_desc.c  /USB_CDC/src  line 217  C/C++ Problem
53
pointer targets in passing argument 1 of 'USBD_GetString' differ in signedness [-Wpointer-sign]  usbd_desc.c  /USB_CDC/src  line 221  C/C++ Problem
54
pointer targets in passing argument 1 of 'USBD_GetString' differ in signedness [-Wpointer-sign]  usbd_desc.c  /USB_CDC/src  line 235  C/C++ Problem
55
pointer targets in passing argument 1 of 'USBD_GetString' differ in signedness [-Wpointer-sign]  usbd_desc.c  /USB_CDC/src  line 250  C/C++ Problem
56
pointer targets in passing argument 1 of 'USBD_GetString' differ in signedness [-Wpointer-sign]  usbd_desc.c  /USB_CDC/src  line 254  C/C++ Problem
57
pointer targets in passing argument 1 of 'USBD_GetString' differ in signedness [-Wpointer-sign]  usbd_desc.c  /USB_CDC/src  line 270  C/C++ Problem
58
pointer targets in passing argument 1 of 'USBD_GetString' differ in signedness [-Wpointer-sign]  usbd_desc.c  /USB_CDC/src  line 274  C/C++ Problem
59
pointer targets in passing argument 1 of 'USBD_GetString' differ in signedness [-Wpointer-sign]  usbd_desc.c  /USB_CDC/src  line 290  C/C++ Problem
60
pointer targets in passing argument 1 of 'USBD_GetString' differ in signedness [-Wpointer-sign]  usbd_desc.c  /USB_CDC/src  line 294  C/C++ Problem
61
pointer targets in passing argument 1 of 'VCP_send_str' differ in signedness [-Wpointer-sign]  main.c  /USB_CDC/src  line 91  C/C++ Problem
62
variable 'gotgctl' set but not used [-Wunused-but-set-variable]  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 170  C/C++ Problem
63
variable 'gotgctl' set but not used [-Wunused-but-set-variable]  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 268  C/C++ Problem
64
variable 'gotgctl' set but not used [-Wunused-but-set-variable]  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 310  C/C++ Problem
65
variable 'otgctl' set but not used [-Wunused-but-set-variable]  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 340  C/C++ Problem
66
variable 'otgctl' set but not used [-Wunused-but-set-variable]  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 362  C/C++ Problem
67
expected 'uint8_t *' but argument is of type 'char *'  usbd_cdc_vcp.h  /USB_CDC/src  line 56  C/C++ Problem
68
expected 'uint8_t *' but argument is of type 'char *'  usbd_req.h  /USB_CDC/Libraries/STM32_USB_Device_Library/Core/inc  line 92  C/C++ Problem
69
previous declaration of 'USB_OTG_HandleOTG_ISR' was here  usb_otg.c  /USB_CDC/Libraries/STM32_USB_OTG_Driver/src  line 81  C/C++ Problem
70
previous declaration of 'USB_OTG_InitiateHNP' was here  usb_otg.h  /USB_CDC/Libraries/STM32_USB_OTG_Driver/inc  line 50  C/C++ Problem
71
previous declaration of 'USB_OTG_InitiateSRP' was here  usb_otg.h  /USB_CDC/Libraries/STM32_USB_OTG_Driver/inc  line 49  C/C++ Problem

Mindestens folgende typedefs fehlen in der kompletten Lib:
1
USB_OTG_GOTGCTL_TypeDef
2
USB_OTG_CORE_DEVICE

Also ich weiss ja nicht, ob das nur bei mir der Fall ist, aber diese Lib 
kann nicht laufen...

Sven S. schrieb:
> du weißt schon das wenn du CDC haben willst das OTG auch gehen muss beim
> Discovery?

Das ist mir auch klar. Die Lib ist ja auch so aufgebaut, dass Device auf 
OTG aufbaut.

von Michael A. (mukululul)


Lesenswert?

Hallo,
ich hänge an einem ähnlichem Problem. Ich versuche aus libopencm3 den 
USB support plus einem Beispiel das mit dem Projekt mitkommt und 
eigentlich funzen müsste zu komiplieren.
Bisher ohne Erfolg.
Schier endlose kompilefehler...
..\cdcacm.c: In function 'cdcacm_data_rx_cb':
..\cdcacm.c:208:2: warning: passing argument 1 of 'usbd_ep_read_packet' 
makes pointer from integer without a cast [enabled by default]
E:\code\libopencm3\include/libopencm3/usb/usbd.h:81:12: note: expected 
'struct usbd_device *' but argument is of type 'int'
..\cdcacm.c:208:2: warning: passing argument 2 of 'usbd_ep_read_packet' 
makes integer from pointer without a cast [enabled by default]
E:\code\libopencm3\include/libopencm3/usb/usbd.h:81:12: note: expected 
'u8' but argument is of type 'char *'
..\cdcacm.c:208:2: warning: passing argument 3 of 'usbd_ep_read_packet' 
makes pointer from integer without a cast [enabled by default]
E:\code\libopencm3\include/libopencm3/usb/usbd.h:81:12: note: expected 
'void *' but argument is of type 'int'
..\cdcacm.c:208:2: error: too few arguments to function 
'usbd_ep_read_packet'
E:\code\libopencm3\include/libopencm3/usb/usbd.h:81:12: note: declared 
here
..\cdcacm.c:211:3: warning: passing argument 1 of 'usbd_ep_write_packet' 
makes pointer from integer without a cast [enabled by default]
E:\code\libopencm3\include/libopencm3/usb/usbd.h:78:12: note: expected 
'struct usbd_device *' but argument is of type 'int'
..\cdcacm.c:211:3: warning: passing argument 2 of 'usbd_ep_write_packet' 
makes integer from pointer without a cast [enabled by default]
E:\code\libopencm3\include/libopencm3/usb/usbd.h:78:12: note: expected 
'u8' but argument is of type 'char *'
......
das ist nur ein Teil.
Ich hab was gefunden das dies evt. an der Yagarto Toolchain hängt.
Irgendwas mit VPS register, so ganz blick ich das nicht.
https://github.com/libopencm3/libopencm3/issues/59
Kann das sein das gnu hier eine Erweiterung hat die nicht in allen gccs 
implementiert ist?
Hier noch der erste Fehler aus der Liste mit seinen code stellen:
der Aufruf-->  int len = usbd_ep_read_packet(0x01, buf, 64);
der Prototyp --> extern u16 usbd_ep_read_packet(usbd_device *usbd_dev, 
u8 addr, void *buf, u16 len);
Sieht so aus als ob der erste Parameter beim Aufruf fehlt....

Mit welchem Comipler ist das Problem hier oben im Thread den 
aufgetretten?

Gruss
Michael

von Patrick B. (p51d)


Lesenswert?

Ich nutze Atollic TrueSTUDIO (den Compiler kann ich nicht genau sagen, 
da er in der IDE integriert ist).

Das Beispiel vom STM324 Eval Board konnte ich compilieren. Nur fällt 
hier auf, dass ser viel weniger Files benötigt wurden, als bei allen 
anderen Beispielen. Nichteinmal otg wird hier berücksichtigt. da ich 
leider nur das Discovery-Board habe kann ich es leider nicht testen.

Ich denke nicht, dass bei mir ein Problem vom Compiler vorliegt, da die 
Defines nichts mit dem Compiler zu tun haben... Ein Grund könnte sein, 
dass die Files nicht in der richtigen Reihenfolge eingebunden werden 
oder auch Files berücksichtig werden, die gar nicht nötig sind.

von vampire (Gast)


Lesenswert?

Lese ich das richtig?
Die grosse STM324xG-EVAL/Demo konntest Du mit Atollic-Lite builden?
Mir gelingt nur die STM322xG-EVAL, da der Linker
VFP register arguments
nicht kennt.
Die STM322xG-EVAL.bin mit 866 kbytes reicht mir aber, um sie auch auf 
STM32F417IG zu flashen.
Ist dann halt ohne FP --

von vampire (Gast)


Lesenswert?

vampire schrieb:
> Die STM322xG-EVAL.bin mit 866 kbytes reicht mir aber, um sie auch auf
> STM32F417IG zu flashen.
> Ist dann halt ohne FP --

richtiger:
Ist dann halt ohne hardware FPU;

von Patrick B. (p51d)


Lesenswert?

Ich konnte das VCP Beispiel compiliern, welches in der 
STM32_USB-Host-Device_Lib_V2.1.0 integriert ist. Das ist für das grosse 
Eval-Board gedacht.
Es ist also nicht das ganze Demo-Programm.

Ich denke, dass ich mitlerweile viele Probleme auf die IDE eingrenzen 
konnte. Wenn ich die ganzen Libs verknüpfe, diese aber niergends über 
include einbinde, kommen über 400 Fehler, dass plötzlich Variablen 
(uint8_t, uint32_t...) nicht mehr bekannt sind, obwohl diese ja Standart 
sind. Kann es sein, dass hier die Lite-Version die Ursache ist?

von vampire (Gast)


Angehängte Dateien:

Lesenswert?

USB_Device_Examples\VCP\TrueSTUDIO\STM324xG-EVAL_USBD-FS\ habe ich 
soeben erfolgreich zum build geführt;
ALLERDINGS:
mit einer Version der STM32_USB-Host-Device_Lib_V2.1.0, die ich bereits 
vor gut 6 Monaten geladen hatte.
Mit einer Version der gleichen *.LIB von einer CD(China) habe ich 
Compiler-Fehler.
Lad Dir doch bitte die
http://www.st.com/internet/com/SOFTWARE_RESOURCES/SW_COMPONENT/FIRMWARE/stm32_f105-07_f2_f4_usb-host-device_lib.zip
für F107VC runter und probier die.
Wenns nicht klappt, muss ich meine komplette Version hochladen!

von vampire (Gast)


Lesenswert?

Patrick B. schrieb:
> Das Beispiel vom STM324 Eval Board konnte ich compilieren.

Entschuldige, Patrick. Das hatte ich überlesen --

von vampire (Gast)


Lesenswert?

Patrick B. schrieb:
> Ich denke, dass ich mitlerweile viele Probleme auf die IDE eingrenzen
> konnte. Wenn ich die ganzen Libs verknüpfe, diese aber niergends über
> include einbinde, kommen über 400 Fehler, dass plötzlich Variablen
> (uint8_t, uint32_t...) nicht mehr bekannt sind, obwohl diese ja Standart
> sind. Kann es sein, dass hier die Lite-Version die Ursache ist?

Vergleich doch mal die "Project --> Properties" C/C++ General --> Paths 
and Symbols dieses Projektes(VCP\TrueSTUDIO\STM324xG-EVAL_USBD-FS) mit 
denen des nicht lauffähigen --

von Ersi (cell85)


Lesenswert?

Lads doch für alle hoch.

von vampire (Gast)


Lesenswert?

@Sven S. (cell85)
das bringt den wenigsten was!
Die Version: 2.3.0 Lite
Build id: 20111221-1049
hat noch keine Codebegrenzung --

von Chose (Gast)


Lesenswert?

Ich sag nur: FT232RL oä. Alles anderer war bis jetzt Kopfweh. Wenn de 
Hersteller sowas in ihre Controller einbauen würden, wär's super. Ihre 
Treiber taugen nichts. Und wenn's einmal läuft durch viel Glück, läufts 
noch lange nicht beim Kunden. Und Treiber für'n PC: denkste...

von Lothar (Gast)


Lesenswert?

Chose schrieb:
> FT232RL

Ist natürlich eine Lösung, aber bei den NXP ARM läuft VCP ohne Probleme. 
CMSIS Code und Win7 Treiber.

von Patrick B. (p51d)


Lesenswert?

Chose schrieb:
> FT232RL

Ja klar, habe ich bis jetzt auch so gemacht. Nur sobald dann ein Produkt 
nicht nur unter Windows laufen soll, wirds schon schwieriger. Ebenso 
sind die FTDI-Chips eine Kostenfrage, da sie etwa gleich viel ausmachen 
wie ein MCU.

Und ich kann mir schlecht vorstellen dass bei den vielen USB-Produkten 
die es mitlerweile gibt überall solche Wandler dazwischengeschaltet 
sind. So müsste es doch ein paar brauchbare Libs geben.

Mein Problem habe ich mitlerweile auf den Linker zurückgeführt. Die 
Pfade sind die selben (mehr oder weniger), aber das sollte nicht das 
Problem sein, da die stdint-Variablen nicht mehr bekannt sind...
Ich werde mich mahl ein wenig mit dem Make-File/Einstellungen 
auseinandersetzen.

von vampire (Gast)


Angehängte Dateien:

Lesenswert?

Zunächst, bevor aus allen Ecken und Winkeln die Fotospezis 
hervorgekrochen kommen:
Nein, ich habe kein Stativ und das Verwackeln ist meinem Alter 
geschuldet;
Als Hinweis ist die Aufnahme allemal aussagekräftig genug;
Zum Thema:
Die VCP-Sache ist nicht mein primäres Ziel.
Ich musste meine laufende Arbeit unterbrechen, um zu helfen;
Hier ist das STM32F4-Discovery(unter meiner Selbstbauergänzung) auf dem 
Open407V-D!
Es ist das Keil VCP/USB-Device-Example mit STM32 ST-LINK Utility 
geflasht --

von Timo K. (signpainter)


Lesenswert?

Ich kämpfe gerade mit dem gleichen Problem, allerdings nutze ich die 
CoIDE. Nachdem ich die 'mitgelieferten' Beispiele aus der Lib V3.4 und 
V2.1 vergeblich versucht habe, zu kompilieren (gleiche Kompilierfehler 
wie bei Patrick "unknown type name 'USB_OTG_CORE_DEVICE'" etc.), habe 
ich dann angefangen die Beispiele nachzubauen. Da hat's mir dann alles 
um die Ohren gehauen, nichtmal uint8_t oder uint32_t waren bekannt. Habe 
dann Stück für Stück die includes geprüft und die stm32f4xx.h und 
stm32f4_discovery.h quasi überall eingebunden, dann hat es zumindest 
kompiliert, aber das USB-Gerät wurde nicht erkannt.

Durch Zufall bin ich dann irgendwo hier im Forum auf einen Link zu einem 
funktionierenden Beispiel für die CoIDE gestoßen: 
https://rapidshare.com/#!download|150p8|3892093798|STM32F407VGT6_Cdc.zip|486|0|0

Kompiliert, geflash, funktioniert! Noch den ST Virtual Com Port Driver 
installiert und gefreut :)

Die verwendete Lib im funktionierenden Beispiel weicht leicht von meinen 
Downloads ab, das sind die einzigen Unterschiede, die mir aufgefallen 
sind und so richtig verstehen, warum es vorher nicht funktioniert hat, 
tu ich nicht. Aber vielleicht hilft's Dir bei der Fehlersuche.

von Ersi (cell85)


Lesenswert?

was bin ich froh, das ich in keil 10 klicks mache und das USB 
funktioniert.

von Martin T. (mthomas) (Moderator) Benutzerseite


Lesenswert?


von stefan (Gast)


Lesenswert?

servus, magst du den beispiel code bitte nochmal hochladen, rapidshare 
hat die datei nicht mehr,
danke :)

von stefan (Gast)


Lesenswert?

(den für CooCox CoIDE)

von Uwe B. (derexponent)


Lesenswert?

@stefan,

-falls du die CoIDE 1.7.0 benutzt, findest
du hier ein CooCox Projekt-Ordner für USB-CDC

http://mikrocontroller.bplaced.net/


Gruss Uwe

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.