diff options
Diffstat (limited to 'src/jtag/drivers/OpenULINK/Makefile')
-rw-r--r-- | src/jtag/drivers/OpenULINK/Makefile | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/src/jtag/drivers/OpenULINK/Makefile b/src/jtag/drivers/OpenULINK/Makefile new file mode 100644 index 00000000..c0e34350 --- /dev/null +++ b/src/jtag/drivers/OpenULINK/Makefile @@ -0,0 +1,90 @@ +############################################################################ +# Copyright (C) 2011 by Martin Schmoelzer # +# <martin.schmoelzer@student.tuwien.ac.at> # +# # +# This program is free software; you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation; either version 2 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program; if not, write to the # +# Free Software Foundation, Inc., # +# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # +############################################################################ + +# Define the name of our tools. Some distributions (e. g. Fedora) prefix +# the SDCC executables, change this accordingly! +PREFIX = + +# Small Device C Compiler: http://sdcc.sourceforge.net/ +CC = $(PREFIX)-sdcc + +# 8051 assembler, part of the SDCC software package. +AS = $(PREFIX)-sdas8051 + +# SDCC produces quite messy Intel HEX files. This tool is be used to re-format +# those files. It is not required for the firmware download functionality in +# the OpenOCD driver, but the resulting file is smaller. +PACKIHX = $(PREFIX)-packihx + +# GNU binutils size. Used to print the size of the IHX file generated by SDCC. +SIZE = size + +# Source and header directories. +SRC_DIR = src +INCLUDE_DIR = include + +CODE_SIZE = 0x1B00 + +# Starting address of __xdata variables. Since the OpenULINK firmware does not +# use any of the isochronous interrupts, we can use the isochronous buffer space +# as XDATA memory. +XRAM_LOC = 0x2000 +XRAM_SIZE = 0x0800 + +CFLAGS = --std-sdcc99 --opt-code-size --model-small +LDFLAGS = --code-loc 0x0000 --code-size $(CODE_SIZE) --xram-loc $(XRAM_LOC) \ + --xram-size $(XRAM_SIZE) --iram-size 256 --model-small + +# list of base object files +OBJECTS = main.rel usb.rel protocol.rel jtag.rel delay.rel USBJmpTb.rel +HEADERS = $(INCLUDE_DIR)/main.h \ + $(INCLUDE_DIR)/usb.h \ + $(INCLUDE_DIR)/protocol.h \ + $(INCLUDE_DIR)/jtag.h \ + $(INCLUDE_DIR)/delay.h \ + $(INCLUDE_DIR)/reg_ezusb.h \ + $(INCLUDE_DIR)/io.h \ + $(INCLUDE_DIR)/msgtypes.h \ + $(INCLUDE_DIR)/shorttypes.h + +# Disable all built-in rules. +.SUFFIXES: + +# Targets which are executed even when identically named file is present. +.PHONY: all, clean + +all: ulink_firmware.ihx + $(SIZE) ulink_firmware.ihx + +ulink_firmware.ihx: $(OBJECTS) + $(CC) -mmcs51 $(LDFLAGS) -o $@ $^ + +# Rebuild every C module (there are only 5 of them) if any header changes. +%.rel: $(SRC_DIR)/%.c $(HEADERS) + $(CC) -c $(CFLAGS) -mmcs51 -I$(INCLUDE_DIR) -o $@ $< + +%.rel: $(SRC_DIR)/%.a51 + $(AS) -lsgo $@ $< + +clean: + rm -f *.asm *.lst *.rel *.rst *.sym *.ihx *.lnk *.map *.mem + +hex: ulink_firmware.ihx + $(PACKIHX) ulink_firmware.ihx > ulink_firmware.hex |