Forum: Mikrocontroller und Digitale Elektronik STM32CubeF4 und Eclipse unter Linux


von Lemur C. Marlonarios (Gast)


Lesenswert?

Hallo,

ich habe mir das STM32F429 Discovery (mit LCD) gekauft und möchte mit 
Eclipse unter Linux entwickeln. Einfache Beispiele, wie LEDs blinken 
lassen, bekomme ich soweit hin. Um die High-Level-Sachen, wie das TFT, 
zu benutzen, habe ich mir die STM32CubeF4 Firmware heruntergeladen 
(http://www.st.com/web/en/catalog/tools/PF259243). Diese hat Beispiele 
und Projektdateien für verschiedene Toolchains, aber nichts für Eclipse.

Bin leider noch blutiger Anfänger und offenbar etwas überfordert ;-). 
Mein naiver Versuch war, folgende Ordner zu den includes meines Projekts 
hinzuzufügen:

STM32Cube_FW_F4_V1.1.0/Drivers/BSP/STM32F429I-Discovery/
STM32Cube_FW_F4_V1.1.0/Drivers/CMSIS/Include/
STM32Cube_FW_F4_V1.1.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include/
STM32Cube_FW_F4_V1.1.0/Drivers/STM32F4xx_HAL_Driver/Inc/

Wenn ich das Projekt baue, bekomme ich jede Menge Kompilierfehler. Bevor 
ich hier ins Detail gehe, was die konkreten Fehler angeht: Kann mir 
jemand sagen, wie ich am besten vorgehe, um mit der Eclipse Toolchain 
die cube libraries einzusetzen? Oder gibt es vielleicht alternative 
Libraries, die ich verwenden könnte?

von Arne Maximilian R. (arnemaximilian_r)


Lesenswert?

Ich bin leider auch nicht der richtige Experte. In den letzten drei 
Jahren habe ich aber immer die Erfahrungen gemacht, dass eine richtige 
Anleitung eher einem Sechser im Lotto gleicht...
Von daher sind die Fehlermeldungen schon interessant und koennten hier 
helfen das Problem zu loesen (natuerlich nicht alle - die ersten 
Fehlermeldungen sollten reichen). Deine Projektstruktur waere auch 
hilfreich. Welche Datein hast du (bzw. welche Libs) und welche Dateien 
hast du fuers Bauen eingebunden - 
STM32Cube_FW_F4_V1.1.0/Drivers/STM32F4xx_HAL_Driver/Inc/ wird es ja noch 
ein Src Ordner zu geben...)?

von lasod (Gast)


Lesenswert?

Nimm einfach z.B. Demonstrations/EWARM/Project.ewp
als Vorlage und füge die darin spezifizierten
Dateien und Include-Pfade Deinem eclipse-Projekt hinzu.

Z.B.
        <option>
          <name>CCIncludePath2</name>
          <state>$PROJ_DIR$\..\Core\inc</state>
          <state>$PROJ_DIR$\..\Config</state>
          <state>$PROJ_DIR$\..\..\..\..\Utilities\CPU</state>
          <state>$PROJ_DIR$\..\..\..\..\Drivers\CMSIS\Device\ST\STM32F4xx\Include< 
/state>
          <state>$PROJ_DIR$\..\..\..\..\Drivers\STM32F4xx_HAL_Driver\Inc</state>
          <state>$PROJ_DIR$\..\..\..\..\Drivers\BSP\STM32F429I-Discovery</state>
          <state>$PROJ_DIR$\..\..\..\..\Drivers\BSP\Components\Common</state>
          <state>$PROJ_DIR$\..\..\..\..\Middlewares\ST\STM32_USB_Host_Library\Core 
\Inc</state>
          <state>$PROJ_DIR$\..\..\..\..\Middlewares\ST\STM32_USB_Host_Library\Clas 
s\MSC\Inc</state>
          <state>$PROJ_DIR$\..\..\..\..\Middlewares\ST\STM32_USB_Device_Library\Co 
re\Inc</state>
          <state>$PROJ_DIR$\..\..\..\..\Middlewares\ST\STM32_USB_Device_Library\Cl 
ass\MSC\Inc</state>
          <state>$PROJ_DIR$\..\..\..\..\Middlewares\ST\STemWin\inc</state>
          <state>$PROJ_DIR$\..\..\..\..\Middlewares\Third_Party\FatFs\src</state>
          <state>$PROJ_DIR$\..\..\..\..\Middlewares\Third_Party\FatFs\src\drivers< 
