8.5. Developing HW accelerator applications with OpenVX

8.5.1. Introduction

Jacinto 7 SoC supports various HW accelerators (HWAs) like VPAC, DMPAC, camera, display, video decode/encode. OpenVX provides nodes for these HWAs which allows developers to easily incorporate these features in their applications from A72.

OpenVX HWA nodes run on R5F and use drivers from within PDK or other components to access the HW interfaces. Further for camera, one needs to also program an external image sensor, typically via I2C. And for display one needs to sometimes program an external video encoder, typically via I2C. Both the image sensor and video encoder programming is done in PSDKRA from R5F.

The scope of this developer note is to point to various documentation and source code resources available within the SDK to understand and use HWA’s in a user application.

8.5.2. Documentation References

8.5.2.1. Device Drivers for HWA’s

SDK Component Documentation Description Section
PDK LINK CSI2RX, DSS, VHWA (VPAC, DMPAC) HW and driver overview Trainings
PDK LINK CSI2RX API on R5F CSI2RX Driver
PDK LINK DSS (Display Sub sustem) API on R5F DSS Driver
PDK LINK VHWA (VPAC, DMPAC) API on R5F VHWA Driver
Video Codec LINK Video decoder/encoder API on R5F APIs
PDK LINK I2C API on R5F I2C Driver

8.5.2.2. OpenVX nodes for HWA’s

SDK Component Documentation Description Section
TI OpenVX LINK Capture OpenVX Node API on A72 TIOVX User Guide > TIOVX Support Kernels > TI Extension Kernels > tivxCaptureNode
TI OpenVX LINK Display OpenVX Node API on A72 TIOVX User Guide > TIOVX Support Kernels > TI Extension Kernels > tivxDisplayNode
TI OpenVX LINK VISS OpenVX Node API on A72 TIOVX User Guide > TIOVX Support Kernels > TI Extension Kernels > tivxVpacVissNode
TI OpenVX LINK LDC OpenVX Node API on A72 TIOVX User Guide > TIOVX Support Kernels > TI Extension Kernels > tivxVpacLdcNode
TI OpenVX LINK NF OpenVX Node API on A72 TIOVX User Guide > TIOVX Support Kernels > TI Extension Kernels > tivxVpacNfGenericNode, tivxVpacNfBilateralNode
TI OpenVX LINK MSC OpenVX Node API on A72 TIOVX User Guide > TIOVX Support Kernels > TI Extension Kernels > tivxVpacMscScaleNode, tivxVpacMscPyramidNode
TI OpenVX LINK DOF OpenVX Node API on A72 TIOVX User Guide > TIOVX Support Kernels > TI Extension Kernels > tivxDmpacDofNode
TI OpenVX LINK SDE OpenVX Node API on A72 TIOVX User Guide > TIOVX Support Kernels > TI Extension Kernels > tivxDmpacSdeNode
TI OpenVX LINK Video decode OpenVX Node API on A72 TIOVX User Guide > TIOVX Support Kernels > TI Extension Kernels > tivxVideoDecoderNode
Imaging LINK Auto-exposure and auto white-balance (2A) OpenVX nodes Main Page

8.5.2.3. Image sensor and display video encoder programming

SDK Component Documentation Description Section
Imaging LINK Image sensor drivers and framework Main Page
vision apps LINK Display controller control APIs APIs > Utility and infrastructure APIs > Display controller remote service APIs
vision apps LINK Display sub-system eDP/HDMI init APIs APIs > Utility and infrastructure APIs > Display subsystem initialization APIs

8.5.2.4. Demo applications for HWA’s

SDK Component Documentation Description Section
vision apps LINK Capture + VISS + LDC + MSC + Display Demo Application (Single channel) Application / Demos > Basic Demos > Single Camera VPAC Application
vision apps LINK Capture + VISS + LDC + MSC + Display Demo Application (Multi channel) Application / Demos > Basic Demos > Multi Camera VPAC Application
vision apps LINK File IN + MSC + DOF + Display Demo Application Application / Demos > Basic Demos > Dense Optical Flow Application
vision apps LINK File IN + SDE + Display Demo Application Application / Demos > Basic Demos > Stereo Disparity Application

8.5.3. Source Code References

8.5.3.1. Device Drivers for HWA’s

SDK Component File / Folder Description
PDK pdk/packages/ti/drv/csirx/csirx.h CSI2RX driver interface on R5F
PDK pdk/packages/ti/drv/dss/dss.h DSS driver interface on R5F
PDK pdk/packages/ti/drv/vhwa/include VPAC, DMPAC driver interface on R5F
Video Codec video_codec/ti-img-encode-decode/timmlib/include/ Video encode/decode driver API
PDK pdk/packages/ti/drv/i2c/I2C.h I2C driver interface on R5F
PDK pdk/packages/ti/drv/board/ Board drivers for display video encoder on R5F

8.5.3.2. OpenVX nodes and conformance tests for HWA’s

SDK Component File / Folder Description
TI OpenVX tiovx/kernels_j7/hwa/ HWA OpenVX node implementation on R5F and A72
TI OpenVX tiovx/kernels_j7/include/TI/*.h HWA OpenVX node interface on A72
TI OpenVX tiovx/kernels_j7/hwa/test/ HWA TI OpenVX conformance tests (simple unit level examples)
Imaging imaging/kernels/ 2A OpenVX node implementation on R5F and A72

8.5.3.3. Image sensor and display video encoder programming

SDK Component File / Folder Decription
Imaging imaging/sensor_drv/include/iss_sensors.h Image sensor programming interface on A72
Imaging imaging/sensor_drv/src Image sensor drivers on R5F and snesor framework on R5F and A72
vision apps vision_apps/utils/dss Display controller APIs on A72/R5F and eDP/HDMI selection on R5F

8.5.3.4. Demo applications for HWA’s

SDK Component File / Folder Decription
vision apps vision_apps/apps/basic_demos/app_single_cam Capture + Display OpenVX Demo application (single channel)
vision apps vision_apps/apps/basic_demos/app_multi_cam Capture + Display OpenVX Demo application (multi channel)
vision apps vision_apps/apps/basic_demos/app_dof DOF OpenVX Demo application
vision apps vision_apps/apps/basic_demos/app_stereo Stereo OpenVX Demo application