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

📄 makefile

📁 完整的Bell实验室的嵌入式文件系统TFS
💻
字号:
###############################################################################
#
# Makefile for building a monitor for the PPC405-WALNUT evaluation board
# platform.
#
#
# The current (8-2000) version of the PPC405 requires a patch utility be
# run on the executable to cover for a few remaining errata.  The variables
# PATCHPROG and PATCHFILE must be coordinated with the version of the silicon
# this monitor is being built for.
# 
PATCHPROG	= patch405c
PATCHFILE	= patchtblc

PLATFORM	= WALNUT

FLASH		= 29f040
TGTDIR		= walnut_eval

MONBASE		= ../../..
TGTBASE		= $(MONBASE)/targets/$(TGTDIR)
COMBASE		= $(MONBASE)/common
COMCPU		= $(COMBASE)/cpu
ZLIB		= $(COMBASE)/zlib
COMMON		= $(COMBASE)/monitor
FLASHDIR	= $(COMBASE)/flash/$(FLASH)
DATEREGBASE	= -DDATEREGBASE=0xf0001ff8

TARGET		= ppc-elf
include		$(COMMON)/tools.make

CFLAGS		= -c -Wall -O -fno-for-scope -mcpu=405 -DPLATFORM_$(PLATFORM)=1 \
			  -mno-sdata -msoft-float -nostdinc -fno-builtin -g -o $@ \
			  -I. -I$(COMMON) -I$(COMCPU) -I$(FLASHDIR)
ASFLAGS		= -mbig -o $@
ASMCPP		= cpp -D PLATFORM_$(PLATFORM)=1 -D ASSEMBLY_ONLY \
			  -I$(COMCPU) -I$(COMMON)
AOUT		= mon$(PLATFORM)
LIBS		= libz.a $(LIBGCC)
PREFILL		= obj/prefill.o

OBJS1=obj/reset.o obj/$(PATCHFILE).o obj/ppcuic.o obj/asm_ppc.o \
obj/ppcmal.o obj/vectors_403.o obj/monprof.o obj/bbc.o \
obj/cpuio.o obj/start.o obj/uart_405.o obj/devices.o obj/devtbl.o \
obj/chario.o obj/cache.o obj/mprintf.o obj/docmd.o obj/at.o \
obj/cmdtbl.o obj/genlib.o obj/ee.o obj/dis_ppc.o obj/dld.o \
obj/env.o obj/edit.o obj/flash.o obj/flashpic.o obj/symtbl.o \
obj/dallasdate.o \
obj/flashdev.o obj/go.o obj/memcmds.o obj/except_403.o obj/idev.o \
obj/mstat.o obj/reg_cache.o obj/tfs.o obj/unpack.o obj/pio_ppc405.o \
obj/tfsclean2.o obj/tfsloader.o obj/tfslog.o obj/tfsapi.o obj/tfscli.o \
obj/sbrk.o obj/malloc.o obj/moncom.o obj/xmodem.o obj/lboot.o obj/cmds_ppc.o \
obj/ethernet.o obj/dhcpboot.o obj/dhcp_00.o obj/tftp.o obj/tcpstuff.o \
obj/if.o obj/arp.o obj/icmp.o obj/lineedit.o obj/redirect.o obj/memtrace.o \
obj/phy.o obj/etherdev.o obj/dcache.o obj/strace_ppc.o obj/cast.o \
obj/misccmds.o obj/password.o obj/crypt.o obj/main.o obj/misc.o

OBJS=$(OBJS1) obj/resetvector.o

include $(ZLIB)/zlib.objlist

###############################################################################
#
# all:
# Standard monitor build, destined for installation using newmon tool.
#
all: info $(OBJS) libz.a obj/monlib.o makefile
	$(LD) -e coldstart -o $(AOUT) -T monWALNUT.lnk $(OBJS) $(LIBS)
	$(PATCHPROG) $(AOUT)
	rm -f tags
	ctags -n -L cscope.files
	elf -m $(AOUT)
	elf -i4 -B $(AOUT).bin $(AOUT)
	ls -l $(AOUT).bin
	$(NM) --numeric-sort $(AOUT) > $(AOUT).sym

