|
|
|
|
#########################################################################
|
|
|
|
|
# #
|
|
|
|
|
# #
|
|
|
|
|
# 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)
|