paparazzi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[paparazzi-commits] [5927] ups, forgot the lpc21 makefile


From: Felix Ruess
Subject: [paparazzi-commits] [5927] ups, forgot the lpc21 makefile
Date: Wed, 22 Sep 2010 23:27:27 +0000

Revision: 5927
          http://svn.sv.gnu.org/viewvc/?view=rev&root=paparazzi&revision=5927
Author:   flixr
Date:     2010-09-22 23:27:27 +0000 (Wed, 22 Sep 2010)
Log Message:
-----------
ups, forgot the lpc21 makefile

Added Paths:
-----------
    paparazzi3/trunk/conf/Makefile.lpc21

Added: paparazzi3/trunk/conf/Makefile.lpc21
===================================================================
--- paparazzi3/trunk/conf/Makefile.lpc21                                (rev 0)
+++ paparazzi3/trunk/conf/Makefile.lpc21        2010-09-22 23:27:27 UTC (rev 
5927)
@@ -0,0 +1,316 @@
+# Hey Emacs, this is a -*- makefile -*-
+#
+#   $Id$
+#   Copyright (C) 2003-2005 Pascal Brisset, Antoine Drouin
+#
+# This file is part of paparazzi.
+#
+# paparazzi is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# paparazzi is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with paparazzi; see the file COPYING.  If not, write to
+# the Free Software Foundation, 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+
+
+#
+# This is the common Makefile for the arm7-target.
+#
+
+#SRC_ARCH = lpc21
+
+# Define programs and commands.
+HAVE_ARM_NONE_EABI_GCC := $(wildcard /usr/bin/arm-none-eabi-gcc)
+ifeq ($(strip $(HAVE_ARM_NONE_EABI_GCC)),)
+CC             = arm-elf-gcc
+LD             = $(CC)
+SHELL = sh
+OBJCOPY = arm-elf-objcopy
+OBJDUMP = arm-elf-objdump
+SIZE = arm-elf-size
+NM = arm-elf-nm
+else
+CC             = arm-none-eabi-gcc
+LD             = $(CC)
+SHELL = sh
+OBJCOPY = arm-none-eabi-objcopy
+OBJDUMP = arm-none-eabi-objdump
+SIZE = arm-none-eabi-size
+NM = arm-none-eabi-nm
+endif
+REMOVE = rm -f
+COPY = cp
+
+
+# Launch with "make Q=''" to get full command display
+Q=@
+
+# MCU name and submodel
+MCU = arm7tdmi
+THUMB    = -mthumb
+THUMB_IW = -mthumb-interwork
+
+# Output format. (can be srec, ihex, binary)
+FORMAT = ihex
+
+#FLASH_MODE=ISP
+
+SRCARM = $($(TARGET).srcs)
+
+ASRCARM = crt0.S
+
+# Optimization level, can be [0, 1, 2, 3, s].
+# 0 = turn off optimization. s = optimize for size.
+# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
+OPT = s
+#OPT=3
+
+CSTANDARD = -std=gnu99
+
+CINCS = $(INCLUDES) -I $(SRC_ARCH)/include
+
+# Compiler flags.
+CFLAGS = $(CINCS)
+CFLAGS += -O$(OPT)
+# CFLAGS += -malignment-traps
+CFLAGS += -Wall -Wcast-qual -Wimplicit -Wcast-align -Winline
+CFLAGS += -Wpointer-arith -Wswitch
+CFLAGS += -Wredundant-decls -Wreturn-type -Wshadow -Wunused
+CFLAGS += -Wa,-adhlns=$(OBJDIR)/$(notdir $(subst $(suffix $<),.lst,$<))
+CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
+CFLAGS += -ffunction-sections -fdata-sections
+
+# flags only for C
+CFLAGS + = -Wstrict-prototypes -Wmissing-declarations
+CFLAGS += -Wmissing-prototypes -Wnested-externs
+CFLAGS += $(CSTANDARD)
+CFLAGS += $($(TARGET).CFLAGS) $(LOCAL_CFLAGS)
+
+# Assembler flags.
+ASFLAGS = -Wa,-adhlns=$(OBJDIR)/$(notdir $(<:.S=.lst))
+
+#Additional libraries.
+MATH_LIB = -lm
+
+# Linker flags.
+LDFLAGS = -n -nostartfiles -Wl,-Map=$(OBJDIR)/$(TARGET).map,--cref
+LDFLAGS += -lc
+LDFLAGS += $(NEWLIBLPC) $(MATH_LIB)
+LDFLAGS += -lc -lgcc
+LDFLAGS += $(CPLUSPLUS_LIB)
+LDFLAGS += -Wl,--gc-sections
+# -lusbstack -Larm7/lpcusb
+
+ifndef LDSCRIPT
+ifeq ($(FLASH_MODE),ISP)
+LDSCRIPT = $(SRC_ARCH)/LPC2148-ROM.ld
+else ifeq ($(FLASH_MODE),ISP)
+LDSCRIPT = $(SRC_ARCH)/LPC2148-ROM.ld
+else
+LDSCRIPT = $(SRC_ARCH)/LPC2148-ROM-bl.ld
+endif
+endif
+LDFLAGS +=-T$(LDSCRIPT)
+#endif
+
+
+
+# ---------------------------------------------------------------------------
+# Flash-Programming support using lpc21isp by Martin Maurer
+
+# Settings and variables:
+LPC21ISP = lpc21isp
+ifndef LPC21ISP_PORT
+LPC21ISP_PORT = /dev/ttyS0
+endif
+LPC21ISP_FLASHFILE = $(OBJDIR)/$(TARGET).hex
+# verbose output:
+#LPC21ISP_DEBUG = -debug
+# enter bootloader via RS232 DTR/RTS (only if hardware supports this
+# feature - see Philips AppNote):
+ifndef LPC21ISP_CONTROL
+LPC21ISP_CONTROL =
+# -control
+endif
+
+# ---------------------------------------------------------------------------
+# Flash-Programming support using lpc21iap by Martin Muller  (usb bootloader)
+
+LPC21IAP = $(PAPARAZZI_SRC)/sw/ground_segment/lpc21iap/lpc21iap
+
+# ---------------------------------------------------------------------------
+# Flash-Programming support using openocd
+OOCD = openocd
+OOCD_INTERFACE = arm-usb-ocd
+OOCD_TARGET    = csc
+
+
+# Define all object files.
+COBJ      = $(SRC:%.c=$(OBJDIR)/%.o)
+AOBJ      = $(ASRC:%.S=$(OBJDIR)/%.o)
+COBJARM   = $(SRCARM:%.c=$(OBJDIR)/%.o)
+AOBJARM   = $(ASRCARM:%.S=$(OBJDIR)/%.o)
+
+# Define all listing files.
+LST = $(ASRC:.S=.lst) $(ASRCARM:.S=.lst) $(SRC:.c=.lst) $(SRCARM:.c=.lst)
+
+# Compiler flags to generate dependency files.
+GENDEPFLAGS = -MD -MP -MF .dep/$(@F).d
+
+# Combine all necessary flags and optional flags.
+# Add target processor to flags.
+ALL_CFLAGS = -mcpu=$(MCU) $(THUMB_IW) -I. $(CFLAGS)
+ALL_ASFLAGS = -mcpu=$(MCU) $(THUMB_IW) -I. -x assembler-with-cpp $(ASFLAGS)
+
+
+# Default target.
+all: sizebefore build sizeafter
+
+build: elf hex lss sym
+
+elf: $(OBJDIR)/$(TARGET).elf
+hex: $(OBJDIR)/$(TARGET).hex
+lss: $(OBJDIR)/$(TARGET).lss
+sym: $(OBJDIR)/$(TARGET).sym
+
+
+# Display size of file.
+HEXSIZE = $(SIZE) --target=$(FORMAT) $(OBJDIR)/$(TARGET).hex
+ELFSIZE = $(SIZE) -A $(OBJDIR)/$(TARGET).elf
+sizebefore:
+       @if [ -f $(OBJDIR)/$(TARGET).elf ]; then echo; $(ELFSIZE); echo; fi
+
+sizeafter:
+       @if [ -f $(OBJDIR)/$(TARGET).elf ]; then echo; $(ELFSIZE); echo; fi
+
+
+# Program the device.
+load upload program: $(OBJDIR)/$(TARGET).hex
+ifeq ($(FLASH_MODE),IAP)
+       $(SUDO) $(LPC21IAP)  $(OBJDIR)/$(TARGET).elf
+else ifeq ($(FLASH_MODE),JTAG)
+       @echo -e "  OOCD\t$<"
+       $(Q)$(OOCD) -f interface/$(OOCD_INTERFACE).cfg \
+                -f board/$(OOCD_TARGET).cfg \
+                -c init \
+                -c "reset halt" \
+                -c "flash write_image erase $(OBJDIR)/$(TARGET).bin 
0x08000000" \
+                -c reset \
+                -c shutdown
+else
+       @echo
+       $(LPC21ISP) $(LPC21ISP_CONTROL) $(LPC21ISP_DEBUG) $(LPC21ISP_FLASHFILE) 
$(LPC21ISP_PORT) $(LPC21ISP_BAUD) $(LPC21ISP_XTAL)
+endif
+
+# Create final output files (.hex, .eep) from ELF output file.
+# TODO: handling the .eeprom-section should be redundant
+%.hex: %.elf
+       @echo OBJC $@
+       $(Q)$(OBJCOPY) -O $(FORMAT) $< $@
+
+
+# Create extended listing file from ELF output file.
+# testing: option -C
+%.lss: %.elf
+       @echo OBJD $@
+       $(Q)$(OBJDUMP) -h -S -C $< > $@
+
+
+# Create a symbol table from ELF output file.
+%.sym: %.elf
+       @echo NM $@
+       $(Q)$(NM) -n $< > $@
+
+
+# Link: create ELF output file from object files.
+.SECONDARY : $(OBJDIR)/$(TARGET).elf
+.PRECIOUS : $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ)
+%.elf:  $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ)
+       @echo LD $@
+       $(Q)$(CC) $(THUMB) $(ALL_CFLAGS) $(AOBJARM) $(AOBJ) $(COBJARM) $(COBJ)  
--output $@ $(LDFLAGS) $($(TARGET).LDFLAGS)
+
+
+# Compile: create object files from C source files. ARM-only
+$(OBJDIR)/%.o : %.c $(OBJDIR)/../Makefile.ac
+       @echo CC $@
+       $(Q)test -d $(dir $@) || mkdir -p $(dir $@)
+       $(Q)$(CC) -c $(ALL_CFLAGS) $(CONLYFLAGS) $< -o $@
+
+$(OBJDIR)/%.o : $(SRC_ARCH)/lpcusb/%.c $(OBJDIR)/../Makefile.ac
+       @echo CC $@
+       $(Q)$(CC) -c $(ALL_CFLAGS) $(CONLYFLAGS) $< -o $@
+
+
+# grab files in var/$(AIRCRAFT)/$(TARGET) aka $(OBJDIR)
+#$(OBJDIR)/%.o : $(OBJDIR)/%.c
+#      @echo CC $@
+#      $(Q)$(CC) -c $(ALL_CFLAGS) $(CONLYFLAGS) $< -o $@
+
+# Assemble: create object files from assembler source files. ARM/Thumb
+$(AOBJ) : $(OBJDIR)/%.o : %.S
+       @echo AS $@
+       $(Q)$(CC) -c $(THUMB) $(ALL_ASFLAGS) $< -o $@
+
+
+# Assemble: create object files from assembler source files. ARM-only
+$(AOBJARM) : $(OBJDIR)/%.o : $(SRC_ARCH)/%.S
+       @echo AS $@
+       $(Q)$(CC) -c $(ALL_ASFLAGS) $< -o $@
+
+
+# Target: clean project.
+clean: clean_list
+
+
+clean_list :
+       @echo
+       $(REMOVE) $(OBJDIR)/$(TARGET).hex
+       $(REMOVE) $(OBJDIR)/$(TARGET).obj
+       $(REMOVE) $(OBJDIR)/$(TARGET).elf
+       $(REMOVE) $(OBJDIR)/$(TARGET).map
+       $(REMOVE) $(OBJDIR)/$(TARGET).obj
+       $(REMOVE) $(OBJDIR)/$(TARGET).a90
+       $(REMOVE) $(OBJDIR)/$(TARGET).sym
+       $(REMOVE) $(OBJDIR)/$(TARGET).lnk
+       $(REMOVE) $(OBJDIR)/$(TARGET).lss
+       $(REMOVE) $(COBJ)
+       $(REMOVE) $(AOBJ)
+       $(REMOVE) $(COBJARM)
+       $(REMOVE) $(AOBJARM)
+       $(REMOVE) $(LST)
+       $(REMOVE) $(SRC:.c=.s)
+       $(REMOVE) $(SRC:.c=.d)
+       $(REMOVE) $(SRCARM:.c=.s)
+       $(REMOVE) $(SRCARM:.c=.d)
+       $(REMOVE) .dep/*
+       $(REMOVE) *~
+
+
+# Listing of phony targets.
+.PHONY : all sizebefore sizeafter \
+build elf hex lss sym clean clean_list program
+
+
+#
+# Dependencies
+#
+
+$(OBJDIR)/.depend:
+       @echo DEPEND $@
+       @test -d $(OBJDIR) || mkdir -p $(OBJDIR)
+       $(Q)$(CC) -MM -MG $(CFLAGS) $($(TARGET).srcs) | sed 
's|\([^\.]*\.o\)|$(OBJDIR)/\1|' > $@
+
+ifneq ($(MAKECMDGOALS),clean)
+ifneq ($(MAKECMDGOALS),erase)
+-include $(OBJDIR)/.depend
+endif
+endif




reply via email to

[Prev in Thread] Current Thread [Next in Thread]