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

📄 makefile

📁 AT91系列芯片的USB虚拟串口的源代码
💻
字号:
#/* ----------------------------------------------------------------------------
# *         ATMEL Microcontroller Software Support  -  ROUSSET  -
# * ----------------------------------------------------------------------------
# * Copyright (c) 2006, Atmel Corporation
#
# * All rights reserved.
# *
# * Redistribution and use in source and binary forms, with or without
# * modification, are permitted provided that the following conditions are met:
# *
# * - Redistributions of source code must retain the above copyright notice,
# * this list of conditions and the disclaiimer below.
# *
# * - Redistributions in binary form must reproduce the above copyright notice,
# * this list of conditions and the disclaimer below in the documentation and/or
# * other materials provided with the distribution.
# *
# * Atmel`s name may not be used to endorse or promote products derived from
# * this software without specific prior written permission.
# *
# * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
# * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
# * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
# * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
# * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
# * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
# * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
# * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# * ----------------------------------------------------------------------------
# *
#
# $Id: Makefile 223 2006-10-30 13:32:33Z jjoannic $
#
#-------------------------------------------------------------------------------
#       Parameters
#-------------------------------------------------------------------------------
#
#   TARGET:     target chip         (default: TARGET=AT91SAM7S64)
#   BOARD:      board used          (default: BOARD=AT91SAM7SEK)
#   CLASS:      USB class           (default: CLASS=ENUM)
#   MODE:       Media or subclass   (default: MODE=NO)
#   REMAP:      Run from SRAM       (default: REMAP=NO)
#   DEBUG:      Debug symbols       (default: DEBUG=NO)
#   LEDS:       Use leds            (default: LEDS=YES)
#   TRACES:     Output traces       (default: TRACES=YES)
#   POWER:      Self/bus powered    (default: POWER=AUTO)
#   REVISION:   Board revision      (default: REV_B)
#-------------------------------------------------------------------------------

!MESSAGE
!MESSAGE

#-------------------------------------------------------------------------------
#       Check parameters
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
#       Check target
#-------------------------------------------------------------------------------

!IFNDEF TARGET
!MESSAGE Warning: No target selected, using default target AT91SAM7S64.
TARGET = AT91SAM7S64
!ELSEIF "$(TARGET)" != "AT91SAM7S321"  && "$(TARGET)" != "AT91SAM7S64"   \
     && "$(TARGET)" != "AT91SAM7S128"  && "$(TARGET)" != "AT91SAM7S256"  \
     && "$(TARGET)" != "AT91SAM7S512"  && "$(TARGET)" != "AT91SAM7SE32"  \
     && "$(TARGET)" != "AT91SAM7SE256" && "$(TARGET)" != "AT91SAM7SE512" \
     && "$(TARGET)" != "AT91SAM7X128"  && "$(TARGET)" != "AT91SAM7X256"  \
     && "$(TARGET)" != "AT91SAM7X512"  && "$(TARGET)" != "AT91SAM7A3"    \
     && "$(TARGET)" != "AT91RM9200"    && "$(TARGET)" != "AT91SAM9260"   \
     && "$(TARGET)" != "AT91SAM9261"   && "$(TARGET)" != "AT91SAM9263"

!ERROR Error: $(TARGET): Unknown target.
!ENDIF

#-------------------------------------------------------------------------------
#       Check board
#-------------------------------------------------------------------------------

!IFNDEF BOARD
!MESSAGE Warning: No board selected, using default board AT91SAM7SEK.
BOARD = AT91SAM7SEK
!ENDIF

#-------------------------------------------------------------------------------
#       Check class
#-------------------------------------------------------------------------------
!IFNDEF CLASS
!MESSAGE Warning: No class selected, using default enumeration class.
CLASS = ENUM
!ENDIF

#-------------------------------------------------------------------------------
#       Check remap
#-------------------------------------------------------------------------------
!IFNDEF REMAP
REMAP = NO
!ELSEIF "$(REMAP)" != "YES"
!UNDEF REMAP
REMAP = NO
!ENDIF

#-------------------------------------------------------------------------------
#       Check debug
#-------------------------------------------------------------------------------
!IFNDEF DEBUG
DEBUG = NO
!ELSEIF "$(DEBUG)" != "YES"
!UNDEF DEBUG
DEBUG = NO
!ENDIF

#-------------------------------------------------------------------------------
#       Check leds
#-------------------------------------------------------------------------------
!IFNDEF LEDS
LEDS = YES
!ELSEIF "$(LEDS)" != "NO"
LEDS = YES
!ENDIF

#-------------------------------------------------------------------------------
#       Check traces
#-------------------------------------------------------------------------------
!IFNDEF TRACES
TRACES = YES
!ELSEIF "$(TRACES)" != "NO"
TRACES = YES
!ENDIF

