]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - processor-sdk/pdk.git/blob - packages/ti/board/diag/framework_loader/build/evmAM437x/armv7/makefile
board-rtos: add to PDK
[processor-sdk/pdk.git] / packages / ti / board / diag / framework_loader / build / evmAM437x / armv7 / makefile
1 # Copyright (C) 2015 Texas Instruments Incorporated - http://www.ti.com/
2 #
3 #
4 #  Redistribution and use in source and binary forms, with or without
5 #  modification, are permitted provided that the following conditions
6 #  are met:
7 #
8 #    Redistributions of source code must retain the above copyright
9 #    notice, this list of conditions and the following disclaimer.
10 #
11 #    Redistributions in binary form must reproduce the above copyright
12 #    notice, this list of conditions and the following disclaimer in the
13 #    documentation and/or other materials provided with the
14 #    distribution.
15 #
16 #    Neither the name of Texas Instruments Incorporated nor the names of
17 #    its contributors may be used to endorse or promote products derived
18 #    from this software without specific prior written permission.
19 #
20 #  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 #  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 #  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 #  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24 #  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 #  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 #  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27 #  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28 #  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 #  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 #  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 # Output directories
33 DIAGOBJDIR = $(PDK_DIAG_DIR)/obj/$(BOARD)/$(TARGET)
34 DIAGBINDIR = $(PDK_DIAG_DIR)/bin/$(BOARD)/$(TARGET)
35 SDDIAGBINDIR = $(PDK_DIAG_DIR)/bin/$(BOARD)/sd
37 # ARMV7 link directory that contain built peripheral libraries
38 ARMV7LIBDIR ?= ./lib
40 # Cross tools
41 ifdef TOOLCHAIN_PATH_A9
42 # Support backwards compatibility with KeyStone1 approach
43  CC = $(TOOLCHAIN_PATH_A9)/bin/$(CROSS_TOOL_PRFX)gcc
44  AC = $(TOOLCHAIN_PATH_A9)/bin/$(CROSS_TOOL_PRFX)as
45  AR = $(TOOLCHAIN_PATH_A9)/bin/$(CROSS_TOOL_PRFX)ar
46  LD = $(TOOLCHAIN_PATH_A9)/bin/$(CROSS_TOOL_PRFX)gcc
47  OBJCOPY = $(TOOLCHAIN_PATH_A9)/bin/$(CROSS_TOOL_PRFX)objcopy
49 endif
51 # INCLUDE Directories
52 CSL_DIR = $(PDK_INSTALL_PATH)/ti/csl/
54 # SBL dependencies
55 STARTERWARE_DIR = $(PDK_INSTALL_PATH)/ti/starterware
56 SBL_DIR = $(PDK_INSTALL_PATH)/ti/starterware/bootloader
57 SBL_MMCSD_DIR = $(SBL_DIR)/src
58 #SBL_MMCSD_DIR = $(SBL_DIR)/src/mmcsd
59 #SBL_RPRC_DIR = $(SBL_DIR)/src/rprc
60 #SBL_BOARD_DIR = $(SBL_DIR)/board/src
62 INCDIR := $(CSL_DIR);$(PDK_INSTALL_PATH);$(PDK_DIAG_DIR);$(PDK_DIAG_DIR)/src/$(BOARD)/include;$(PDK_INSTALL_PATH)/ti/drv/mmcsd;$(PDK_INSTALL_PATH)/ti/fs/fatfs;$(PDK_DIAG_DIR)/diag/common/$(DEVICE);$(SBL_DIR)/include;$(SBL_MMCSD_DIR);$(PDK_INSTALL_PATH)/ti/starterware/include;$(STARTERWARE_DIR)/include/hw/;$(STARTERWARE_DIR)/include/armv7a;$(STARTERWARE_DIR)/include/utils;$(STARTERWARE_DIR)/soc/armv7a
63 #$(SBL_MMCSD_DIR);$(SBL_DIR);$(SBL_RPRC_DIR);$(SBL_BOARD_DIR)
65 # Libraries
66 BOARD_LIB = "$(PDK_INSTALL_PATH)/ti/board/lib/$(BOARD)/a9/release/ti.board.aa9fg"
67 OSAL_LIB = "$(PDK_INSTALL_PATH)/ti/osal/lib/nonos/am437x/a9/release/ti.osal.aa9fg"
68 MMCSD_LIB =  "$(PDK_INSTALL_PATH)/ti/drv/mmcsd/lib/a9/release/ti.drv.mmcsd.aa9fg"
69 FATFS_LIB =  "$(PDK_INSTALL_PATH)/ti/fs/fatfs/lib/a9/release/ti.fs.fatfs.aa9fg"
70 UART_LIB = "$(PDK_INSTALL_PATH)/ti/drv/uart/lib/am437x/a9/release/ti.drv.uart.aa9fg"
71 I2C_LIB = "$(PDK_INSTALL_PATH)/ti/drv/i2c/lib/am437x/a9/release/ti.drv.i2c.aa9fg"
72 CSL_LIB = "$(PDK_INSTALL_PATH)/ti/csl/lib/am437x/a9/release/ti.csl.aa9fg"
73 PERIPHERAL_LIB = $(OSAL_LIB) $(MMCSD_LIB) $(FATFS_LIB) $(UART_LIB) $(I2C_LIB) $(CSL_LIB)
75 # Compiler options
76 INTERNALDEFS = -g -gdwarf-3 -gstrict-dwarf -Wall $(DEBUG_FLAG) -D__ARMv7 -D$(BOARD) -DSOC_$(DEVICE) -mtune=cortex-a9 -march=armv7-a -marm -mfloat-abi=hard -mfpu=neon -DDEBUG_PRINT
77 INTERNALDEFS += -DBOOT_MMCSD -D$(DEVICE)_BUILD
79 # Linker options
80 # Note: Framework needs a custom linker
81 LINKER_FILE = $(PDK_DIAG_DIR)/diag/common/$(DEVICE)/fl_linker.cmd
82 INTERNALLINKDEFS = -mfloat-abi=hard -Wl,--undefined,__aeabi_uidiv -Wl,--undefined,__aeabi_idiv --entry Entry -nostartfiles -static -Wl,--gc-sections -Wl,-T $(LINKER_FILE) -Wl,--start-group -l"c" -lrdimon -l"m" -l"nosys" $(BOARD_LIB) $(PERIPHERAL_LIB) -Wl,--end-group $(LDFLAGS)
83 BINFLAGS=-O binary
85 # Executable using device independent library and device object file
86 EXE=frameworkLoader_$(BOARD)_$(TARGET).out
87 TESTNAME=frameworkLoader
89 #
90 # Where the application will be loaded to. This is required to generate
91 # image with Header (Load Address and Size)
92 #
93 IMG_LOAD_ADDR = 0x80000000
95 ifeq ($(OS),Windows_NT)
96 export TIIMAGE=tiimage.exe
97 else
98 export TIIMAGE=tiimage
99 endif
101 OBJEXT = o
102 ASMOBJEXT = ao
103 SRCDIR = $(PDK_DIAG_DIR)/diag/framework_loader/src
104 BOARDSRCDIR = $(PDK_DIAG_DIR)/diag/framework_loader/build/$(BOARD)
106 VPATH=$(SRCDIR):$(BOARDSRCDIR):$(PDK_DIAG_DIR)/diag/common/$(DEVICE):$(PDK_INSTALL_PATH)/ti/drv/uart/soc/am437x:$(PDK_INSTALL_PATH)/ti/drv/mmcsd/soc/am437x/:$(PDK_INSTALL_PATH)/ti/fs/fatfs/soc/am437x/:$(STARTERWARE_DIR)/soc:$(STARTERWARE_DIR)/soc/armv7a/gcc
107 #:$(SBL_MMCSD_DIR):$(SBL_RPRC_DIR):$(SBL_BOARD_DIR)
109 INCS = -I. -I$(strip $(subst ;, -I,$(INCDIR)))
111 #List the Source Files
112 TEST_SRC = \
113         fl_main.c
115 TEST_SRC_DEV = \
116         MMCSD_soc.c \
117         diag_mmc.c
119 # Using the parse functions from SBL
120 SBL_SRC = 
121 #       sbl_mmcsd.c \
122 #       sbl_rprc.c
124 #Common entry object
125 ENTRY_SRC = fl_entry.S
127 #Common diagnostic source objects
128 DIAG_SRC = gic.c \
129            cpu.c \
130            diag_common_cfg.c
132 # FLAGS for the SourceFiles
133 CFLAGS += -Wall -O2
134 SRC_CFLAGS = -I. $(CFLAGS) -g -gdwarf-3 -gstrict-dwarf -Wall 
136 # Make Rule for the SRC Files
137 TEST_SRC_OBJS = $(patsubst %.c, $(DIAGOBJDIR)/%.$(OBJEXT), $(TEST_SRC))
138 ENTRY_OBJ = $(patsubst %.S, $(DIAGOBJDIR)/%.$(ASMOBJEXT), $(ENTRY_SRC))
139 TEST_SRC_DEV_OBJS = $(patsubst %.c, $(DIAGOBJDIR)/%.$(OBJEXT), $(TEST_SRC_DEV))
140 DIAG_SRC_OBJS = $(patsubst %.c, $(DIAGOBJDIR)/%.$(OBJEXT), $(DIAG_SRC))
141 SBL_SRC_OBJS = $(patsubst %.c, $(DIAGOBJDIR)/%.$(OBJEXT), $(SBL_SRC))
144 ifeq ($(SECUREMODE), yes)
145 DIAGAPP = $(TESTNAME)_signed.bin
146 else
147 DIAGAPP = $(TESTNAME).bin
148 endif
150 all:$(DIAGBINDIR)/$(DIAGAPP)
152 $(DIAGBINDIR)/$(TESTNAME)_signed.bin: $(DIAGBINDIR)/$(EXE)
153         mkdir -p $(SDDIAGBINDIR)
154         $(OBJCOPY) $(BINFLAGS) $(DIAGBINDIR)/$(EXE) $(DIAGBINDIR)/$(TESTNAME).bin
155         $(TI_SECURE_DEV_PKG)/scripts/secure-binary-image.sh $(DIAGBINDIR)/$(TESTNAME).bin $(DIAGBINDIR)/$(TESTNAME)_signed.bin
156         $(STARTERWARE_DIR)/tools/ti_image/$(TIIMAGE) $(IMG_LOAD_ADDR) NONE $(DIAGBINDIR)/$(TESTNAME)_signed.bin $(SDDIAGBINDIR)/app
158 $(DIAGBINDIR)/$(TESTNAME).bin: $(DIAGBINDIR)/$(EXE)
159         mkdir -p $(SDDIAGBINDIR)
160         $(OBJCOPY) $(BINFLAGS) $(DIAGBINDIR)/$(EXE) $(DIAGBINDIR)/$(TESTNAME).bin
161         $(STARTERWARE_DIR)/tools/ti_image/$(TIIMAGE) $(IMG_LOAD_ADDR) NONE $(DIAGBINDIR)/$(TESTNAME).bin $(SDDIAGBINDIR)/app
163 $(DIAGBINDIR)/$(EXE): $(TEST_SRC_OBJS) $(TEST_SRC_DEV_OBJS) $(ENTRY_OBJ) $(DIAG_SRC_OBJS) $(SBL_SRC_OBJS) $(DIAGBINDIR)/.created $(DIAGOBJDIR)/.created $(STARTERWARE_DIR)/tools/ti_image/$(TIIMAGE)
164         @echo linking $(TEST_SRC_OBJS) $(TEST_SRC_DEV_OBJS) $(ENTRY_OBJ) $(DIAG_SRC_OBJS) $(SBL_SRC_OBJS) into $@ ...
165         @$(CC) $(TEST_SRC_OBJS) $(TEST_SRC_DEV_OBJS) $(ENTRY_OBJ) $(DIAG_SRC_OBJS) $(SBL_SRC_OBJS) $(INTERNALLINKDEFS) -Wl,-Map=$(DIAGBINDIR)/framework_loader_$(BOARD).map -o $@
166         
167 $(DIAGOBJDIR)/%.$(OBJEXT): %.c $(DIAGOBJDIR)/.created
168         @echo compiling $< ...
169         @$(CC) -c $(SRC_CFLAGS) $(INTERNALDEFS) $(INCS)  $< -o $@
171 $(DIAGOBJDIR)/%.$(ASMOBJEXT): %.S $(DIAGOBJDIR)/.created
172         @echo compiling $< ...
173         @$(CC) -c $(SRC_CFLAGS) $(INTERNALDEFS) $(INCS)  $< -o $@
175 $(DIAGOBJDIR)/.created:
176         @mkdir -p $(DIAGOBJDIR)
177         @touch $(DIAGOBJDIR)/.created
179 $(DIAGBINDIR)/.created:
180         @mkdir -p $(DIAGBINDIR)
181         @touch $(DIAGBINDIR)/.created
183 $(STARTERWARE_DIR)/tools/ti_image/$(TIIMAGE):
184         gcc -o $(STARTERWARE_DIR)/tools/ti_image/$(TIIMAGE) $(STARTERWARE_DIR)/tools/ti_image/tiimage.c
186 clean:
187         @rm -f $(DIAGBINDIR)/$(EXE)
188         @rm -f $(TEST_SRC_OBJS) $(TEST_SRC_DEV_OBJS) $(ENTRY_OBJ) $(DIAGBINDIR)/.created $(DIAGOBJDIR)/.created