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

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:

13 May 2016

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.

Please log in to post comments.