/state>
          <state>$PROJ_DIR$\..\..\..\..\Middlewares\Third_Party\FreeRTOS\Source\po 
rtable\IAR\ARM_CM4F</state>
          <state>$PROJ_DIR$\..\..\..\..\Middlewares\Third_Party\FreeRTOS\Source\in 
clude</state>
          <state>$PROJ_DIR$\..\..\..\..\Middlewares\Third_Party\FreeRTOS\Source\CM 
SIS_RTOS</state>
          <state>$PROJ_DIR$\..\..\..\..\Middlewares\Third_Party\LwIP\src\include\< 
/state>
          <state>$PROJ_DIR$\..\..\..\..\Middlewares\Third_Party\LwIP\src\include\i 
pv4 
</state>
          <state>$PROJ_DIR$\..\..\..\..\Middlewares\Third_Party\LwIP\system</state 
>

und

      <name>User</name>
      <group>
        <name>Core</name>
        <file>
          <name>$PROJ_DIR$\..\Core\Src\k_bsp.c</name>
        </file>
        <file>
          <name>$PROJ_DIR$\..\Core\Src\k_calibration.c</name>
        </file>
        <file>
          <name>$PROJ_DIR$\..\Core\Src\k_log.c</name>
        </file>
        <file>
          <name>$PROJ_DIR$\..\Core\Src\k_mem.c</name>
        </file>
        <file>
          <name>$PROJ_DIR$\..\Core\Src\k_menu.c</name>
        </file>
...

von Kurt H. (Firma: KHTronik) (kurtharders)


Lesenswert?

Hallo,
die Beispiele von ST sind oft mit älteren Versionen der Systemdateien 
erstellt. Ich habe in eclipse dann ein geeignetes Projekt angelegt, also 
bei Dir eines für STM32F4x9, und die Quelldateien der Anwendung aus dem 
Beispiel kopiert. Dann noch das main anpassen, und es hat geklappt.
Grüße, Kurt

von Lemur C. Marlonarios (Gast)


Lesenswert?

Danke für die Antworten.

Ich finde nicht so richtig Zeit, da durchzusteigen.

Ich habe versucht, die Projektfiles unter EWAM zu nehmen und die 
includes in die .cproject-Datei von Eclipse zu transferieren.

Toll wäre ein Koverter, z.B. von den EWAM-Projekten (oder Keil oder 
TrueStudio) nach Eclipse. Konnte aber leider nichts finden mit dem ich 
was anfangen kann. Vielleicht kommt man noch mit TrueStudio am 
weitesten, weil das offenbar auf Eclipse basiert.

Was ich bislang rausfinden konnte, war, dass es wohl Konflikte mit den 
STM-Libraries gibt, die mein Eclipse-Projekt mir vorgibt (ich nehme ein 
'STM32F4xx StdPeriph C/C++ Project' als Ausgangsbasis). Z.B. gibt es 
DMA_InitTypeDef sowohl in stm32f4xx_hal_dma.h als auch in 
stm32f4xx_dma.h in den StdPeriph includes. Ich habe keine Ahnung ob die 
libs aus dem Eclipsetemplate komplett überflüssig sind und alles in den 
cube libraries enthalten ist, was ich brauche.

Zum anderen fürchte ich, dass ich jede Menge Präprozessor-Deklarationen 
machen muss, damit die Sachen compilen. Auch da blicke ich nicht so 
richtig durch.

Ich werde hoffentlich am Wochenende noch mal einsteigen und melde mich 
hier noch mal falls ich irgendwie weiterkomme.

Gruß

von Lemur C. Marlonarios (Gast)


Lesenswert?

Bin jetzt mal 'nen anderen Weg gegangen und hab es mit den Beispielen 
von hier versucht: 
http://mikrocontroller.bplaced.net/wordpress/?page_id=2736

Funktioniert wunderbar. Einfach aus dem CoIDE-Projekt den Ordner ub_lib 
in den libs-Ordner des Eclipse StdPeriph-Projekts kopieren und als 
include eintragen.

Es gibt auch ein Beispiel um GUIs mit STEmWin zu bauen. Dafür muss dann 
die statische library gelinkt werden. Damit das klappt, muss man 
allerdings unter 'C/C++ Build -> Settings -> Target Processor' Float-ABI 
auf 'FP Instructions (hard)' setzen.

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.