Line 1... |
Line 1... |
|
include cpu_flags
|
|
|
|
SOURCE_LIB =
|
|
include SOURCE_LIB
|
|
|
|
HDR_SOURCE_DIR=lm32
|
|
|
TOOLCHAIN=$(PRONOC_WORK)/toolchain/lm32
|
TOOLCHAIN=$(PRONOC_WORK)/toolchain/lm32
|
IHEX2MIF =$(PRONOC_WORK)/toolchain/bin/ihex2mif
|
IHEX2MIF =$(PRONOC_WORK)/toolchain/bin/ihex2mif
|
IHEX2BIN =$(PRONOC_WORK)/toolchain/bin/ihex2bin
|
IHEX2BIN =$(PRONOC_WORK)/toolchain/bin/ihex2bin
|
BIN2HEX =$(PRONOC_WORK)/toolchain/bin/bin2str
|
BIN2HEX =$(PRONOC_WORK)/toolchain/bin/bin2str
|
|
BIN2MIF=$(PRONOC_WORK)/toolchain/bin/bin2mif
|
|
BIN2MEM=$(PRONOC_WORK)/toolchain/bin/bin2mem
|
|
|
#SREC2VRAM ?= ../../../toolchain/lm32/srec2vram/srec2vram
|
LM32_TOOL_PREFIX=${TOOLCHAIN}/bin/lm32-elf-
|
|
|
#RAMSIZE=3FFF
|
LM32_LD=$(LM32_TOOL_PREFIX)ld
|
#CPU_FLAGS=-mbarrel-shift-enabled -mmultiply-enabled -msign-extend-enabled -mdivide-enabled
|
LM32_AS=$(LM32_TOOL_PREFIX)as
|
CPU_FLAGS=-mbarrel-shift-enabled -mmultiply-enabled
|
LM32_CC=$(LM32_TOOL_PREFIX)gcc
|
|
LM32_AR=$(LM32_TOOL_PREFIX)ar
|
LM32_CC=${TOOLCHAIN}/bin/lm32-elf-gcc
|
LM32_OBJDUMP=$(LM32_TOOL_PREFIX)objdump
|
LM32_LD=${TOOLCHAIN}/bin/lm32-elf-ld
|
LM32_OBJCOPY=$(LM32_TOOL_PREFIX)objcopy
|
LM32_OBJCOPY=${TOOLCHAIN}/bin/lm32-elf-objcopy
|
|
LM32_OBJDUMP=${TOOLCHAIN}/bin/lm32-elf-objdump
|
|
LM32_LIB1=${TOOLCHAIN}/lm32-elf/lib
|
LM32_LIB1=${TOOLCHAIN}/lm32-elf/lib
|
LM32_LIB2=${TOOLCHAIN}/lib/gcc/lm32-elf/4.5.3
|
LM32_LIB2=${TOOLCHAIN}/lib/gcc/lm32-elf/4.5.3
|
|
|
LIBRARIES = -L${LM32_LIB1} -lc -lg -L${LM32_LIB2} -lgcc
|
LIBRARIES = -L${LM32_LIB1} -L${LM32_LIB2} -L. -L./$(HDR_SOURCE_DIR) -lc -lg -lorlib -lgcc
|
|
|
VRAMFILE=image.ram
|
|
|
|
#CFLAGS=-MMD -O2 -Wall -g -s -fomit-frame-pointer ${CPU_FLAGS}
|
CFLAGS := -Wall -Os -ggdb ${CPU_FLAGS}
|
CFLAGS := -Wall -Os -ggdb -ffreestanding ${CPU_FLAGS}
|
|
LDFLAGS=-nostdlib -nodefaultlibs -Tlinker.ld
|
LDFLAGS=-nostdlib -nodefaultlibs -Tlinker.ld
|
|
|
|
|
|
# Sources to go into the liborpsoc.a support library
|
|
COMPILE_SRCS= $(SOURCE_LIB)
|
|
|
|
#CPU_FLAGS=-mbarrel-shift-enabled -mmultiply-enabled
|
|
|
|
|
#LDFLAGS=-nostdlib -T -Tlinker.ld
|
#LDFLAGS=-nostdlib -T -Tlinker.ld
|
SEGMENTS = -j .text -j .rodata -j .data
|
SEGMENTS = -j .text -j .rodata -j .data
|
|
|
all: image.srec $(VRAMFILE)
|
all: image.ihex
|
|
|
crt0ram.o: crt0ram.S
|
lib:
|
$(LM32_CC) $(CFLAGS) -c crt0ram.S
|
#compile all source code
|
|
$(LM32_CC) -Wall $(CFLAGS) -c $(HDR_SOURCE_DIR)/crt0ram.S -o crt0ram.o
|
|
$(LM32_CC) -Wall $(CFLAGS) -c $(COMPILE_SRCS)
|
|
#add them to liborlib.a
|
|
$(LM32_AR) -cvq liborlib.a *.o
|
|
|
main.o: main.c
|
|
$(LM32_CC) $(CFLAGS) -c main.c
|
|
|
|
#soc-hw.o: soc-hw.c
|
main.o: lib main.c
|
#$(LM32_CC) $(CFLAGS) -c soc-hw.c
|
$(LM32_CC) -Wall $(CFLAGS) -c main.c -o main.o
|
|
|
image: crt0ram.o main.o linker.ld Makefile
|
image: main.o linker.ld Makefile
|
$(LM32_LD) $(LDFLAGS) -Map image.map -N -o image crt0ram.o main.o ${LIBRARIES}
|
$(LM32_LD) $(LDFLAGS) -Map image.map -N -o image crt0ram.o main.o $(LIBRARIES)
|
|
|
image.lst: image
|
image.lst: image
|
$(LM32_OBJDUMP) -h -S $< > $@
|
$(LM32_OBJDUMP) -h -S $< > $@
|
|
|
image.bin: image
|
|
$(LM32_OBJCOPY) $(SEGMENTS) -O binary image image.bin
|
|
|
|
image.srec: image image.lst image.bin
|
image.ihex: image image.lst
|
#$(LM32_OBJCOPY) $(SEGMENTS) -O srec image image.srec
|
# Convert the ELF file to an IHEX file
|
$(LM32_OBJCOPY) $(SEGMENTS) -O ihex image image.ihex
|
|
|
|
$(VRAMFILE): image.srec
|
|
#$(SREC2VRAM) image.srec 0x40000000 0x1000 > $(VRAMFILE)
|
|
rm -Rf ./RAM
|
|
mkdir -p ./RAM
|
mkdir -p ./RAM
|
|
$(LM32_OBJCOPY) -O ihex image image.ihex
|
|
# $(LM32_OBJCOPY) --keep-file-symbols -O binary image image.bin
|
|
# Generate a MIF & BIN files from the IHEX file
|
#$(IHEX2MIF) -f image.ihex -e $(RAMSIZE) -o RAM/ram0.mif
|
#$(IHEX2MIF) -f image.ihex -e $(RAMSIZE) -o RAM/ram0.mif
|
$(IHEX2MIF) -f image.ihex -o RAM/ram0.mif
|
# $(IHEX2MIF) -f image.ihex -o RAM/ram0.mif
|
$(IHEX2BIN) -i image.ihex -o RAM/ram0.bin
|
$(IHEX2BIN) -i image.ihex -o RAM/ram0.bin
|
|
$(BIN2MIF) -f RAM/ram0.bin -o RAM/ram0.mif -w 32
|
|
$(BIN2MEM) -f RAM/ram0.bin -o RAM/ram0.mem -w 32
|
$(BIN2HEX) -f RAM/ram0.bin -h
|
$(BIN2HEX) -f RAM/ram0.bin -h
|
|
rm *.o *.a
|
|
|
|
|
|
|
|
|
clean:
|
clean:
|
rm -f image.ihex image image.lst image.bin image.srec image.map image.ram image.hex *.o *.d
|
rm -f image.ihex image image.lst image.bin image.srec image.map image.ram image.hex RAM/* *.o *.a
|
|
|
|
|
|
|
DEPS := $(wildcard *.d)
|
DEPS := $(wildcard *.d)
|
ifneq ($(DEPS),)
|
ifneq ($(DEPS),)
|
include $(DEPS)
|
include $(DEPS)
|
endif
|
endif
|