mirror of https://github.com/zrafa/xinu-avr.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
212 lines
6.7 KiB
212 lines
6.7 KiB
######################################################################### |
|
# # |
|
# # |
|
# Makefile for AVR atmega328p version of the Xinu operating system # |
|
# # |
|
# includes: .deps and .defs # |
|
# # |
|
# # |
|
######################################################################### |
|
|
|
COMPILER_ROOT = avr- |
|
PNAME = ATMEGA328P |
|
PLAT = Platform_$(PNAME) |
|
TOPDIR = .. |
|
|
|
CC = ${COMPILER_ROOT}gcc |
|
LD = ${COMPILER_ROOT}gcc |
|
OBJCOPY = ${COMPILER_ROOT}objcopy |
|
OBJDUMP = ${COMPILER_ROOT}objdump |
|
QEMU = /home/lechnerm/rafa/xinu/qemu_stm32/arm-softmmu/qemu-system-arm |
|
XINU = $(TOPDIR)/compile/xinu.elf |
|
XINUBIN = $(TOPDIR)/compile/xinu.bin |
|
XINUHEX = $(TOPDIR)/compile/xinu.hex |
|
XINUBOOT = $(TOPDIR)/compile/xinu |
|
BUILDMAKE = $(TOPDIR)/compile/bin/build-make |
|
MKVERS = $(TOPDIR)/compile/bin/mkvers |
|
|
|
MAKEDEP = $(CC) -M -MG |
|
|
|
DEPSFILE = .deps |
|
DEFSFILE = .defs |
|
VERSIONFILE = version |
|
LDSCRIPT = ld.script |
|
MKVERS = $(TOPDIR)/compile/bin/mkvers |
|
|
|
|
|
# RAFA -s $(TOPDIR)/device/ram \ |
|
REBUILDFLAGS = -s $(TOPDIR)/system debug.c \ |
|
#-s $(TOPDIR)/device/gpio \ |
|
#-s $(TOPDIR)/device/spi \ |
|
#-s $(TOPDIR)/device/avr_eeprom \ |
|
-s $(TOPDIR)/device/tty \ |
|
-s $(TOPDIR)/shell 'xsh_rdstest*' |
|
# |
|
REBUILDFLAGS = -s $(TOPDIR)/system \ |
|
-s $(TOPDIR)/lib \ |
|
-s $(TOPDIR)/device/nam \ |
|
-s $(TOPDIR)/device/tty \ |
|
-s $(TOPDIR)/main |
|
|
|
INCLUDE = -I$(TOPDIR)/include |
|
# RAFA DEFS = -DBSDURG -DVERSION=\""`cat $(VERSIONFILE)`"\" |
|
DEFS = -DVERSION=\""Xinu AVR 0.1 RAFA\0"\" |
|
|
|
# Compiler flags |
|
# CFLAGS = -mcpu=cortex-m3 -mno-unaligned-access -mthumb -fno-builtin -fno-stack-protector -nostdlib -c -Wall -O ${DEFS} ${INCLUDE} |
|
# CFLAGS = -DF_CPU=16000000UL -mmcu=atmega328p -mrelax -fno-builtin -fno-stack-protector -nostdlib -c -Wall -Os ${DEFS} ${INCLUDE} |
|
CFLAGS = -DF_CPU=16000000UL -mmcu=atmega328p -fno-builtin -c -Wall -Os ${DEFS} ${INCLUDE} |
|
# RAFA AGREGA LAS 3 de ABAJO para reducir size |
|
CFLAGS += -Wl,-static |
|
CFLAGS += -ffunction-sections |
|
CFLAGS += -fdata-sections |
|
CFLAGS += -Wl,--gc-sections |
|
CFLAGS += -mcall-prologues |
|
CFLAGS += -mrelax |
|
|
|
SFLAGS = ${INCLUDE} |
|
|
|
# Loader flags |
|
|
|
# RAFA LDFLAGS = -Wl,--wrap,malloc,--wrap,free,--wrap,realloc,--wrap,fdevopen |
|
# LDFLAGS = -mmcu=atmega328p -nostartfiles -T ld.script -Wl,-Map,xinu.map |
|
LDFLAGS = -mmcu=atmega328p -Wl,-Map,xinu.map -lm -Wl,--gc-sections -mrelax |
|
|
|
|
|
all: xinu |
|
|
|
#-------------------------------------------------------------------------------- |
|
# Handle generation of a new version string when initialize is recompiled |
|
#-------------------------------------------------------------------------------- |
|
|
|
newversion: |
|
@echo creating new version |
|
@$(MKVERS) $(PNAME) > version |
|
|
|
#-------------------------------------------------------------------------------- |
|
# Include generic make targets and rules from the file generated by build-make |
|
#-------------------------------------------------------------------------------- |
|
-include $(DEFSFILE) |
|
|
|
#-------------------------------------------------------------------------------- |
|
# Add files that require special rules and place start.o at the front |
|
#-------------------------------------------------------------------------------- |
|
# RAFA quitamos el start.S y start.o porque intentaremos el startup de avr |
|
LD_LIST = binaries/start.o $(filter-out binaries/start.o,$(OBJ_FILES)) |
|
# LD_LIST = $(filter-out binaries/start.o,$(OBJ_FILES)) |
|
|
|
#------------------------------------------------------------ |
|
# Rules for files that need special handling |
|
#------------------------------------------------------------ |
|
|
|
# Define variables for the Configuration file and generated files |
|
|
|
CONFFILE = $(TOPDIR)/config/Configuration |
|
CONFH = $(TOPDIR)/include/conf.h |
|
CONFC = $(TOPDIR)/system/conf.c |
|
|
|
# Define variables for the config program and its sources |
|
|
|
CONFPGM = $(TOPDIR)/config/config |
|
CONFL = $(TOPDIR)/config/config.l |
|
CONFY = $(TOPDIR)/config/config.y |
|
|
|
# Set up the required build directory structure |
|
|
|
BLDDIRS = binaries |
|
export |
|
|
|
#-------------------------------------------------------------------------------- |
|
# Specific additional rules and exceptions |
|
#-------------------------------------------------------------------------------- |
|
|
|
xinu: Makefile rebuild $(BLDDIRS) $(DEFSFILE) $(DEPSFILE) $(CONFH) $(CONFC) $(LD_LIST) |
|
@echo;echo 'Loading object files to produce xinu' |
|
# RAFA original : @$(LD) $(LDFLAGS) $(LD_LIST) -o $(XINU) -L/usr/lib/gcc/arm-none-eabi/6.3.1/ --print-memory-usage |
|
@$(LD) $(LDFLAGS) $(LD_LIST) -o $(XINU) |
|
@echo "Creating Binary..." |
|
@$(OBJCOPY) -O binary $(XINU) $(XINUBIN) |
|
|
|
examine-all: |
|
$(OBJDUMP) -D $(XINU) | less |
|
|
|
examine-header: |
|
$(OBJDUMP) -x $(XINU) | less |
|
|
|
flash: |
|
avr-objcopy -O ihex -R .eeprom $(XINU) $(XINUHEX) |
|
avrdude -p atmega328p -c arduino -P `ls -1 /dev/ttyUSB* /dev/ttyACM* 2>/dev/null | head -1` -b 57600 -D -U flash:w:$(XINUHEX):i |
|
#|| avrdude -p atmega328p -c arduino -P /dev/ttyACM0 -b 115200 -D -U flash:w:$(XINUHEX):i || avrdude -p atmega328p -c arduino -P /dev/ttyUSB0 -b 115200 -D -U flash:w:$(XINUHEX):i || avrdude -p atmega328p -c arduino -P /dev/ttyUSB0 -b 57600 -D -U flash:w:$(XINUHEX):i || avrdude -p atmega328p -c arduino -P /dev/ttyUSB0 -b 57600 -D -U flash:w:$(XINUHEX):i |
|
# avrdude -p atmega328p -c arduino -P /dev/ttyUSB0 -b 115200 -D -U flash:w:$(FIRMWARE):i |
|
|
|
|
|
qemu: |
|
$(QEMU) -serial stdio -M stm32-f103c8 -kernel $(XINUBIN) |
|
monitor: |
|
$(QEMU) -monitor stdio -serial stdio -M stm32-f103c8 -kernel $(XINUBIN) |
|
|
|
$(BLDDIRS): |
|
@mkdir -p $(BLDDIRS) |
|
|
|
objects: $(LD_LIST) |
|
|
|
$(CONFH): $(CONFFILE) $(CONFPGM) |
|
@echo making $(CONFH) |
|
@make configure |
|
|
|
$(CONFC): $(CONFFILE) $(CONFPGM) |
|
@echo making $(CONFC) |
|
@make configure |
|
|
|
$(CONFPGM): $(CONFL) $(CONFY) |
|
@echo making the config program |
|
@make -C $(TOPDIR)/config clean all install |
|
|
|
configure: |
|
@echo forcing a rebuild of conf.h and conf.c |
|
@make newversion |
|
@(cd $(TOPDIR)/config; make install) |
|
|
|
clean: |
|
@echo removing .o files |
|
@rm -f ${LD_LIST} |
|
@echo removing configuration files ... |
|
@rm -f $(CONFH) $(CONFC) |
|
@(cd $(TOPDIR)/config; make clean) |
|
@echo removing xinu ... |
|
@rm -f $(XINU) |
|
@rm -f $(XINUBIN) |
|
@rm -f $(XINUBOOT) |
|
|
|
#-------------------------------------------------------------------------------- |
|
# Locations of source directories and exceptions (.c and .[sS] files to exclude) |
|
#-------------------------------------------------------------------------------- |
|
|
|
$(DEFSFILE): |
|
@rm -f $(DEFSFILE) |
|
@echo "" > $(DEFSFILE) |
|
@make rebuild |
|
|
|
$(DEPSFILE): |
|
@rm -f $(DEPSFILE) |
|
@echo "" > $(DEPSFILE) |
|
@make depend |
|
|
|
rebuild: $(CONFC) |
|
@echo Rebuilding the $(DEFSFILE) file |
|
@$(BUILDMAKE) $(REBUILDFLAGS) > $(DEFSFILE) |
|
|
|
defclean: |
|
rm -f $(DEFSFILE) |
|
echo "" > $(DEFSFILE) |
|
|
|
depend: $(DEFSFILE) |
|
@echo;echo Making all dependencies in $(DEPSFILE) |
|
@$(MAKEDEP) ${INCLUDE} ${SRC_FULL} > $(DEPSFILE) |
|
@echo;echo Finished making dependencies |
|
|
|
depclean: |
|
rm -f $(DEPSFILE) |
|
echo "" > $(DEPSFILE) |
|
|
|
-include $(DEPSFILE)
|
|
|