Merge pull request #9130 from kYc0o/cpu/atmega/unify_stacks

atmega: refactor cpu/board code and build/flash variables
This commit is contained in:
ZetaR60 2019-02-08 18:07:22 -05:00 committed by GitHub
commit 1f9e1857f7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 158 additions and 153 deletions

View File

@ -3,16 +3,19 @@ export CPU = atmega328p
USEMODULE += boards_common_arduino-atmega
#export needed for flash rule
export PORT_LINUX ?= /dev/ttyUSB0
export PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*)))
export PROGRAMMER_SPEED ?= 57600
# configure the terminal program
PORT_LINUX ?= /dev/ttyUSB0
PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*)))
BAUD ?= 9600
export FFLAGS += -p m328p
# PROGRAMMER defaults to arduino which is the internal flasher via USB. Can be
# overridden for debugging (which requires changes that require to use an ISP)
export PROGRAMMER ?= arduino
# PROGRAMMER defaults to arduino which is the internal flasher via USB
# using avrdude. Can be overridden for debugging (which requires changes
# that require to use an ISP)
PROGRAMMER ?= arduino
# set mcu model for avrdude
FFLAGS += -p m328p
# configure programmer speed in baud
FFLAGS_EXTRA += -b 57600
BOOTLOADER_SIZE ?= 2K
ROM_RESERVED ?= $(BOOTLOADER_SIZE)

View File

@ -3,16 +3,19 @@ export CPU = atmega2560
USEMODULE += boards_common_arduino-atmega
#export needed for flash rule
export PORT_LINUX ?= /dev/ttyACM0
export PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*)))
export PROGRAMMER_SPEED ?= 115200
# configure the terminal program
PORT_LINUX ?= /dev/ttyACM0
PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*)))
BAUD ?= 9600
export FFLAGS += -p m2560
# PROGRAMMER defaults to stk500v2 which is the internal flasher via USB. Can be
# overridden for debugging (which requires changes that require to use an ISP)
export PROGRAMMER ?= stk500v2
# PROGRAMMER defaults to stk500v2 which is the internal flasher via USB
# using avrdude. Can be overridden for debugging (which requires changes
# that require to use an ISP)
PROGRAMMER ?= stk500v2
# set mcu model for avrdude
FFLAGS += -p m2560
# configure programmer speed in baud
FFLAGS_EXTRA += -b 115200
BOOTLOADER_SIZE ?= 8K
ROM_RESERVED ?= $(BOOTLOADER_SIZE)

View File

@ -3,16 +3,19 @@ export CPU = atmega328p
USEMODULE += boards_common_arduino-atmega
# export needed for flash rule
export PORT_LINUX ?= /dev/ttyACM0
export PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*)))
export PROGRAMMER_SPEED ?= 115200
# configure the terminal program
PORT_LINUX ?= /dev/ttyACM0
PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*)))
BAUD ?= 9600
export FFLAGS += -p m328p
# PROGRAMMER defaults to arduino which is the internal flasher via USB. Can be
# overridden for debugging (which requires changes that require to use an ISP)
export PROGRAMMER ?= arduino
# PROGRAMMER defaults to stk500v2 which is the internal flasher via USB
# using avrdude. Can be overridden for debugging (which requires changes
# that require to use an ISP)
PROGRAMMER ?= arduino
# set mcu model for avrdude
FFLAGS += -p m328p
# configure programmer speed in baud
FFLAGS_EXTRA += -b 115200
BOOTLOADER_SIZE ?= 512
ROM_RESERVED ?= $(BOOTLOADER_SIZE)

View File

@ -11,6 +11,3 @@ ifeq (,$(filter jiminy-mega256rfr2,$(BOARD)))
FEATURES_PROVIDED += arduino
FEATURES_PROVIDED += periph_pwm
endif
# The board MPU family (used for grouping by the CI system)
FEATURES_MCU_GROUP = avr8

View File

@ -3,19 +3,10 @@ include $(RIOTBOARD)/common/arduino-atmega/Makefile.dep
INCLUDES += -I$(RIOTBOARD)/common/arduino-atmega/include
# refine serial port information
export BAUD ?= 9600
include $(RIOTMAKE)/tools/serial.inc.mk
export FLASHER = avrdude
export DIST_PATH = $(RIOTBOARD)/$(BOARD)/dist
export DEBUGSERVER_PORT = 4242
export DEBUGSERVER = $(DIST_PATH)/debug_srv.sh
export DEBUGSERVER_FLAGS = "-g -j usb :$(DEBUGSERVER_PORT)"
export DEBUGGER_FLAGS = "-x $(RIOTBOARD)/$(BOARD)/dist/gdb.conf $(ELFFILE)"
export DEBUGGER = $(DIST_PATH)/debug.sh $(DEBUGSERVER_FLAGS) $(DIST_PATH) $(DEBUGSERVER_PORT)
# Disable auto erase for flash and avoid error if signature doesn't match
FFLAGS_EXTRA += -F -D
export PROGRAMMER_FLAGS = -P $(PORT) -b $(PROGRAMMER_SPEED)
OFLAGS += -j .text -j .data
export FFLAGS += -c $(PROGRAMMER) $(PROGRAMMER_FLAGS) -F -D -U flash:w:$(HEXFILE)
# include avrdude flashing tool
include $(RIOTMAKE)/tools/avrdude.inc.mk

View File

@ -1,10 +1,8 @@
# This board is based on an atmega CPU, thus import the features from it
include $(RIOTBOARD)/common/arduino-atmega/Makefile.features
# Put defined MCU peripherals here (in alphabetical order)
# Peripherals are defined in common/arduino-atmega/Makefile.features
# Add only additional Peripherals
# The board MPU family (used for grouping by the CI system)
FEATURES_MCU_GROUP = avr6
include $(RIOTCPU)/atmega256rfr2/Makefile.features
-include $(RIOTCPU)/atmega256rfr2/Makefile.features

View File

@ -1,28 +1,30 @@
# define the cpu used by the jiminy board
export CPU = atmega256rfr2
# export needed for flash rule
export PORT_LINUX ?= /dev/ttyACM0
export PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*)))
# Serial Baud rate for Ffasher is configured to 500kBaud
# see /usr/include/asm-generic/termbits.h for availabel baudrates on your linux system
export PROGRAMMER_SPEED ?= 0010005
export FFLAGS += -p atmega256rfr2
# configure the terminal program
PORT_LINUX ?= /dev/ttyACM0
PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*)))
# refine serial port information for pyterm
# For 8MHz F_CPU following Baudrate have good error rates
# 76923
# 38400
export BAUD = 38400
BAUD ?= 38400
include $(RIOTMAKE)/tools/serial.inc.mk
# PROGRAMMER defaults to arduino which is the internal flasher via USB. Can be
# overridden for debugging (which requires changes that require to use an ISP)
export PROGRAMMER ?= wiring
# PROGRAMMER defaults to wiring which is the internal flasher via USB
# using avrdude. Can be overridden for debugging (which requires changes
# that require to use an ISP)
PROGRAMMER ?= wiring
# set mcu model for avrdude (mandatory)
FFLAGS += -p atmega256rfr2
# Serial Baud rate for flasher is configured to 500kBaud
# see /usr/include/asm-generic/termbits.h for availabel baudrates on your linux system
FFLAGS_EXTRA += -b 0010005
# avoid error if mcu signature doesn't match
FFLAGS_EXTRA += -F
# From current fuse configuration
BOOTLOADER_SIZE ?= 4K
ROM_RESERVED ?= $(BOOTLOADER_SIZE)
include $(RIOTBOARD)/common/arduino-atmega/Makefile.include
include $(RIOTMAKE)/tools/avrdude.inc.mk

View File

