SPRAD65 December   2022 TDA4VM

 

  1.   Abstract
  2.   Trademarks
  3. 1Introduction
    1. 1.1 C7X Compiler
    2. 1.2 Operating System
    3. 1.3 Drivers
    4. 1.4 TIOVX
    5. 1.5 TIDL
    6. 1.6 Memory Segment Management
  4. 2TIDL Upgrade
    1. 2.1 RTOS SDK Changes
    2. 2.2 TIDL PC Tool Changes
    3. 2.3 Linux SDK Changes
  5. 3Demo Verify
  6. 4Summary
  7. 5References

RTOS SDK Changes

  1. You need to remove the old version of the software, delete or move it to another directory, this example directly deletes the related software that the old version of TIDL depends on:
    1. ti-processor-sdk-rtos-j721e-evm-07_01_00_11$ rm -rf ./ti-cgt-c7000_1.4.0.LTS
    2. ti-processor-sdk-rtos-j721e-evm-07_01_00_11$ rm -rf ./tidl_j7_01_03_00_11
    3. ti-processor-sdk-rtos-j721e-evm-07_01_00_11$ rm -rf ./mmalib_01_03_00_06
  2. Copy the TIDL related software in the 8.4SDK to the 7.1SDK directory:
    1. ti-processor-sdk-rtos-j721e-evm-07_01_00_11$ cp ../../ti-8.4/ti-processor-sdk-rtos-j721e-evm-08_04_00_02/ti-cgt-c7000_3.0.0.STS ./ti-cgt-c7000_1.4.0.LTS -r
    2. ti-processor-sdk-rtos-j721e-evm-07_01_00_11$ cp ../../ti-8.4/ti-processor-sdk-rtos-j721e-evm-08_04_00_02/mmalib_02_04_00_06 ./mmalib_01_03_00_06 -r
    3. ti-processor-sdk-rtos-j721e-evm-07_01_00_11$ cp ../../ti-8.4/ti-processor-sdk-rtos-j721e-evm-08_04_00_02/tidl_j721e_08_04_00_12 ./tidl_j7_01_03_00_11 -r
  3. The path of the library generated by TIDL and MMALIB in 8.4SDK has changed, so the path needs to be modified during the upgrade. The details are as follows:
    diff --git a/tidl_j7_01_03_00_11/makerules/config.mk b/tidl_j7_01_03_00_11/makerules/config.mk
    index 6a67f858..af1c084e 100644
    --- a/tidl_j7_01_03_00_11/makerules/config.mk
    +++ b/tidl_j7_01_03_00_11/makerules/config.mk
    @@ -99,20 +99,20 @@ BUILD_LIDAR_PREPROC    ?= 0
     ifdef SystemRoot
     PSDK_INSTALL_PATH ?= C:\ti
     else
    -PSDK_INSTALL_PATH ?= /ti/j7presi/workarea/
    +PSDK_INSTALL_PATH = $(pwd)/../../
     endif
     
     ifdef SystemRoot
    -BIOS_PATH           ?="$(PSDK_INSTALL_PATH)\bios_6_83_02_07"
    -XDCTOOLS_PATH       ?="$(PSDK_INSTALL_PATH)\xdctools_3_61_04_40_core"
    +BIOS_PATH           ?="$(PSDK_INSTALL_PATH)\bios_6_83_00_18"
    +XDCTOOLS_PATH       ?="$(PSDK_INSTALL_PATH)\xdctools_3_61_03_29_core"
     IVISION_PATH        ?="$(PSDK_INSTALL_PATH)\ivision"
     UTILS_PATH          ?="$(PSDK_INSTALL_PATH)\ccs910\ccs\utils\cygwin"
     TIDL_PROTOBUF_PATH  ?="$(PSDK_INSTALL_PATH)\protobuf-3.11.3_msvc_2015_x64"
     TIDL_OPENCV_PATH    ?=$(PSDK_INSTALL_PATH)\opencv_3.1.0_msvc_2015_x64\opencv\sources
    -DSP_TOOLS           ?=$(PSDK_INSTALL_PATH)\ti-cgt-c7000_3.0.0.STS
    +DSP_TOOLS           ?=$(PSDK_INSTALL_PATH)\ti-cgt-c7000_1.4.0.LTS
     TIDL_FLATBUF_PATH   ?=$(PSDK_INSTALL_PATH)\flatbuffers-1.12.0
    -MMALIB_PATH         ?=$(PSDK_INSTALL_PATH)\mmalib_02_04_00_05
    -PDK_INSTALL_PATH    ?=$(PSDK_INSTALL_PATH)\pdk_jacinto_08_04_00_21\packages
    +MMALIB_PATH         ?=$(PSDK_INSTALL_PATH)\mmalib_01_03_00_06
    +PDK_INSTALL_PATH    ?=$(PSDK_INSTALL_PATH)\pdk_jacinto_07_01_00_45\packages
     CONCERTO_ROOT       ?=$(PSDK_INSTALL_PATH)\vision_apps\concerto
     TIOVX_PATH          ?=$(PSDK_INSTALL_PATH)\tiovx
     VISION_APPS_PATH    ?=$(PSDK_INSTALL_PATH)\vision_apps
    @@ -122,12 +122,12 @@ TIDL_GRAPHVIZ_PATH  ?="$(PSDK_INSTALL_PATH)\graphviz-2.38_x64"
     CUDA_PATH ?= "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v9.0/"
     CUDNN_PATH ?= "D:/work/cuDNN/cudnn-9.0-v7.0/"
     else
    -BIOS_PATH           ?="$(PSDK_INSTALL_PATH)/bios_6_83_02_07"
    -XDCTOOLS_PATH       ?="$(PSDK_INSTALL_PATH)/xdctools_3_61_04_40_core"
    +BIOS_PATH           ?="$(PSDK_INSTALL_PATH)/bios_6_83_00_18"
    +XDCTOOLS_PATH       ?="$(PSDK_INSTALL_PATH)/xdctools_3_61_03_29_core"
     IVISION_PATH        ?="$(PSDK_INSTALL_PATH)/ivision"
    -DSP_TOOLS           ?="$(PSDK_INSTALL_PATH)/ti-cgt-c7000_3.0.0.STS"
    -MMALIB_PATH         ?="$(PSDK_INSTALL_PATH)/mmalib_02_04_00_05"
    -PDK_INSTALL_PATH    ?="$(PSDK_INSTALL_PATH)/pdk_jacinto_08_04_00_21/packages"
    +DSP_TOOLS           ?="$(PSDK_INSTALL_PATH)/ti-cgt-c7000_1.4.0.LTS"
    +MMALIB_PATH         ?="$(PSDK_INSTALL_PATH)/mmalib_01_03_00_06"
    +PDK_INSTALL_PATH    ?="$(PSDK_INSTALL_PATH)/pdk_jacinto_07_01_00_45/packages"
     CONCERTO_ROOT       ?=$(PSDK_INSTALL_PATH)/vision_apps/concerto
     TIOVX_PATH          ?=$(PSDK_INSTALL_PATH)/tiovx
     VISION_APPS_PATH    ?=$(PSDK_INSTALL_PATH)/vision_apps
    @@ -161,7 +161,7 @@ CORE ?= dsp
     
     # Default RTOS is FREERTOS
     # Supported values: FREERTOS, SYSBIOS
    -RTOS ?= FREERTOS
    +RTOS ?= SYSBIOS
    
    diff --git a/vision_apps/apps/basic_demos/app_tirtos/concerto_c7x_inc.mak b/vision_apps/apps/basic_demos/app_tirtos/concerto_c7x_inc.mak
    index 4c30e077..38530b96 100755
    --- a/vision_apps/apps/basic_demos/app_tirtos/concerto_c7x_inc.mak
    +++ b/vision_apps/apps/basic_demos/app_tirtos/concerto_c7x_inc.mak
    @@ -17,8 +17,8 @@ LDIRS += $(PDK_PATH)/packages/ti/drv/sciclient/lib/j721e/c7x_1/$(TARGET_BUILD)/
     LDIRS += $(TIOVX_PATH)/lib/$(TARGET_PLATFORM)/$(TARGET_CPU)/$(TARGET_OS)/$(TARGET_BUILD)
     LDIRS += $(PTK_PATH)/lib/$(TARGET_PLATFORM)/$(TARGET_CPU)/$(TARGET_OS)/$(TARGET_BUILD)
     LDIRS += $(VISION_APPS_PATH)/lib/$(TARGET_PLATFORM)/$(TARGET_CPU)/$(TARGET_OS)/$(TARGET_BUILD)
    -LDIRS += $(MMALIB_PATH)/lib/release
    -LDIRS += $(TIDL_PATH)/lib/dsp/algo/release
    +LDIRS += $(MMALIB_PATH)/lib/C7100/release
    +LDIRS += $(TIDL_PATH)/lib/j721e/dsp/algo/release
     
     STATIC_LIBS += app_utils_mem
     STATIC_LIBS += app_utils_console_io

