Tux fliegt zu den Sternen
Aus BraLUG-Wiki
(→arm-none-eabi-gcc auf Basis einer Energia-Installation) |
(→Kommandozeilen-Toolchain auf Basis einer Energia-Installation) |
||
Zeile 20: | Zeile 20: | ||
</pre> | </pre> | ||
− | Will man das Rad nicht ständig neu erfinden, sollte man die frei erhältliche | + | Will man das Rad nicht ständig neu erfinden, sollte man die frei erhältliche [http://www.ti.com/tool/sw-ek-lm4f120xl StellarisWare] von TI installieren. Das heruntergeladene Archivfile entpackt man dazu in ein beliebiges Verzeichnis auf seinem Rechner und führt dort das Makefile aus: |
<pre> | <pre> | ||
$ make | $ make |
Version vom 19. Oktober 2013, 11:56 Uhr
Derzeit noch Baustelle...!
Inhaltsverzeichnis |
Motivation
Stellaris Launchpad
Toolchain
Energia
Möchte man sich nicht gleich am Anfang mit der Installation/Konfiguration einer entsprechenden gcc-Umgebung herumschlagen, reicht für erste Experimente Energia aus. Das entsprechende Dowload-Paket enthält alle notwendigen Komponenten zum Übersetzen von eigenen Programmen und deren Übertragung auf das Launchpad. Die Archivdatei wird einfach in ein Verzeichnis entpackt und dann kann es sofort (zumindestens bei der aktuellen Version 0101E0010) losgehen. Viele der mitgelieferten Beispiele funktionieren, nach Auswahl des richtigen Boards unter dem Menüpunkt "Tools" → "Boards", problemlos.
Kommandozeilen-Toolchain auf Basis einer Energia-Installation
Ist schon eine funktionierende Energia-Installation auf seinem Rechner vorhanden, braucht man eigentlich nicht noch einen Compiler zu installieren, unterlagert werkelt dort schon ein arm-none-eabi-gcc. Es reicht also den Pfad zu den Binaries des Compilers mit in die PATH-Variable aufzunehmen, also z.B. die Datei .bashrc im eigenen Homeverzeichnis zu erweitern:
# Cross-Compiler-Umgebung fuer Stellaris Launchpad export PATH=$PATH:$HOME/energia/hardware/tools/lm4f/bin
Will man das Rad nicht ständig neu erfinden, sollte man die frei erhältliche StellarisWare von TI installieren. Das heruntergeladene Archivfile entpackt man dazu in ein beliebiges Verzeichnis auf seinem Rechner und führt dort das Makefile aus:
$ make
Hier ein entsprechendes Makefile, mit dem man dann seine eigenen Programme generieren und auf die MCU flashen kann:
TARGET = main STELLARISWARE = ~/work/stellaris/stellarisware SRC = $(wildcard *.c) TOOLCHAIN = arm-none-eabi PART = LM4F120H5QR CPU = cortex-m4 FPU = fpv4-sp-d16 FABI = softfp LINKER_FILE = $(STELLARISWARE)/boards/ek-lm4f120xl/hello/hello.ld SRC += $(STELLARISWARE)/boards/ek-lm4f120xl/hello/startup_gcc.c CC = $(TOOLCHAIN)-gcc LD = $(TOOLCHAIN)-ld CP = $(TOOLCHAIN)-objcopy OD = $(TOOLCHAIN)-objdump SZ = $(TOOLCHAIN)-size CFLAGS = -mthumb -mcpu=$(CPU) -mfpu=$(FPU) -mfloat-abi=$(FABI) CFLAGS+= -Os -ffunction-sections -fdata-sections CFLAGS+= -MD -std=c99 -Wall -pedantic CFLAGS+= -DPART_$(PART) -c -DTARGET_IS_BLIZZARD_RA1 CFLAGS+= -g CFLAGS+= -I $(STELLARISWARE) LIB_GCC_PATH=$(shell $(CC) $(CFLAGS) -print-libgcc-file-name) LIBC_PATH=$(shell $(CC) $(CFLAGS) -print-file-name=libc.a) LIBM_PATH=$(shell $(CC) $(CFLAGS) -print-file-name=libm.a) LFLAGS = --gc-sections --entry ResetISR CPFLAGS = -Obinary ODFLAGS = -S FLASHER=lm4flash FLASHER_FLAGS=-v OBJS = $(SRC:.c=.o) all: $(OBJS) $(TARGET).axf $(TARGET) %.o: %.c $(CC) -c $(CFLAGS) $< -o $@ $(TARGET).axf: $(OBJS) $(LD) -T $(LINKER_FILE) $(LFLAGS) -o $(TARGET).axf $(OBJS) $(LIBM_PATH) $(LIBC_PATH) $(LIB_GCC_PATH) $(TARGET): $(TARGET).axf $(CP) $(CPFLAGS) $(TARGET).axf $(TARGET).bin $(OD) $(ODFLAGS) $(TARGET).axf > $(TARGET).lst @echo $(SZ) $(TARGET).o flash: $(TARGET) $(FLASHER) $(TARGET).bin $(FLASHER_FLAGS) clean: rm *.o *.d *.bin *.lst *.axf
Tipps und Tricks
Zugriff auf /dev/ttyACMx als Nicht-root-Benutzer
Über /dev/ttyACMx (siehe dsmeg-Meldungen nach Einstöpseln des Launchpads) erfolgt die Kommunikation zwischen Linux-PC und Launchpad. Gibt es keine entsprechende udev-Regel, kann nur root auf diese Schnittstelle zugreifen. Also macht sich eine entsprechende Konfiguration für Nicht-Root-User ganz sinnvoll:
Erzeugung der Datei /etc/udev/rules.d/61-stellaris.rules mit folgendem Inhalt:
# Zugriff auf TIs Stellaris-Launchpad regeln # SUBSYSTEM=="usb",ATTRS{idVendor}=="1cbe",ATTRS{idP roduct}=="00fd",MODE="0666" KERNEL=="ttyACM0",ATTRS{idVendor}=="1cbe",ATTRS{id Product}=="00fd",MODE="0666"
Nach dem Restart von udev (Befehl: /etc/init.d/udev restart) kann man auch als Nicht-root zugreifen.
Weiterführende Links
Linux-Toolchain:
- http://www.jann.cc/2012/12/11/getting_started_with_the_ti_stellaris_launchpad_on_linux.html
- http://recursive-labs.com/blog/2012/10/28/stellaris-launchpad-gnu-linux-getting-started/
Makefile-Templates:
- https://github.com/scompo/stellaris-launchpad-template-gcc/blob/master/Makefile
- https://github.com/Wollw/stellaris-launchpad-template-gcc/blob/master/Makefile
Unsortiert:
- https://eehusky.wordpress.com/2012/12/04/using-gcc-with-ti-stellaris-launchpad-a-more-in-depth-look/
- http://www.fischl.de/arm/sllogiclogger_logic_analyser_for_stellaris_launchpad/