###############################################################################
#
# ram:
# Version of monitor for download into RAM.
#
ram: info $(OBJS1) libz.a obj/monlib.o makefile
	$(LD) -e coldstart -o $(AOUT) -T ram.lnk $(OBJS1) $(LIBS)
	$(PATCHPROG) $(AOUT)
	$(OBJCOPY) --strip-unneeded $(AOUT) stripped
	rm -f tags
	ctags -n -L cscope.files
	elf -m $(AOUT)
	ls -l $(AOUT).bin
	$(NM) --numeric-sort $(AOUT) > $(AOUT).sym

###############################################################################
#
# filldevice:
# This builds a version of the monitor binary that  fills the entire boot
# flash.  This is useful for some external device programmer that may get
# confused if they are asked to begin programming at some point other than
# the base of the device.
#
filldevice: info $(OBJS) libz.a $(PREFILL) obj/monlib.o makefile
	$(LD) -e coldstart -o $(AOUT) -T filldevice.lnk $(OBJS) $(PREFILL) $(LIBS)
	$(PATCHPROG) $(AOUT)
	rm -f tags
	ctags -n -L cscope.files
	elf -m $(AOUT)
	elf -i4 -B $(AOUT).bin $(AOUT)
	ls -l $(AOUT).bin
	$(NM) --numeric-sort $(AOUT) > $(AOUT).sym

libz.a:	$(ZOBJS)
	$(AR) rc libz.a $(ZOBJS)

info:
	defdate -f %H:%M:%S BUILDTIME >info.h
	defdate -f %m/%d/%y BUILDDATE >>info.h

###############################################################################
#
# Individual rules:
#
include $(COMMON)/common.make
include $(ZLIB)/zlib.make

obj/cpuio.o: cpuio.c config.h cpuio.h $(COMMON)/genlib.h \
	$(COMMON)/ether.h $(COMMON)/stddefs.h \
	$(COMMON)/devices.h devtbl.h
	$(CC) $(CFLAGS) cpuio.c

obj/cmds_ppc.o: $(COMCPU)/cmds_ppc.c config.h $(COMMON)/cli.h \
	$(COMMON)/genlib.h $(COMMON)/stddefs.h
	$(CC) $(CFLAGS) $(COMCPU)/cmds_ppc.c

obj/dallasdate.o: $(COMMON)/dallasdate.c config.h $(COMMON)/genlib.h \
	$(COMMON)/stddefs.h $(COMMON)/tfs.h
	$(CC) $(CFLAGS) $(DATEREGBASE) $(COMMON)/dallasdate.c

obj/dcache.o:	dcache.c config.h
	$(CC) $(CFLAGS) dcache.c

obj/devtbl.o: devtbl.c $(COMMON)/devices.h devtbl.h
	$(CC) $(CFLAGS) devtbl.c

obj/dis_ppc.o:	$(COMCPU)/dis_ppc.c $(COMMON)/genlib.h config.h
	$(CC) $(CFLAGS) $(COMCPU)/dis_ppc.c

obj/phy.o: phy.c $(COMMON)/genlib.h \
	$(COMMON)/stddefs.h cpuio.h phy.h enetemac.h
	$(CC) $(CFLAGS) phy.c

obj/etherdev.o: etherdev.c $(COMMON)/genlib.h \
	$(COMMON)/stddefs.h enetemac.h cpuio.h \
	$(COMCPU)/ppcmal.h $(COMCPU)/ppcuic.h $(COMMON)/ether.h
	$(CC) $(CFLAGS) etherdev.c

obj/except_403.o: $(COMCPU)/except_403.c config.h cpu.h cpuio.h \
	$(COMMON)/stddefs.h $(COMMON)/genlib.h \
	$(COMCPU)/cpu_403.h
	$(CC) $(CFLAGS) $(COMCPU)/except_403.c

obj/flashdev.o:	$(FLASHDIR)/flashdev.c $(COMMON)/flash.h \
	$(FLASHDIR)/flashdev.h config.h
	$(CC) $(CFLAGS) $(FLASHDIR)/flashdev.c

