STM32 mit der Standart IDE Eclipse und CubeMX: Unterschied zwischen den Versionen
Nick (Diskussion | Beiträge) |
Julia (Diskussion | Beiträge) |
||
| (20 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 2: | Zeile 2: | ||
== CubeMX Projekt erstellen == | == CubeMX Projekt erstellen == | ||
Download und Installation von [http://www.st.com/en/development-tools/stm32cubemx.html#getsoftware-scroll CubeMX]. Im Anschluss wird CubeMX gestartet und | Download und Installation von [http://www.st.com/en/development-tools/stm32cubemx.html#getsoftware-scroll CubeMX]. Im Anschluss wird CubeMX gestartet und entsprechende Einstellungen für sein Chip oder Board vorgenommen.<br /> | ||
In CubeMX '''Project''' -> '''Settings…''' -> '''Project Namen''' vergeben, hier ''STM32F407G_CubeMX'' und den Speicherort '''Project Location''' bestimmen.<br /> | In CubeMX '''Project''' -> '''Settings…''' -> '''Project Namen''' vergeben, hier ''STM32F407G_CubeMX'' und den Speicherort '''Project Location''' bestimmen.<br /> | ||
Unter '''Toolchain/IDE''' im Dropdown-Menü '''Other Toolchain (GPDSC)''' auswählen und mit '''OK''' bestätigen. | Unter '''Toolchain/IDE''' im Dropdown-Menü '''Other Toolchain (GPDSC)''' auswählen und mit '''OK''' bestätigen. | ||
[[Datei: | [[Datei:stm32_eclipse_cubemx_project_settings.png|400px]] | ||
Der Code wird unter '''Project''' –> '''Generate Code''' generiert. Entweder man geht direkt über die Option '''Open Folder''' oder navigiert manuell in das Projektverzeichnis. | Der Code wird unter '''Project''' –> '''Generate Code''' generiert. Entweder man geht direkt über die Option '''Open Folder''' oder navigiert manuell in das Projektverzeichnis. | ||
== Eclipse Projekt erstellen == | == Eclipse Projekt erstellen == | ||
Vor der Erstellung des Projektes müssen noch die [https://github.com/gnu-mcu-eclipse/windows-build-tools/releases GNU MCU Eclipse Windows Build Tools] heruntergeladen und installiert werden | Vor der Erstellung des Projektes müssen noch die [https://github.com/gnu-mcu-eclipse/windows-build-tools/releases GNU MCU Eclipse Windows Build Tools] heruntergeladen und installiert werden<br /> | ||
sowie in Eclipse '''Window''' -> '''Preferences''' -> '''C/C++''' -> '''Build''' -> '''Global Tools Path''' unter '''Build tools folder:''' der Pfad bis zum '''bin''' Ordner von den zuvor installierten '''GNU MCU Eclipse Windows Build Tools''' eingetragen werden. Mit '''OK''' bestätigen. | |||
[[Datei: | [[Datei:stm32_eclipse_cubemx_global_tools_path.png|300px]] | ||
In Eclipse '''File''' -> '''New''' -> '''C Project''' unter '''Project type:''' -> '''Executable''' -> '''Hello World ARM Cortex-M C/C++ Projekt''' -> '''Cross Arm GCC''' auswählen. | In Eclipse '''File''' -> '''New''' -> '''C Project''' unter '''Project type:''' -> '''Executable''' -> '''Hello World ARM Cortex-M C/C++ Projekt''' -> '''Cross Arm GCC''' auswählen. | ||
[[Datei: | [[Datei:stm32_eclipse_cubemx_project_settings.png|300px]] | ||
Die entsprechenden Werte bei '''Prozessor core:''', '''Clock (Hz):''', '''Flash size (kB):''', '''RAM size (kB)''', '''Use system calls:''' und '''Trace output:''' eintragen bzw. auswählen. | Die entsprechenden Werte bei '''Prozessor core:''', '''Clock (Hz):''', '''Flash size (kB):''', '''RAM size (kB)''', '''Use system calls:''' und '''Trace output:''' eintragen bzw. auswählen. | ||
Einen Projektnamen unter '''Project name:''' eintragen | Einen Projektnamen unter '''Project name:''' eintragen; hier ''STM32F407G_Eclipse''. Weiter mit '''Next'''. | ||
[[Datei: | [[Datei:stm32_eclipse_cubemx_c_project_prozessor_settings.png|300px]] [[Datei:stm32_eclipse_cubemx_c_project_folders.png|300px]] [[Datei:stm32_eclipse_cubemx_toolchain.png|300px]] | ||
Danach '''Next''' -> '''Next''' -> '''Next''' -> '''Finish'''. | Danach '''Next''' -> '''Next''' -> '''Next''' -> '''Finish'''. | ||
| Zeile 67: | Zeile 67: | ||
'''Einzelne Dateien Löschen:''' | '''Einzelne Dateien Löschen:''' | ||
system_stm32f4xx.c, vectors_stm32f4xx.c | '''system_stm32f4xx.c, vectors_stm32f4xx.c''' | ||
STM32F407G_Eclipse\system\src\cmsis | STM32F407G_Eclipse\system\src\cmsis | ||
system_stm32f4xx.h, stm32f4xx.h | '''system_stm32f4xx.h, stm32f4xx.h''' | ||
STM32F407G_Eclipse\system\include\cmsis | STM32F407G_Eclipse\system\include\cmsis | ||
Unter Linux oder mit cygwin unter Windows kann folgender Skript zum | Unter Linux oder mit cygwin unter Windows kann folgender [https://gitlab.xnick.de/scripts/Linux-Integration-CubeMx-to-Eclipse Skript] zum automatisierten kopieren und löschen eingesetzt werden. | ||
''Hinweis: Der Skript ist noch nicht | '''Hinweis: Der Skript ist noch nicht vollständig getestet!!''' | ||
== Eclipse Projekt konfigurieren == | == Eclipse Projekt konfigurieren == | ||
In Eclipse '''Project Explorer''' -> ''' | In Eclipse '''Project Explorer''' -> '''rechte Maustaste''' auf das '''Projekt''' und unter '''Refresh''' werden die Dateien aktualisiert. | ||
Die Datei '''Project Explorer''' unter dem '''Projekt''' -> '''ldscripts''' -> '''mem.ld''' öffnen | Die Datei '''Project Explorer''' unter dem '''Projekt''' -> '''ldscripts''' -> '''mem.ld''' öffnen | ||
und die Speicheradressen im Abschnitt '''MEMORY''' je nach Chip anpassen. | |||
MEMORY | MEMORY | ||
| Zeile 88: | Zeile 88: | ||
} | } | ||
[[Datei: | [[Datei:stm32_eclipse_cubemx_ldscript.png|300px]] | ||
'''Rechte Maustaste''' auf das '''Projekt''' -> '''Properties''' im Fenster '''C/C++ Build''' -> '''Settings''' erste Registerkarte '''Tool Settings''' -> '''Cross ARM C Compiler''' -> '''Preprocessor''' | '''Rechte Maustaste''' auf das '''Projekt''' -> '''Properties''' im Fenster '''C/C++ Build''' -> '''Settings''' erste Registerkarte '''Tool Settings''' -> '''Cross ARM C Compiler''' -> '''Preprocessor''' | ||
im Abschnitt '''Defined symbols (-D)''' auf das '''Plus Symbol''' | im Abschnitt '''Defined symbols (-D)''' auf das '''Plus Symbol''' | ||
[[Datei: | [[Datei:stm32_eclipse_cubemx_symbols.png|300px]] | ||
und je nach Chip das entsprechende Symbol einfügen | und je nach Chip das entsprechende Symbol einfügen; hier '''STM32F407xx''' aus der hinzugefügten Headerdatei „stm32f407xx.h". | ||
[[Datei: | [[Datei:stm32_eclipse_cubemx_symbols_enter.png|300px]] | ||
== Probleme == | == Probleme == | ||
| Zeile 103: | Zeile 103: | ||
'''Rechte Maustaste''' auf '''Projekt''' -> '''C/C++ General''' -> '''Paths and Symbols''' in der Registerkarte '''Includes''' auf '''Add…''' im Fenster auf '''Workspace…''' -> auf das Projekt, hier '''STM32F407G_Eclipse''' -> '''system''' -> '''include''' ->'''sytm32f4xx''' -> '''OK''' -> '''OK''' -> '''OK''' und erneut kompilieren. | '''Rechte Maustaste''' auf '''Projekt''' -> '''C/C++ General''' -> '''Paths and Symbols''' in der Registerkarte '''Includes''' auf '''Add…''' im Fenster auf '''Workspace…''' -> auf das Projekt, hier '''STM32F407G_Eclipse''' -> '''system''' -> '''include''' ->'''sytm32f4xx''' -> '''OK''' -> '''OK''' -> '''OK''' und erneut kompilieren. | ||
[[Datei: | [[Datei:stm32_eclipse_cubemx_problem_select_folder.png|300px]] [[Datei:stm32_eclipse_cubemx_problem_symbol.png|300px]] | ||
Bei dem Fehler '''Error „multiple definition of …“'''<br /> | Bei dem Fehler '''Error „multiple definition of …“'''<br /> | ||
Alle Headerdateien im Namen template | Alle Headerdateien im Namen template im Projektordner unter '''system''' -> '''include''' -> '''stm32f4xx''' löschen. | ||
Es kann vorkommen | Es kann vorkommen, dass Eclipse den startup-script „startup_stm32f407xx.s“ nicht erkennt.<br /> | ||
'''Rechte Maustaste''' auf '''startup_stm32f407xx.s''' -> '''Rename''' und das kleine '''s''' am Ende groß '''S''' schreiben -> '''OK'''. | '''Rechte Maustaste''' auf '''startup_stm32f407xx.s''' -> '''Rename''' und das kleine '''s''' am Ende groß '''S''' schreiben -> '''OK'''. | ||
[[Datei: | [[Datei:stm32_eclipse_cubemx_problem_startup_script.png|300px]] | ||
== Debuggen == | == Debuggen == | ||
Aktuelle Version vom 15. März 2018, 16:08 Uhr
Dieses Tutorial zeigt wie die Hardwarekonfiguration von CubeMX in der Standard IDE Eclipse genutzt werden kann. Voraussetzung ist die Einrichtung von Eclipse nach dem Tutorial STM32 programmieren und debuggen mit der Standard IDE Eclipse. Das Discovery-Board: STM32F407G-DISC1 dient wieder als Beispiel.
CubeMX Projekt erstellen
Download und Installation von CubeMX. Im Anschluss wird CubeMX gestartet und entsprechende Einstellungen für sein Chip oder Board vorgenommen.
In CubeMX Project -> Settings… -> Project Namen vergeben, hier STM32F407G_CubeMX und den Speicherort Project Location bestimmen.
Unter Toolchain/IDE im Dropdown-Menü Other Toolchain (GPDSC) auswählen und mit OK bestätigen.
Der Code wird unter Project –> Generate Code generiert. Entweder man geht direkt über die Option Open Folder oder navigiert manuell in das Projektverzeichnis.
Eclipse Projekt erstellen
Vor der Erstellung des Projektes müssen noch die GNU MCU Eclipse Windows Build Tools heruntergeladen und installiert werden
sowie in Eclipse Window -> Preferences -> C/C++ -> Build -> Global Tools Path unter Build tools folder: der Pfad bis zum bin Ordner von den zuvor installierten GNU MCU Eclipse Windows Build Tools eingetragen werden. Mit OK bestätigen.
In Eclipse File -> New -> C Project unter Project type: -> Executable -> Hello World ARM Cortex-M C/C++ Projekt -> Cross Arm GCC auswählen.
Die entsprechenden Werte bei Prozessor core:, Clock (Hz):, Flash size (kB):, RAM size (kB), Use system calls: und Trace output: eintragen bzw. auswählen. Einen Projektnamen unter Project name: eintragen; hier STM32F407G_Eclipse. Weiter mit Next.
Danach Next -> Next -> Next -> Finish.
CubeMX Projekt in Eclipse Projekt integrieren
Jetzt müssen die mit CubeMX erstellten Bibliotheken (.h und .c Datein) in das Eclipse Projekt kopiert werden.
CubeMX Projekt: STM32F407G_CubeMX Eclipse Projekt: STM32F407G_Eclipse
Alles in folgenden Ordnern Löschen:
STM32F407G_Eclipse\src STM32F407G_Eclipse\include
Den kompletten Inhalt Kopieren und ggf. ersetzen!
VON STM32F407G_CubeMX\Drivers\STM32F4xx_HAL_Driver\Inc NACH STM32F407G_Eclipse\system\include\stm32f4xx
VON STM32F407G_CubeMX\Drivers\STM32F4xx_HAL_Driver\Src NACH STM32F407G_Eclipse\system\src\stm32f4xx
VON STM32F407G_CubeMX\Drivers\CMSIS\Include NACH STM32F407G_Eclipse\system\include\cmsis
VON STM32F407G_CubeMX\Src NACH STM32F407G_Eclipse\src
VON STM32F407G_CubeMX\Inc NACH STM32F407G_Eclipse\include
Einzelne Dateien kopieren ggf. ersetzen:
system_stm32f4xx.c VON STM32F407G_CubeMX\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\ NACH STM32F407G_Eclipse\system\src\cmsis
startup_stm32f407xx.s VON STM32F407G_CubeMX\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\gcc\ NACH STM32F407G_Eclipse\system\src\cmsis
system_stm32f4xx.h, stm32f4xx.h, stm32f407xx.h VON STM32F407G_CubeMX\Drivers\CMSIS\Device\ST\STM32F4xx\Include NACH STM32F407G_Eclipse\system\include\cmsis
Einzelne Dateien Löschen:
system_stm32f4xx.c, vectors_stm32f4xx.c STM32F407G_Eclipse\system\src\cmsis
system_stm32f4xx.h, stm32f4xx.h STM32F407G_Eclipse\system\include\cmsis
Unter Linux oder mit cygwin unter Windows kann folgender Skript zum automatisierten kopieren und löschen eingesetzt werden. Hinweis: Der Skript ist noch nicht vollständig getestet!!
Eclipse Projekt konfigurieren
In Eclipse Project Explorer -> rechte Maustaste auf das Projekt und unter Refresh werden die Dateien aktualisiert. Die Datei Project Explorer unter dem Projekt -> ldscripts -> mem.ld öffnen und die Speicheradressen im Abschnitt MEMORY je nach Chip anpassen.
MEMORY
{
FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1024K
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K
}
Rechte Maustaste auf das Projekt -> Properties im Fenster C/C++ Build -> Settings erste Registerkarte Tool Settings -> Cross ARM C Compiler -> Preprocessor im Abschnitt Defined symbols (-D) auf das Plus Symbol
und je nach Chip das entsprechende Symbol einfügen; hier STM32F407xx aus der hinzugefügten Headerdatei „stm32f407xx.h".
Probleme
Das Projekt kompiliert erfolgreich aber die Warnings verschwinden nicht.
Rechte Maustaste auf Projekt -> C/C++ General -> Paths and Symbols in der Registerkarte Includes auf Add… im Fenster auf Workspace… -> auf das Projekt, hier STM32F407G_Eclipse -> system -> include ->sytm32f4xx -> OK -> OK -> OK und erneut kompilieren.
Bei dem Fehler Error „multiple definition of …“
Alle Headerdateien im Namen template im Projektordner unter system -> include -> stm32f4xx löschen.
Es kann vorkommen, dass Eclipse den startup-script „startup_stm32f407xx.s“ nicht erkennt.
Rechte Maustaste auf startup_stm32f407xx.s -> Rename und das kleine s am Ende groß S schreiben -> OK.
Debuggen
Siehe STM32 programmieren und debuggen mit der Standard IDE Eclipse.
Quellen
http://gnuarmeclipse.github.io/windows-build-tools/download/