TIOVX has made some upgrade changes in version 8.4 compared to version 7.1, so it needs to be modified to adapt to 7.1.

diff --git a/tidl_j7_01_03_00_11/ti_dl/rt/src/a72/concerto.mak b/tidl_j7_01_03_00_11/ti_dl/rt/src/a72/concerto.mak
index 33c15839..978f94da 100644
--- a/tidl_j7_01_03_00_11/ti_dl/rt/src/a72/concerto.mak
+++ b/tidl_j7_01_03_00_11/ti_dl/rt/src/a72/concerto.mak
@@ -20,20 +20,18 @@ LDIRS += $(LINUX_FS_PATH)/usr/lib
 
 TIOVX_LIBS  =
 TIOVX_LIBS += vx_framework
-TIOVX_LIBS += vx_platform_psdk_j7
+TIOVX_LIBS += vx_platform_psdk_j7_linux
 TIOVX_LIBS += vx_kernels_host_utils
 TIOVX_LIBS += vx_kernels_tidl
 
-ifeq ($(TARGET_PLATFORM), J7)
-TIOVX_LIBS += vx_kernels_tvm
-endif
+
 
 TIOVX_LIBS += vx_kernels_openvx_core
 TIOVX_LIBS += vx_utils
 
 VISION_APPS_UTILS_LIBS += app_utils_console_io
 VISION_APPS_UTILS_LIBS += app_utils_ipc
-VISION_APPS_UTILS_LIBS += app_rtos_linux_mpu1_common
+VISION_APPS_UTILS_LIBS += app_tirtos_linux_mpu1_common
 VISION_APPS_UTILS_LIBS += app_utils_remote_service
 VISION_APPS_UTILS_LIBS += app_utils_mem
 VISION_APPS_UTILS_LIBS += app_utils_perf_stats
diff --git a/tidl_j7_01_03_00_11/ti_dl/rt/src/concerto_common.mak b/tidl_j7_01_03_00_11/ti_dl/rt/src/concerto_common.mak
index 8c09bc08..e63f0fbc 100644
--- a/tidl_j7_01_03_00_11/ti_dl/rt/src/concerto_common.mak
+++ b/tidl_j7_01_03_00_11/ti_dl/rt/src/concerto_common.mak
@@ -4,13 +4,8 @@ CFLAGS += -fPIC -Wno-int-to-pointer-cast -Wno-stringop-truncation -Wno-format-ov
 CPPFLAGS += -fPIC --std=c++11
 
 CSOURCES    += ../tidl_rt_ovx.c
-CSOURCES    += ../tidl_rt_utils.c
-CSOURCES    += ../tidl_rt_ovx_debug_utils.c
-CPPSOURCES  += ../tidl_rt_ovx_datamove.cpp
 
-ifeq ($(TARGET_PLATFORM), J7)
-CSOURCES    += ../tvm_rt_ovx.c
-endif
+
 
 IDIRS :=
 IDIRS += $(IVISION_PATH)
