guowenxue
2020-08-21 5a4859cbce5a056d70698d89befc846b946d83e5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
 
# ***********************************************************************
# *        File:  makefile
# *     Version:  1.0.0
# *   Copyright:  2011 (c) Guo Wenxue <guowenxue@gmail.com>
# * Description:  Makefile used to cross compile the ASM source code
# *   ChangeLog:  1, Release initial version on "Sun Mar 20 18:41:04 CST 2011"
# *
# ***********************************************************************
#
 
APP_NAME=bootstrap
#INST_PATH=/tftp
 
# Enable "printf" function for help, don't enable it for production to save about 2K size
CONFIG_PRINTF_DBG=y
 
# When wanna burn the image to nandflash and start from it, then commont follow option
RAM_DEBUG=y
 
BOARD=SMDK2440
#BOARD=SMDK2416
 
export BOARD
 
SRC_TOP=$(CURDIR)
 
CFLAGS+=-I${SRC_TOP}/include 
CFLAGS+=-Os -D__KERNEL__ -DCONFIG_ARM -D__ARM__ -DBOARD_$(BOARD)
PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
 
ifeq ($(BOARD),SMDK2440)
  PLATFORM_LIBS += -lc -L/opt/buildroot-2011.11/arm920t/usr/arm-unknown-linux-uclibcgnueabi/sysroot/usr/lib/
  ifeq ($(RAM_DEBUG),y)
       TEXT_BASE=0x33000000
  else
       TEXT_BASE=0x00000000
  endif
# Set the stack top base address here
CFLAGS+=-DTEXT_BASE=$(TEXT_BASE) -DSTACK_BASE=0x33000000
CROSS_COMPILE=/opt/xtools/arm920t/bin/arm-linux-
CFLAGS+= -fno-strict-aliasing  -fno-common -ffixed-r8 -msoft-float 
CFLAGS+=-march=armv4t -Wall -Wstrict-prototypes -fno-stack-protector
endif
 
ifeq ($(BOARD),SMDK2416)
TEXT_BASE=0x33000000
CFLAGS+=-DTEXT_BASE=$(TEXT_BASE)
CROSS_COMPILE=/opt/buildroot-2011.11/arm926t/usr/bin/arm-linux-
CFLAGS+= -fno-strict-aliasing  -fno-common -ffixed-r8 -msoft-float -mfloat-abi=soft
CFLAGS+=-march=armv4t -Wstrict-prototypes -fno-stack-protector
endif
 
AS  = $(CROSS_COMPILE)as
LD  = $(CROSS_COMPILE)ld
CC  = $(CROSS_COMPILE)gcc
CPP = $(CC) -E
AR  = $(CROSS_COMPILE)ar
NM  = $(CROSS_COMPILE)nm
LDR = $(CROSS_COMPILE)ldr
STRIP   = $(CROSS_COMPILE)strip
OBJCOPY = $(CROSS_COMPILE)objcopy
OBJDUMP = $(CROSS_COMPILE)objdump
RANLIB  = $(CROSS_COMPILE)RANLIB
 
gccincdir := $(shell $(CC) -print-file-name=include)
CFLAGS += -ffreestanding -nostdinc -isystem $(gccincdir) -pipe 
 
CFLAGS += -fno-builtin  
LDFLAGS=-Bstatic -T$(APP_NAME).lds -Ttext $(TEXT_BASE)
AFLAGS := $(CFLAGS) -D__ASSEMBLY__
 
export  CROSS_COMPILE AS LD CC CPP AR NM STRIP OBJCOPY OBJDUMP CFLAGS
 
SOBJS   := start.o mem_init.o
OBJS    := bootstrap.o led_beep.o interrupt.o serial.o common.o xmodem.o k9f2g08.o 
 
ifeq ($(CONFIG_PRINTF_DBG), y)
CFLAGS+=-DCONFIG_PRINTF_DBG
endif
 
ALL: .depend $(SOBJS) $(OBJS)
    cd $(SRC_TOP) 
    ${LD} $(LDFLAGS) $(SOBJS) \
    --start-group $(OBJS) \
    --end-group $(PLATFORM_LIBS) \
    -Map $(APP_NAME).map  -o $(APP_NAME).elf
    ${OBJCOPY} -O binary $(APP_NAME).elf $(APP_NAME).bin
    @chmod 777 $(APP_NAME).bin
    @rm -f *.elf *.o
 
.depend:    makefile $(SOBJS:.o=.S) $(OBJS:.o=.c)
    $(CC) -M $(AFLAGS) -D__ASSEMBLY__ $(SOBJS:.o=.S) > $@ 
    $(CC) -M $(CFLAGS) $(OBJS:.o=.c) > $@
 
sinclude .depend
 
%.o: %.S
     $(CC) $(AFLAGS) -c -o $@ $<
%.o: %.c
     $(CC) $(CFLAGS) -c -o $@ $<
 
install: $(APP_NAME).bin
    cp $(APP_NAME).bin $(INST_PATH) -f 
    cp $(APP_NAME).bin /tftp -f
 
clean:
    @find $(OBJTREE) -type f \
            \( -name 'core' -o -name '*.bak' -o -name '*~' -o -name .depend \
            -o -name '*.o'  -o -name '*.a' -o -name '*.elf' \) -print \
            | xargs rm -f
    @rm -f $(APP_NAME).bin
    @rm -f $(APP_NAME).map
 
distclean clear: clean
    @rm -f cscope.* tags