1 # Copyright (C) 2018-2019 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 #
33 # Macro definitions referenced below
34 #
36 ifeq ($(RULES_MAKE), )
37 include $(PDK_INSTALL_PATH)/ti/build/Rules.make
38 else
39 include $(RULES_MAKE)
40 endif
42 # Soc based on board
43 ifeq ($(BOARD), idkAM571x)
44 SOC_NAME = am571x
45 SOC = AM571x
46 endif
48 ifeq ($(BOARD), idkAM572x)
49 SOC_NAME = am572x
50 SOC = AM572x
51 endif
53 ifeq ($(BOARD), idkAM574x)
54 SOC_NAME = am574x
55 SOC = AM574x
56 endif
58 ifeq ($(BOARD), $(filter $(BOARD), evmK2G iceK2G))
59 SOC_NAME = k2g
60 SOC = K2G
61 endif
63 ifeq ($(BOARD), idkAM437x)
64 SOC_NAME = am437x
65 SOC = AM437x
66 endif
68 ifeq ($(BOARD), $(filter $(BOARD), evmAM335x icev2AM335x iceAMIC110))
69 SOC_NAME = am335x
70 SOC = AM335x
71 endif
73 ifeq ($(BOARD), $(filter $(BOARD), am65xx_evm am65xx_idk))
74 SOC_NAME = am65xx
75 SOC = AM65XX
76 endif
77 export SOC
79 FLASH_SRC_DIR ?= $(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/src
80 FLASH_PGM_BINDIR = $(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/bin/$(BOARD)
81 FLASH_PGM_OBJDIR = $(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/obj/$(BOARD)
82 ARMV7LIBDIR ?= ./lib
83 BINFLAGS = -O binary
85 #Cross tools
86 ifeq ($(SOC), AM65XX)
87 CODEGEN_INCLUDE = $(TOOLCHAIN_PATH_R5)/include
88 CC = $(TOOLCHAIN_PATH_R5)/bin/armcl
89 AR = $(TOOLCHAIN_PATH_R5)/bin/armar
90 LNK = $(TOOLCHAIN_PATH_R5)/bin/armlnk
91 SIZE = $(TOOLCHAIN_PATH_R5)/bin/armofd
92 BIN = $(TOOLCHAIN_PATH_GCC_ARCH64)/bin/aarch64-elf-objcopy
93 else
94 # Support backwards compatibility with KeyStone1 approach
95 CC = $(TOOLCHAIN_PATH_A15)/bin/$(CROSS_TOOL_PRFX)gcc
96 AC = $(TOOLCHAIN_PATH_A15)/bin/$(CROSS_TOOL_PRFX)as
97 AR = $(TOOLCHAIN_PATH_A15)/bin/$(CROSS_TOOL_PRFX)ar
98 LD = $(TOOLCHAIN_PATH_A15)/bin/$(CROSS_TOOL_PRFX)gcc
99 BIN = $(TOOLCHAIN_PATH_A15)/bin/$(CROSS_TOOL_PRFX)objcopy
100 endif
102 # INCLUDE Directories
103 CSL_DIR = $(PDK_INSTALL_PATH)/ti/csl
104 BOARD_DIR = $(PDK_INSTALL_PATH)/ti/board
106 ifeq ($(SOC), $(filter $(SOC), AM335x AM437x))
107 STARTERWARE_DIR = $(PDK_INSTALL_PATH)/ti/starterware
108 else
109 SBL_SRCDIR = $(PDK_INSTALL_PATH)/ti/boot/sbl
110 endif
112 ifeq ($(SOC), AM65XX)
113 INCDIR := $(CSL_DIR);$(PDK_INSTALL_PATH);$(BOARD_DIR);$(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/soc;$(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/soc/k3;$(FLASH_SRC_DIR)/qspi;$(PDK_INSTALL_PATH)/ti/drv/uart;$(PDK_INSTALL_PATH)/ti/csl/src/ip/qspi/V1;$(FLASH_SRC_DIR)/spi;$(FLASH_SRC_DIR)/ospi;$(FLASH_SRC_DIR)/emmc;$(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/board/$(BOARD)/include;$(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/include;$(PDK_INSTALL_PATH)/ti/board/diag/common/$(SOC);$(CODEGEN_INCLUDE)
114 else
115 INCDIR := $(CSL_DIR);$(PDK_INSTALL_PATH);$(BOARD_DIR);$(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/soc;$(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/soc/$(SOC_NAME);$(FLASH_SRC_DIR)/qspi;$(PDK_INSTALL_PATH)/ti/board/src/idkAM572x/device;$(PDK_INSTALL_PATH)/ti/drv/uart;$(PDK_INSTALL_PATH)/ti/csl/src/ip/qspi/V1;$(FLASH_SRC_DIR)/spi;$(FLASH_SRC_DIR)/ospi;$(FLASH_SRC_DIR)/emmc;$(PDK_INSTALL_PATH)/ti/starterware/bootloader/src/am335x;$(PDK_INSTALL_PATH)/ti/starterware/include;$(PDK_INSTALL_PATH)/ti/starterware/include/hw;$(PDK_INSTALL_PATH)/ti/starterware/include/am335x;$(PDK_INSTALL_PATH)/ti/starterware/include/utils;$(PDK_INSTALL_PATH)/ti/starterware/bootloader/include;$(PDK_INSTALL_PATH)/ti/starterware/board;$(STARTERWARE_DIR);$(PDK_INSTALL_PATH)/ti/starterware/dal;$(PDK_INSTALL_PATH)/ti/starterware/utils;$(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/board/$(BOARD)/include;$(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/include;$(PDK_INSTALL_PATH)/ti/board/diag/common/$(SOC)
116 endif
118 # Libraries
119 ifeq ($(SOC), AM65XX)
120 WRTR_SOC = $(SOC_NAME)
121 WRTR_SOC_DIR = $(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/soc/k3
122 WRTR_LINKER = linker.cmd
123 CSL_LIB = "$(PDK_INSTALL_PATH)/ti/csl/lib/$(SOC_NAME)/r5f/release/ti.csl.aer5f"
124 CSL_INIT_LIB = "$(PDK_INSTALL_PATH)/ti/csl/lib/$(SOC_NAME)/r5f/release/ti.csl.init.aer5f"
125 SCI_LIB = "$(PDK_INSTALL_PATH)/ti/drv/sciclient/lib/$(SOC_NAME)/mcu1_0/release/sciclient.aer5f"
126 OSAL_LIB = "$(PDK_INSTALL_PATH)/ti/osal/lib/nonos/$(SOC_NAME)/r5f/release/ti.osal.aer5f"
127 OSPI_LIB = "$(PDK_INSTALL_PATH)/ti/drv/spi/lib/$(SOC_NAME)/r5f/release/ti.drv.spi.dma.aer5f"
128 MMCSD_LIB = "$(PDK_INSTALL_PATH)/ti/drv/mmcsd/lib/$(SOC_NAME)/r5f/release/ti.drv.mmcsd.aer5f"
129 GPIO_LIB = "$(PDK_INSTALL_PATH)/ti/drv/gpio/lib/$(SOC_NAME)/r5f/release/ti.drv.gpio.aer5f"
130 BOARD_LIB = "$(PDK_INSTALL_PATH)/ti/board/lib/$(BOARD)/r5f/release/ti.board.aer5f"
131 I2C_LIB = "$(PDK_INSTALL_PATH)/ti/drv/i2c/lib/$(SOC_NAME)/r5f/release/ti.drv.i2c.aer5f"
132 UART_LIB = "$(PDK_INSTALL_PATH)/ti/drv/uart/lib/$(SOC_NAME)/r5f/release/ti.drv.uart.aer5f"
133 UDMA_LIB = "$(PDK_INSTALL_PATH)/ti/drv/udma/lib/$(SOC_NAME)/mcu1_0/release/udma.aer5f"
134 PERIPHERAL_LIB = $(UART_LIB) $(I2C_LIB) $(UDMA_LIB) $(OSPI_LIB) $(CSL_LIB) $(CSL_INIT_LIB) $(OSAL_LIB) $(SCI_LIB) $(BOARD_LIB) $(MMCSD_LIB)
136 RTSLIB_PATH = "$(TOOLCHAIN_PATH_R5)/lib/libc.a"
137 LNK_LIBS = -l$(PERIPHERAL_LIB) -l$(BOARD_LIB) -l$(OSAL_LIB) $(RTSLIB_PATH)
139 NUM_PROCS = 1
141 ifeq ($(OS),Windows_NT)
142 NUM_PROCS = $(NUMBER_OF_PROCESSORS)
143 else
144 NUM_PROCS = $(shell grep -c ^processor /proc/cpuinfo)
145 endif
147 BUILD_LIB_ONCE = $(TOOLCHAIN_PATH_R5)/lib/$(RTSLIB_NAME)
148 RTSLIB_NAME = rtsv7R4_A_le_v3D16_eabi.lib
149 endif
151 ifeq ($(SOC), K2G)
152 WRTR_SOC = k2g
153 WRTR_SOC_DIR = $(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/soc/$(SOC_NAME)
154 WRTR_LINKER = linker.cmd
155 CSL_LIB = "$(PDK_INSTALL_PATH)/ti/csl/lib/$(SOC_NAME)/a15/release/ti.csl.aa15fg"
156 CSL_INIT_LIB = "$(PDK_INSTALL_PATH)/ti/csl/lib/$(SOC_NAME)/a15/release/ti.csl.init.aa15fg"
157 OSAL_LIB = "$(PDK_INSTALL_PATH)/ti/osal/lib/nonos/$(SOC_NAME)/a15/release/ti.osal.aa15fg"
158 QSPI_LIB = "$(PDK_INSTALL_PATH)/ti/drv/spi/lib/$(SOC_NAME)/a15/release/ti.drv.spi.aa15fg"
159 MMCSD_LIB = "$(PDK_INSTALL_PATH)/ti/drv/mmcsd/lib/$(SOC_NAME)/a15/release/ti.drv.mmcsd.aa15fg"
160 GPIO_LIB = "$(PDK_INSTALL_PATH)/ti/drv/gpio/lib/$(SOC_NAME)/a15/release/ti.drv.gpio.aa15fg"
161 BOARD_LIB = "$(PDK_INSTALL_PATH)/ti/board/lib/$(BOARD)/a15/release/ti.board.aa15fg"
162 I2C_LIB = "$(PDK_INSTALL_PATH)/ti/drv/i2c/lib/a15/release/ti.drv.i2c.aa15fg"
163 UART_LIB = "$(PDK_INSTALL_PATH)/ti/drv/uart/lib/$(SOC_NAME)/a15/release/ti.drv.uart.aa15fg"
164 PERIPHERAL_LIB = $(UART_LIB) $(I2C_LIB) $(QSPI_LIB) $(CSL_LIB) $(CSL_INIT_LIB) $(OSAL_LIB) $(BOARD_LIB) $(MMCSD_LIB) $(GPIO_LIB)
165 endif
167 ifeq ($(SOC), $(filter $(SOC), AM571x AM572x AM574x))
168 WRTR_SOC = $(SOC_NAME)
169 WRTR_SOC_DIR = $(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/soc/am57xx
170 WRTR_LINKER = linker.cmd
171 BOARD_LIB = "$(PDK_INSTALL_PATH)/ti/board/lib/$(BOARD)/a15/release/ti.board.aa15fg"
172 CSL_LIB = "$(PDK_INSTALL_PATH)/ti/csl/lib/$(SOC_NAME)/a15/release/ti.csl.aa15fg"
173 CSL_INIT_LIB = "$(PDK_INSTALL_PATH)/ti/csl/lib/$(SOC_NAME)/a15/release/ti.csl.init.aa15fg"
174 OSAL_LIB = "$(PDK_INSTALL_PATH)/ti/osal/lib/nonos/$(SOC_NAME)/a15/release/ti.osal.aa15fg"
175 QSPI_LIB = "$(PDK_INSTALL_PATH)/ti/drv/spi/lib/$(SOC_NAME)/a15/release/ti.drv.spi.aa15fg"
176 I2C_LIB = "$(PDK_INSTALL_PATH)/ti/drv/i2c/lib/$(SOC_NAME)/a15/release/ti.drv.i2c.aa15fg"
177 UART_LIB = "$(PDK_INSTALL_PATH)/ti/drv/uart/lib/$(SOC_NAME)/a15/release/ti.drv.uart.aa15fg"
178 PERIPHERAL_LIB = $(UART_LIB) $(QSPI_LIB) $(I2C_LIB) $(MMCSD_LIB) $(CSL_LIB) $(CSL_INIT_LIB) $(OSAL_LIB) $(BOARD_LIB)
179 endif
181 ifeq ($(SOC), AM437x)
182 WRTR_SOC = am437x
183 WRTR_SOC_DIR = $(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/soc/$(SOC_NAME)
184 WRTR_LINKER = linker.cmd
185 BOARD_LIB = "$(PDK_INSTALL_PATH)/ti/board/lib/$(BOARD)/a9/release/ti.board.aa9fg"
186 CSL_LIB = "$(PDK_INSTALL_PATH)/ti/csl/lib/$(SOC_NAME)/a9/release/ti.csl.aa9fg"
187 OSAL_LIB = "$(PDK_INSTALL_PATH)/ti/osal/lib/nonos/$(SOC_NAME)/a9/release/ti.osal.aa9fg"
188 QSPI_LIB = "$(PDK_INSTALL_PATH)/ti/drv/spi/lib/$(SOC_NAME)/a9/release/ti.drv.spi.aa9fg"
189 UART_LIB = "$(PDK_INSTALL_PATH)/ti/drv/uart/lib/$(SOC_NAME)/a9/release/ti.drv.uart.aa9fg"
190 PERIPHERAL_LIB = $(UART_LIB) $(QSPI_LIB) $(MMCSD_LIB) $(CSL_LIB) $(OSAL_LIB) $(BOARD_LIB)
191 endif
193 ifeq ($(SOC), AM335x)
194 WRTR_SOC = am335x
195 WRTR_SOC_DIR = $(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/soc/$(SOC_NAME)
196 WRTR_BOARD_DIR = $(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/board/src
197 WRTR_BOARD_DIR += $(PDK_INSTALL_PATH)/ti/board/utils/uniflash/target/board/$(BOARD)
198 WRTR_LINKER = linker.cmd
199 BOARD_LIB = "$(PDK_INSTALL_PATH)/ti/board/lib/$(BOARD)/a8/release/ti.board.aa8fg"
200 CSL_LIB = "$(PDK_INSTALL_PATH)/ti/csl/lib/$(SOC_NAME)/a8/release/ti.csl.aa8fg"
201 OSAL_LIB = "$(PDK_INSTALL_PATH)/ti/osal/lib/nonos/$(SOC_NAME)/a8/release/ti.osal.aa8fg"
202 SPI_LIB = "$(PDK_INSTALL_PATH)/ti/drv/spi/lib/$(SOC_NAME)/a8/release/ti.drv.spi.aa8fg"
203 UART_LIB = "$(PDK_INSTALL_PATH)/ti/drv/uart/lib/$(SOC_NAME)/a8/release/ti.drv.uart.aa8fg"
204 I2C_LIB = "$(PDK_INSTALL_PATH)/ti/drv/i2c/lib/$(SOC_NAME)/a8/release/ti.drv.i2c.aa8fg"
205 PERIPHERAL_LIB = $(UART_LIB) $(SPI_LIB) $(CSL_LIB) $(OSAL_LIB) $(BOARD_LIB) $(I2C_LIB)
206 endif
208 LIBDIR :=
210 ifeq ($(SOC), AM65XX)
211 INTERNALDEFS = -g -ms -DMAKEFILE_BUILD -c -qq -pdsw225 $(DEBUG_FLAG) -D$(BOARD) -DSOC_$(SOC) --endian=little -mv7R5 --abi=eabi -eo.oer5f -ea.ser5f --symdebug:dwarf --embed_inline_assembly --float_support=vfpv3d16 -ms -oe -O2 -op0 -os --optimize_with_debug --inline_recursion_limit=20 -DBUILD_MCU1_0 -DBUILD_MCU -DBARE_METAL -DSPI_DMA_ENABLE
212 # Linker options
213 INTERNALLINKDEFS = --emit_warnings_as_errors -w -q -u _resetvectors -i "$(PDK_INSTALL_PATH)/ti/board/lib/$(BOARD)/r5f/release" -i "$(PDK_INSTALL_PATH)/ti/csl/lib/$(SOC_NAME)/r5f/release" $(WRTR_SOC_DIR)/$(WRTR_LINKER) -c -mv7R5 --diag_suppress=10063 --opt='--float_support=vfpv3d16 --endian=little -mv7R5 --abi=eabi -qq -pdsw225 -g -ms -DMAKEFILE_BUILD -oe --symdebug:dwarf -ms -op2 -O3 -os --optimize_with_debug --inline_recursion_limit=20 --diag_suppress=23000' --strict_compatibility=on -x --zero_init=on $(LNK_LIBS)
215 OBJEXT = oer5f
216 ASMOBJEXT = oer5f
217 else
218 # Compiler options
219 INTERNALDEFS += -g -gdwarf-3 -gstrict-dwarf -Wall $(DEBUG_FLAG) -D__ARMv7 -DSOC_$(SOC) -D$(BOARD) -mtune=cortex-a15 -march=armv7-a -marm -mfloat-abi=hard -mfpu=neon
220 # Linker options
221 INTERNALLINKDEFS = -mfloat-abi=hard -Wl,--undefined,__aeabi_uidiv -Wl,--undefined,__aeabi_idiv --entry Entry -nostartfiles -static -Wl,--gc-sections -Wl,-T $(WRTR_SOC_DIR)/$(WRTR_LINKER) -Wl,--start-group -lgcc -lc -lrdimon $(BOARD_LIB) $(PERIPHERAL_LIB) -Wl,--end-group $(LDFLAGS)
223 OBJEXT = o
224 ASMOBJEXT = ao
225 endif
227 # Executable using device independent library and device object file
228 EXE=uart_$(BOARD)_flash_programmer.out
229 BIN_NAME=uart_$(BOARD)_flash_programmer.bin
231 ifeq ($(OS),Windows_NT)
232 export TIIMAGE=tiimage.exe
233 else
234 export TIIMAGE=tiimage.out
235 endif
237 SRCDIR = $(FLASH_SRC_DIR)/
239 INCS = -I. -I$(strip $(subst ;, -I,$(INCDIR), -I,$(INCDIR)))
241 VPATH=$(SRCDIR):$(PDK_INSTALL_PATH)/ti/drv/uart/soc/$(WRTR_SOC):$(PDK_INSTALL_PATH)/ti/drv/spi/soc/$(WRTR_SOC):$(WRTR_SOC_DIR):$(WRTR_BOARD_DIR):$(FLASH_SRC_DIR)/qspi:$(FLASH_SRC_DIR)/ospi:$(PDK_INSTALL_PATH)/ti/drv/uart:$(FLASH_SRC_DIR)/spi:$(FLASH_SRC_DIR)/emmc:$(PDK_INSTALL_PATH)/ti/starterware/bootloader/src/am335x:$(PDK_INSTALL_PATH)/ti/starterware/include:$(PDK_INSTALL_PATH)/ti/starterware/include/hw:$(PDK_INSTALL_PATH)/ti/starterware/include/am335x:$(PDK_INSTALL_PATH)/ti/starterware/include/utils:$(PDK_INSTALL_PATH)/ti/starterware/bootloader/include:$(PDK_INSTALL_PATH)/ti/starterware/board:$(STARTERWARE_DIR):$(PDK_INSTALL_PATH)/ti/starterware/bootloader/src:$(PDK_INSTALL_PATH)/ti/starterware/examples/gpio:$(PDK_INSTALL_PATH)/ti/starterware/utils:$(STARTERWARE_DIR)/include:$(STARTERWARE_DIR)/board:$(STARTERWARE_DIR)/soc/am335x:$(STARTERWARE_DIR)/soc/armv7a/gcc:$(PDK_INSTALL_PATH)/ti/board/diag/common/$(SOC)
243 #List the Source Files
244 SRC_C = \
245 xmodem.c \
246 uart_main.c
248 ifeq ($(SOC), K2G)
249 SRC_DRV = a15.c
250 endif
252 ifeq ($(BOARD), $(filter $(BOARD), idkAM571x idkAM572x idkAM574x idkAM437x iceK2G evmK2G))
253 SRC_DRV += qspi.c
254 endif
256 ifeq ($(BOARD), $(filter $(BOARD), evmAM335x iceAMIC110 icev2AM335x))
257 SRC_DRV += spi.c
258 endif
260 ifeq ($(BOARD), $(filter $(BOARD), am65xx_evm am65xx_idk))
261 SRC_DRV += ospi.c
262 endif
264 ifeq ($(BOARD), $(filter $(BOARD), am65xx_evm am65xx_idk))
265 SRC_DRV += emmc.c
266 endif
268 SRC_DRV += \
269 soc.c
271 ifeq ($(SOC), AM335x)
272 SRC_DRV += \
273 board.c \
274 soc_platform_pll.c
275 endif
277 ifeq ($(OS),Windows_NT)
278 BIN_CERT_GEN=powershell -executionpolicy unrestricted -command $(ROOTDIR)/ti/build/makerules/x509CertificateGen.ps1
279 else
280 BIN_CERT_GEN=$(ROOTDIR)/ti/build/makerules/x509CertificateGen.sh
281 endif
282 BIN_CERT_KEY=$(ROOTDIR)/ti/build/makerules/k3_dev_mpk.pem
284 #Common entry object
285 ifeq ($(SOC), $(filter $(SOC), AM335x AM437x))
286 ENTRY_SRC = sbl_init.S
287 endif
288 ifeq ($(SOC), K2G)
289 ENTRY_SRC = init.S
290 endif
292 ifeq ($(SOC), AM65XX)
293 SRC_DRV += diag_common_cfg.c
294 endif
296 # FLAGS for the SourceFiles
297 ifeq ($(SOC), AM65XX)
298 CFLAGS += -O2
299 SRC_CFLAGS = -I. $(CFLAGS) -g -eo.$(OBJEXT) -ea.$(ASMOBJEXT)
300 else
301 CFLAGS += -Wall -O2
302 SRC_CFLAGS = -I. $(CFLAGS) -g -gdwarf-3 -gstrict-dwarf -Wall
303 endif
305 # Make Rule for the SRC Files
306 SRC_OBJS = $(patsubst %.c, $(FLASH_PGM_OBJDIR)/%.$(OBJEXT), $(SRC_C))
307 ifeq ($(SOC), AM65XX)
308 ENTRY_OBJ = $(patsubst %.asm, $(FLASH_PGM_OBJDIR)/%.$(ASMOBJEXT), $(ENTRY_SRC))
309 else
310 ENTRY_OBJ = $(patsubst %.S, $(FLASH_PGM_OBJDIR)/%.$(ASMOBJEXT), $(ENTRY_SRC))
311 endif
313 SRC_DRV_OBJS = $(patsubst %.c, $(FLASH_PGM_OBJDIR)/%.$(OBJEXT), $(SRC_DRV))
315 ifeq ($(SOC), $(filter $(SOC), AM335x AM65XX))
316 uart_$(BOARD)_flash_programmer:$(FLASH_PGM_BINDIR)/$(BIN_NAME)
317 else
318 uart_$(BOARD)_flash_programmer:$(FLASH_PGM_BINDIR)/$(EXE)
319 endif
321 ifeq ($(SOC), AM65XX)
322 $(FLASH_PGM_BINDIR)/$(EXE): $(SRC_OBJS) $(SRC_DRV_OBJS) $(ENTRY_OBJ) $(FLASH_PGM_BINDIR)/.created $(FLASH_PGM_OBJDIR)/.created $(BUILD_LIB_ONCE)
323 @echo linking $(SRC_OBJS) $(SRC_DRV_OBJS) $(ENTRY_OBJ) into $@ ...
324 @$(LNK) $(SRC_OBJS) $(SRC_DRV_OBJS) $(ENTRY_OBJ) $(INTERNALLINKDEFS) -m"$(FLASH_PGM_BINDIR)/uart_$(BOARD)_flash_programmer.map" -o $@
325 else
326 $(FLASH_PGM_BINDIR)/$(EXE): $(SRC_OBJS) $(SRC_DRV_OBJS) $(ENTRY_OBJ) $(FLASH_PGM_BINDIR)/.created $(FLASH_PGM_OBJDIR)/.created
327 @echo linking $(SRC_OBJS) $(SRC_DRV_OBJS) $(ENTRY_OBJ) into $@ ...
328 @$(CC) $(SRC_OBJS) $(SRC_DRV_OBJS) $(ENTRY_OBJ) $(INTERNALLINKDEFS) -Wl,-Map=$(FLASH_PGM_BINDIR)/uart_$(BOARD)_flash_programmer.map -o $@
329 endif
331 ifeq ($(SOC), AM335x)
332 $(FLASH_PGM_BINDIR)/$(BIN_NAME) : $(FLASH_PGM_BINDIR)/$(EXE)
333 $(BIN) $(BINFLAGS) $(FLASH_PGM_BINDIR)/$(EXE) $@
335 else
336 $(FLASH_PGM_BINDIR)/$(BIN_NAME) : $(FLASH_PGM_BINDIR)/$(EXE)
337 ifneq ($(OS),Windows_NT)
338 $(CHMOD) a+x $(BIN_CERT_GEN)
339 endif
340 $(BIN) --gap-fill=0xff -O binary $(FLASH_PGM_BINDIR)/$(EXE) $(FLASH_PGM_BINDIR)/$(BIN_NAME)
341 $(BIN_CERT_GEN) -b $(FLASH_PGM_BINDIR)/$(BIN_NAME) -o $(FLASH_PGM_BINDIR)/uart_$(BOARD)_flash_programmer.tiimage -c R5 -l 0x41c00100 -k $(BIN_CERT_KEY) -d DEBUG -j DBG_FULL_ENABLE
342 endif
344 $(FLASH_PGM_OBJDIR)/%.$(OBJEXT): %.c $(FLASH_PGM_OBJDIR)/.created
345 @echo compiling $< ...
346 ifeq ($(SOC), AM65XX)
347 @$(CC) -c $(SRC_CFLAGS) $(INTERNALDEFS) $(INCS) -fr=$(FLASH_PGM_OBJDIR) -fs=$(FLASH_PGM_OBJDIR) -fc $<
348 else
349 @$(CC) -c $(SRC_CFLAGS) $(INTERNALDEFS) $(INCS) $< -o $@
350 endif
353 ifeq ($(SOC), AM65XX)
354 $(FLASH_PGM_OBJDIR)/%.$(ASMOBJEXT): %.asm $(FLASH_PGM_OBJDIR)/.created
355 @echo compiling $< ...
356 @$(CC) -c $(SRC_CFLAGS) $(INTERNALDEFS) $(INCS) -fr=$(FLASH_PGM_OBJDIR) -fs=$(FLASH_PGM_OBJDIR) -fa $<
357 else
358 $(FLASH_PGM_OBJDIR)/%.$(ASMOBJEXT): %.S $(FLASH_PGM_OBJDIR)/.created
359 @echo compiling $< ...
360 @$(CC) -c $(SRC_CFLAGS) $(INTERNALDEFS) $(INCS) $< -o $@
361 endif
364 $(FLASH_PGM_OBJDIR)/.created:
365 @mkdir -p $(FLASH_PGM_OBJDIR)
366 @touch $(FLASH_PGM_OBJDIR)/.created
368 $(FLASH_PGM_BINDIR)/.created:
369 @mkdir -p $(FLASH_PGM_BINDIR)
370 @touch $(FLASH_PGM_BINDIR)/.created
372 $(STARTERWARE_DIR)/tools/ti_image/$(TIIMAGE):
373 gcc -o $(STARTERWARE_DIR)/tools/ti_image/$(TIIMAGE) $(STARTERWARE_DIR)/tools/ti_image/tiimage.c
375 $(BUILD_LIB_ONCE):
376 ifeq ($(SOC), AM65XX)
377 @echo \# $@ not found, building $@ ...
378 @$(TOOLCHAIN_PATH_R5)/lib/mklib --pattern=$(RTSLIB_NAME) --parallel=$(NUM_PROCS) --compiler_bin_dir=$(TOOLCHAIN_PATH_R5)/bin
379 endif
381 clean: uart_$(BOARD)_flash_programmer_clean
383 uart_$(BOARD)_flash_programmer_clean:
384 @rm -f $(FLASH_PGM_BINDIR)/$(EXE) $(FLASH_PGM_BINDIR)/$(BIN_NAME)
385 @rm -f $(SRC_OBJS) $(SRC_DRV_OBJS) $(ENTRY_OBJ)
386 @rm -f $(FLASH_PGM_BINDIR)/uart_$(BOARD)_flash_programmer.map