diff --git a/tidl_j7_01_03_00_11/ti_dl/rt/src/tidl_rt_ovx.c b/tidl_j7_01_03_00_11/ti_dl/rt/src/tidl_rt_ovx.c
index 3a659729..234d6109 100644
--- a/tidl_j7_01_03_00_11/ti_dl/rt/src/tidl_rt_ovx.c
+++ b/tidl_j7_01_03_00_11/ti_dl/rt/src/tidl_rt_ovx.c
@@ -67,13 +67,6 @@
 #include <tivx_utils_graph_perf.h>
 #include <tivx_utils_tidl_trace.h>
 
-#if   defined (SOC_J721E)
-#include <TI/tivx_soc_j721e.h>
-#elif defined (SOC_J721S2)
-#include <TI/tivx_soc_j721s2.h>
-#elif defined (SOC_J784S4)
-#include <TI/tivx_soc_j784s4.h>
-#endif
 
 #include <stdio.h>
 #include <stdint.h>
@@ -86,6 +79,69 @@
 #include <math.h>
 #include "itidl_rt.h"
 #include "tidl_rt_ovx_utils.h"
+/*! \brief Target name for DSP_C7_1
+ *         This target task is first in priority.
+ *         Each of the C7X targets are assigned a different
+ *         task priority.  Subsequent C7X targets are assigned
+ *         lower priority than the preceding target (i.e.,
+ *         \ref TIVX_TARGET_DSP_C7_1_PRI_2 is lower priority
+ *         than \ref TIVX_TARGET_DSP_C7_1_PRI_1).  Therefore,
+ *         the \ref TIVX_TARGET_DSP_C7_1_PRI_2 target will be
+ *         preempted by \ref TIVX_TARGET_DSP_C7_1_PRI_1 once
+ *         the higher priority target is unblocked to execute.
+ * \ingroup group_tivx_ext_targets
+ */
+#define TIVX_TARGET_DSP_C7_1    "DSP_C7-1"
+
+/*! \brief Target name for DSP_C7_1
+ *         This target task is first in priority.
+ *         This aliases to the same task as \ref TIVX_TARGET_DSP_C7_1
+ * \ingroup group_tivx_ext_targets
+ */
+#define TIVX_TARGET_DSP_C7_1_PRI_1    TIVX_TARGET_DSP_C7_1
+
+/*! \brief Target name for DSP_C7-1_PRI_2
+ *         This target task is second in priority
+ * \ingroup group_tivx_ext_targets
+ */
+#define TIVX_TARGET_DSP_C7_1_PRI_2    "DSP_C7-1_PRI_2"
+
+/*! \brief Target name for DSP_C7-1_PRI_3
+ *         This target task is third in priority
+ * \ingroup group_tivx_ext_targets
+ */
+#define TIVX_TARGET_DSP_C7_1_PRI_3    "DSP_C7-1_PRI_3"
+
+/*! \brief Target name for DSP_C7-1_PRI_4
+ *         This target task is fourth in priority
+ * \ingroup group_tivx_ext_targets
+ */
+#define TIVX_TARGET_DSP_C7_1_PRI_4    "DSP_C7-1_PRI_4"
+
+/*! \brief Target name for DSP_C7-1_PRI_5
+ *         This target task is fifth in priority
+ * \ingroup group_tivx_ext_targets
+ */
+#define TIVX_TARGET_DSP_C7_1_PRI_5    "DSP_C7-1_PRI_5"
+
+/*! \brief Target name for DSP_C7-1_PRI_6
+ *         This target task is sixth in priority
+ * \ingroup group_tivx_ext_targets
+ */
+#define TIVX_TARGET_DSP_C7_1_PRI_6    "DSP_C7-1_PRI_6"
+
+/*! \brief Target name for DSP_C7-1_PRI_7
+ *         This target task is seventh in priority
+ * \ingroup group_tivx_ext_targets
+ */
+#define TIVX_TARGET_DSP_C7_1_PRI_7    "DSP_C7-1_PRI_7"
+
+/*! \brief Target name for DSP_C7-1_PRI_8
+ *         This target task is eighth in priority
+ * \ingroup group_tivx_ext_targets
+ */
+#define TIVX_TARGET_DSP_C7_1_PRI_8    "DSP_C7-1_PRI_8"
+
 extern char* strdup(const char*);
 
 #define TIVX_TIDL_TRACE_DATA_SIZE  (256 * 1024 * 1024)