#-------------------------------------------------------------------------------
#       Check power
#-------------------------------------------------------------------------------
!IFNDEF POWER
POWER = AUTO
!ELSEIF "$(POWER)" != "BUS"
TRACES = AUTO
!ENDIF

#-------------------------------------------------------------------------------
#       Check mode
#-------------------------------------------------------------------------------
!IFNDEF MODE
MODE = NO
!ENDIF

#-------------------------------------------------------------------------------
#       Summary
#-------------------------------------------------------------------------------

!MESSAGE
!MESSAGE Target:  $(TARGET)
!MESSAGE Board:   $(BOARD)
!MESSAGE Class:   $(CLASS)
!MESSAGE Mode:    $(MODE)
!MESSAGE Remap:   $(REMAP)
!MESSAGE Debug:   $(DEBUG)
!MESSAGE Leds:    $(LEDS)
!MESSAGE Traces:  $(TRACES)
!MESSAGE Power:   $(POWER)

!IF "$(TARGET)" == "AT91SAM7A3"
!IFNDEF REVISION
!MESSAGE Revision: REV_B
!ELSE
!MESSAGE Revision: $(REVISION)
!ENDIF
!ENDIF

!MESSAGE

#-------------------------------------------------------------------------------
#       Memory
#-------------------------------------------------------------------------------

!IF "$(TARGET)" == "AT91SAM7S321"
!MESSAGE SRAM=8K FLASH=32K
!ELSEIF "$(TARGET)" == "AT91SAM7S64"
!MESSAGE SRAM=16K FLASH=64K
!ELSEIF "$(TARGET)" == "AT91SAM7S128"
!MESSAGE SRAM=32K FLASH=128K
!ELSEIF "$(TARGET)" == "AT91SAM7S256"
!MESSAGE SRAM=64K FLASH=256K
!ELSEIF "$(TARGET)" == "AT91SAM7S512"
!MESSAGE SRAM=64K FLASH=512K
!ELSEIF "$(TARGET)" == "AT91SAM7SE32"
!MESSAGE SRAM=8K FLASH=32K
!ELSEIF "$(TARGET)" == "AT91SAM7SE256"
!MESSAGE SRAM=32K FLASH=256K
!ELSEIF "$(TARGET)" == "AT91SAM7SE512"
!MESSAGE SRAM=32K FLASH=512K
!ELSEIF "$(TARGET)" == "AT91SAM7X128"
!MESSAGE SRAM=32K FLASH=128K
!ELSEIF "$(TARGET)" == "AT91SAM7X256"
!MESSAGE SRAM=64K FLASH=256K
!ELSEIF "$(TARGET)" == "AT91SAM7X512"
!MESSAGE SRAM=128K FLASH=512K
!ELSEIF "$(TARGET)" == "AT91SAM7A3"
!MESSAGE SRAM=32K FLASH=256K
!ELSEIF "$(TARGET)" == "AT91RM9200"
!MESSAGE SRAM=16K NOFLASH
!ELSEIF "$(TARGET)" == "AT91SAM9260"
!MESSAGE SRAM=2x4K NOFLASH
!ELSEIF "$(TARGET)" == "AT91SAM9261"
!MESSAGE SRAM=160K NOFLASH
!ELSEIF "$(TARGET)" == "AT91SAM9263"
!MESSAGE SRAM NOFLASH
!ELSE
!ENDIF

#-------------------------------------------------------------------------------
#       Tools
#-------------------------------------------------------------------------------

AS = armasm
LD = armlink
FE = fromelf
THUMB_CC = tcc
ARM_CC = armcc
CC = $(THUMB_CC)

#-------------------------------------------------------------------------------
#       Output directories
#-------------------------------------------------------------------------------

BIN = bin
OBJ = obj

#-------------------------------------------------------------------------------
#       Files
#-------------------------------------------------------------------------------

STARTUP = startup

#-------------------------------------------------------------------------------
#       Target-dependant parameters
#-------------------------------------------------------------------------------

# Start of memory regions
RAM_START = 0x00200000
ROM_START = 0x00100000

# Include directories
LIB = lib/$(TARGET)

#-------------------------------------------------------------------------------
#       Debug mode
#-------------------------------------------------------------------------------

!IF "$(DEBUG)" == "YES"
OPTIMIZATION = -O0 -Ono_inline -g+
!ELSE
OPTIMIZATION = -O2
!ENDIF

#-------------------------------------------------------------------------------
#       Compilation flags
#-------------------------------------------------------------------------------

ASFLAGS = -g -keep -PD "$(TARGET) SETA 1" -apcs /interwork -fpu None\
          -i$(LIB)
