Eclipse als IDE
Durch die Kombination von gcc4mbed und Eclipse können die Programme auch lokal in Eclipse compiliert werden.
Das ist eine Zusammenfassung von https://developer.mbed.org/cookbook/eclipse-for-building-and-debugging mit Erweiterungen für das FRDM-K64F Board.
Installation
- gcc4mbd wie in https://github.com/adamgreen/gcc4mbed#quick-start Beschrieben, installieren
- Eclipse CPP Version installieren
- C/C++ and GNU Support Plug-ins via Updatemanager von http://sourceforge.net/projects/gnuarmeclipse/files/Eclipse/updates/ installieren
- Eclipse Preferences - > C++ -> Build -> Global Toolspaths
- beide folder Angaben auf [gcc4mbed-Path]\gcc-arm-none-eabi\bin;[gcc4mbed-Path]\external\win32 setzen
gcc4mbed Patchen
Damit gcc4mbed für das FRDM-K64F Board sauber funktioniert, müssen ein paar MAKE Dateien angepasst und eine neu erstellt werden.
Die Dateien befinden sich im Verzeichnis ;[gcc4mbed-Path]\build.
gcc4mbeb.mk, Zeile 303 ersetzen mit:
deploy: MCU_K64F-deploy
Stellt sicher, dass die *.bin Datei auf das mbed Laufwerk/Verzeichnis kopiert wird.
device-common.mk, Zeile 158 ergänzen um:
$(Q) $(SIZE) $(PWD)$<
Korrigiert einen Fehler bei der size Ausgabe, wo die *.elf Datei nicht gefunden wird.
Neue Datei MCU_K64F-device.mk mit folgendem Inhalt erstellen:
# Vendor/device for which the library should be built. MBED_DEVICE := MCU_K64F MBED_TARGET := Freescale_K64F MBED_CLEAN := $(MBED_DEVICE)-MBED-clean # Compiler flags which are specifc to this device. TARGETS_FOR_DEVICE := TARGET_MCU_K64F TARGET_M4 TARGET_CORTEX_M TARGET_Freescale TARGET_KPSDK_MCUS TARGET_KPSDK_CODE TARGET_FRDM TARGETS_FOR_DEVICE += TARGET_FF_ARDUINO TARGET_FF_MORPHO GCC_DEFINES := $(patsubst %,-D%,$(TARGETS_FOR_DEVICE)) GCC_DEFINES += -D__CORTEX_M4 -DARM_MATH_CM4 -D__FPU_PRESENT=1 -DCPU_MK64FN1M0VLL12 -DTARGET_K64F -DCPU_MK64FN1M0VMD12 C_FLAGS := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb-interwork ASM_FLAGS := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=softfp LD_FLAGS := -mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=softfp # Extra platform specific object files to link into file binary. DEVICE_OBJECTS := # Version of MRI library to use for this device. DEVICE_MRI_LIB := # Linker script to be used. Indicates what code should be placed where in memory. LSCRIPT=$(GCC4MBED_DIR)/external/mbed/libraries/mbed/targets/cmsis/TARGET_Freescale/TARGET_MCU_K64F/TOOLCHAIN_GCC_ARM/K64FN1M0xxx12.ld include $(GCC4MBED_DIR)/build/device-common.mk
Damit wird auch das FRDM-K64F Board unterstützt.
gcc4mbed Samples
Für einen Ersten Test ist es am einfachsten ein Beispiel von gcc4mbed zum laufen zu bringen.
- Neues Projekte mittels -> File New > Makefile Project with Existing Code erstellen. Als Code Location ein Samples Projekt Verzeichnis angeben.
- Als Toolchain Cross ARM GCC anwählen
- Mittels rechter Maustaste auf dem Projekte -> Properties -> C/C++ Build -> Bevavior -> und dort bei Build (inc...) folgendes eintragen:
- make all deploy GCC4MBED_TYPE=Debug
Das Programm compilieren. Falls Probleme auftauchen, evtl. make entfernen, die Folder Angaben für C++ Build überprüfen.
Um das Programm direkt auf das Board zu kopieren ist die LPC_DEPLOY Variable in Properties -> C/C++ Build -> Environment zu setzen. Der Wert kann je nach Betriebssystem varieren:
- OS X: cp PROJECT.bin /Volumes/MBED/ ; sync
- Linux: cp PROJECT.bin /media/MBED/ ; sync
- Windows: copy PROJECT.bin e:\
Anschliessend ist der makefile im Projekt anzupassen. Wichtig sind die folgenden zwei Einträge:
DEVICES := MCU_K64F GCC4MBED_DIR := ../..
- DEVICES steht für die Boards welcher der Code compiliert werden soll
- GCC4MBED_DIR für das Verzeichnis wo gcc4mbed installiert ist. Hier eignet sich besser eine fixe Pathangabe statt eine indirekte.
Besser: DEVICES und GCC4MBED_DIR im makefile auskommentieren und zusammen mit LPC_DEPLOY unter Windows -> Preferences -> C/C++ -> Build -> Enviroment als Variablen setzen. Dann gelten die Einträge für alle Eclipse Projekte.
Neues Programm erstellen
Ein neues Programm erstellt man mit dem gewohnten New Assistenten in Eclipse.
- File -> New -> C++ Project
- Project Type: Makefile Project -> Empty Project -> Toolchain: Cross ARM GCC -> Finnish
- Feintuning Projekt -> C/C++ Build
- Behavior: all deploy GCC4MBED_TYPE=Debug bei Build incr. eintragen
makefile z.B. aus einen Sample Projekt kopieren und die gleichen Anpassungen wie bei dem gcc4mbed Sample vornehmen.
Index Fehler beheben
Um die Fehler vom Eclipse Indexer zu beheben, folgende Paths C/C++ General -> Paths and Symbols eintragen:
/gcc4mbed/gcc-arm-none-eabi/arm-none-eabi/include /gcc4mbed/external/mbed/libraries/mbed/api /gcc4mbed/external/mbed/libraries/mbed/targets/hal/TARGET_Freescale/TARGET_KPSDK_MCUS/TARGET_MCU_K64F/TARGET_FRDM /gcc4mbed/external/mbed/libraries/rtos/rtos
Das gcc4mbed Verzeichnis ist vorher als Projekt, mit gleichen Namen, einzutragen.
Bug's
Wird mit der EthernetInterface Library gearbeitet, kann es zu Link Fehlern kommen. Das kann durch Definition z.B. von
// wird nur benoetigt, damit bei Eclipse/gcc4mbed die Ethernet Libraries richtig gelinkt werden TCPSocketConnection sock;
behoben werden.
1 comment on Eclipse als IDE:
Please log in to post comments.
Hey community,
please take care if you would like to use RTOS combined with SDFileSystem.
If I compile online there were no bugs. If you would like to compile offline, please Increase stack size for SD-card- thread to 2.25 * DEFAULT_STACK_SIZE.