summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 2d74c99)
raw | patch | inline | side by side (parent: 2d74c99)
author | Anand Mahadevan SS <a0230421@ti.com> | |
Tue, 1 Oct 2019 08:24:13 +0000 (13:54 +0530) | ||
committer | Sivaraj R <sivaraj@ti.com> | |
Fri, 25 Oct 2019 03:04:59 +0000 (22:04 -0500) |
- QNX libraries shall coexist with the normal A72
libraries after this change.
- New core qnx_mpu1_0 added.
- New ISA qnx-a72 added.
libraries after this change.
- New core qnx_mpu1_0 added.
- New ISA qnx-a72 added.
Rules.make | patch | blob | history | |
makerules/build_config.mk | patch | blob | history | |
makerules/common.mk | patch | blob | history | |
makerules/component.mk | patch | blob | history | |
makerules/platform.mk | patch | blob | history | |
makerules/rules_qnx-a72.mk | [new file with mode: 0644] | patch | blob |
diff --git a/Rules.make b/Rules.make
index 5b88b389404beb0f1224bd614e42fcb219ce03c4..0ab5e1002ba95dbd6b6d002c06a01fe17d8ec301 100755 (executable)
--- a/Rules.make
+++ b/Rules.make
SDK_INSTALL_PATH ?= $(abspath ../../../../)
TOOLS_INSTALL_PATH ?= $(SDK_INSTALL_PATH)
-#Default BUILD_OS_TYPE (tirtos/baremetal)
+#Default BUILD_OS_TYPE (tirtos/baremetal/qnx)
export BUILD_OS_TYPE ?= tirtos
# Default board
#Paths for linux machine
export TOOLCHAIN_PATH_GCC_ARCH64 ?= $(TOOLS_INSTALL_PATH)/gcc-linaro-$(GCC_ARCH64_VERSION)-x86_64_aarch64-elf
endif
+
+ export TOOLCHAIN_PATH_QNX_A72 ?= $(QNX_HOST)/usr/bin
export TOOLCHAIN_PATH_A53 ?= $(TOOLCHAIN_PATH_GCC_ARCH64)
export TOOLCHAIN_PATH_A72 ?= $(TOOLCHAIN_PATH_GCC_ARCH64)
export TOOLCHAIN_PATH_EVE ?= $(TOOLS_INSTALL_PATH)/arp32_$(CGT_ARP32_VERSION)
index e8d9a63f8df8489783070a55d7147f736705d8fd..39399d3154c558b6c9237b6fda28b9c27e326b64 100644 (file)
CFLAGS_GLOBAL_c7x-hostemu = -DMAKEFILE_BUILD
LNKFLAGS_GLOBAL_c7x-hostemu =
+# A72 QNX HOST
+CFLAGS_GLOBAL_a72-qnx = -DMAKEFILE_BUILD
+LNKFLAGS_GLOBAL_a72-qnx =
+
# dsp - IMPLEMENTED for tda2xx, tda2px, am572x, tda2ex, am571x am574x
CFLAGS_GLOBAL_c66x = -DMAKEFILE_BUILD
LNKFLAGS_GLOBAL_c66x = -x
diff --git a/makerules/common.mk b/makerules/common.mk
index 2f0cc07573b351a26f3336e54a3e86156de1ee4f..9f0c7080d24c3d8235bb833e4c656ab718c8190f 100644 (file)
--- a/makerules/common.mk
+++ b/makerules/common.mk
# Include make paths and options for all supported targets/boards
#
-.PHONY : all clean gendirs c7x_1 c66x c66xdsp_1 c66xdsp_2 ipu1_0 ipu1_1 ipu2_0 ipu2_1 m3 host a15_0 a8host a9host arp32_1 arp32_2 arp32_3 arp32_4 arm9_0 c674x mcu1_0 mcu1_1 mcu2_0 mcu2_1 mcu3_0 mcu3_1 mpu1_0 mpu1_1 mpu2_0 mpu2_1 c7x-hostemu
+.PHONY : all clean gendirs c7x_1 c66x c66xdsp_1 c66xdsp_2 ipu1_0 ipu1_1 ipu2_0 ipu2_1 m3 host a15_0 a8host a9host arp32_1 arp32_2 arp32_3 arp32_4 arm9_0 c674x mcu1_0 mcu1_1 mcu2_0 mcu2_1 mcu3_0 mcu3_1 mpu1_0 mpu1_1 mpu2_0 mpu2_1 c7x-hostemu qnx_mpu1_0
all : $(CORE)
diff --git a/makerules/component.mk b/makerules/component.mk
index 1cc30a200a6e11d65e28885ba4e8a8078591b3d4..73e55bec2f3da672b97ecc5ae4ef93caffa96af5 100644 (file)
--- a/makerules/component.mk
+++ b/makerules/component.mk
PDK_LNKFLAGS += --define=BUILD_C7X_1
endif
+ifeq ($(CORE),$(filter $(CORE), qnx_mpu1_0))
+ PDK_CFLAGS += -DQNX_OS -DBUILD_MPU1_0
+ PDK_LNKFLAGS += --define=QNX_OS --define=BUILD_MPU1_0
+endif
+
export PDK_CFLAGS
export PDK_LNKFLAGS
diff --git a/makerules/platform.mk b/makerules/platform.mk
index 68a5846cf2c21e8e8ca031e0b25652fac2daff0f..658507330d8c04b346fde766265f61e343e56ab4 100644 (file)
--- a/makerules/platform.mk
+++ b/makerules/platform.mk
endif
endif
+ifeq ($(CORE),$(filter $(CORE), qnx_mpu1_0))
+ ISA = qnx-a72
+ ISA_EXT = qnx-a72
+ ARCH = armv8a
+endif
+
# C7x DSP
ifeq ($(CORE),$(filter $(CORE), c7x_1))
ISA = c7x
ASMEXT = s$(FORMAT_EXT)$(ISA_EXT)$(ENDIAN_EXT)
endif
+ifeq ($(ISA),qnx-a72)
+ ENDIAN_EXT = fg
+ FORMAT_EXT =
+
+ # If ENDIAN is set to "big", set ENDIAN_EXT to "e", that would be used in
+ # in the filename extension of object/library/executable files
+ ifeq ($(ENDIAN),big)
+ ENDIAN_EXT = e
+ endif
+
+ # Define the file extensions
+ OBJEXT = o$(FORMAT_EXT)$(ISA_EXT)$(ENDIAN_EXT)
+ OBJEXT_BIOS = o$(FORMAT_EXT)a72$(ENDIAN_EXT)
+ PEXT_BIOS = p$(FORMAT_EXT)a72$(ENDIAN_EXT)
+ LIBEXT = a$(FORMAT_EXT)$(ISA_EXT)$(ENDIAN_EXT)
+ EXEEXT = x$(FORMAT_EXT)$(ISA_EXT)$(ENDIAN_EXT)
+ ASMEXT = s$(FORMAT_EXT)$(ISA_EXT)$(ENDIAN_EXT)
+endif
+
ifeq ($(ISA),m3)
ifeq ($(FORMAT),ELF)
TARGET_XDC = ti.targets.arm.elf.M3
diff --git a/makerules/rules_qnx-a72.mk b/makerules/rules_qnx-a72.mk
--- /dev/null
@@ -0,0 +1,207 @@
+#
+# Copyright (c) 2018, Texas Instruments Incorporated
+# 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 following disclaimer.
+#
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# * Neither the name of Texas Instruments Incorporated nor the names of
+# its contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS 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.
+#
+
+# Filename: rules_a72-qnx.mk
+#
+# Make rules for A72-QNX - This file has all the common rules and defines required
+# for Cortex-A72 ISA when building for QNX
+#
+# This file needs to change when:
+# 1. Code generation tool chain changes (This file uses Code Sourcery)
+# 2. Internal switches (which are normally not touched) has to change
+# 3. a rule common for A72 ISA has to be added or modified
+
+# Set compiler/archiver/linker commands and include paths
+CODEGEN_INCLUDE = $(TOOLCHAIN_PATH_QNX_A72)/arm-none-eabi/include
+CC = $(TOOLCHAIN_PATH_QNX_A72)/aarch64-unknown-nto-qnx7.0.0-gcc
+AR = $(TOOLCHAIN_PATH_QNX_A72)/aarch64-unknown-nto-qnx7.0.0-ar
+LNK = $(TOOLCHAIN_PATH_QNX_A72)/aarch64-unknown-nto-qnx7.0.0-gcc
+SIZE = $(TOOLCHAIN_PATH_QNX_A72)/aarch64-unknown-nto-qnx7.0.0-size
+
+# Derive a part of RTS Library name based on ENDIAN: little/big
+ifeq ($(ENDIAN),little)
+ RTSLIB_ENDIAN = le
+else
+ RTSLIB_ENDIAN = be
+endif
+
+# Derive compiler switch and part of RTS Library name based on FORMAT: COFF/ELF
+ifeq ($(FORMAT),ELF)
+ CSWITCH_FORMAT = eabi
+ RTSLIB_FORMAT = eabi
+endif
+
+# Internal CFLAGS - normally doesn't change
+CFLAGS_INTERNAL = -Wimplicit -Wall -Wunused -Wunknown-pragmas -ffunction-sections -fdata-sections -c -mcpu=cortex-a72+fp+simd -g -mabi=lp64 -mstrict-align -std=gnu99 -fms-extensions
+CFLAGS_INTERNAL += -mfix-cortex-a53-835769 -mfix-cortex-a53-843419
+ifeq ($(TREAT_WARNINGS_AS_ERROR), yes)
+ CFLAGS_INTERNAL += -Werror
+ LNKFLAGS_INTERNAL_COMMON += -Werror
+endif
+CFLAGS_DIROPTS =
+
+# CFLAGS based on profile selected
+ifeq ($(BUILD_PROFILE_$(CORE)), debug)
+ CFLAGS_INTERNAL += -D_DEBUG_=1 -ggdb -ggdb3 -gdwarf-2
+ LNKFLAGS_INTERNAL_BUILD_PROFILE =
+endif
+ifeq ($(BUILD_PROFILE_$(CORE)), release)
+ CFLAGS_INTERNAL += -O2 -s -DNDEBUG
+ LNKFLAGS_INTERNAL_BUILD_PROFILE = -O2
+endif
+
+LNKFLAGS_INTERNAL_BUILD_PROFILE =
+
+# Assemble CFLAGS from all other CFLAGS definitions
+_CFLAGS = $(CFLAGS_GLOBAL_$(CORE)) $(CFLAGS_INTERNAL) $(CFLAGS_LOCAL_COMMON) $(CFLAGS_LOCAL_$(CORE)) $(CFLAGS_COMP_COMMON)
+
+ifeq ($($(MODULE_NAME)_BOARD_DEPENDENCY),yes)
+ _CFLAGS += $(CFLAGS_LOCAL_$(BOARD)) $(CFLAGS_GLOBAL_$(BOARD))
+else
+ ifeq ($($(APP_NAME)_BOARD_DEPENDENCY),yes)
+ _CFLAGS += $(CFLAGS_LOCAL_$(BOARD)) $(CFLAGS_GLOBAL_$(BOARD))
+ else
+ _CFLAGS += $(CFLAGS_LOCAL_$(SOC)) $(CFLAGS_GLOBAL_$(SOC))
+ endif
+endif
+
+# Decide the compile mode
+COMPILEMODE =
+ifeq ($(CPLUSPLUS_BUILD), yes)
+ COMPILEMODE = -x c++
+endif
+
+# Object file creation
+# The first $(CC) generates the dependency make files for each of the objects
+# The second $(CC) compiles the source to generate object
+$(OBJ_PATHS): $(OBJDIR)/%.$(OBJEXT): %.c | $(OBJDIR) $(DEPDIR)
+ $(ECHO) \# Compiling $(PRINT_MESSAGE): $<
+ $(CC) -MD -MF $(DEPDIR)/$(basename $(notdir $<)).P $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) $(COMPILEMODE) -o $(OBJDIR)/$(basename $(notdir $<)).$(OBJEXT) $<
+
+$(OBJ_PATHS_CPP): $(OBJDIR)/%.$(OBJEXT): %.cpp | $(OBJDIR) $(DEPDIR)
+ $(ECHO) \# Compiling $(PRINT_MESSAGE): $<
+ $(CC) -MD -MF $(DEPDIR)/$(basename $(notdir $<)).P $(_CFLAGS) -Wno-write-strings $(INCLUDES) $(CFLAGS_DIROPTS) $(COMPILEMODE) -o $(OBJDIR)/$(basename $(notdir $<)).$(OBJEXT) $<
+
+ASMFLAGS = $(ASMFLAGS_INTERNAL) $(ASMFLAGS_GLOBAL_$(CORE)) $(ASMFLAGS_LOCAL_COMMON) $(ASMFLAGS_LOCAL_$(CORE)) $(ASMFLAGS_LOCAL_$(BOARD)) $(ASMFLAGS_LOCAL_$(SOC)) $(ASMFLAGS_APP_DEFINES) $(ASMFLAGS_COMP_COMMON) $(ASMFLAGS_GLOBAL_$(BOARD))
+# Object file creation
+$(OBJ_PATHS_ASM): $(OBJDIR)/%.$(OBJEXT): %.asm | $(OBJDIR) $(DEPDIR)
+ $(ECHO) \# Compiling $(PRINT_MESSAGE): $<
+ $(CC) -c -x assembler-with-cpp $(_CFLAGS) $(ASMFLAGS) $(INCLUDES) -o $(OBJDIR)/$(basename $(notdir $<)).$(OBJEXT) $<
+
+$(PACKAGE_PATHS): $(PACKAGEDIR)/%: %
+ $(ECHO) \# Copying to $(PACKAGE_RELPATH)/$($(APP_NAME)$(MODULE_NAME)_RELPATH)/$<
+ $(MKDIR) -p $(PACKAGE_ROOT)/$($(APP_NAME)$(MODULE_NAME)_RELPATH)
+ $(CP) --parents -rf $< $(PACKAGE_ROOT)/$($(APP_NAME)$(MODULE_NAME)_RELPATH)
+
+# Archive flags - normally doesn't change
+ARFLAGS = cr
+
+# Archive/library file creation
+$(LIBDIR)/$(LIBNAME).$(LIBEXT) : $(OBJ_PATHS_ASM) $(OBJ_PATHS) $(OBJ_PATHS_CPP) | $(LIBDIR)
+ $(ECHO) \#
+ $(ECHO) \# Archiving $(PRINT_MESSAGE) into $@...
+ $(ECHO) \#
+ $(AR) $(ARFLAGS) $@ $(OBJ_PATHS_ASM) $(OBJ_PATHS) $(OBJ_PATHS_CPP)
+
+$(LIBDIR)/$(LIBNAME).$(LIBEXT)_size:
+ $(ECHO) \#
+ $(ECHO) \# Computing sectti size $(PRINT_MESSAGE) info into $@.txt...
+ $(ECHO) \#
+ $(SIZE) $(subst _size,,$@) > $@.txt
+
+# Linker options and rules
+LNKFLAGS_INTERNAL_COMMON += -Wl,-static -Wl,--gc-sections -nostartfiles
+
+# Assemble Linker flags from all other LNKFLAGS definitions
+_LNKFLAGS = $(LNKFLAGS_INTERNAL_COMMON) $(LNKFLAGS_INTERNAL_BUILD_PROFILE) $(LNKFLAGS_GLOBAL_$(CORE)) $(LNKFLAGS_LOCAL_COMMON) $(LNKFLAGS_LOCAL_$(CORE))
+
+# Path of the RTS library - normally doesn't change for a given tool-chain
+RTSLIB_PATH =
+
+LIB_PATHS += $(APP_LIBS_$(CORE))
+LIB_PATHS += $(EXT_LIB_a72-qnx_0)
+LIB_PATHS += $(EXT_LIB_PATHS)
+LIB_PATHS += $(RTSLIB_PATH)
+
+LNKCMD_PREFIX = -Wl,-T,
+LINKER1 = $(addprefix $(LNKCMD_PREFIX), $(CONFIG_BLD_LNK_a72-qnx))
+
+ifneq ($(LNKCMD_FILE),)
+LINKER2 = $(addprefix $(LNKCMD_PREFIX), $(LNKCMD_FILE))
+endif
+
+ifneq ($(XDC_CFG_FILE_$(CORE)),)
+ ifneq ($(EXTERNAL_LNKCMD_FILE_LOCAL),)
+ LINKER1 = $(addprefix $(LNKCMD_PREFIX), $(EXTERNAL_LNKCMD_FILE_LOCAL))
+ endif
+else
+ ifneq ($(LNKCMD_FILE),)
+ LINKER1 =
+ endif
+ ifneq ($(EXTERNAL_LNKCMD_FILE_LOCAL),)
+ LINKER1 = $(addprefix $(LNKCMD_PREFIX), $(EXTERNAL_LNKCMD_FILE_LOCAL))
+ endif
+endif
+
+LNK_LIBS = $(addprefix -L,$(LIB_PATHS_DIR))
+LNK_LIBS += $(addprefix -L,$(LIB_PATHS))
+LNK_LIBS += $(addprefix -L,$(EXT_LIB_PATHS))
+
+# Added -lgcc twice to support both "before" and "after" order with -lm
+# This is required to satisfy some linking order to support
+# some Math/Algo kernals on A72
+LNK_LIBS += -lstdc++ -lgcc -lm -lgcc -lc -lrdimon
+
+# Linker - to create executable file
+ifeq ($(LOCAL_APP_NAME),)
+ EXE_NAME = $(BINDIR)/$(APP_NAME)_$(CORE)_$(BUILD_PROFILE_$(CORE)).$(EXEEXT)
+else
+ ifeq ($(BUILD_PROFILE_$(CORE)),prod_release)
+ EXE_NAME = $(BINDIR)/$(LOCAL_APP_NAME).$(EXEEXT)
+ else
+ EXE_NAME = $(BINDIR)/$(LOCAL_APP_NAME)_$(BUILD_PROFILE_$(CORE)).$(EXEEXT)
+ endif
+endif
+
+$(EXE_NAME) : $(OBJ_PATHS_ASM) $(OBJ_PATHS) $(OBJ_PATHS_CPP) $(LIB_PATHS) $(LNKCMD_FILE)
+ $(ECHO) \# Linking into $(EXE_NAME)...
+ $(ECHO) \#
+ $(LNK) $(_LNKFLAGS) $(OBJ_PATHS_ASM) $(OBJ_PATHS) $(OBJ_PATHS_CPP) $(LINKER1) $(LINKER2) $(LNK_LIBS) -Wl,--build-id=none -Wl,-Map=$@.map -o $@ $(EXT_LIB_a72-qnx_0) $(EXT_LIB_PATHS) -Wl,--start-group $(LIB_PATHS) -Wl,--end-group
+ $(ECHO) \#
+ $(ECHO) \# $@ created.
+ $(ECHO) \#
+
+# Include dependency make files that were generated by $(CC)
+-include $(SRCS:%.c=$(DEPDIR)/%.P)
+-include $(SRCS_CPP:%.cpp=$(DEPDIR)/%.P)
+
+# Nothing beyond this point