osd-contiki/platform/osd-merkur-256/Makefile.osd-merkur-256
Ralf Schlatterbeck edc7a59091 New make environment for new bootloader
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
2017-08-20 20:57:17 +02:00

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