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
Ist zwar für LPC1xxx aber gut dokumentiert: VirtualComPort https://www.olimex.com/Products/ARM/NXP/LPC-P1343/resources/LPC-P1343_Examples.zip
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
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
>Also, was mache ich falsch?
Du stellst überflüssige Fragen im Forum, anstatt die Fehlermeldungen zu
lesen.
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.
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.
Ich benutze keil und bei mir gehts einwandfrei. schaut aus als würde bei dir was fehlen.
>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.
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.
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
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.
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
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.
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 --
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;
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?
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!
Patrick B. schrieb: > Das Beispiel vom STM324 Eval Board konnte ich compilieren. Entschuldige, Patrick. Das hatte ich überlesen --
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 --
@Sven S. (cell85) das bringt den wenigsten was! Die Version: 2.3.0 Lite Build id: 20111221-1049 hat noch keine Codebegrenzung --
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...
Chose schrieb: > FT232RL Ist natürlich eine Lösung, aber bei den NXP ARM läuft VCP ohne Probleme. CMSIS Code und Win7 Treiber.
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.
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 --
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.
Nach etwas frisch aber evtl. hilfreich: http://www.siwawi.arubi.uni-kl.de/avr_projects/arm_projects/index_cortex.html#stm32f4_vcp
servus, magst du den beispiel code bitte nochmal hochladen, rapidshare hat die datei nicht mehr, danke :)
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.