obj/flashpic.o:	$(FLASHDIR)/flashpic.c $(COMMON)/flash.h \
	$(FLASHDIR)/flashdev.h  config.h
	$(CC) $(CFLAGS) $(FLASHDIR)/flashpic.c

obj/lboot.o: lboot.c config.h $(COMMON)/genlib.h $(COMMON)/cli.h \
	$(COMMON)/stddefs.h $(COMMON)/tfs.h 
	$(CC) $(CFLAGS) lboot.c

obj/pio_ppc405.o:	$(COMCPU)/pio_ppc405.c cpu.h cpuio.h config.h
	$(CC) $(CFLAGS) $(COMCPU)/pio_ppc405.c

obj/main.o: main.c config.h cpu.h $(COMMON)/tfs.h \
	$(COMMON)/genlib.h $(COMMON)/ether.h \
	$(COMMON)/monflags.h $(COMMON)/stddefs.h
	$(CC) $(CFLAGS) main.c

obj/mstat.o: mstat.c config.h cpu.h cpuio.h $(COMMON)/genlib.h
	$(CC) $(CFLAGS) mstat.c

obj/strace_ppc.o:	$(COMCPU)/strace_ppc.c config.h
	$(CC) $(CFLAGS) $(COMCPU)/strace_ppc.c

obj/uart_405.o: $(COMCPU)/uart_405.c config.h $(COMMON)/devices.h \
	$(COMMON)/stddefs.h $(COMMON)/ether.h
	$(CC) $(CFLAGS) $(COMCPU)/uart_405.c

obj/asm_ppc.o:	$(COMCPU)/asm_ppc.s  $(COMCPU)/arch_ppc.h
	$(ASMCPP) $(COMCPU)/asm_ppc.s >tmp.s
	$(ASM) $(ASFLAGS) tmp.s
	rm tmp.s

obj/ppcuic.o:	$(COMCPU)/ppcuic.s  $(COMCPU)/arch_ppc.h
	$(ASMCPP) $(COMCPU)/ppcuic.s >tmp.s
	$(ASM) $(ASFLAGS) tmp.s
	rm tmp.s

obj/ppcmal.o:	$(COMCPU)/ppcmal.s $(COMCPU)/arch_ppc.h
	$(ASMCPP) $(COMCPU)/ppcmal.s >tmp.s
	$(ASM) $(ASFLAGS) tmp.s
	rm tmp.s

obj/vectors_403.o:	$(COMCPU)/vectors_403.s  $(COMCPU)/arch_ppc.h $(COMCPU)/cpu_403.h
	$(ASMCPP) $(COMCPU)/vectors_403.s >tmp.s
	$(ASM) $(ASFLAGS) tmp.s
	rm tmp.s

obj/$(PATCHFILE).o:	$(PATCHFILE).s  
	$(ASMCPP) $(PATCHFILE).s >tmp.s
	$(ASM) $(ASFLAGS) tmp.s
	rm tmp.s

obj/reset.o:	reset.s  config.h $(COMCPU)/arch_ppc.h $(COMCPU)/cpu_403.h
	$(ASMCPP) reset.s >tmp.s
	$(ASM) $(ASFLAGS) tmp.s
	rm tmp.s

obj/prefill.o:	$(COMCPU)/prefill.s
	$(ASMCPP) $(COMCPU)/prefill.s >tmp.s
	$(ASM) $(ASFLAGS) tmp.s
	rm tmp.s

obj/resetvector.o:	$(COMCPU)/resetvector.s
	$(ASMCPP) $(COMCPU)/resetvector.s >tmp.s
	$(ASM) $(ASFLAGS) tmp.s
	rm tmp.s


###############################################################################
#
# Miscellaneous utilities:
# (generic utilities are in $(COMMON)/common.make)
#
clobber1:
	rm -f $(PATCHPROG).out

cscope1:
	ls $(COMCPU)/*ppc* >cscope.files

⌨️ 快捷键说明

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