# Adapted from Makefile.msp430 ### Check if we are running under Windows ifndef WINDIR ifdef OS ifneq (,$(findstring Windows,$(OS))) WINDIR := Windows endif endif endif ifdef nodeid CFLAGS += -DNODEID=$(nodeid) endif ### Define the CPU directory CONTIKI_CPU=$(CONTIKI)/cpu/at91sam7s ### Define the source files we have in the MSP430 port AT91SAM7S = clock.c debug-uart.c interrupt_utils.c newlib-syscalls.c sys-interrupt.c CONTIKI_TARGET_SOURCEFILES += $(AT91SAM7S) CONTIKI_SOURCEFILES += $(CONTIKI_TARGET_SOURCEFILES) CONTIKIDIRS=$(CONTIKI)/core/sys:$(CONTIKI)/core/dev:$(CONTIKI)/core/cfs:$(CONTIKI)/core/loader:$(CONTIKI)/core/net:$(CONTIKI)/core/lib ### Compiler definitions CC = arm-elf-gcc LD = arm-elf-ld AS = arm-elf-as AR = arm-elf-ar NM = arm-elf-nm OBJCOPY = arm-elf-objcopy STRIP = arm-elf-strip LINKERSCRIPT = $(CONTIKI_CPU)/AT91SAM7S64-ROM.ld STARTUP=startup-SAM7S.o # JTAG program upload OPENOCD = openocd OPENOCD_FLASH_CFG = arm7_wig_flash.cfg OPENOCD_RESET = arm7_wig_reset.cfg # USB program upload SAMIAM=Sam_I_Am SAMIAM_TTY=/dev/ttyACM0 ARCH_FLAGS= -mcpu=arm7tdmi THUMB_FLAGS=-mthumb -mthumb-interwork ARM_FLAGS=-mthumb-interwork CFLAGSNO = -I. -I$(CONTIKI)/core -I$(CONTIKI_CPU) -I$(CONTIKI_CPU)/loader \ -I$(CONTIKI_CPU)/dbg-io\ -I$(CONTIKI)/platform/$(TARGET) \ ${addprefix -I,$(APPDIRS)} \ -DWITH_UIP -DWITH_ASCII -DMCK=$(MCK) \ -Wall $(ARCH_FLAGS) -g CFLAGS += $(CFLAGSNO) -O -DRUN_AS_SYSTEM -DROM_RUN LDFLAGS += $(ARCH_FLAGS) -T $(LINKERSCRIPT) PROJECT_OBJECTFILES += ${addprefix $(OBJECTDIR)/,$(CONTIKI_TARGET_MAIN:.c=.o)} ### Setup directory search path for source files CONTIKI_TARGET_DIRS_CONCAT = ${addprefix $(CONTIKI)/platform/$(TARGET)/, \ $(CONTIKI_TARGET_DIRS)} vpath %.c $(PROJECTDIRS) \ $(CONTIKIDIRS) $(APPDIRS) $(CONTIKI_TARGET_DIRS_CONCAT) \ $(CONTIKI_CPU) $(CONTIKI_CPU)/loader $(CONTIKI_CPU)/dbg-io vpath %.S $(CONTIKI_CPU) %-interrupt.o: %-interrupt.c $(CC) $(CFLAGS) $(ARM_FLAGS) $< -c %-arm.o: %-arm.c $(CC) $(CFLAGS) $(ARM_FLAGS) $< -c interrupt-utils.o: interrupt-utils.c $(CC) $(CFLAGS) $(ARM_FLAGS) $< -c %.o: %.c $(CC) $(CFLAGS) $(THUMB_FLAGS) $< -c %.o: %.S $(CC) $(CFLAGS) $(ARM_FLAGS) $< -c %.ko: %.o $(LD) --relocatable -T $(CONTIKI_CPU)/merge-rodata.ld $< -o $@ $(STRIP) -K _init -K _fini --strip-unneeded -g -x $@ # Add a namelist to the kernel %-syms.elf: $^ $(STARTUP) : | awk -f $(CONTIKI)/tools/mknmlist > $*-tmp.c && mv $*-tmp.c $*-nm.c $(CC) $(LDFLAGS) $(CFLAGS) $(THUMB_FLAGS) -nostartfiles -o $@ $^ $*-nm.c $(NM) $@ | awk -f $(CONTIKI)/tools/mknmlist > $*-tmp.c && mv $*-tmp.c $*-nm.c -test -r $*.exclude && grep -v -f $*.exclude $*-nm.c >$*-tmp.c && mv $*-tmp.c $*-nm.c $(CC) $(LDFLAGS) $(CFLAGS) $(THUMB_FLAGS) -nostartfiles -o $*-syms.elf $^ $*-nm.c %.elf: $^ $(STARTUP) $(CC) $(LDFLAGS) $(CFLAGS) $(THUMB_FLAGS) -nostartfiles -o $@ $^ %.ihx: %.elf $(OBJCOPY) -O ihex $< $@ %.bin: %.elf $(OBJCOPY) -O binary $< $@ upload_ocd_%: %.bin cp $< /tmp/openocd_write.bin # Clear lock bits cd $(CONTIKI_CPU)/openocd;$(OPENOCD) -f $(OPENOCD_FLASH_CFG) -rm /tmp/openocd_write.bin upload_%: %.ihx # Clear lock bits $(SAMIAM) "open $(SAMIAM_TTY) , writew 0xffffff64 5a000004" $(SAMIAM) "open $(SAMIAM_TTY) , writew 0xffffff64 5a002004" $(SAMIAM) "open $(SAMIAM_TTY) , flash $< , go" ocd_reset: cd $(CONTIKI_CPU)/openocd;$(OPENOCD) -f $(OPENOCD_RESET) clean: -rm *.o -rm *.elf -rm *.ihx -rm *.bin -rm *-nm.c -rm *.ko