📄 makefile
字号:
#
# Makefile for XNUT-100/XNUT-105 Ethernet Bootloader
#
# FOCUS Software Engineering Pty Ltd, Australia. <www.focus-sw.com>
#
# $Id: Makefile,v 1.5 2007/11/09 01:17:59 henrik Exp $
#
## General Flags and settings
CC = avr-gcc
SIZE = avr-size --format=avr
JTAGICE = "C:\Program Files\Atmel\AVR Tools\JTAGICEmkII\jtagiceii"
BOOTPAGE=0x1F000
## Project Directories
SRC_DIR = .
OBJ_DIR = ../obj
BIN_DIR = ../bin
SHARED_DIRS = shared:hmlib/common
VPATH = $(SRC_DIR):$(SHARED_DIRS):$(OBJ_DIR):$(BIN_DIR)
## Include Directories
INCLUDES = -I. -I.. -I$(subst :, -I,$(SHARED_DIRS)) -I$(SRC_DIR)
INCLUDES_100 = $(INCLUDES)
INCLUDES_105 = $(INCLUDES)
## Library Directories
LIBDIRS =
LIBDIRS_100 =
LIBDIRS_105 =
## Options common to compile, link and assembly rules
FLAGS =
FLAGS_100 = -mmcu=atmega128 $(FLAGS)
FLAGS_105 = -mmcu=at90can128 $(FLAGS)
## Compile options common for all C compilation units.
CFLAGS = -Wall -fno-delete-null-pointer-checks -D__HARVARD_ARCH__ -Os
CFLAGS += -mno-interrupts -mtiny-stack # Special optimisations only suitable for bootloader
CFLAGS += -Wp,-M,-MP,-MT,$(*F).o,-MF,.dep/$(@F).d
CFLAGS_100 = $(CFLAGS) -DXNUT_100 -DF_CPU=14745600 -DBOOTPAGE=$(BOOTPAGE)
CFLAGS_105 = $(CFLAGS) -DXNUT_105 -DF_CPU=12000000 -DBOOTPAGE=$(BOOTPAGE)
## Assembler flags
ASFLAGS = -x assembler-with-cpp
## Linker flags
LDFLAGS = -Wl,--defsym,__stack=0x10FF -nostartfiles -nodefaultlibs -Ttext=$(BOOTPAGE) -Wl,-Map=$@.map,--cref
LDFLAGS_100 = $(LDFLAGS)
LDFLAGS_105 = $(LDFLAGS)
## Libraries
LIBS =
LIBS_100 =
LIBS_105 =
## Source files
ASRCS = flash.s
SRCS = eboot.c \
tftp.c \
dhcp.c \
udp.c \
ip.c \
arp.c \
ether.c \
util.c
## Build
all: xnut105eboot.hex xnut100eboot.hex
xnut100eboot.elf: $(SRCS) $(ASRCS) settings.h
$(CC) -c $(FLAGS_100) $(INCLUDES_100) $(ASFLAGS) $(ASRCS)
$(CC) $(FLAGS_100) $(CFLAGS_100) $(INCLUDES_100) $(SRCS) $(ASRCS:%.s=%.o) $(LDFLAGS_100) $(LIBDIRS_100) $(LIBS_100) -o $(BIN_DIR)/$(@F)
$(SIZE) $(BIN_DIR)/$(@F)
$(RM) $(ASRCS:%.s=%.o)
xnut105eboot.elf: $(SRCS) $(ASRCS) settings.h
$(CC) -c $(FLAGS_105) $(INCLUDES_105) $(ASFLAGS) $(ASRCS)
$(CC) $(FLAGS_105) $(CFLAGS_105) $(INCLUDES_105) $(SRCS) $(ASRCS:%.s=%.o) $(LDFLAGS_105) $(LIBDIRS_105) $(LIBS_105) -o $(BIN_DIR)/$(@F)
$(SIZE) $(BIN_DIR)/$(@F)
$(RM) $(ASRCS:%.s=%.o)
## Program w/ JTAG
.PHONY: jtag100
jtag100: xnut100eboot.hex
$(JTAGICE) -j0x7970203f -datmega128 -e -pf -if$(BIN_DIR)/$(^F)
.PHONY: jtag105
jtag105: xnut105eboot.hex
$(JTAGICE) -j0x0978103f -dat90can128 -e -pf -if$(BIN_DIR)/$(^F)
## Rules for various binary formats
%.hex: %.elf
avr-objcopy -O ihex -R .eeprom $(BIN_DIR)/$(<F) $(BIN_DIR)/$(@F)
%.bin: %.elf
avr-objcopy -O binary $(BIN_DIR)/$(<F) $(BIN_DIR)/$(@F)
## Clean target
.PHONY: clean
clean:
-rm -rf .dep/ $(OBJ_DIR)/*.o $(BIN_DIR)/*.elf $(BIN_DIR)/*.hex $(BIN_DIR)/*.bin $(BIN_DIR)/*.eep
## Build target
.PHONY: build
build:
$(MAKE) clean
$(MAKE)
# Reset target
reset:
$(JTAGICE) -datmega128 -R
## Other dependencies
-include $(shell mkdir .dep 2>/dev/null) $(wildcard .dep/*)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -