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

📄 makefile

📁 此文档为采用FPGA实现的以太网MAC层
💻
字号:
# file: Makefile## Example Makefile for a# typical Nios program:##   peripheral_test.c## ex:set noexpandtab:## +---------------------------# | How To Use This Makefile# |# | 1. Make a new directory with# |    your project's .c and .h# |    (and maybe .s) files# |# | 2. Copy this Makefile to it,# |    and change the following# |    variables as needed:# |      PROGRAM_NAME -- base name for your program# |      OBJECTS      -- list of .o files, which implies# |                      the .c files and .s source files# |      CINCLUDES    -- all your .h files# |      AINCLUDES    -- all your .s include files# |# | 3. Type "make all" to build the project,# |    or "make run" to make it and nios-run it.# |# +--------------------------# | Project Files# +--------------------------# |# | Program name -- the base for all# | the output files including .srec and .out.# |PROGRAM_NAME = code_to_spi# |# | Assembly Include Files# |# | In this makefile, every C (.c) file# | depends on every header file (.h)# | in the CINCLUDES section, and every# | assembly file (.s) depends on# | each and every assembly-header (also .s)# | in the AINCLUDES sectionAINCLUDES =  \	$(SDK_ROOT)/inc/excalibur.s \	$(SDK_ROOT)/inc/nios_macros.sCINCLUDES =  \	$(SDK_ROOT)/inc/excalibur.h# |# | Object files# |# | The rules below will find the .c or .s files needed# | to make each of these .o object files.# |# | This list will all go to the linker to make the# | final binary.# |# | (This makefile follows the unusual convention# | of appending .o after the original file name,# | rather than replacing the file-type extension.# | This makes it a)easier to identify a file's# | history from its name, and b)easier to set# | up implicit rules to generate them.# |OBJECTS =  \	$(OBJ)/code_to_spi.c.o \	$(OBJ)/asmi_spi.c.o \# +----------------------# | Anchor point:# |  the SOPC Builder sdk directory# |  generated for this project# |# | This example makefile happens to# | be located at# |# |    <your quartus project><your nios cpu>_sdk/src/makefile_example# |# | so the sdk root is at ../..SDK_ROOT = ../..# ### +--------------------------------# | First, some traditional defines# | for our particular tool chain# |GNU_TOOLS_PREFIX = nios-elfAS = $(GNU_TOOLS_PREFIX)-asCC = $(GNU_TOOLS_PREFIX)-gccAR = $(GNU_TOOLS_PREFIX)-arLD = $(GNU_TOOLS_PREFIX)-ldOC = $(GNU_TOOLS_PREFIX)-objcopyNM = $(GNU_TOOLS_PREFIX)-nmOD = $(GNU_TOOLS_PREFIX)-objdumpNR = nios-run# | A special echo that prints prettilyE = echo \\\# `date +%Y.%m.%d.%H:%M:%S` ---# |# | To keep things tidy, we stash all# | object (.o) files into a directory# | named "obj"# |OBJ = ./obj# |# | And the source directory? Is right here.# |SRC = .# |# | It is a Nios 32. Change it to 16 for Nios 16.# |M = 32# +-----------------------------------# | Include paths and such# | If you have more directories of .h files,# | add them here.# |# | We put in ../inc, ../../inc, and so on so# | that it will look "up and over" to the sopc_builder# | generated files, or other nearby inc dirs.# |# | Note that it uses "-I <dir>" format, which# | is legal for both as and gcc.# |INCLUDE_PATHS = \		-I $(SDK_ROOT)/inc \		-I ./inc \		-I ../inc \		-I ../../inc \		-I ../../../inc \# +------------------------------------# | Switches for the compiler, the assembler,# | and the linker# |ASFlags = \		$(INCLUDE_PATHS) \		--defsym __nios$(M)__=1 \		-m$(M)CCFlags = \		$(INCLUDE_PATHS) \		-W -g -c -O2 \		-mdcache \		-mno-zero-extend \		-m$(M)# +----------------------------------------# | Rules# |# | These implicit rules treat all your .s# | and all your .c files the same.# |# | "default" comes first so that if you just# | type "make" it is the default target.# |default : nios16_note srec	@$(E) .	@$(E) . Built $(PROGRAM_NAME).srec	@$(E) . try "make help" for more information	@$(E) .nios16_note :	@$(E) "(Note: to make for Nios 16, try \"make clean all M=16\")"$(OBJ)/%.s.o : $(SRC)/%.s $(AINCLUDES)	@$(E) Assembling $<	@$(AS) $(ASFlags) $< -o $@$(OBJ)/%.c.o : $(SRC)/%.c $(CINCLUDES)	@$(E) Compiling $<	@$(CC) $(CCFlags) $< -o $@$(OBJ) :	@$(E) Making $@/ directory	@mkdir $@clean : $(OBJ)	@$(E) Removing objects	@rm -rf $(OBJ)/*# +-------------------------------------# | Linking# |# | This is the most involved command line.# | It was taken from the output of "nios-build"# | and splayed out into an easier-to-read form.# |# | It references a linker script out in the sopc_builder# | directory, and also makes sure that the first thing# | in the file is a branch to "_start". (Usually# | the routine named _start does a bunch of useful# | initialization before your main() routine is called.)# |# | Note the use of GCC_VER -- this is because some of# | the libraries are stashed in a version-named directory.# |# | Explanation of switches to the linker:# |# |   -e _start -u _start# |       the entry point. _start() does the setup# |       for Nios and then calls main().# |# |   -g# |       include debug info in .out file. Does NOT# |       increase the size of your S-Record.# |# |   -T (path to ld script)# |       A "linker script" which knows about your memory# |       map, by using symbols like nasys_program_mem from# |       excalibur.s.# |# |   (path to nios_jumptostart.s.o)# |       A "program prefix" that we at the front of# |       every Nios program. It contains a jump to# |       _start, and the ascii signature "Nios".# |# |   --start-group -l nios32 -l c -l m -l gcc --end-group# |       The linker treats this a set of libraries# |       to scan repeatedly until no new references are# |       resolved. (The libraries sometimes refer to each# |       other, so multiple passes are needed.) Each# |       -l option is taken as lib(something).a, so the# |       above line really looks for libnios32.1, libc.a,# |       libm.a, and libgcc.a.# |# |   -L(various paths)# |       Places the linker might look for libraries# |GCC_VER = $(shell nios-elf-gcc --version)LFLAGS = \		-e _start \		-u _start \		-g \		-T $(sopc_builder)/bin/excalibur.ld \		$(SDK_ROOT)/lib/obj$(M)/nios_jumptostart.s.o \		--start-group \			-l nios$(M) \			-l c \			-l m \			-l gcc \		--end-group \		-L$(sopc_kit_nios)/bin/nios-gnupro/nios-elf/lib/m$(M) \		-L$(sopc_kit_nios)/bin/nios-gnupro/lib/gcc-lib/nios-elf/$(GCC_VER)/m$(M) \		-L$(sopc_builder)/bin/nios-gnupro/nios-elf/lib/m$(M) \		-L$(sopc_builder)/bin/nios-gnupro/lib/gcc-lib/nios-elf/$(GCC_VER)/m$(M) \		-L$(SDK_ROOT)/lib \		-L. \		-L../lib \		-L../../lib \		-L../../../lib \# |# | Note about -L's above:# |# | we look in the quartus-3.0-and-later place, sopc_kit_nios,# | and also in the pre-3.0 place, sopc_builder, for the compiler# | libraries# |# |# | Rule for making .out file from# | the objects. The OBJECTS variable# | must come before the LFLAGS, because# | the LFLAGS has the libraries. The linker# | needs to know which library routines you've# | referenced from your code before scanning# | them and deciding which parts to use.# |$(OBJ)/$(PROGRAM_NAME).out : $(OBJ) $(OBJECTS)	@$(E) Linking $@	@$(LD) $(OBJECTS) $(LFLAGS) -o $(OBJ)/$(PROGRAM_NAME).out # |# | S-Record# |# | We like Nios programs to be in an S-Record# | for use by nios-run or SOPC Builder memory# | contents# |# | The S-Record is the only output file that# | we dont stash tidily into the obj folder# |$(PROGRAM_NAME).srec : $(OBJ)/$(PROGRAM_NAME).out	@$(E) Converting $(PROGRAM_NAME) to S-Record	@$(OC) -O srec $(OBJ)/$(PROGRAM_NAME).out $(PROGRAM_NAME).srec # |# | The following several targets are unique# | to generating certain flash-config files# | for the Apex 20k Nios development board.# |# | These targets may be omitted if you adapt# | this Makefile for your own projects.# |$(PROGRAM_NAME).flash : $(PROGRAM_NAME).srec	$(E) Converting $(PROGRAM_NAME).srec to $(PROGRAM_NAME).flash ;	@srec2flash $(PROGRAM_NAME).srecDESIGN_NAME = standard_32$(DESIGN_NAME).hexout.flash : ../../../$(DESIGN_NAME).hexout	@$(E) Converting $(DESIGN_NAME).hexout to $(DESIGN_NAME).hexout.flash ;	@cd ../../../ ; hexout2flash $(DESIGN_NAME).hexout -b 0x1c0000 -s 0x3f000	@mv ../../../$(DESIGN_NAME).hexout.flash .$(DESIGN_NAME).germs : $(DESIGN_NAME).hexout.flash $(PROGRAM_NAME).flash	@$(E) "Assembling hardware and software images into $(DESIGN_NAME).germs"	@cat $(DESIGN_NAME).hexout.flash $(PROGRAM_NAME).flash > $(DESIGN_NAME).germs# |# | Handy auxilliary files# |$(OBJ)/$(PROGRAM_NAME).nm : $(OBJ)/$(PROGRAM_NAME).out	@$(E) Making $(PROGRAM_NAME).nm	@$(NM) $(OBJ)/$(PROGRAM_NAME).out | sort > $(OBJ)/$(PROGRAM_NAME).nm$(OBJ)/$(PROGRAM_NAME).objdump : $(OBJ)/$(PROGRAM_NAME).out	@$(E) Making $(PROGRAM_NAME).objdump	@$(OD) $(OBJ)/$(PROGRAM_NAME).out -d --source > $(OBJ)/$(PROGRAM_NAME).objdump# +-------------------------------------# | Shortcut Targets# |srec : $(PROGRAM_NAME).srecout : $(OBJ)/$(PROGRAM_NAME).outflash : $(DESIGN_NAME).germsrun : $(PROGRAM_NAME).srec	@$(E) Running $(PROGRAM_NAME)	@$(NR) $(PROGRAM_NAME).srec	@$(E) Done running $(PROGRAM_NAME)aux : $(OBJ)/$(PROGRAM_NAME).nm $(OBJ)/$(PROGRAM_NAME).objdumpall : nios16_note srec auxhelp :	@echo 	@echo Program name: $(PROGRAM_NAME)	@echo 	@echo Available makefile targets:	@echo	@echo "  make clean -- erase intermediate files"	@echo "  make srec  -- compile, link, and convert to S-Record"	@echo "  make run   -- make the S-Record, and then nios-run, too"	@echo 	@echo "  make out   -- only make the .out file"	@echo "  make aux   -- generate .nm and .objdump files"	@echo# end of file

⌨️ 快捷键说明

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