edc7a59091
Compatible with old bootloader. Adds an additional section with a copy of the interrupt vector table to the end of the image. This is needed by the new bootloader and should be ok for the old bootloader. Note that for this to work, everybody needs python installed with the IntelHex python package. On Linux this can be achieved with pip install IntelHex
155 lines
5.5 KiB
Text
155 lines
5.5 KiB
Text
CONTIKI_TARGET_DIRS = . dev apps net loader dev/arduino
|
|
|
|
CONTIKI_CORE=contiki-main
|
|
CONTIKI_TARGET_MAIN = ${CONTIKI_CORE}.o
|
|
CONTIKI_TARGET_SOURCEFILES += contiki-main.c params.c node-id.c
|
|
#Needed for slip
|
|
CONTIKI_TARGET_SOURCEFILES += led.c sensors.c slip_uart0.c slip.c leds-arch.c
|
|
CONTIKI_TARGET_SOURCEFILES += temperature-sensor.c adc.c
|
|
#Needed for Button
|
|
CONTIKI_TARGET_SOURCEFILES += button-sensor.c
|
|
# i2c Master
|
|
#CONTIKI_TARGET_SOURCEFILES += i2c.c
|
|
#Needed for DHT11 humidity sensor
|
|
CONTIKI_TARGET_SOURCEFILES += dht11.c
|
|
#Needed for DS18S20 temperature sensor
|
|
CONTIKI_TARGET_SOURCEFILES += ds1820.c
|
|
#Needed for Battery test
|
|
CONTIKI_TARGET_SOURCEFILES += battery-sensor.c batmon.c
|
|
#Needed for PIR
|
|
CONTIKI_TARGET_SOURCEFILES += pir-sensor.c
|
|
#Needed for OPTRIAC
|
|
CONTIKI_TARGET_SOURCEFILES += optriac-sensor.c
|
|
#Needed for SERVO
|
|
CONTIKI_TARGET_SOURCEFILES += servo.c servo-sensor.c
|
|
#Needed for Timer4 Servo
|
|
#CONTIKI_TARGET_SOURCEFILES += t4-servo.c t4-servo-sensor.c
|
|
#Needed for Relay 1 to 4
|
|
CONTIKI_TARGET_SOURCEFILES += relay.c relay-sensor.c
|
|
# Arduino
|
|
CONTIKI_TARGET_SOURCEFILES += wiring_digital.c
|
|
CONTIKI_TARGET_SOURCEFILES += new.cpp twi.c Wire.cpp WMath.cpp
|
|
CONTIKI_TARGET_SOURCEFILES += Print.cpp Stream.cpp WString.cpp
|
|
CONTIKI_TARGET_SOURCEFILES += SPI.cpp
|
|
CONTIKI_TARGET_SOURCEFILES += HardwareSerial.cpp HardwareSerial1.cpp
|
|
# guh Source Files
|
|
# Smart Grid Ready Interface
|
|
CONTIKI_TARGET_SOURCEFILES += sg-ready.c
|
|
|
|
CONTIKIAVR=$(CONTIKI)/cpu/avr
|
|
|
|
CONTIKIBOARD=.
|
|
BOOTLOADER_START = 0x3E000
|
|
CONTIKI_PLAT_DEFS = -DF_CPU=16000000UL -DAUTO_CRC_PADDING=2 -DPLAT_TIMER=5
|
|
|
|
MCU=atmega256rfr2
|
|
|
|
#AVRDUDE_PROGRAMMER=jtag2
|
|
AVRDUDE_PROGRAMMER=stk500v2
|
|
|
|
# For usb devices, you may either use PORT=usb, or (e.g. if you have
|
|
# more than one programmer connected) you can use the following trick to
|
|
# find out the serial number:
|
|
#
|
|
# The example is for an JTAGICE mkII used to program an atmega256:
|
|
# avrdude -v -P usb:xxxx -c jtag2 -p atmega256
|
|
# AVRDUDE_PORT=usb:00B000000D79
|
|
# For serial devices with bootloader we also use the AVRDUDE_PORT setting:
|
|
AVRDUDE_PORT=/dev/ttyUSB0
|
|
# Only needed for serial devices, use empty setting for other
|
|
# programmers
|
|
AVRDUDE_BAUD_OPTION=-b 57600
|
|
|
|
# Additional avrdude options
|
|
# First some flash options:
|
|
# Verify off is -V
|
|
# Erase is -e
|
|
# No-Erase (needed by our stk500 variant) is -D
|
|
# Note that it really doesn't turn off erase: It doesn't issue an
|
|
# explicit erase command (which is not implemented) but the bootloader
|
|
# *always* does an implicit erase when programming.
|
|
AVRDUDE_FLASH_OPTIONS=-D
|
|
AVRDUDE_OPTIONS=$(AVRDUDE_BAUD_OPTION) $(AVRDUDE_FLASH_OPTIONS)
|
|
AVRDUDE_MCU=m256rfr2
|
|
|
|
#debug
|
|
# CFLAGS += -save-temps
|
|
# Bootloader bonsai
|
|
# LDFLAGS += -save-temps
|
|
# For newer bootloaders we have a jump table at the end of the bootloader
|
|
# section: guhRF Bootloader MAC Address
|
|
BOOTLOADER_GET_MAC=0x0003ff80
|
|
BOOTLOADER_WRITE_PAGE_TO_FLASH=0x0003ff84
|
|
BOOTLOADER_GET_PART_COUNT=0x0003ff88
|
|
BOOTLOADER_GET_PART_SIZE=0x0003ff8c
|
|
BOOTLOADER_GET_PART_START=0x0003ff90
|
|
BOOTLOADER_SET_PART_OK=0x0003ff94
|
|
BOOTLOADER_CLR_PART_OK=0x0003ff98
|
|
BOOTLOADER_SET_BOOT_DEFAULT=0x0003ff9c
|
|
BOOTLOADER_SET_BOOT_NEXT=0x0003ffa0
|
|
BOOTLOADER_BACKUP_IRQ_TABLE=0x0003ffa4
|
|
BOOTLOADER_GET_BOOT_DEFAULT=0x0003ffa8
|
|
BOOTLOADER_GET_BOOT_NEXT=0x0003ffac
|
|
BOOTLOADER_GET_CALLERS_PART=0x0003ffb0
|
|
BOOTLOADER_PARTITION=0
|
|
|
|
ifeq ($(BOOTLOADER_PARTITION),0)
|
|
TEXT_SECTION_START=0x0
|
|
else
|
|
TEXT_SECTION_START=0x1ef00
|
|
endif
|
|
|
|
CUSTOM_SUFFIX=.$(BOOTLOADER_PARTITION)
|
|
|
|
LDFLAGS += -Wl,--defsym,bootloader_get_mac=$(BOOTLOADER_GET_MAC) \
|
|
-Wl,--defsym,_bootloader_write_page_to_flash=$(BOOTLOADER_WRITE_PAGE_TO_FLASH) \
|
|
-Wl,--defsym,bootloader_get_part_count=$(BOOTLOADER_GET_PART_COUNT) \
|
|
-Wl,--defsym,bootloader_get_part_size=$(BOOTLOADER_GET_PART_SIZE) \
|
|
-Wl,--defsym,bootloader_get_part_start=$(BOOTLOADER_GET_PART_START) \
|
|
-Wl,--defsym,_bootloader_set_part_ok=$(BOOTLOADER_SET_PART_OK) \
|
|
-Wl,--defsym,_bootloader_clr_part_ok=$(BOOTLOADER_CLR_PART_OK) \
|
|
-Wl,--defsym,_bootloader_set_boot_default=$(BOOTLOADER_SET_BOOT_DEFAULT) \
|
|
-Wl,--defsym,_bootloader_set_boot_next=$(BOOTLOADER_SET_BOOT_NEXT) \
|
|
-Wl,--defsym,_bootloader_backup_irq_table=$(BOOTLOADER_BACKUP_IRQ_TABLE) \
|
|
-Wl,--defsym,bootloader_get_boot_default=$(BOOTLOADER_GET_BOOT_DEFAULT) \
|
|
-Wl,--defsym,bootloader_get_boot_next=$(BOOTLOADER_GET_BOOT_NEXT) \
|
|
-Wl,--defsym,bootloader_get_callers_part=$(BOOTLOADER_GET_CALLERS_PART) \
|
|
-Wl,--section-start=.text=$(TEXT_SECTION_START)
|
|
|
|
|
|
include $(CONTIKIAVR)/Makefile.avr
|
|
include $(CONTIKIAVR)/radio/Makefile.radio
|
|
|
|
MODULES += core/net/mac core/net core/net/mac/sicslowmac \
|
|
core/net/mac/contikimac core/net/llsec core/net/llsec/noncoresec \
|
|
# core/net/ipv6 core/net/ipv4 core/net/ip \
|
|
# core/net/rime \
|
|
# core/net/rpl \
|
|
|
|
|
|
CUSTOM_RULE_LINK=1
|
|
|
|
%.$(TARGET)$(CUSTOM_SUFFIX): %.co $(PROJECT_OBJECTFILES) \
|
|
$(PROJECT_LIBRARIES) contiki-$(TARGET).a
|
|
$(TRACE_LD)
|
|
$(Q)$(LD) $(LDFLAGS) $(TARGET_STARTFILES) ${filter-out %.a,$^} \
|
|
${filter %.a,$^} $(TARGET_LIBFILES) -o $@
|
|
|
|
%: %.$(TARGET)
|
|
|
|
%: %.$(TARGET)$(CUSTOM_SUFFIX)
|
|
@
|
|
|
|
%.$(TARGET)$(CUSTOM_SUFFIX)-combined.hex: %.$(TARGET)$(CUSTOM_SUFFIX).hex
|
|
$(CONTIKI)/tools/genbackupisr.py $< > $@
|
|
|
|
flash: $(EXE).$(TARGET)$(CUSTOM_SUFFIX)-combined.u
|
|
|
|
avr-size: $(EXE).$(TARGET)$(CUSTOM_SUFFIX).sz
|
|
|
|
.PHONY: flash avr-size
|
|
|
|
.PRECIOUS: %.$(TARGET)$(CUSTOM_SUFFIX) \
|
|
$(EXE).$(TARGET)$(CUSTOM_SUFFIX).hex \
|
|
$(EXE).$(TARGET)$(CUSTOM_SUFFIX).eep \
|
|
$(EXE).$(TARGET)$(CUSTOM_SUFFIX)-combined.hex
|