📄 stk500boot.kmk
字号:
################################################################################
################################################################################
## ##
## NOTE: This makefile uses GNU make syntax. ##
## ===== It may not work when called by other make utilities ##
## ##
################################################################################
################################################################################
################################################################################
### ###############################################################
### PROJECT NAME ###############################################################
### ###############################################################
################################################################################
PROJECT = Stk500Boot
################################################################################
## #########################################################################
## CPU #########################################################################
## #########################################################################
################################################################################
CPU = atmega128
################################################################################
### ####################################################################
### SOURCES ####################################################################
### ####################################################################
################################################################################
OBJ = SystemAsm.o
OBJ += main.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) -ggdb
COMPILE_FLAGS = $(LINK_FLAGS) -c -DF_CPU=7372800UL
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,-section-start=.text=0x1E000
ELF_FLAGS += --cref
ELF_FLAGS += -lm
################################################################################
## #####################################################################
## ACTIONS #####################################################################
## #####################################################################
################################################################################
COMPILE = $(COMPILER) $(COMPILE_FLAGS)
ASSEMBLE = $(ASSEMBLER) $(ASSEMBLE_FLAGS)
LINK = $(LINKER) $(LINK_FLAGS)
REMOVE = rm -f
################################################################################
## #######################################################################
## BUILD #######################################################################
## #######################################################################
################################################################################
all: elf flash eep list
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
################################################################################
## ########################################################################
## 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
$(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 + -