@ -8,7 +8,4 @@ FEATURES_PROVIDED += periph_uart
# Various other features (if any)
# The board MPU family (used for grouping by the CI system)
FEATURES_MCU_GROUP = avr8
include $(RIOTCPU)/atmega1284p/Makefile.features
-include $(RIOTCPU)/atmega1284p/Makefile.features

View File

@ -7,23 +7,22 @@ BOOTLOADER_SIZE ?= 4K
ROM_RESERVED ?= $(BOOTLOADER_SIZE)
# configure the terminal program
export PORT_LINUX ?= /dev/ttyACM0
export PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbserial*)))
export BAUD ?= 9600
PORT_LINUX ?= /dev/ttyACM0
PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbmodem*)))
BAUD ?= 9600
include $(RIOTMAKE)/tools/serial.inc.mk
export FLASHER = avrdude
export DIST_PATH = $(RIOTBOARD)/$(BOARD)/dist
export DEBUGSERVER_PORT = 4242
export DEBUGSERVER = $(DIST_PATH)/debug_srv.sh
export DEBUGSERVER_FLAGS = "-g -j usb :$(DEBUGSERVER_PORT)"
export DEBUGGER_FLAGS = "-x $(RIOTBOARD)/$(BOARD)/dist/gdb.conf $(ELFFILE)"
export DEBUGGER = $(DIST_PATH)/debug.sh $(DEBUGSERVER_FLAGS) $(DIST_PATH) $(DEBUGSERVER_PORT)
# PROGRAMMER defaults to the external flasher Bus Pirate ISP using avrdude.
PROGRAMMER ?= buspirate
# set mcu model for avrdude
FFLAGS += -p m1284p
# set serial port for avrdude with buspirate
ifeq ($(OS),Linux)
AVRDUDE_PORT ?= /dev/ttyUSB0
else ifeq ($(OS),Darwin)
AVRDUDE_PORT ?= $(firstword $(sort $(wildcard /dev/tty.usbserial*)))
endif
# avoid error if mcu signature doesn't match
FFLAGS_EXTRA += -F
# PROGRAMMER defaults to the Bus Pirate ISP
export PROGRAMMER ?= buspirate
export PROGRAMMER_FLAGS = -P /dev/ttyUSB0
OFLAGS += -j .text -j .data
export FFLAGS += -p m1284p -c $(PROGRAMMER) $(PROGRAMMER_FLAGS) -F -U flash:w:$(HEXFILE)
include $(RIOTMAKE)/tools/avrdude.inc.mk

View File

@ -8,7 +8,4 @@ FEATURES_PROVIDED += periph_uart
# Various other features (if any)
# The board MPU family (used for grouping by the CI system)
FEATURES_MCU_GROUP = avr8
include $(RIOTCPU)/atmega1281/Makefile.features
-include $(RIOTCPU)/atmega1281/Makefile.features

View File

@ -13,31 +13,15 @@ PORT_DARWIN ?= $(firstword $(sort $(wildcard /dev/tty.usbserial*)))
BAUD ?= 9600
include $(RIOTMAKE)/tools/serial.inc.mk
# define tools used for building the project
export PREFIX = avr-
export CC = $(PREFIX)gcc
export CXX = $(PREFIX)c++
export AR = $(PREFIX)ar
export AS = $(PREFIX)as
export LINK = $(PREFIX)gcc
export SIZE = $(PREFIX)size
export OBJCOPY = $(PREFIX)objcopy
# PROGRAMMER defaults to stk500v1 which is the internal flasher via USB
# using avrdude. Can be overridden for debugging (which requires changes
# that require to use an ISP)
PROGRAMMER ?= stk500v1
# set mcu model for avrdude
FFLAGS += -p m1281
# configure programmer speed in baud
FFLAGS_EXTRA += -b 115200
# avoid error if mcu signature doesn't match
FFLAGS_EXTRA += -F
export FLASHER = avrdude
export DIST_PATH = $(RIOTBOARD)/$(BOARD)/dist
export DEBUGSERVER_PORT = 4242
export DEBUGSERVER = $(DIST_PATH)/debug_srv.sh
export DEBUGSERVER_FLAGS = "-g -j usb :$(DEBUGSERVER_PORT)"
export DEBUGGER_FLAGS = "-x $(RIOTBOARD)/$(BOARD)/dist/gdb.conf $(ELFFILE)"
export DEBUGGER = $(DIST_PATH)/debug.sh $(DEBUGSERVER_FLAGS) $(DIST_PATH) $(DEBUGSERVER_PORT)
# PROGRAMMER defaults to stk500v1 which is the internal flasher via USB. Can be
# overridden for debugging (which requires changes that require to use an ISP)
export PROGRAMMER ?= stk500v1
ifeq ($(PROGRAMMER), stk500v1)
export PROGRAMMER_FLAGS = -P $(PORT) -b 115200
endif
OFLAGS += -j .text -j .data
export FFLAGS += -p m1281 -c $(PROGRAMMER) $(PROGRAMMER_FLAGS) -F -U flash:w:$(HEXFILE)
include $(RIOTMAKE)/tools/avrdude.inc.mk

