⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makefile

📁 atmega2560 bootloader source code
💻
字号:
################################################################################
################################################################################
##                                                                            ##
## NOTE:  This makefile uses GNU make syntax.                                 ##
## =====  It may not work when called by other make utilities                 ##
##                                                                            ##
################################################################################
################################################################################

################################################################################
##     #########################################################################
## DEF #########################################################################
##     #########################################################################
################################################################################
# enter the product name for which you want to build the bootloader/monitor
# currently MB_128,MB_128_USBCAN are supported
#PRODUCT    = MB_128_USBCAN
#PRODUCT    = MB_128
PRODUCT    = MB_2560

ifeq ($(PRODUCT),MB_2560)
CPU = atmega2560
F_CPU=14745600UL
LDSECTION  = --section-start=.text=0x3E000
endif

ifeq ($(PRODUCT),MB_128)
CPU = atmega128
F_CPU=14745600UL
LDSECTION  = --section-start=.text=0x1E000
endif

ifeq ($(PRODUCT),MB_128_USBCAN)
CPU = at90can128
F_CPU=11095200UL 
LDSECTION  = --section-start=.text=0x1E000
endif

PROJECT = bootloader_$(CPU)

################################################################################
###         ####################################################################
### SOURCES ####################################################################
###         ####################################################################
################################################################################

OBJ  = bootloader_atmega2560.o

################################################################################
##       #######################################################################
## TOOLS #######################################################################
##       #######################################################################
################################################################################

COMPILER  = avr-gcc
ASSEMBLER = avr-gcc
LINKER    = avr-gcc
ROMIZER   = avr-objcopy
DUMPER    = avr-objdump

################################################################################
##       #######################################################################
## FLAGS #######################################################################
##       #######################################################################
################################################################################

COMMON_FLAGS  = -mmcu=$(CPU)
COMMON_FLAGS += -Os
COMMON_FLAGS += -mno-interrupts
COMMON_FLAGS += -funsigned-char
COMMON_FLAGS += -funsigned-bitfields
COMMON_FLAGS += -Wall
COMMON_FLAGS += -Wstrict-prototypes

LINK_FLAGS  = $(COMMON_FLAGS) -gstabs 

COMPILE_FLAGS  = $(LINK_FLAGS) -c -DF_CPU=$(F_CPU) -D$(PRODUCT) 
COMPILE_FLAGS += -Wa,-acdhlmns=$(<:.c=.lst)

ASSEMBLE_FLAGS  = $(COMMON_FLAGS) -c -I. -x assembler-with-cpp
ASSEMBLE_FLAGS += -Wa,-gstabs,-acdhlmns=$(<:.s=.lst)

EEPROM_FLAGS  = -j .eeprom
EEPROM_FLAGS += --change-section-lma .eeprom=0

FLASH_FLAGS  = -j .text
FLASH_FLAGS += -j .data

ELF_FLAGS  = -Wl,-Map=$(PROJECT).map
ELF_FLAGS += -Wl,$(LDSECTION)
ELF_FLAGS += --cref
ELF_FLAGS += -lm

################################################################################
##         #####################################################################
## ACTIONS #####################################################################
##         #####################################################################
################################################################################

COMPILE      = $(COMPILER) $(COMPILE_FLAGS)
ASSEMBLE     = $(ASSEMBLER) $(ASSEMBLE_FLAGS)
LINK         = $(LINKER) $(LINK_FLAGS)
REMOVE       = rm -f
COFFCONVERT  = $(ROMIZER) --debugging
COFFCONVERT += --change-section-address .data-0x800000
COFFCONVERT += --change-section-address .bss-0x800000
COFFCONVERT += --change-section-address .noinit-0x800000
COFFCONVERT += --change-section-address .eeprom-0x810000

################################################################################
##       #######################################################################
## BUILD #######################################################################
##       #######################################################################
################################################################################

all: elf flash eep list coff

rebuild: clean all

clean:
	$(REMOVE) $(PROJECT).hex
	$(REMOVE) $(PROJECT)_eeprom.hex
	$(REMOVE) $(PROJECT).elf
	$(REMOVE) $(PROJECT).map
	$(REMOVE) $(PROJECT).cof
	$(REMOVE) $(PROJECT).lst
	$(REMOVE) $(OBJ:.o=.lst)
	$(REMOVE) $(OBJ)

eep:     $(PROJECT)_eeprom.hex
flash:   $(PROJECT).hex
elf:     $(PROJECT).elf
list:    $(PROJECT).lst
coff:    $(PROJECT).cof

################################################################################
##      ########################################################################
## LINK ########################################################################
##      ########################################################################
################################################################################

$(PROJECT)_eeprom.hex: $(PROJECT).elf
	$(ROMIZER) $(EEPROM_FLAGS) -O ihex $(PROJECT).elf $(PROJECT)_eeprom.hex 

$(PROJECT).hex: $(PROJECT).elf
	$(ROMIZER) $(FLASH_FLAGS) -O ihex $(PROJECT).elf $(PROJECT).hex
#	cp $(PROJECT).hex c:\tmp

$(PROJECT).cof: $(PROJECT).elf
	$(COFFCONVERT) -O coff-avr $< $(PROJECT).cof

$(PROJECT).lst: $(PROJECT).elf
	$(DUMPER) -d -S $(PROJECT).elf > $(PROJECT).lst

$(PROJECT).elf: $(OBJ)
	$(LINK) $(OBJ) -o $(PROJECT).elf $(ELF_FLAGS)

################################################################################
##         #####################################################################
## COMPILE #####################################################################
##         #####################################################################
################################################################################

%.o : %.c
	$(COMPILE) $< -o $@

%.o : %.s
	$(ASSEMBLE) $< -o $@

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -