TI对OpenVX标准的实现-TIOVX
TIOVX是TI对OpenVX标准的实现
TIOVX允许用户使用OpenVX API创建视觉和计算应用程序。这些OpenVX应用程序可以在TDA2x、TDA3x和TDA4x等TI SoC上执行。TIOVX完全符合OpenVX v1.1规范。TIOVX还为C66x DSP提供了优化的OpenVX内核。扩展API允许用户集成自主开发的自定义内核,并使用OpenVX API调用它们。作为处理器SDK Vision的一部分,还提供了显示TIOVX作为更大系统的一部分使用的示例,例如,相机输入和显示输出。
TIOVX的顶级框图如下所示。
TIOVX框图
该图的组件描述如下
TIOVX Module |
Description |
Khronos Conformance Test |
OpenVX conformance test from Khronos to make sure an implementation implements OpenVX according to specification |
TI Extension Conformance Test |
Additional test cases from TI to test TI extention interfaces |
OpenVX API |
OpenVX API as defined by Khronos |
TIOVX API |
TI extensions and additional APIs in order to efficiently use OpenVX on TI platforms |
TIOVX Framework |
TI's implementation of OpenVX spec. This layer is agnostic of underlying SoC, OS platform |
TIOVX Platform |
This layer binds TIOVX framework to a specific platform. Ex, Processor SDK platform for TDA4x SOCs. This layer also binds TIOVX framework to a specific OS like Linux or TI-RTOS. |
TIOVX Kernel Wrapper |
Kernel wrappers allow TI and customers to integrate a natively implemented kernel into the TIOVX framework. |
Examples |
These are examples which show usage of TIOVX with other system level compoenents. These are not included in TIOVX package. Users should refer to SDK for these examples. |
User Kernels / Target Kernels |
User kernels is an interface to integrate user kernels on HOST CPU using standard Khronos OpenVX APIs. Target kernels is a TI specific interface to integrate user kernels on target CPU like DSP |
Directory Structure
The following describes the contents of the package.
Folder |
Desc |
conformance_tests/kernels |
Kernels added only for test purposes (to test target kernel APIs) |
conformance_tests/test_conformance |
Khronos OpenVX conformance test |
conformance_tests/test_engine |
|
conformance_tests/test_data |
Data files used for Khronos Conformance test, TI test suite, and tutorial input data files |
conformance_tests/test_executable |
Khronos OpenVX conformance test executable (PC HOST emulation mode only) |
conformance_tests/test_tiovx |
Additional test cases for Khronos OpenVX APIs and TI extention APIs |
docs |
User documentation |
include/VX |
Khronos OpenVX interface |
include/TI |
TI OpenVX extension interface |
kernels/openvx-core |
OpenVX defined kernels |
kernels* |
TI vendor-specific kernels, including unit test for the kernels |
source/framework |
TI OpenVX implementation |
source/include |
|
source/vxu |
|
source/platform |
TI OpenVX platform adaptation layer |
tools |
OpenVX use case and kernel wrapper code generation tool |
tutorial |
TI OpenVX tutorials |
utils |
Helpful utilities like image readers |
out |
Build generated files and executables |
lib |
Pre-built dependency libraries (PC) and tiovx libraries copied from out folder at end of build |
Note: since the 8.6 release the below folders have been moved to the following locations:
8.6 Location |
9.0 (and beyond) Location |
|
tiovx/concerto |
sdk_builder/concerto |
|
tiovx/kernels_j7/hwa |
imaging/kernels/hwa |
|
tiovx/kernels_j7/tidl |
c7x-mma-tidl/arm-tidl/tiovx_kernels/tidl |
|
Build Option |
Description |
Default Setting |
PROFILE |
Determines which profile to build for |
all |
BUILD_EMULATION_MODE |
Builds PC emulation mode |
yes |
BUILD_EMULATION_ARCH |
PC emulation architecture. |
x86_64 |
BUILD_TARGET_MODE |
Builds for target SoC platform like TDAxx |
yes |
BUILD_CONFORMANCE_TEST |
Builds entire test suite executable |
yes |
BUILD_IVISION_KERNELS |
Builds iVision kernels (EVE_SW_PATH required to be set for this build) |
no |
BUILD_BAM |
Builds DMA wrapper (DMAUTILS_PATH and ALGFRAMEWORK_PATH required to be set for this build) |
no |
BUILD_TUTORIAL |
Builds OpenVX tutorial |
yes |
BUILD_LINUX_MPU |
Builds for A72 Linux target (NOT used in PC HOST emulation mode |
yes |
BUILD_EVE |
Builds for EVE platform (ARP32CGT_ROOT and EVE_SW_PATH required to be set for this build) |
no |
BUILD_SDK |
Builds for SDK SW platform |
psdkra |
BUILD_IGNORE_LIB_ORDER |
When set to yes, it ignores the static library order listed in makefiles when building on the PC. |
yes |
BUILD_CT_KHR |
Builds and includes the Khronos OpenVX 1.1 conformance tests suite. |
yes |
BUILD_CT_TIOVX |
Builds and includes the TI-added tests suite (for TI extensions and additional rohbustness testing). |
yes |
BUILD_CT_TIOVX_TEST_KERNELS |
Builds and includes the TI-added tests suite (for testing custom kernel interface). |
yes |
BUILD_CT_TIOVX_IVISION |
Builds and includes the tests for IVISION kernels test suite. |
no |
BUILD_CT_TIOVX_TIDL |
Builds and includes the tests for TIDL kernel test suite. |
yes |
BUILD_CT_TIOVX_HWA |
Builds and includes the tests for HWA kernels test suite. |
yes |
BUILD_CT_TIOVX_HWA_NEGATIVE_TESTS |
Builds and includes a large set of negative tests for HWA kernels |
yes |
BUILD_CT_TIOVX_HWA_DISPLAY_TESTS |
Builds and includes display test cases |
no |
BUILD_CT_TIOVX_HWA_CAPTURE_TESTS |
Builds and includes a large set of negative tests for HWA kernels |
no |
BUILD_CT_TIOVX_HWA_CSITX_TESTS |
Builds and includes csitx test cases
This test uses CSIRX to receive the data transmitted by CSITX, hence lane speed for both modules should be same. This tests confgiures the CSITX lane speed to 800 Mbps. |
no |
Kernel |
C66x 1 |
C66x 2 |
HWA |
PC Emulation Support |
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
VPAC_MSC* |
Yes |
|
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
VPAC_MSC* |
Yes |
|
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
||
Cache |
Cache |
Yes |
- Subset of configuration options and or accuracy tradeoff to speed is to be considered for this HWA implementation.
TI Extension Kernels
Note: the below node implementation locations have changed from the 8.6 to 9.0 releases. The new locations can be referenced in Directory Structure document.
Kernel |
Target |
PC Emulation Support |
CSIRX |
No |
|
DSS |
No |
|
C7x + MMA |
Yes |
|
VPAC_VISS |
Yes |
|
VPAC_LDC |
Yes |
|
VPAC_NF |
Yes |
|
VPAC_NF |
Yes |
|
VPAC_MSC |
Yes |
|
VPAC_MSC |
Yes |
|
DMPAC_SDE |
Yes |
|
DMPAC_DOF |
Yes |
|
CSITX |
No |
|
DSS |
No |
参考文献链接
https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/latest/exports/docs/tiovx/docs/user_guide/index.html