CCFLAGS = -apcs /interwork -gtp -Wb+avnglp -D__APCS_INTERWORK\
          $(OPTIMIZATION) -D$(TARGET) -D$(BOARD) -I$(LIB) -I./

!IF "$(LEDS)" == "NO"
CCFLAGS = $(CCFLAGS) -DNOLEDS
!ENDIF

!IF "$(TRACES)" == "NO"
CCFLAGS = $(CCFLAGS) -DNOTRACES
!ENDIF

!IF "$(REMAP)" == "YES"
ASFLAGS = $(ASFLAGS) -PD "REMAP SETA 1"
!ENDIF

!IF "$(DEBUG)" == "YES"
ASFLAGS = $(ASFLAGS) -PD "DEBUG SETA 1"
!ENDIF

!IF "$(POWER)" == "BUS"
CCFLAGS = $(CCFLAGS) -DUSB_BUS_POWERED
!ENDIF

!IF "$(MODE)" != "NO"
CCFLAGS = $(CCFLAGS) -D$(MODE)
!ENDIF

#-------------------------------------------------------------------------------
#       Linker flags
#-------------------------------------------------------------------------------

LDFLAGS = -entry __ENTRY -ro-base 0 -nolocals -first $(STARTUP).o(reset)\
          -info totals

!IF "$(REMAP)" == "NO" && "$(DEBUG)" == "NO"
LDFLAGS = $(LDFLAGS) -rw-base $(RAM_START)
!ENDIF

!IF "$(DEBUG)" == "NO"
LDFLAGS = $(LDFLAGS) -nodebug
!ENDIF

#-------------------------------------------------------------------------------
#       Objects
#-------------------------------------------------------------------------------

COREOBJ = core.o

!IF "$(CLASS)" != "ENUM"
CLASSOBJ = $(CLASS).o
!ENDIF

#-------------------------------------------------------------------------------
#       Directives
#-------------------------------------------------------------------------------

# Binary
BINARY = $(BOARD)_$(CLASS)

!IF "$(MODE)" != "NO"
BINARY = $(BINARY)_$(MODE)
!ENDIF

!IF "$(DEBUG)" == "YES"
BINARY = $(BINARY)_DEBUG
!ENDIF

!MESSAGE

all: $(BIN)/$(TARGET)/$(BINARY)

$(BIN)/$(TARGET)/$(BINARY): $(STARTUP).o $(COREOBJ) $(CLASSOBJ)
    @echo Building $@ ...
    @if not exist $(BIN) mkdir $(BIN)
    @if not exist $(BIN)\$(TARGET) mkdir $(BIN)\$(TARGET)
    @cd $(OBJ)
    @$(LD) -o ../$*.axf $(LDFLAGS) $?
    @$(FE) -bin -output ../$*.bin ../$*.axf
!IF "$(DEBUG)" == "NO"
    @del ..\$(BIN)\$(TARGET)\$(BINARY).axf
!ENDIF
    @cd ..

$(STARTUP).o: $(@B).s
    @echo Building $@ ...
    @if not exist $(OBJ) mkdir $(OBJ)
    @$(AS) $(ASFLAGS) $? -o $(OBJ)/$@

$(COREOBJ):
    @echo Entering $(MAKEDIR)\core ...
    @cd core
    @call $(MAKE) /NOLOGO BOARD=$(BOARD) CLASS=$(CLASS) LIB=../$(LIB) \
    MODE=$(MODE) REMAP=$(REMAP) DEBUG=$(DEBUG) LEDS=$(LEDS) TRACES=$(TRACES) \
    POWER=$(POWER) OBJ=..\$(OBJ) BIN=..\$(BIN) TARGET=$(TARGET)
    @cd ..
    @echo Leaving $(MAKEDIR)\core ...

!IF "$(CLASS)" != "ENUM"
$(CLASSOBJ):
    @echo Entering $(MAKEDIR)\$(CLASS) ...
    @cd $(CLASS)
    @call $(MAKE) /NOLOGO BOARD=$(BOARD) CLASS=$(CLASS) LIB=../$(LIB) \
    MODE=$(MODE) REMAP=$(REMAP) DEBUG=$(DEBUG) LEDS=$(LEDS) TRACES=$(TRACES) \
    POWER=$(POWER) OBJ=..\$(OBJ) BIN=..\$(BIN) TARGET=$(TARGET)
    @cd ..
    @echo Leaving $(MAKEDIR)\$(CLASS) ...
!ENDIF

rebuild: clean all

clean:
    @echo Cleaning project ...
    @if exist $(OBJ)\*.o del $(OBJ)\*.o
    @if exist $(BIN)\$(TARGET)\$(BINARY).* del $(BIN)\$(TARGET)\$(BINARY).*


⌨️ 快捷键说明

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