View File

@ -1 +1 @@
include $(RIOTBASE)/Makefile.base
include $(RIOTMAKE)/periph.mk

View File

@ -1,44 +1,9 @@
# Target architecture for the build. Use avr if you are unsure.
export TARGET_ARCH ?= avr
export CFLAGS_CPU = -mmcu=$(CPU) $(CFLAGS_FPU)
export CFLAGS_LINK = -ffunction-sections -fdata-sections -fno-builtin -fshort-enums
export CFLAGS_DBG ?= -ggdb -g3
export CFLAGS_OPT ?= -Os
export CFLAGS += $(CFLAGS_CPU) $(CFLAGS_LINK) $(CFLAGS_DBG) $(CFLAGS_OPT)
export ASFLAGS += $(CFLAGS_CPU) $(CFLAGS_DBG)
LINKFLAGS += $(CFLAGS_CPU) $(CFLAGS_DBG) $(CFLAGS_OPT) -static -lgcc -e reset_handler -Wl,--gc-sections
# export the peripheral drivers to be linked into the final binary
export USEMODULE += atmega_common_periph
export USEMODULE += periph_common
# the atmel port uses stdio_uart
export USEMODULE += stdio_uart
# include module specific includes
export INCLUDES += -I$(RIOTCPU)/atmega_common/include \
-isystem$(RIOTCPU)/atmega_common/avr_libc_extra/include \
-isystem$(RIOTCPU)/atmega_common/avr_libc_extra/include/vendor
ifeq ($(LTO),1)
# avr-gcc <4.8.3 has a bug when using LTO which causes a warning to be printed always:
# '_vector_25' appears to be a misspelled signal handler [enabled by default]
# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59396
LINKFLAGS += -Wno-error
endif
# Use ROM_LEN and RAM_LEN during link
$(if $(ROM_LEN),,$(error ROM_LEN is not defined))
$(if $(RAM_LEN),,$(error RAM_LEN is not defined))
LINKFLAGS += $(LINKFLAGPREFIX)--defsym=__TEXT_REGION_LENGTH__=$(ROM_LEN)$(if $(ROM_RESERVED),-$(ROM_RESERVED))
LINKFLAGS += $(LINKFLAGPREFIX)--defsym=__DATA_REGION_LENGTH__=$(RAM_LEN)
# Use newer linker script to have ROM/RAM configuration symbols in binutils<2.26
LDSCRIPT_COMPAT = $(if $(shell $(TARGET_ARCH)-ld --verbose | grep __TEXT_REGION_LENGTH__),,\
-T$(RIOTCPU)/$(CPU)/ldscripts_compat/avr_2.26.ld)
LINKFLAGS += $(LDSCRIPT_COMPAT)
# avr libc needs some RIOT-specific support code
USEMODULE += avr_libc_extra
include $(RIOTMAKE)/arch/atmega.inc.mk

View File

