Added gcc buld support for A8
authorSivaraj R <sivaraj@ti.com>
Fri, 20 Sep 2013 12:33:05 +0000 (18:03 +0530)
committerSivaraj R <sivaraj@ti.com>
Fri, 20 Sep 2013 12:34:48 +0000 (18:04 +0530)
Invoke the build with TOOLCHAIN_a8=GCC to build using the GCC toolchain

examples/edma3_driver/evmTI814x_A8/rtsc_config/edma3_drv_bios6_ti814x_arm_st_sample.cfg
examples/edma3_driver/src/common.c
examples/edma3_driver/src/dma_ping_pong_test.c
makerules/rules_CS_a8.mk [deleted file]
makerules/rules_TI_a8.mk
packages/ti/sdo/edma3/drv/sample/src/sample_arm_cs.c

index 3e39f0925a2a5e92339de4baba19604c7ad3178c..917d96ac7e80b66ae8b331b37695fdbb1a4087a2 100755 (executable)
@@ -8,8 +8,12 @@ var Hwi = xdc.useModule('ti.sysbios.hal.Hwi');
 var Semaphore = xdc.useModule('ti.sysbios.knl.Semaphore');
 var Cache = xdc.useModule('ti.sysbios.hal.Cache');
 var Error = xdc.useModule('xdc.runtime.Error');
-
-
+var CompilerName = java.lang.System.getenv("COMPILER");
+xdc.print("# !!! Compiler is [" + CompilerName + "] !!!" );
+if(CompilerName == "LINARO_GCC")
+{
+var GnuSemihost = xdc.useModule('ti.sysbios.rts.gnu.SemiHostSupport');
+}
 /* USE EDMA3 Sample App */
 //xdc.loadPackage('ti.sdo.edma3.drv.sample');
 
index 7d12c52a9c491c926773300fb3fa0d129d32175f..fd0f941ff4afcba5e8238e3b3c74369f5ea4167f 100644 (file)
@@ -51,7 +51,7 @@ void *AppSemHandle2 = NULL;
 
 
 /* Cache line aligned source buffer 1. */
-#ifndef BUILD_TDA2XX_MPU
+#ifndef GCC_BUILD
 #ifdef EDMA3_ENABLE_DCACHE
 /**
  * The DATA_ALIGN pragma aligns the symbol to an alignment boundary. The
@@ -73,7 +73,7 @@ signed char   __attribute__((section(".my_sect_ddr"))) _srcBuff1[MAX_BUFFER_SIZE
 #endif
 
 /* Cache line aligned destination buffer 1. */
-#ifndef BUILD_TDA2XX_MPU
+#ifndef GCC_BUILD
 #ifdef EDMA3_ENABLE_DCACHE
 /**
  * The DATA_ALIGN pragma aligns the symbol to an alignment boundary. The
@@ -100,7 +100,7 @@ signed char *dstBuff1;
 
 
 /* Cache line aligned source buffer 2. */
-#ifndef BUILD_TDA2XX_MPU
+#ifndef GCC_BUILD
 #ifdef EDMA3_ENABLE_DCACHE
 /**
  * The DATA_ALIGN pragma aligns the symbol to an alignment boundary. The
@@ -121,7 +121,7 @@ signed char   __attribute__((section(".my_sect_ddr"))) _srcBuff2[MAX_BUFFER_SIZE
 #endif
 #endif
 
-#ifndef BUILD_TDA2XX_MPU
+#ifndef GCC_BUILD
 #ifdef EDMA3_ENABLE_DCACHE
 /* Cache line aligned destination buffer 2. */
 /**
index b86fbdd64536d7529b56dcaf7c937176c5f487aa..eb863289c3d10d23c29838e0ca916f8e795e9997 100755 (executable)
@@ -82,7 +82,7 @@
 
 
 /* Ping pong source buffer */
-#ifndef BUILD_TDA2XX_MPU
+#ifndef GCC_BUILD
 #ifdef EDMA3_ENABLE_DCACHE
 /* Cache line aligned big source buffer. */
 /**
@@ -109,7 +109,7 @@ signed char __attribute__((section(".my_sect_ddr"))) _pingpongSrcBuf[PING_PONG_D
  * It will be used to copy data from L1D ping/pong buffers to check the
  * validity.
  */
-#ifndef BUILD_TDA2XX_MPU
+#ifndef GCC_BUILD
 #ifdef EDMA3_ENABLE_DCACHE
 /* Cache line aligned big destination buffer. */
 /**
@@ -133,7 +133,7 @@ signed char __attribute__((section(".my_sect_ddr"))) _pingpongDestBuf[PING_PONG_
 
 
 /* These destination buffers are in IRAM. */