diff --git a/tiovx/kernels_j7/include/TI/j7_tidl.h b/tiovx/kernels_j7/include/TI/j7_tidl.h
index 855672b0..654df4f8 100644
--- a/tiovx/kernels_j7/include/TI/j7_tidl.h
+++ b/tiovx/kernels_j7/include/TI/j7_tidl.h
@@ -106,6 +106,9 @@ typedef struct{
   /**TIDL input/output buffer descriptor*/
   sTIDL_IOBufDesc_t ioBufDesc;
 
+  /** Flag to enable optimization ivision alg activate, default it is disabled */
+  vx_uint32 optimize_ivision_activation;
+
 }tivxTIDLJ7Params;

The 8.4 TIDL depends on the app_utils_init library, so it needs to be copied to the 7.1SDK:

  • ti-processor-sdk-rtos-j721e-evm-07_01_00_11$ cp ./../ti-8.4/ti-processor-sdk-rtos-j721e-evm-08_04_00_02/vision_apps/utils/app_init ./vision_apps/utils/ -r

In addition to modifying the relevant paths, the latest version of TIDL code has been added, causing the memory segment to need to be re-allocated, otherwise an error will be reported using the default memory allocation of 7.1SDK:

  1. ti-processor-sdk-rtos-j721e-evm-07_01_00_11/vision_apps/tools/PyTI_PSDK_RTOS$ pip3 install -e . --user
  2. Modify vision_apps/apps/basic_demos/app_tirtos/tirtos_linux/gen_linker_mem_map.py as follows:
    diff --git a/vision_apps/apps/basic_demos/app_tirtos/tirtos_linux/gen_linker_mem_map.py b/vision_apps/apps/basic_demos/app_tirtos/tirtos_linux/gen_linker_mem_map.py
    index eba9d84b..871fe762 100755
    --- a/vision_apps/apps/basic_demos/app_tirtos/tirtos_linux/gen_linker_mem_map.py
    +++ b/vision_apps/apps/basic_demos/app_tirtos/tirtos_linux/gen_linker_mem_map.py
    @@ -200,7 +200,7 @@ c7x_1_ddr_vecs_size = 16*KB;
     c7x_1_ddr_secure_vecs_addr = c7x_1_ddr_resource_table_addr + 5*MB;
     c7x_1_ddr_secure_vecs_size = 16*KB;
     c7x_1_ddr_addr = c7x_1_ddr_secure_vecs_addr + c7x_1_ddr_secure_vecs_size;
    -c7x_1_ddr_size = 16*MB - (c7x_1_ddr_addr-c7x_1_ddr_ipc_addr);
    +c7x_1_ddr_size = 32*MB - (c7x_1_ddr_addr-c7x_1_ddr_ipc_addr);
     
     #
     # DDR memory allocation for various shared memories
    @@ -256,7 +256,7 @@ c66x_2_ddr_scratch_addr    = c66x_2_ddr_local_heap_addr + c66x_2_ddr_local_heap_
     c66x_2_ddr_scratch_size    = 48*MB;
     
     c7x_1_ddr_local_heap_addr  = c66x_2_ddr_scratch_addr + c66x_2_ddr_scratch_size;
    -c7x_1_ddr_local_heap_size  = 256*MB;
    +c7x_1_ddr_local_heap_size  = 240*MB;
     c7x_1_ddr_scratch_addr     = c7x_1_ddr_local_heap_addr + c7x_1_ddr_local_heap_size;
     c7x_1_ddr_scratch_size     = ddr_mem_size - 32*MB - (c7x_1_ddr_scratch_addr - ddr_mem_addr);
  3. Execute the following command to generate a new memory management segment ti-processor-sdk-rtos-j721e-evm-07_01_00_11/vision_apps/apps/basic_demos/app_tirtos/tirtos_linux$ ./gen_linker_mem_map.py.

The complete patch of the entire RTOS SDK is as follows: 0001-7.1SDK-upgrade-8.4-TIDL.patch.