@ -0,0 +1,50 @@
# Target architecture for the build. Use avr if you are unsure.
TARGET_ARCH ?= avr
CFLAGS_CPU = -mmcu=$(CPU) $(CFLAGS_FPU)
CFLAGS_LINK = -ffunction-sections -fdata-sections -fno-builtin -fshort-enums
CFLAGS_DBG ?= -ggdb -g3
CFLAGS_OPT ?= -Os
CFLAGS += $(CFLAGS_CPU) $(CFLAGS_LINK) $(CFLAGS_DBG) $(CFLAGS_OPT)
ASFLAGS += $(CFLAGS_CPU) $(CFLAGS_DBG)
LINKFLAGS += $(CFLAGS_CPU) $(CFLAGS_DBG) $(CFLAGS_OPT) -static -lgcc -e reset_handler -Wl,--gc-sections
OFLAGS += -j .text -j .data
# Tell the build system that the CPU depends on the atmega common files:
USEMODULE += atmega_common
# export the peripheral drivers to be linked into the final binary
USEMODULE += atmega_common_periph
USEMODULE += periph_common
# Export the peripheral drivers to be linked into the final binary, for now
# only atmega126rfr2 has periph drivers
ifeq ($(CPU), atmega256rfr2)
USEMODULE += periph
endif
# the atmel port uses stdio_uart
USEMODULE += stdio_uart
# explicitly tell the linker to link the syscalls and startup code.
# without this the interrupt vectors will not be linked correctly!
UNDEF += $(BINDIR)/atmega_common/startup.o
# Use ROM_LEN and RAM_LEN during link
$(if $(ROM_LEN),,$(error ROM_LEN is not defined))
$(if $(RAM_LEN),,$(error RAM_LEN is not defined))
LINKFLAGS += $(LINKFLAGPREFIX)--defsym=__TEXT_REGION_LENGTH__=$(ROM_LEN)$(if $(ROM_RESERVED),-$(ROM_RESERVED))
LINKFLAGS += $(LINKFLAGPREFIX)--defsym=__DATA_REGION_LENGTH__=$(RAM_LEN)
# Use newer linker script to have ROM/RAM configuration symbols in binutils<2.26
LDSCRIPT_COMPAT = $(if $(shell $(TARGET_ARCH)-ld --verbose | grep __TEXT_REGION_LENGTH__),,\
-T$(RIOTCPU)/$(CPU)/ldscripts_compat/avr_2.26.ld)
LINKFLAGS += $(LDSCRIPT_COMPAT)
ifeq ($(LTO),1)
# avr-gcc <4.8.3 has a bug when using LTO which causes a warning to be printed always:
# '_vector_25' appears to be a misspelled signal handler [enabled by default]
# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59396
LINKFLAGS += -Wno-error
endif

View File

@ -0,0 +1,16 @@
FLASHER = avrdude
DIST_PATH = $(RIOTBOARD)/$(BOARD)/dist
DEBUGSERVER_PORT = 4242
DEBUGSERVER = $(DIST_PATH)/debug_srv.sh
DEBUGSERVER_FLAGS = "-g -j usb :$(DEBUGSERVER_PORT)"
DEBUGGER_FLAGS = "-x $(RIOTBOARD)/$(BOARD)/dist/gdb.conf $(ELFFILE)"
DEBUGGER = $(DIST_PATH)/debug.sh $(DEBUGSERVER_FLAGS) $(DIST_PATH) $(DEBUGSERVER_PORT)
# make the flasher port configurable (e.g. with atmelice the port is usb)
# defaults to terminal's serial port if not configured
AVRDUDE_PORT ?= $(PORT)
PROGRAMMER_FLAGS = -P $(AVRDUDE_PORT) $(FFLAGS_EXTRA)
# don't force to flash HEXFILE, but set it as default
FLASHFILE ?= $(HEXFILE)
FFLAGS += -c $(PROGRAMMER) $(PROGRAMMER_FLAGS) -U flash:w:$(HEXFILE)