-#ifndef BUILD_TDA2XX_MPU
+#ifndef GCC_BUILD
 #ifdef EDMA3_ENABLE_DCACHE
 /* Cache line aligned destination buffer 1 i.e. Ping buffer. */
 /**
@@ -167,7 +167,7 @@ signed char __attribute__((section(".my_sect_iram"))) _dstL1DBuff1[PING_PONG_L1D
 #endif
 #endif
 
-#ifndef BUILD_TDA2XX_MPU
+#ifndef GCC_BUILD
 #ifdef EDMA3_ENABLE_DCACHE
 /* Cache line aligned destination buffer 2 i.e. Pong buffer. */
 /**
diff --git a/makerules/rules_CS_a8.mk b/makerules/rules_CS_a8.mk
deleted file mode 100755 (executable)
index 900dfc5..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-# Filename: rules_a8.mk\r
-#\r
-# Make rules for A8 - This file has all the common rules and defines required\r
-#                     for Cortex-A8 ISA\r
-#\r
-# This file needs to change when:\r
-#     1. Code generation tool chain changes (currently it uses CodeSourcery)\r
-#     2. Internal switches (which are normally not touched) has to change\r
-#     3. XDC specific switches change\r
-#     4. a rule common for A8 ISA has to be added or modified\r
-\r
-# Set compiler/archiver/linker commands and include paths\r
-CODEGEN_INCLUDE = $(CODEGEN_PATH_A8)\r
-CC = $(CODEGEN_PATH_A8)/bin/arm-none-linux-gnueabi-gcc\r
-AR = $(CODEGEN_PATH_A8)/bin/arm-none-linux-gnueabi-ar\r
-LNK = $(CODEGEN_PATH_A8)/bin/arm-none-linux-gnueabi-ld\r
-\r
-# Internal CFLAGS - normally doesn't change\r
-CFLAGS_INTERNAL = -fPIC -fno-strict-aliasing -MD -MF $(DEPFILE).P -march=armv5t -Dfar= -D_DEBUG_=1 -DMULTICHANNEL_OPT=1\r
-CFLAGS_DIROPTS = \r
-\r
-# XDC specific CFLAGS \r
-CFLAGS_XDCINTERNAL = -Dxdc_target_name__=GCArmv5T -Dxdc_target_types__=gnu/targets/arm/std.h  -Dxdc_bld__profile_$(PROFILE_$(CORE))  -Dxdc_bld__vers_1_0_4_3_3 \r
-LNKFLAGS_INTERNAL_PROFILE = \r
-\r
-# Following 'if...' block is for an application; to add a #define for each\r
-#   component in the build. This is required to know - at compile time - which\r
-#   components are on which core.\r
-ifndef MODULE_NAME\r
-  # Derive list of all packages from each of the components needed by the app\r
-  PKG_LIST_LOCAL = $(foreach COMP,$(COMP_LIST_$(CORE)),$($(COMP)_PKG_LIST))\r
-  \r
-  # Defines for the app and cfg source code to know which components/packages\r
-  # are included in the build for the local CORE...\r
-  CFLAGS_APP_DEFINES = $(foreach PKG,$(PKG_LIST_LOCAL),-D_LOCAL_$(PKG)_)\r
-  CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_LOCAL),-D_BUILD_$(PKG)_)\r
-  \r
-  ifeq ($(CORE),m3vpss)\r
-    PKG_LIST_REMOTE = $(foreach COMP,$(COMP_LIST_m3video),$($(COMP)_PKG_LIST))\r
-    CFLAGS_APP_DEFINES += -D_LOCAL_CORE_m3vpss_\r
-  endif\r
-  ifeq ($(CORE),m3video)\r
-    PKG_LIST_REMOTE = $(foreach COMP,$(COMP_LIST_m3vpss),$($(COMP)_PKG_LIST))\r
-    CFLAGS_APP_DEFINES += -D_LOCAL_CORE_m3video_\r
-  endif\r
-  ifeq ($(CORE),a8host)\r
-    PKG_LIST_REMOTE = $(foreach COMP,$(COMP_LIST_m3video),$($(COMP)_PKG_LIST))\r
-    PKG_LIST_REMOTE += $(foreach COMP,$(COMP_LIST_m3vpss),$($(COMP)_PKG_LIST))\r
-    CFLAGS_APP_DEFINES += -D_LOCAL_CORE_a8host_\r
-  endif\r
-\r
-  # Defines for the app and cfg source code to know which components/packages\r
-  # are included in the build for the remote CORE...\r
-  CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_REMOTE),-D_REMOTE_$(PKG)_)\r
-  CFLAGS_APP_DEFINES += $(foreach PKG,$(PKG_LIST_REMOTE),-D_BUILD_$(PKG)_)\r
-endif\r
-\r
-# Assemble CFLAGS from all other CFLAGS definitions\r
-_CFLAGS = $(CFLAGS_GLOBAL_$(CORE)) $(CFLAGS_INTERNAL) $(CFLAGS_XDCINTERNAL) $(CFLAGS_LOCAL_COMMON) $(CFLAGS_LOCAL_$(CORE)) $(CFLAGS_LOCAL_$(PLATFORM)) $(CFLAGS_LOCAL_$(SOC)) $(CFLAGS_APP_DEFINES) $(CFLAGS_COMP_COMMON) $(CFLAGS_GLOBAL_$(PLATFORM))\r
-\r
-# Object file creation\r
-# The first $(CC) generates the dependency make files for each of the objects\r
-# The second $(CC) compiles the source to generate object\r
-$(OBJ_PATHS): $(OBJDIR)/%.$(OBJEXT): %.c\r
-       $(ECHO) \# Compiling $< to $@ ...\r
-       $(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -o $(OBJDIR)/$(basename $(notdir $<)).$(OBJEXT) $<\r
-\r
-# Archive flags - normally doesn't change\r
-ARFLAGS = cr\r
-\r
-# Archive/library file creation\r
-$(LIBDIR)/$(MODULE_NAME).$(LIBEXT) : $(OBJ_PATHS)\r
-       $(ECHO) \#\r
-       $(ECHO) \# Archiving $(OBJ_PATHS) into $@...\r
-       $(ECHO) \#\r
-       $(AR) $(ARFLAGS) $@ $(OBJ_PATHS)\r
-\r
-# Linker options and rules\r
-LNKFLAGS_INTERNAL_COMMON =  -lpthread -lrt -L$(CODEGEN_PATH_A8)/arm-none-linux-gnueabi/lib\r
-\r
-# Assemble Linker flags from all other LNKFLAGS definitions\r
-_LNKFLAGS = $(LNKFLAGS_INTERNAL_COMMON) $(LNKFLAGS_INTERNAL_PROFILE) $(LNKFLAGS_GLOBAL_$(CORE)) $(LNKFLAGS_LOCAL_COMMON) $(LNKFLAGS_LOCAL_$(CORE)) \r
-\r
-# Path of the RTS library - normally doesn't change for a given tool-chain\r
-RTSLIB_PATH = \r
-LIB_PATHS += \r
-\r
-LNK_LIBS = $(addprefix -l,$(LIB_PATHS))\r
-# Linker - to create executable file \r
-$(BINDIR)/$(APP_NAME)_$(CORE)_$(PROFILE_$(CORE)).$(EXEEXT) : $(OBJ_PATHS) $(LIB_PATHS) $(LNKCMD_FILE) $(OBJDIR)/$(CFG_COBJ_XDC)\r
-       $(ECHO) \# Linking into $@\r
-       $(ECHO) \#\r
-#      $(LNK) $(OBJ_PATHS) $(OBJDIR)/$(CFG_COBJ_XDC) $(LNKCMD_FILE) $(_LNKFLAGS) -o $@ -Map $@.map $(LNK_LIBS)\r
-       $(CC) $(OBJ_PATHS) $(OBJDIR)/$(CFG_COBJ_XDC) $(LIB_PATHS) $(LNKCMD_FILE) $(_LNKFLAGS) -o $@\r
-       $(ECHO) \#\r
-       $(ECHO) \# $@ created.\r
-       $(ECHO) \#\r
-\r
-# XDC specific - assemble XDC-Configuro command\r
-CONFIGURO_CMD = $(xdc_PATH)/xs xdc.tools.configuro --generationOnly -o $(CONFIGURO_DIR) -t $(TARGET_XDC) -p $(PLATFORM_XDC) \\r
-               --cfgArgs $(CFGARGS_XDC) -r $(PROFILE_$(CORE)) -b $(CONFIG_BLD_XDC_$(ISA)) $(XDC_CFG_FILE_NAME)\r
-_XDC_GREP_STRING = \"$(XDC_GREP_STRING)\"\r
-EGREP_CMD = $(EGREP) -ivw $(XDC_GREP_STRING) $(XDCLNKCMD_FILE)\r
-\r
-# Invoke configuro for the rest of the components\r
-#  NOTE: 1. String handling is having issues with various make versions when the \r
-#           cammand is directly tried to be given below. Hence, as a work-around, \r
-#           the command is re-directed to a file (shell or batch file) and then \r
-#           executed\r
-#        2. The linker.cmd file generated, includes the libraries generated by\r
-#           XDC. An egrep to search for these and omit in the .cmd file is added\r
-#           after configuro is done\r
-#$(CFG_CFILE_XDC) : $(XDC_CFG_FILE)\r
-xdc_configuro : $(XDC_CFG_FILE)\r
-       $(ECHO) \# Invoking configuro...\r
-       $(ECHO) -e $(CONFIGURO_CMD) > $(DEST_ROOT)/maketemp_configuro_cmd_$(CORE).bat\r
-       $(CHMOD) a+x $(DEST_ROOT)/maketemp_configuro_cmd_$(CORE).bat\r
-       $(DEST_ROOT)/maketemp_configuro_cmd_$(CORE).bat\r
-#      $(CP) $(XDCLNKCMD_FILE) $(LNKCMD_FILE)\r
-#      $(ECHO) @ $(EGREP_CMD) > maketemp_egrep_cmd.bat\r
-#      ./maketemp_egrep_cmd.bat | $(CYGWINPATH)/bin/tail -n+3 > $(LNKCMD_FILE)\r
-       $(EGREP_CMD) > $(LNKCMD_FILE)\r
-#      $(EGREP) -iv "$(XDC_GREP_STRING)" $(XDCLNKCMD_FILE) > $(LNKCMD_FILE)\r
-       $(ECHO) \# Configuro done!\r
-\r
-$(LNKCMD_FILE) :\r
-#      $(CP) $(XDCLNKCMD_FILE) $(LNKCMD_FILE)\r
-#      $(ECHO) @ $(EGREP_CMD) > maketemp_egrep_cmd.bat\r
-#      ./maketemp_egrep_cmd.bat | $(CYGWINPATH)/bin/tail -n+3 > $(LNKCMD_FILE)\r
-#      $(EGREP_CMD) > $(LNKCMD_FILE)\r
\r
-ifndef MODULE_NAME\r
-$(OBJDIR)/$(CFG_COBJ_XDC) : $(CFG_C_XDC)\r
-       $(ECHO) \# Compiling generated $< to $@ ...\r
-       $(CC) $(_CFLAGS) $(INCLUDES) $(CFLAGS_DIROPTS) -o $(OBJDIR)/$(CFG_COBJ_XDC) $(CFG_C_XDC)\r
-endif\r
-\r
-# Include dependency make files that were generated by $(CC)\r
--include $(SRCS:%.c=$(DEPDIR)/%.P)\r
-\r
-# Nothing beyond this point\r
index 70aa5840e5dccde88d7f8b67f2c762e1bb151abe..2042d4b9bc9c15d80fbd3b784b649c1aa5990f0e 100755 (executable)
@@ -148,7 +148,7 @@ LNKFLAGS_INTERNAL_COMMON = -w -q -u _c_int00 --silicon_version=7A8 -c --dynamic
 _LNKFLAGS = $(LNKFLAGS_INTERNAL_COMMON) $(LNKFLAGS_INTERNAL_PROFILE) $(LNKFLAGS_GLOBAL_$(CORE)) $(LNKFLAGS_LOCAL_COMMON) $(LNKFLAGS_LOCAL_$(CORE)) \r
 \r
 # Path of the RTS library - normally doesn't change for a given tool-chain\r
-RTSLIB_PATH = $(CODEGEN_PATH_A8)/lib/rtsv7A8_A_$(RTSLIB_ENDIAN)_n_$(RTSLIB_FORMAT).lib\r
+RTSLIB_PATH = $(CODEGEN_PATH_A8)/lib/libc.a\r
 LIB_PATHS += $(RTSLIB_PATH)\r
 \r
 LNK_LIBS = $(addprefix -l,$(LIB_PATHS))\r
index 2d2870885eca74b009bc165f4ee13946d8e6cf49..3b76d8ea2d8262d51a4d8e68bd608cdd96365880 100644 (file)
  *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
 */
-#ifdef BUILD_TDA2XX_MPU
+#ifdef GCC_BUILD
+#if defined(BUILD_TDA2XX_MPU)
 #include <ti/sysbios/family/arm/a15/Cache.h>
+#elif defined (BUILD_CENTAURUS_A8)
+#include <ti/sysbios/family/arm/a8/Cache.h>
+#endif
 #else
 #include <ti/sysbios/hal/Cache.h>
 #endif