|
@@ -1,14 +1,5 @@
|
|
# Hey Emacs, this is a -*- makefile -*-
|
|
# Hey Emacs, this is a -*- makefile -*-
|
|
|
|
|
|
-# Define version number
|
|
|
|
-MAJOR = 0
|
|
|
|
-MINOR = 0
|
|
|
|
-PATCHLEVEL = 1
|
|
|
|
-FIX =
|
|
|
|
-
|
|
|
|
-# Forces bootloader version to 0, comment out for release
|
|
|
|
-#PRERELEASE =
|
|
|
|
-
|
|
|
|
#----------------------------------------------------------------------------
|
|
#----------------------------------------------------------------------------
|
|
# WinAVR Makefile Template written by Eric B. Weddington, Joerg Wunsch, et al.
|
|
# WinAVR Makefile Template written by Eric B. Weddington, Joerg Wunsch, et al.
|
|
#
|
|
#
|
|
@@ -25,7 +16,7 @@ FIX =
|
|
# Carlos Lamas
|
|
# Carlos Lamas
|
|
#
|
|
#
|
|
#
|
|
#
|
|
-# Extensively modified for sd2iec by Ingo Korb
|
|
|
|
|
|
+# Extensively modified for sd2iec and later adapted for ARM by Ingo Korb
|
|
#
|
|
#
|
|
# To rebuild project do "make clean" then "make all".
|
|
# To rebuild project do "make clean" then "make all".
|
|
#----------------------------------------------------------------------------
|
|
#----------------------------------------------------------------------------
|
|
@@ -50,62 +41,22 @@ endif
|
|
# Include the configuration file
|
|
# Include the configuration file
|
|
include $(CONFIG)
|
|
include $(CONFIG)
|
|
|
|
|
|
-# Set MCU name and length of binary for bootloader
|
|
|
|
-# WARNING: Fuse settings not tested!
|
|
|
|
-MCU := $(CONFIG_MCU)
|
|
|
|
-ifeq ($(MCU),atmega128)
|
|
|
|
- BINARY_LENGTH = 0x1f000
|
|
|
|
-# EFUSE = 0xff
|
|
|
|
-# HFUSE = 0x91
|
|
|
|
-# LFUSE = 0xaf
|
|
|
|
-else ifeq ($(MCU),atmega1281)
|
|
|
|
- BINARY_LENGTH = 0x1f000
|
|
|
|
- BOOTLDRSIZE = 0x0800
|
|
|
|
- EFUSE = 0xff
|
|
|
|
- HFUSE = 0xd2
|
|
|
|
- LFUSE = 0xfc
|
|
|
|
-else ifeq ($(MCU),atmega2561)
|
|
|
|
- BINARY_LENGTH = 0x3f000
|
|
|
|
- EFUSE = 0xfd
|
|
|
|
- HFUSE = 0x93
|
|
|
|
- LFUSE = 0xef
|
|
|
|
-else ifeq ($(MCU),atmega644)
|
|
|
|
- BINARY_LENGTH = 0xf000
|
|
|
|
- EFUSE = 0xfd
|
|
|
|
- HFUSE = 0x91
|
|
|
|
-# LFUSE = 0xef
|
|
|
|
- LFUSE = 0xaf
|
|
|
|
-else ifeq ($(MCU),atmega644p)
|
|
|
|
- BINARY_LENGTH = 0xf000
|
|
|
|
- EFUSE = 0xfd
|
|
|
|
- HFUSE = 0x91
|
|
|
|
- LFUSE = 0xef
|
|
|
|
-else
|
|
|
|
-.PHONY: nochip
|
|
|
|
-nochip:
|
|
|
|
- @echo '=============================================================='
|
|
|
|
- @echo 'No known target chip specified.'
|
|
|
|
- @echo
|
|
|
|
- @echo 'Please edit the Makefile.'
|
|
|
|
- @exit 1
|
|
|
|
-endif
|
|
|
|
-
|
|
|
|
# Directory for all generated files
|
|
# Directory for all generated files
|
|
-OBJDIR := obj-$(CONFIG_MCU:atmega%=m%)$(CONFIGSUFFIX)
|
|
|
|
|
|
+OBJDIR := obj$(CONFIGSUFFIX)
|
|
|
|
|
|
# Output format. (can be srec, ihex, binary)
|
|
# Output format. (can be srec, ihex, binary)
|
|
-FORMAT = ihex
|
|
|
|
|
|
+FORMAT = binary
|
|
|
|
|
|
|
|
+# Linker script
|
|
|
|
+LINKERSCRIPT = lpc1754.ld
|
|
|
|
|
|
# Target file name (without extension).
|
|
# Target file name (without extension).
|
|
TARGET = $(OBJDIR)/sd2snes
|
|
TARGET = $(OBJDIR)/sd2snes
|
|
|
|
|
|
|
|
+
|
|
# List C source files here. (C dependencies are automatically generated.)
|
|
# List C source files here. (C dependencies are automatically generated.)
|
|
-SRC = main.c ff.c utils.c led.c diskio.c sdcard.c spi.c crc7.c snes.c fpga.c memory.c crc16.c fileops.c fpga_spi.c smc.c filetypes.c
|
|
|
|
|
|
+SRC = main.c
|
|
|
|
|
|
-ifeq ($(CONFIG_UART_DEBUG),y)
|
|
|
|
- SRC += uart.c
|
|
|
|
-endif
|
|
|
|
|
|
|
|
# List Assembler source files here.
|
|
# List Assembler source files here.
|
|
# Make them always end in a capital .S. Files ending in a lowercase .s
|
|
# Make them always end in a capital .S. Files ending in a lowercase .s
|
|
@@ -114,19 +65,17 @@ endif
|
|
# Even though the DOS/Win* filesystem matches both .s and .S the same,
|
|
# Even though the DOS/Win* filesystem matches both .s and .S the same,
|
|
# it will preserve the spelling of the filenames, and gcc itself does
|
|
# it will preserve the spelling of the filenames, and gcc itself does
|
|
# care about how the name is spelled on its command-line.
|
|
# care about how the name is spelled on its command-line.
|
|
-ASRC =
|
|
|
|
|
|
+ASRC = startup.S
|
|
|
|
+
|
|
|
|
|
|
# Optimization level, can be [0, 1, 2, 3, s].
|
|
# Optimization level, can be [0, 1, 2, 3, s].
|
|
# 0 = turn off optimization. s = optimize for size.
|
|
# 0 = turn off optimization. s = optimize for size.
|
|
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
|
|
# (Note: 3 is not always the best optimization level. See avr-libc FAQ.)
|
|
# Use s -mcall-prologues when you really need size...
|
|
# Use s -mcall-prologues when you really need size...
|
|
|
|
+#OPT = 2
|
|
OPT = s
|
|
OPT = s
|
|
-#OPT = 3 -finline-functions
|
|
|
|
|
|
|
|
# Debugging format.
|
|
# Debugging format.
|
|
-# Native formats for AVR-GCC's -g are dwarf-2 [default] or stabs.
|
|
|
|
-# AVR Studio 4.10 requires dwarf-2.
|
|
|
|
-# AVR [Extended] COFF format requires stabs, plus an avr-objcopy run.
|
|
|
|
DEBUG = dwarf-2
|
|
DEBUG = dwarf-2
|
|
|
|
|
|
|
|
|
|
@@ -146,52 +95,33 @@ CSTANDARD = -std=gnu99
|
|
|
|
|
|
|
|
|
|
# Place -D or -U options here
|
|
# Place -D or -U options here
|
|
-CDEFS = -DF_CPU=$(CONFIG_MCU_FREQ)UL
|
|
|
|
|
|
+CDEFS = #-DF_CPU=$(CONFIG_MCU_FREQ)UL
|
|
|
|
|
|
-# Calculate bootloader version
|
|
|
|
-ifdef PRERELEASE
|
|
|
|
-BOOT_VERSION := 0
|
|
|
|
-else
|
|
|
|
-BOOT_VERSION := 0x$(MAJOR)$(MINOR)$(PATCHLEVEL)$(FIX)
|
|
|
|
-endif
|
|
|
|
-
|
|
|
|
-# Create a version number define
|
|
|
|
-ifdef PATCHLEVEL
|
|
|
|
-ifdef FIX
|
|
|
|
-PROGRAMVERSION := $(MAJOR).$(MINOR).$(PATCHLEVEL).$(FIX)
|
|
|
|
-else
|
|
|
|
-PROGRAMVERSION := $(MAJOR).$(MINOR).$(PATCHLEVEL)
|
|
|
|
-BOOT_VERSION := $(BOOT_VERSION)0
|
|
|
|
-endif
|
|
|
|
-else
|
|
|
|
-PROGRAMVERSION := $(MAJOR).$(MINOR)
|
|
|
|
-BOOT_VERSION := $(BOOT_VERSION)00
|
|
|
|
-endif
|
|
|
|
-
|
|
|
|
-ifdef PRERELEASE
|
|
|
|
-PROGRAMVERSION := $(PROGRAMVERSION)$(PRERELEASE)
|
|
|
|
-endif
|
|
|
|
-
|
|
|
|
-LONGVERSION := -$(CONFIG_MCU:atmega%=m%)$(CONFIGSUFFIX)
|
|
|
|
-
|
|
|
|
-CDEFS += -DVERSION=\"$(PROGRAMVERSION)\" -DLONGVERSION=\"$(LONGVERSION)\"
|
|
|
|
|
|
|
|
# Place -I options here
|
|
# Place -I options here
|
|
CINCS =
|
|
CINCS =
|
|
|
|
|
|
|
|
|
|
|
|
+# CPU-specific flags
|
|
|
|
+ifndef CPUFLAGS
|
|
|
|
+ CPUFLAGS := -mthumb -mcpu=cortex-m3
|
|
|
|
+endif
|
|
|
|
+
|
|
|
|
+ifndef ARCH
|
|
|
|
+ ARCH := arm-none-eabi
|
|
|
|
+endif
|
|
|
|
+
|
|
# Define programs and commands.
|
|
# Define programs and commands.
|
|
# CC must be defined here to generate the correct CFLAGS
|
|
# CC must be defined here to generate the correct CFLAGS
|
|
SHELL = sh
|
|
SHELL = sh
|
|
-CC = avr-gcc
|
|
|
|
-OBJCOPY = avr-objcopy
|
|
|
|
-OBJDUMP = avr-objdump
|
|
|
|
-SIZE = avr-size
|
|
|
|
-NM = avr-nm
|
|
|
|
-AVRDUDE = avrdude
|
|
|
|
|
|
+CC = $(ARCH)-gcc
|
|
|
|
+OBJCOPY = $(ARCH)-objcopy
|
|
|
|
+OBJDUMP = $(ARCH)-objdump
|
|
|
|
+SIZE = $(ARCH)-size
|
|
|
|
+NM = $(ARCH)-nm
|
|
REMOVE = rm -f
|
|
REMOVE = rm -f
|
|
COPY = cp
|
|
COPY = cp
|
|
-WINSHELL = cmd
|
|
|
|
|
|
+AWK = awk
|
|
|
|
|
|
|
|
|
|
#---------------- Compiler Options ----------------
|
|
#---------------- Compiler Options ----------------
|
|
@@ -204,34 +134,14 @@ WINSHELL = cmd
|
|
CFLAGS = -g$(DEBUG)
|
|
CFLAGS = -g$(DEBUG)
|
|
CFLAGS += $(CDEFS) $(CINCS)
|
|
CFLAGS += $(CDEFS) $(CINCS)
|
|
CFLAGS += -O$(OPT)
|
|
CFLAGS += -O$(OPT)
|
|
-CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
|
|
|
|
|
|
+CFLAGS += $(CPUFLAGS) -nostartfiles
|
|
|
|
+#CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
|
|
CFLAGS += -Wall -Wstrict-prototypes -Werror
|
|
CFLAGS += -Wall -Wstrict-prototypes -Werror
|
|
-CFLAGS += -Wa,-adhlns=$(OBJDIR)/$(<:.c=.lst)
|
|
|
|
|
|
+#CFLAGS += -Wa,-adhlns=$(OBJDIR)/$(<:.c=.lst)
|
|
CFLAGS += -I$(OBJDIR)
|
|
CFLAGS += -I$(OBJDIR)
|
|
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
|
|
CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
|
|
CFLAGS += $(CSTANDARD)
|
|
CFLAGS += $(CSTANDARD)
|
|
CFLAGS += -ffunction-sections -fdata-sections
|
|
CFLAGS += -ffunction-sections -fdata-sections
|
|
-#CFLAGS += -mcall-prologues
|
|
|
|
-
|
|
|
|
-# these are needed for GCC 4.3.2, which is more aggressive at inlining
|
|
|
|
-# gcc-4.2 knows one of those, but it tends to increase code size
|
|
|
|
-ifeq ($(shell $(CC) --version|gawk -f gcctest.awk),YES)
|
|
|
|
-CFLAGS += --param inline-call-cost=3
|
|
|
|
-CFLAGS += -fno-inline-small-functions
|
|
|
|
-CFLAGS += -fno-move-loop-invariants
|
|
|
|
-CFLAGS += -fno-split-wide-types
|
|
|
|
-
|
|
|
|
-# turn these on to keep the functions in the same order as in the source
|
|
|
|
-# this is only useful if you're looking at disassembly
|
|
|
|
-#CFLAGS += -fno-reorder-blocks
|
|
|
|
-#CFLAGS += -fno-reorder-blocks-and-partition
|
|
|
|
-#CFLAGS += -fno-reorder-functions
|
|
|
|
-#CFLAGS += -fno-toplevel-reorder
|
|
|
|
-endif
|
|
|
|
-
|
|
|
|
-ifeq ($(CONFIG_STACK_TRACKING),y)
|
|
|
|
- CFLAGS += -finstrument-functions
|
|
|
|
-endif
|
|
|
|
|
|
|
|
|
|
|
|
#---------------- Assembler Options ----------------
|
|
#---------------- Assembler Options ----------------
|
|
@@ -241,50 +151,7 @@ endif
|
|
# for use in COFF files, additional information about filenames
|
|
# for use in COFF files, additional information about filenames
|
|
# and function names needs to be present in the assembler source
|
|
# and function names needs to be present in the assembler source
|
|
# files -- see avr-libc docs [FIXME: not yet described there]
|
|
# files -- see avr-libc docs [FIXME: not yet described there]
|
|
-ASFLAGS = -Wa,-adhlns=$(OBJDIR)/$(<:.S=.lst),-gstabs -I$(OBJDIR)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-#---------------- Library Options ----------------
|
|
|
|
-# Minimalistic printf version
|
|
|
|
-PRINTF_LIB_MIN = -Wl,-u,vfprintf -lprintf_min
|
|
|
|
-
|
|
|
|
-# Floating point printf version (requires MATH_LIB = -lm below)
|
|
|
|
-PRINTF_LIB_FLOAT = -Wl,-u,vfprintf -lprintf_flt
|
|
|
|
-
|
|
|
|
-# If this is left blank, then it will use the Standard printf version.
|
|
|
|
-PRINTF_LIB =
|
|
|
|
-#PRINTF_LIB = $(PRINTF_LIB_MIN)
|
|
|
|
-#PRINTF_LIB = $(PRINTF_LIB_FLOAT)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-# Minimalistic scanf version
|
|
|
|
-SCANF_LIB_MIN = -Wl,-u,vfscanf -lscanf_min
|
|
|
|
-
|
|
|
|
-# Floating point + %[ scanf version (requires MATH_LIB = -lm below)
|
|
|
|
-SCANF_LIB_FLOAT = -Wl,-u,vfscanf -lscanf_flt
|
|
|
|
-
|
|
|
|
-# If this is left blank, then it will use the Standard scanf version.
|
|
|
|
-SCANF_LIB =
|
|
|
|
-#SCANF_LIB = $(SCANF_LIB_MIN)
|
|
|
|
-#SCANF_LIB = $(SCANF_LIB_FLOAT)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-MATH_LIB = -lm
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-#---------------- External Memory Options ----------------
|
|
|
|
-
|
|
|
|
-# 64 KB of external RAM, starting after internal RAM (ATmega128!),
|
|
|
|
-# used for variables (.data/.bss) and heap (malloc()).
|
|
|
|
-#EXTMEMOPTS = -Wl,-Tdata=0x801100,--defsym=__heap_end=0x80ffff
|
|
|
|
-
|
|
|
|
-# 64 KB of external RAM, starting after internal RAM (ATmega128!),
|
|
|
|
-# only used for heap (malloc()).
|
|
|
|
-#EXTMEMOPTS = -Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
|
|
|
|
-
|
|
|
|
-EXTMEMOPTS =
|
|
|
|
-
|
|
|
|
|
|
+ASFLAGS = $(CPUFLAGS) -Wa,-adhlns=$(OBJDIR)/$(<:.S=.lst),-gstabs -I$(OBJDIR)
|
|
|
|
|
|
|
|
|
|
#---------------- Linker Options ----------------
|
|
#---------------- Linker Options ----------------
|
|
@@ -292,105 +159,13 @@ EXTMEMOPTS =
|
|
# -Map: create map file
|
|
# -Map: create map file
|
|
# --cref: add cross reference to map file
|
|
# --cref: add cross reference to map file
|
|
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
|
|
LDFLAGS = -Wl,-Map=$(TARGET).map,--cref
|
|
-LDFLAGS += $(EXTMEMOPTS)
|
|
|
|
-LDFLAGS += $(PRINTF_LIB) $(SCANF_LIB) $(MATH_LIB)
|
|
|
|
|
|
+LDFLAGS += -T$(LINKERSCRIPT)
|
|
LDFLAGS += -Wl,--gc-sections
|
|
LDFLAGS += -Wl,--gc-sections
|
|
ifeq ($(CONFIG_LINKER_RELAX),y)
|
|
ifeq ($(CONFIG_LINKER_RELAX),y)
|
|
LDFLAGS += -Wl,-O9,--relax
|
|
LDFLAGS += -Wl,-O9,--relax
|
|
endif
|
|
endif
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
-#---------------- Programming Options (avrdude) ----------------
|
|
|
|
-
|
|
|
|
-# Programming hardware: alf avr910 avrisp bascom bsd
|
|
|
|
-# dt006 pavr picoweb pony-stk200 sp12 stk200 stk500 stk500v2
|
|
|
|
-#
|
|
|
|
-# Type: avrdude -c ?
|
|
|
|
-# to get a full listing.
|
|
|
|
-#
|
|
|
|
-AVRDUDE_PROGRAMMER = dragon_isp
|
|
|
|
-
|
|
|
|
-# com1 = serial port. Use lpt1 to connect to parallel port.
|
|
|
|
-AVRDUDE_PORT = usb # programmer connected to serial device
|
|
|
|
-
|
|
|
|
-AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
|
|
|
|
-# AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
|
|
|
|
-
|
|
|
|
-# Allow fuse overrides from the config file
|
|
|
|
-ifdef CONFIG_EFUSE
|
|
|
|
- EFUSE := CONFIG_EFUSE
|
|
|
|
-endif
|
|
|
|
-ifdef CONFIG_HFUSE
|
|
|
|
- HFUSE := CONFIG_HFUSE
|
|
|
|
-endif
|
|
|
|
-ifdef CONFIG_LFUSE
|
|
|
|
- LFUSE := CONFIG_LFUSE
|
|
|
|
-endif
|
|
|
|
-
|
|
|
|
-# Calculate command line arguments for fuses
|
|
|
|
-AVRDUDE_WRITE_FUSES :=
|
|
|
|
-ifdef EFUSE
|
|
|
|
- AVRDUDE_WRITE_FUSES += -U efuse:w:$(EFUSE):m
|
|
|
|
-endif
|
|
|
|
-ifdef HFUSE
|
|
|
|
- AVRDUDE_WRITE_FUSES += -U hfuse:w:$(HFUSE):m
|
|
|
|
-endif
|
|
|
|
-ifdef LFUSE
|
|
|
|
- AVRDUDE_WRITE_FUSES += -U lfuse:w:$(LFUSE):m
|
|
|
|
-endif
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-# Uncomment the following if you want avrdude's erase cycle counter.
|
|
|
|
-# Note that this counter needs to be initialized first using -Yn,
|
|
|
|
-# see avrdude manual.
|
|
|
|
-AVRDUDE_ERASE_COUNTER = -y
|
|
|
|
-
|
|
|
|
-# Uncomment the following if you do /not/ wish a verification to be
|
|
|
|
-# performed after programming the device.
|
|
|
|
-#AVRDUDE_NO_VERIFY = -V
|
|
|
|
-
|
|
|
|
-# Increase verbosity level. Please use this when submitting bug
|
|
|
|
-# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
|
|
|
|
-# to submit bug reports.
|
|
|
|
-#AVRDUDE_VERBOSE = -v -v
|
|
|
|
-
|
|
|
|
-AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER)
|
|
|
|
-AVRDUDE_FLAGS += $(AVRDUDE_NO_VERIFY)
|
|
|
|
-AVRDUDE_FLAGS += $(AVRDUDE_VERBOSE)
|
|
|
|
-AVRDUDE_FLAGS += $(AVRDUDE_ERASE_COUNTER)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-#---------------- Debugging Options ----------------
|
|
|
|
-
|
|
|
|
-# For simulavr only - target MCU frequency.
|
|
|
|
-DEBUG_MFREQ = $(CONFIG_MCU_FREQ)
|
|
|
|
-
|
|
|
|
-# Set the DEBUG_UI to either gdb or insight.
|
|
|
|
-# DEBUG_UI = gdb
|
|
|
|
-DEBUG_UI = insight
|
|
|
|
-
|
|
|
|
-# Set the debugging back-end to either avarice, simulavr.
|
|
|
|
-DEBUG_BACKEND = avarice
|
|
|
|
-#DEBUG_BACKEND = simulavr
|
|
|
|
-
|
|
|
|
-# GDB Init Filename.
|
|
|
|
-GDBINIT_FILE = __avr_gdbinit
|
|
|
|
-
|
|
|
|
-# When using avarice settings for the JTAG
|
|
|
|
-JTAG_DEV = /dev/com1
|
|
|
|
-
|
|
|
|
-# Debugging port used to communicate between GDB / avarice / simulavr.
|
|
|
|
-DEBUG_PORT = 4242
|
|
|
|
-
|
|
|
|
-# Debugging host used to communicate between GDB / avarice / simulavr, normally
|
|
|
|
-# just set to localhost unless doing some sort of crazy debugging when
|
|
|
|
-# avarice is running on a different computer.
|
|
|
|
-DEBUG_HOST = localhost
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
#============================================================================
|
|
#============================================================================
|
|
|
|
|
|
|
|
|
|
@@ -410,8 +185,8 @@ GENDEPFLAGS = -MMD -MP -MF .dep/$(@F).d
|
|
|
|
|
|
# Combine all necessary flags and optional flags.
|
|
# Combine all necessary flags and optional flags.
|
|
# Add target processor to flags.
|
|
# Add target processor to flags.
|
|
-ALL_CFLAGS = -mmcu=$(MCU) -I. $(CFLAGS) $(GENDEPFLAGS)
|
|
|
|
-ALL_ASFLAGS = -mmcu=$(MCU) -I. -x assembler-with-cpp $(ASFLAGS) $(CDEFS)
|
|
|
|
|
|
+ALL_CFLAGS = -I. $(CFLAGS) $(GENDEPFLAGS)
|
|
|
|
+ALL_ASFLAGS = -I. -x assembler-with-cpp $(ASFLAGS) $(CDEFS)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -431,111 +206,38 @@ eep: $(TARGET).eep
|
|
lss: $(TARGET).lss
|
|
lss: $(TARGET).lss
|
|
sym: $(TARGET).sym
|
|
sym: $(TARGET).sym
|
|
|
|
|
|
-# A little helper target for the maintainer =)
|
|
|
|
-copy2card:
|
|
|
|
- mount /mnt
|
|
|
|
- cp $(TARGET).bin /mnt
|
|
|
|
- umount /mnt
|
|
|
|
- sync
|
|
|
|
|
|
+# # A little helper target for the maintainer =)
|
|
|
|
+# copy2card:
|
|
|
|
+# cp $(TARGET).bin /mbed/hw_LPC1768.bin
|
|
|
|
+
|
|
|
|
|
|
|
|
+program: bin
|
|
|
|
+ utils/lpcchksum $(TARGET).bin
|
|
|
|
+ openocd -f openocd-usb.cfg -f lpc1754.cfg -f flash.cfg
|
|
|
|
|
|
-# Doxygen output:
|
|
|
|
-doxygen:
|
|
|
|
- -rm -rf doxyinput
|
|
|
|
- mkdir doxyinput
|
|
|
|
- cp *.h *.c doxyinput
|
|
|
|
- src2doxy.pl doxyinput/*.h doxyinput/*.c
|
|
|
|
- doxygen doxygen.conf
|
|
|
|
|
|
+debug: bin
|
|
|
|
+ openocd -f openocd-usb.cfg -f lpc1754.cfg
|
|
|
|
|
|
# Display size of file.
|
|
# Display size of file.
|
|
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
|
|
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
|
|
ELFSIZE = $(SIZE) -A $(TARGET).elf
|
|
ELFSIZE = $(SIZE) -A $(TARGET).elf
|
|
-AVRMEM = avr-mem.sh $(TARGET).elf $(MCU)
|
|
|
|
-
|
|
|
|
-# Program the device.
|
|
|
|
-program: bin hex eep
|
|
|
|
- $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
|
|
|
|
-
|
|
|
|
-# Set fuses of the device
|
|
|
|
-fuses: $(CONFIG)
|
|
|
|
- $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FUSES)
|
|
|
|
-
|
|
|
|
-# Generate avr-gdb config/init file which does the following:
|
|
|
|
-# define the reset signal, load the target file, connect to target, and set
|
|
|
|
-# a breakpoint at main().
|
|
|
|
-gdb-config:
|
|
|
|
- @$(REMOVE) $(GDBINIT_FILE)
|
|
|
|
- @echo define reset >> $(GDBINIT_FILE)
|
|
|
|
- @echo SIGNAL SIGHUP >> $(GDBINIT_FILE)
|
|
|
|
- @echo end >> $(GDBINIT_FILE)
|
|
|
|
- @echo file $(TARGET).elf >> $(GDBINIT_FILE)
|
|
|
|
- @echo target remote $(DEBUG_HOST):$(DEBUG_PORT) >> $(GDBINIT_FILE)
|
|
|
|
-ifeq ($(DEBUG_BACKEND),simulavr)
|
|
|
|
- @echo load >> $(GDBINIT_FILE)
|
|
|
|
-endif
|
|
|
|
- @echo break main >> $(GDBINIT_FILE)
|
|
|
|
-
|
|
|
|
-debug: gdb-config $(TARGET).elf
|
|
|
|
-ifeq ($(DEBUG_BACKEND), avarice)
|
|
|
|
- @echo Starting AVaRICE - Press enter when "waiting to connect" message displays.
|
|
|
|
- @$(WINSHELL) /c start avarice --jtag $(JTAG_DEV) --erase --program --file \
|
|
|
|
- $(TARGET).elf $(DEBUG_HOST):$(DEBUG_PORT)
|
|
|
|
- @$(WINSHELL) /c pause
|
|
|
|
-
|
|
|
|
-else
|
|
|
|
- @$(WINSHELL) /c start simulavr --gdbserver --device $(MCU) --clock-freq \
|
|
|
|
- $(DEBUG_MFREQ) --port $(DEBUG_PORT)
|
|
|
|
-endif
|
|
|
|
- @$(WINSHELL) /c start avr-$(DEBUG_UI) --command=$(GDBINIT_FILE)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-# Convert ELF to COFF for use in debugging / simulating in AVR Studio or VMLAB.
|
|
|
|
-COFFCONVERT=$(OBJCOPY) --debugging \
|
|
|
|
---change-section-address .data-0x800000 \
|
|
|
|
---change-section-address .bss-0x800000 \
|
|
|
|
---change-section-address .noinit-0x800000 \
|
|
|
|
---change-section-address .eeprom-0x810000
|
|
|
|
|
|
|
|
|
|
|
|
-coff: $(TARGET).elf
|
|
|
|
- $(COFFCONVERT) -O coff-avr $< $(TARGET).cof
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-extcoff: $(TARGET).elf
|
|
|
|
- $(COFFCONVERT) -O coff-ext-avr $< $(TARGET).cof
|
|
|
|
-
|
|
|
|
|
|
|
|
# Generate autoconf.h from config
|
|
# Generate autoconf.h from config
|
|
.PRECIOUS : $(OBJDIR)/autoconf.h
|
|
.PRECIOUS : $(OBJDIR)/autoconf.h
|
|
$(OBJDIR)/autoconf.h: $(CONFIG) | $(OBJDIR)
|
|
$(OBJDIR)/autoconf.h: $(CONFIG) | $(OBJDIR)
|
|
$(E) " CONF2H $(CONFIG)"
|
|
$(E) " CONF2H $(CONFIG)"
|
|
- $(Q)gawk -f conf2h.awk $(CONFIG) > $(OBJDIR)/autoconf.h
|
|
|
|
|
|
+ $(Q)$(AWK) -f conf2h.awk $(CONFIG) > $(OBJDIR)/autoconf.h
|
|
|
|
|
|
-# Create final output files (.hex, .eep) from ELF output file.
|
|
|
|
-ifeq ($(CONFIG_BOOTLOADER),y)
|
|
|
|
-$(OBJDIR)/%.bin: $(OBJDIR)/%.elf
|
|
|
|
- $(E) " BIN $@"
|
|
|
|
- $(Q)$(OBJCOPY) -O binary -R .eeprom $< $@
|
|
|
|
- $(E) " CRCGEN $@"
|
|
|
|
- -$(Q)crcgen-new $@ $(BINARY_LENGTH) $(CONFIG_BOOT_DEVID) $(BOOT_VERSION)
|
|
|
|
- $(E) " COPY $(CONFIG_HARDWARE_NAME)-firmware-$(PROGRAMVERSION).bin"
|
|
|
|
- $(Q)$(COPY) $@ $(OBJDIR)/$(CONFIG_HARDWARE_NAME)-firmware-$(PROGRAMVERSION).bin
|
|
|
|
-else
|
|
|
|
|
|
+# Create final output files from ELF output file.
|
|
$(OBJDIR)/%.bin: $(OBJDIR)/%.elf
|
|
$(OBJDIR)/%.bin: $(OBJDIR)/%.elf
|
|
$(E) " BIN $@"
|
|
$(E) " BIN $@"
|
|
- $(Q)$(OBJCOPY) -O binary -R .eeprom $< $@
|
|
|
|
-endif
|
|
|
|
-
|
|
|
|
|
|
+ $(Q)$(OBJCOPY) -O binary $< $@
|
|
|
|
|
|
$(OBJDIR)/%.hex: $(OBJDIR)/%.elf
|
|
$(OBJDIR)/%.hex: $(OBJDIR)/%.elf
|
|
$(E) " HEX $@"
|
|
$(E) " HEX $@"
|
|
- $(Q)$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@
|
|
|
|
-
|
|
|
|
-$(OBJDIR)/%.eep: $(OBJDIR)/%.elf
|
|
|
|
- -$(OBJCOPY) -j .eeprom --set-section-flags=.eeprom="alloc,load" \
|
|
|
|
- --change-section-lma .eeprom=0 -O $(FORMAT) $< $@
|
|
|
|
|
|
+ $(Q)$(OBJCOPY) -O $(FORMAT) $< $@
|
|
|
|
|
|
# Create extended listing file from ELF output file.
|
|
# Create extended listing file from ELF output file.
|
|
$(OBJDIR)/%.lss: $(OBJDIR)/%.elf
|
|
$(OBJDIR)/%.lss: $(OBJDIR)/%.elf
|
|
@@ -548,7 +250,6 @@ $(OBJDIR)/%.sym: $(OBJDIR)/%.elf
|
|
$(E)$(NM) -n $< > $@
|
|
$(E)$(NM) -n $< > $@
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
# Link: create ELF output file from object files.
|
|
# Link: create ELF output file from object files.
|
|
.SECONDARY : $(TARGET).elf
|
|
.SECONDARY : $(TARGET).elf
|
|
.PRECIOUS : $(OBJ)
|
|
.PRECIOUS : $(OBJ)
|
|
@@ -589,8 +290,6 @@ clean_list :
|
|
$(E) " CLEAN"
|
|
$(E) " CLEAN"
|
|
$(Q)$(REMOVE) $(TARGET).hex
|
|
$(Q)$(REMOVE) $(TARGET).hex
|
|
$(Q)$(REMOVE) $(TARGET).bin
|
|
$(Q)$(REMOVE) $(TARGET).bin
|
|
- $(Q)$(REMOVE) $(TARGET).eep
|
|
|
|
- $(Q)$(REMOVE) $(TARGET).cof
|
|
|
|
$(Q)$(REMOVE) $(TARGET).elf
|
|
$(Q)$(REMOVE) $(TARGET).elf
|
|
$(Q)$(REMOVE) $(TARGET).map
|
|
$(Q)$(REMOVE) $(TARGET).map
|
|
$(Q)$(REMOVE) $(TARGET).sym
|
|
$(Q)$(REMOVE) $(TARGET).sym
|
|
@@ -602,18 +301,11 @@ clean_list :
|
|
$(Q)$(REMOVE) $(CSRC:.c=.s)
|
|
$(Q)$(REMOVE) $(CSRC:.c=.s)
|
|
$(Q)$(REMOVE) $(CSRC:.c=.d)
|
|
$(Q)$(REMOVE) $(CSRC:.c=.d)
|
|
$(Q)$(REMOVE) .dep/*
|
|
$(Q)$(REMOVE) .dep/*
|
|
- $(Q)$(REMOVE) -rf codedoc
|
|
|
|
- $(Q)$(REMOVE) -rf doxyinput
|
|
|
|
-$(Q)rmdir $(OBJDIR)
|
|
-$(Q)rmdir $(OBJDIR)
|
|
|
|
|
|
# Include the dependency files.
|
|
# Include the dependency files.
|
|
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
|
|
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
|
|
|
|
|
|
-# Manual dependency for the assembler module
|
|
|
|
-# $(OBJDIR)/fastloader-ll.o: config.h $(OBJDIR)/autoconf.h
|
|
|
|
-
|
|
|
|
# Listing of phony targets.
|
|
# Listing of phony targets.
|
|
-.PHONY : all begin finish end sizebefore sizeafter gccversion \
|
|
|
|
-build elf hex eep lss sym coff extcoff \
|
|
|
|
-clean clean_list program debug gdb-config doxygen
|
|
|
|
-
|
|
|
|
|
|
+.PHONY : all begin finish end sizebefore sizeafter \
|
|
|
|
+build elf hex lss sym clean clean_list
|