NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.

PDK/PDK TDA VPS User Guide

From Texas Instruments Wiki
Jump to: navigation, search
Pdk tda home page.png

About this Manual[edit]

VPS (Video Processing SubSystem) Drivers allow users to make use of all video hardware features. A user can use the drivers in many different ways like multi-channel capture, memory to memory processing, display and so on. This document has detailed description that user's can use to make use of the VPS drivers.
VPS consists of following modules

  • Video Input Port (VIP) - for video capture functions for the device
  • Video Processing Engine (VPE)- for video operations such as color space conversion, deinterlacing, scaling and chroma upsampling features
  • Display Sub System (DSS) - for LCD outputs on three parallel interfaces (DPI1, DPI2, and DPI3) and HDMI
  • Imaging sub system (ISS) including CAL

This document describes how to work with the Texas Instruments VPS drivers on TDA2XX EVM, TDA2PX EVM, TDA3XX EVM, TDA2EX EVM and TDA2EX 17x17 EVM and works as a fundamental guide platform for development, deployment and execution of video applications.



VPS Overview[edit]

This section provides top level information about VPS software architecture and the hardware architecture of VIP, VPE and DSS for TDA2XX and VIP and DSS for TDA3XX.

VPS Software Overview[edit]

VPS software overview explains the VPS software and the major class of drivers supported by the VPS software interfaces to the application. VPS Software overview could be found at VPS Software Overview

FVID2 Overview[edit]

FVID2 are the set of APIs or framework specifically designed for the video class of devices. It exposes number of features of the video devices in a standard way so that application needs a minimum changed while migrating from the once class of video devices to other class of video devices, both of them adhering to the FVID2 interfaces. More details about the FVID2 can be found at FVID2

Capture Driver[edit]

Captures drivers refers to the drivers which takes the input from the external sources like camera, dvd players etc and puts the capture images in the memory. Details of the capture drivers supported by the VPS package can be found at VPS Capture Driver User Guide

Memory Driver[edit]

Memory drivers refers to the drivers which takes the input from the memory, processes the input like scale the image, chroma up samples the image and puts it back to the memory. Details of the memory drivers supported by the VPS package can be found at VPS VPE Driver User Guide

Display Driver[edit]

Display drivers refers to the drivers which takes the input buffer from the memory and displays that buffer on the external device like TV, LCD etc. Details of the display drivers supported by the VPS packages can be found at VPS Display Driver User Guide



Getting Started[edit]

Running VPS Application on TDA3XX EVM[edit]

This section describes the out of the box experience for the VPS drivers. It shows how to run the first VPS application involving major VPS drivers.

Common Steps for all examples

  • Launch Tda3XX target configuration, then load all the Gel files required.
  • set the variable VISION_SDK_CONFIG to 1 in TDA3xx_multicore_reset.gel file. This is required to keep the ammu mapping done by gel in sync with the example and sbl.
  • Switch settings in TDA3XX board should set to SYSBOOT[0-7] - "00100000" and SYSBOOT[8-15] - "00000000".
  • Connect to M4_IPU1 core 0
  • Load and Run the respective examples
  • In case of ADV7611 HDMI Receiver capture through VIP, SW8000[1:4] should be set to 1010. EDID programming to the EEPROM is not required as the ADV7611 driver uses the internal EDID RAM
  • In case of Digital parallel capture from OV10640 and AR0132 sensors through ISS on TDA3XX, make sure that the CPLD is programmed with the firmware revision REVB1. The binary for this firmware revision can be found in packages/ti/drv/vps/docs/tda3xx/cpld/
  • If I2C Read/Write fails for OV10640 sensor, change the I2C frequency to 100KHz in gBoardTda3xxI2cInstData[1].busClkKHz in the file packages/ti/drv/vps/src/board/src/bsp_boardTda3xx.c file and rebuild ISS examples.

diff --git a/packages\ti\drv\vps/src/boards/src/bsp_boardTda3xx.c b/packages\ti\drv\vps\src\boarindex 517306b..ba76593 100755
--- a/packages\ti\drv\vps/src/boards/src/bsp_boardTda3xx.c
+++ b/packages\ti\drv\vps/src/boards/src/bsp_boardTda3xx.c
@@ -281,7 +281,7 @@ static Bsp_BoardI2cInstData gBoardTda3xxI2cInstData[] =
        BSP_DEVICE_I2C_INST_ID_1,           /* instId */
        SOC_I2C2_BASE,                      /* baseAddr */
        CSL_INTC_EVENTID_I2CINT2,           /* intNum */
-       400U                                /* busClkKHz */
+       100U                                /* busClkKHz */
    }
};

  • For VIP capture from Multi-deserializer board, the multi-deserializer board should be be configured for 4-channel operation. The CN2, CN3 and CN4 jumper settings should be set as per below picture
TDA3xx Multi Deserializer Jumper Setup.jpg
  • In case of Multi-deserializer capture through VIP or ISS capture from sensors, the following board modification is required in the base board to avoid I2C issues


ER15: ADJUST THE I2C PULLUPS TO PULLUPS TO IMPROVE OPERATION WITH
FROM 101370-2202R TO 101370-1003R, 2.2K TO 10K
SHEET 8, R9315, R9316
SHEET 9, R9371, R9372, R9373, R9374
SHEET 28, R9391, R9392, R9394, R9395
SHEET 29, R9397, R9398
SHEET 30, R1058, R1059

  • For OV10640 Parallel input, change the IO voltage to 1.8V from 3.3V by removing resistor RJ26 from pins 1-2 and installing it on pins 2-3.
  • Most of the examples take the user input from the UART console few take it from CCS console. Please look at the print before waiting for the user input stating "in UART console" for the examples that take user input from UART. Connect to UART3 terminal and configure serial terminal at 115200 baud rate, 8 bit data, 1 stop bit, no parity and no flow control.
  • For most of the examples which supports auto run option, default timeout of 10 sec is given for the user input. If no input is received on UART terminal within this time, the example starts running the autorun option. This is done for test automation.The default timeout is defined with BSP_UTILS_UART_RX_DEFAULT_TIMEOUT macro in "packages\ti\drv\vps\examples\utility\bsputils_uart.h" file.
  • The examples that needs loading and/or saving buffers, are updated to load/save from the SD card if connected and the file to be loaded is present in the card. If the card is not inserted or the file is not present in the card then load/save buffers can be done using the scripting console.

Running Capture example[edit]

  • Make sure OV sensor OV1063x is connected to the base EVM before running the example.
  • Before running any ISS capture examples, ensure required / supported sensor is connected. Refer to Connecting Sensors To EVM section.

CCS connection:

  • Load the generated Xem4 file in CCS
  • Run the application, Select any of the option.
  • Save the buffer with the command mentioned in the log and verify the buffer.

Running Display example[edit]

Configuring Display:

  • Make sure the LCD panel is connected to the base EVM before running the example binary.
  • Make sure the HDMI is connected to TV from the EVM for HDMI display options.
  • Make sure the SD Cable is connected to TV from the EVM for SDDAC options.

CCS connection:

  • Load the generated Xem4 file in CCS
  • Run the application, Select any of the option and load the buffer as suggested.
  • Content will be displayed on the LCD panel connected to EVM for options till 3
  • Content will be displayed on the HDMI TV connected to EVM for options 4, 5 and 6
  • Content will be displayed on the SD TV connected to EVM for options 7 and 8.

Note:

  • Test Input files for Display Sample application are available at "packages\ti\drv\vps\docs\test_inputs\dss_input_files.rar"
  • For Option 0 : Load the input file "PSP4_yuyv422_prog_packed_1920_1080.tigf"
  • For Option 1 : Load the input file "Logo_rgb888_prog_packed_1920_1080.tigf"
  • For Option 2 : Load the input file "PSP4_yuyv422_prog_packed_1920_1080.tigf" for YUV422I_YUYV frames and "Logo_rgb888_prog_packed_1920_1080.tigf" for BGR24_888 frames
  • For Option 3 : Load the input file "PSP4_yuyv422_prog_packed_1920_1080.tigf" for YUV422I_YUYV frames and "Logo_rgb888_prog_packed_1920_1080.tigf" for BGR24_888 frames
  • For Option 4 : Load the input file "PSP4_yuyv422_prog_packed_1920_1080.tigf"
  • For Option 5 : Load the input file "PSP4_yuyv422_prog_packed_1920_1080.tigf"
  • For Option 6 : Load the input file "PSP4_yuyv422_prog_packed_1920_1080.tigf"

Running Loopback example[edit]

  • Make sure OV sensor and LCD Panel is connected to to the Base EVM before running the binary.

CCS connection:

  • Load the generated Xem4 file in CCS
  • Run the application, Select any of the option.
  • Captured Content will be displayed on the LCD panel connected to EVM

Running ISS Capture Example[edit]

CCS connection:

  • Load the generated vps_examples_captureIss_ipu1_0_release.xem4 file in CCS
  • Run the application, Select any of the given option (Ensure the selected sensor is connected to EVM)
  • Save the buffer with the command mentioned in the log and verify the buffer

Note:

  • Make sure OV10640 CSI2 sensor connected on CSI2 connector and OV10640 Parallel Sensor on the LI connected, and Aptina AR0132 on aptina connector are connected to the base EVM before running the example. Refer to Connecting Sensors To EVM section.
  • If I2C Read/Write fails for OV10640 sensor, change the I2C frequency to 100KHz in gBoardTda3xxI2cInstData[1].busClkKHz in the file packages\ti\drv\vps\src\boards\src\bsp_boardTda3xx.c file and rebuild the capture example.
  • Make sure that the CPLD is flashed with the REVB1 firmware. This firmware binary can be found in the packages\ti\drv\vps\docs\tda3xx\cpld\ folder.

CSI2 Error Handling / Testing:

  • On CSI2 interface multiple error could be detected and reported. Please refer vpsissCalErrorSource_t for details.
  • CRC Error could be simulated by disabling one of the data lane (e.g. in the capture demo application, the lane could be disabled by configuring data4Lane.position = 0;) Please note that the capture frames will be corrupted.

Running ISS OTF Capture Example[edit]

CCS connection:

  • Load the generated vps_examples_captureIssOtf_ipu1_0_release.xem4 file in CCS
  • Run the application, Select any of the given option (Ensure the selected sensor is connected to EVM)
  • Save the buffer with the command mentioned in the log and verify the buffer

Running ISS Loopback Example[edit]

CCS connection:

  • Load the generated vps_examples_issLoopback_ipu1_0_release.xem4 file in CCS
  • Run the application, Select any of the given option
  • Output is displayed on TV through HDMI interface

Note:

  • Make sure OV10640 CSI2 sensor connected on CSI2 connector and OV10640 Parallel Sensor on the LI connected, and Aptina AR0132 on aptina connector are connected to the base EVM before running the example. Refer to Connecting Sensors To EVM section.
  • Make sure display output is connected to TV through HDMI interface.
  • Make sure that the CPLD is flashed with the REVB1 firmware. This firmware binary can be found in the packages\ti\drv\vps\docs\tda3xx\cpld\ folder.
  • If I2C Read/Write operation fails for OV10640 sensor, change the I2C frequency to 100KHz in gBoardTda3xxI2cInstData[1].busClkKHz in the file packages\ti\drv\vps\src\board\src\bsp_boardTda3xx.c file and rebuild Loopback examples.
  • Application runs two pass Memory to Memory WDR flow for the frames captured from OV10640 sensor and it runs single pass Memory to Memory ISP for the frames captured from AR0132 sensor
  • ISP and Sensor Parameters are not tuned for all lighting conditions, it works with the fixed set of parameters, which may not give good quality output in difference lighting condition.
  • A board power cycle is required after running any given option. Without doing power cycle, I2C write fails

Running ISS Memory to memory Example[edit]

CCS connection:

  • Load the generated vps_examples_m2mIss_ipu1_0_release.xem4 file in CCS
  • Run the application
  • Load any 1280x720 size Bayer RAW image with the format GRBG at the given location using CCS scripting console.
  • It generates 8 output files, save the buffer with the command mentioned in the log and verify the buffer.

Note:

  • Sample Reference Input files for ISS M2M Sample application is present at "packages\ti\drv\vps\docs\test_inputs\ISSM2M_BayerRAW_GRBG_1280_720.tar.gz"

Running ISS Memory to memory WDR Example[edit]

CCS connection:

  • Load the generated vps_examples_m2mIssWdr_ipu1_0_release.xem4 file in CCS
  • Run the application
  • Load any 1280x960 size Bayer RAW image with the format GRBG at the given location using CCS scripting console.
  • Save the buffer with the command mentioned in the log and verify the buffer.


Note:

  • Sample Reference Input files for ISS M2M WDR Sample application is present at "packages\ti\drv\vps\docs\test_inputs\ISSM2MWdr_BayerRAW_GRBG_1280_960.tar.gz"

Running ISS Memory to memory ReSizer Example[edit]

This demo application demonstrates how to use multiple instances of ISP driver in parallel. In this demo application, an task uses ISP to convert from RAW 12 to YUV images and another task to re-size YUV420 SP images.

CCS connection:

  • Load the generated vps_examples_m2mIss_ipu1_0_release.xem4 file in CCS
  • Run the application
  • Load any 1280x736 size Bayer RAW image with the format GRBG at the given location using CCS scripting console.
  • Load any 1280x480 size YUV420 SP (NV12) image at the given location using CCS scripting console. This frame will be scaled upto 1920x1080
  • Save the buffer with the command mentioned in the log and verify the buffer.

Note:

  • Sample Reference Input files for ISS M2M RSZ Sample application is present at "packages\ti\drv\vps\docs\test_inputs\IssM2MRszInput.tar.gz"

Running ISS Memory to memory SIMCOP Example[edit]

CCS connection:

  • Load the generated vps_examples_m2mSimcopLdcVtnf_ipu1_0_release.xem4 file in CCS
  • Run the application
  • Load required mesh table and 4 images of resolution 1920X1080 of type YUV420 (NV12) using CCS scripting console.
    • The test images that we used, is available at packages\ti\drv\vps\docs\test_inputs\issSimcopTestImages.tar.gz
    • BowerFisheye.dat.bin is the Mesh Table
    • IMG_G1X_Bower_0001_420_mult.yuv is set of 4 images
    • LDC_VTNF_Output_YUV420_DRV.yuv is the expected result after processing



Running VPS Application on TDA2XX EVM[edit]

This section describes the out of the box experience for the VPS drivers. It shows how to run the first VPS application involving major VPS drivers.

Common Steps for all examples

  • Launch TDA2XX target configuration, it will automatically load all the Gel files required.
  • Connect to A15 core 0 and bring M4 out of reset(M4_IPU1), run IPU1SSClkEnable_API from Gel scripts.
  • Load and Run the respective examples
  • In case of ADV7611 HDMI Receiver (REV D and higher revision boards) capture through VIP, SW8000[1:4] should be set to 0011. EDID programming to the EEPROM is not required as the ADV7611 driver uses the internal EDID RAM.
  • For VIP capture from Multi-deserializer board, the multi-deserializer board should be be configured for 6-channel operation. The CN2, CN3 and CN4 jumper settings should be set as per below picture
TDA2xx Multi Deserializer Jumper Setup.jpg
  • Most of the examples take the user input from the UART console few take it from CCS console. Please look at the print before waiting for the user input stating "in UART console" for the examples that take user input from UART. Connect to UART1 terminal and configure serial terminal at 115200 baud rate, 8 bit data, 1 stop bit, no parity and no flow control.
  • For most of the examples which supports auto run option, default timeout of 10 sec is given for the user input. If no input is received on UART terminal within this time, the example starts running the autorun option. This is done for test automation. The default timeout is defined with BSP_UTILS_UART_RX_DEFAULT_TIMEOUT macro in "packages\ti\drv\vps\examples\utility\bsputils_uart.h" file.
  • The examples that needs loading and/or saving buffers, are updated to load/save from the SD card if connected and the file to be loaded is present in the card. If the card is not inserted or the file is not present in the card then load/save buffers can be done using the scripting console.

Running Capture example[edit]

  • Make sure OV sensor OV1063x is connected to the vision app board before running the example.
  • For all the options of capture example, Switch settings in Vision App board should set to SW3[1-8] - "xxxxxxx0". i.e. disable DIP switch override as this is now controlled through GPIO in board driver
  • For options with HDMI Capture using SII, follow these steps
  1. Switch settings in Vision App board should be set to SW1 - "1111",i.e enable all the dip switches in SW1. Now the programming is controlled through software
  2. Run the edid_programmer binary from A15
  3. Reset the switch settings to SW1 - "0000", i.e switch off all the dip switches, and run the application now
  • For TVP5158 capture through JAMR3 card, the SW2 in JAMR3 card should be set to OFF OFF. This will select I2C4 for IO expander programming instead of I2C1. The same applies when JAMR3 card is used with TDA2EX EVM

CCS connection:

  • Load the generated Xem4 file in CCS
  • Run the application, Select any of the option.
  • Save the buffer with the command mentioned in the log and verify the buffer.

Running Display example[edit]

Configuring LCD Display:

  • Make sure the LCD panel is connected to the base EVM before running the example binary.
  • Make sure the HDMI is connected to TV from the EVM for HDMI display options.

CCS connection:

  • Load the generated Xem4 file in CCS
  • Run the application, Select any of the option and load the buffer as suggested.
  • Content will be displayed on the LCD panel connected to EVM for options till 5
  • Content will be displayed on the HDMI TV connected to EVM for options 6 and 7

Note:

  • Test Input files for Display Sample application will be in "packages\ti\drv\vps\docs\test_inputs\DisplayInput.rar"
  • For Option 1 : Load the input file "PSP4_yuyv422_prog_packed_1920_1080.tigf"
  • For Option 2 : Load the input file "PSP4_yuyv422_prog_packed_1920_1080.tigf"
  • For Option 3 : Load the input file "Logo_rgb888_prog_packed_1920_1080.tigf"
  • For Option 4 : Load the input file "PSP4_yuyv422_prog_packed_1920_1080.tigf" for YUV422I_YUYV frames and "Logo_rgb888_prog_packed_1920_1080.tigf" for BGR24_888 frames
  • For Option 5 : Load the input file "PSP4_yuyv422_prog_packed_1920_1080.tigf" for YUV422I_YUYV frames and "Logo_rgb888_prog_packed_1920_1080.tigf" for BGR24_888 frames
  • For Option 6 : Load the input file "PSP4_yuyv422_prog_packed_1920_1080.tigf"
  • For Option 7 : Load the input file "PSP4_yuyv422_prog_packed_1920_1080.tigf"

Running M2MVpe example[edit]

CCS connection:

  • Load the generated Xem4 file in CCS
  • Run the application
  • Load the input file "VpeInputFlag10_nv12_prog_packed_720_240.tigf" as suggested.
  • Save the buffer with the command mentioned in the log and verify the buffer.

Note:

  • Test Input files for M2MVpe Sample application will be in "packages\ti\drv\vps\docs\test_inputs\VpeInputFlag10_nv12_prog_packed_720_240.rar"

Running Loopback example[edit]

  • Make sure OV sensor is connected to vision daughter card and LCD Panel to the Base EVM before running the binary.
  • For all the options of Loopback examples, Switch settings in Vision App board should set to SW3[1-8] - "xxxxxxx0". i.e. disable DIP switch override as this is now controlled through GPIO in board driver

CCS connection:

  • Load the generated Xem4 file in CCS
  • Run the application, Select any of the option.
  • Captured Content will be displayed on the LCD panel connected to EVM


Running VPS Application on TDA2EX EVM (REV A/B/C/D)[edit]

  • The steps to run VPS examples for TDA2EX is similar to that of TDA2XX
  • In case of REV A/B boards below additional changes are required. REV C base EVM doesn't require any board modification.
  • In case of VIP capture from various sources from VISION card, software mux control is not supported in TDA2EX. Hence the VIDEO CONFIG Switch (SW3) present in the VISION card should be used to select video source to VIP (VIN2A) as per below table
TDA2EX VISION Card Mux
TDA2EX VISION Source SW3[1:8] Settings
HDMI input P5 (ADV7611/SIL9127) OFF OFF ON ON OFF ON OFF ON
LI Imager P2 ON ON OFF ON OFF ON OFF ON
OV Imager P1 OFF ON OFF ON OFF ON OFF ON
Aptina Imager P3 ON OFF OFF ON OFF ON OFF ON
FPD In (Multi-serdes) OFF OFF ON OFF OFF ON OFF ON
  • In case of ADV7611 HDMI Receiver (REV D and higher revision boards) capture through VIP, SW8000[1:4] should be set to 0011. EDID programming to the EEPROM is not required as the ADV7611 driver uses the internal EDID RAM.

Changes needed for 4 Channel Multi-deserializer on TDA2EX EVM (Applicable only for REV A/B Base Board)[edit]

Below are the board level changes required for using TDA2XX Vision board and Multi-deserializer board to capture 4 channel LVDS through VIP. All the board level muxing changes and pin mux configurations are already taken care in BSP board module. So they are not mentioned here.
Apart from the below board modifications, CPLD1 and CPLD2 present in the VISION card should be re-programmed with the CPLD for TDA2EX multi-deserializer present in packages\ti\drv\vps\docs\tda2ex\vision_cpld folder

VIN1A (CAM2, connected to VIN5A pads):

  • No changes required.
  • The pin mapping is shown in below table
TDA2EX Multi-deserializer CAM2->VIN1A Pin Mapping
TDA2EX Pin TDA2EX Function Vision Net
GPIO6_10 VIN1A_CLK VIN5A_CLK0
MMC3_D6 VIN1A_HSYNC VIN5A_HSYNC
MMC3_D7 VIN1A_VSYNC VIN5A_VSYNC
MMC3_D5 VIN1A_D0 VIN5A_D0
MMC3_D4 VIN1A_D1 VIN5A_D1
MMC3_D3 VIN1A_D2 VIN5A_D2
MMC3_D2 VIN1A_D3 VIN5A_D3
MMC3_D1 VIN1A_D4 VIN5A_D4
MMC3_D0 VIN1A_D5 VIN5A_D5
MMC3_CMD VIN1A_D6 VIN5A_D6
MMC3_CLK VIN1A_D7 VIN5A_D7


VIN1B (CAM4, connected to VIN4B pads):

  • On TDA2EX EVM, install R-packs RN17, RN18 and RN19 with 0 ohm resistors
  • On TDA2EX EVM, for GPMC_A8 pin: Remove R501 and add wire from R501 (away from mux) to EXP_P2 pin 62
  • The pin mapping is shown in below table
TDA2EX Multi-deserializer CAM4->VIN1B Pin Mapping
TDA2EX Pin TDA2EX Function Vision Net
MDIO_MCLK VIN1B_CLK VIN4B_CLK
GPMC_A8 VIN1B_HSYNC VIN2A_HSYNC
RGMII0_TXD1 VIN1B_VSYNC VIN4B_VSYNC
MDIO_D VIN1B_D0 VIN4B_D0
UART3_RXD VIN1B_D1 VIN4B_D1
UART3_TXD VIN1B_D2 VIN4B_D2
RGMII0_TXC VIN1B_D3 VIN4B_D3
RGMII0_TXCTL VIN1B_D4 VIN4B_D4
RGMII0_RXC VIN1B_D5 VIN4B_D5
RGMII0_RXCTL VIN1B_D6 VIN4B_D6
RGMII0_RXD3 VIN1B_D7 VIN4B_D7

VIN2A (CAM1, connected to VIN2A pads):

  • On TDA2EX EVM, for RGMII0_TXD2 pin: Remove R506 and add wire from R506 (away from mux) to EXP_P2 pin 75
  • The pin mapping is shown in below table
TDA2EX Multi-deserializer CAM1->VIN2A Pin Mapping
TDA2EX Pin TDA2EX Function Vision Net
VIN2A_CLK VIN2A_CLK VIN1A_CLK
RGMII0_TXD2 VIN2A_HSYNC VIN1B_CLK1
VIN2A_VSYNC VIN2A_VSYNC VIN1A_VSYNC
VIN2A_D[7:0] VIN2A_D[7:0] VIN1A_D[7:0]

VIN2B (CAM3, connected to VIN2B pads):

  • On TDA2EX EVM, for GPIO6_11 pin: Remove R638, R647, R786 and install 0-ohm at R1099
  • On TDA2EX EVM, for VIN2A_FLD pin: Remove RU40 and wire around - connect 2 to 4
  • On VISION Card, for VIN2A_FLD pin: Add wire from TP8 to TP48
  • The pin mapping is shown in below table
TDA2EX Multi-deserializer CAM3->VIN2B Pin Mapping
TDA2EX Pin TDA2EX Function Vision Net
VIN2A_FLD0 VIN2B_CLK TEST POINT (TP8)
VIN2A_HSYNC VIN2B_HSYNC VIN1A_HSYNC
GPIO6_11 VIN2B_VSYNC VIN3A_HSYNC_VIN2A_D22
VIN2A_D[16:23] VIN2B_D[7:0] VIN1A[23:16] (Note: bit order is reversed)

Running VPS Application on TDA2EX 17x17 EVM[edit]

  • The steps to run VPS examples for TDA2EX 17x17 is similar to that of TDA2EX EVM
  • To build the application and library for TDA2EX 17x17, use "gmake -s allcores BOARD=tda2ex-evm". This is same as that of TDA2EX
  • The application will auto detect the package using Chip level control module registers and perform the necessary changes

Running VPS Application on TDA2PX EVM[edit]

  • The steps to run VPS examples for TDA2PX is similar to that of TDA2XX EVM
  • To build the application and library for TDA2PX, use "gmake -s allcores BOARD=tda2px-evm".
  • TDA2Px also supports the ISS Capture Example, ISS Memory to memory examples. Please refer the section "Running VPS Application on TDA3XX EVM" for the details of these examples.



Memory Map for TDA3XX/TDA2XX/TDA2EX/TDA2PX[edit]

The following shows various sections defined and used by VPS drivers and its sample applications. This assumes a 512 MB of DDR memory. The Video M4 MMU is configured such away that the 512 MB DDR is split into two sections - 1st 512MB is cached and the next 512MB is non-cached (mapped to above 512MB physical).

  • 1st 512MB - Cached:
  • VPSS M4 Data: IPU Core 0 bss and other data section (driver bss, const and other global variables reside here)
  • VPSS M4 Code: IPU Core 0 code program section (driver text section resides here)
  • Video M4 Data: IPU Core 1 bss and other data section (driver bss, const and other global variables reside here)
  • Video M4 Code: IPU Core 1 code program section (driver text section resides here)
  • Mirrored Section : This section is mapped to below mentioned 512MB
  • Frame Buffer: Frame buffer heap used for non-tiled video buffers
  • 2nd 512MB - Non-Cached:
  • Mirrored Section : This section is mapped to above mentioned 512MB
  • VPDMA Desc Mem: VPS driver VPDMA descriptor memory section used to store descriptors and overlay memory
DDR: 0x80000000 (Ist 512MB - Cached)

+-----------------+
| VPSS M4 Code    | (1MB - SBL_SIZE)
+-----------------+
| VPSS M4 Data    | 8MB
+-----------------+
| Video M4 Code   | 1MB
+-----------------+
| Video M4 Data   | 4MB
+-----------------+
| Mirrored Section| 2MB VPDMA Desc Mem
+-----------------+
|                 |
| Frame Buffer    | 240MB (Incase of 12x12, 48MB)
+-----------------+

DDR: 0xA0000000 (2nd 512MB - Non-Cached - but mapped to above 512MB physical)

+-----------------+
| Mirrored Section| 14MB for Code + Data
+-----------------+
| VPDMA Desc Mem  | 2MB
+-----------------+
| Mirrored Section| 240MB Frame Buffer (Incase of 12x12, 48MB)
+-----------------+



Programming CPLD for TDA2XX Vision Daughter Card[edit]

Steps for programming new file:

  • Connect Altera USB Blaster cable to J2 header (for ‘CPLD1’) or J1 header (for 'CPLD2'). Make sure pin 1 on header matches pin 1 on cable (pod should extend away from board, not overlap).
  • Apply power to system
  • Launch Quartus II software.
  • Under menu ‘Tools’ select Programmer.
  • Make sure USB-Blaster is selected for Hardware (Shown below)
CPLD Programming Step 5.png
  • Select ‘Auto Detect’ and the software will scan board looking for CPLD. It should find following:
CPLD Programming Step 6.png
  • In top window, right click on top of ‘5M2210Z’ and select ‘Change File’. Browse to *.pof file provided in packages\ti\drv\vps\docs\tda2xx\vision_cpld folder.
  • Make sure Program/Configure and Verify boxes are checked (shown below)…and then hit start button.
CPLD Programming Step 8.png
  • Bar at top will show progress and will pass/fail when programming is complete.

Programming CPLD for TDA3XX EVM[edit]

Steps for programming the CPLD for TDA3XX is similar to TDA2XX Vision board as explained in previous section. Below are the changes to be taken care of

  • Connect Altera USB Blaster cable to J1 header for programming both ‘CPLD1’ and/or ‘CPLD2’. Make sure pin 1 on header matches pin 1 on cable (pod should extend away from board, not overlap).
  • Both the CPLD files are present in packages\ti\drv\vps\docs\tda3xx\cpld folder. Use REVB1 version.
  • Select EPM2210 device and program the corresponding CPLD image
  • Select EPM570 device and program the corresponding CPLD image

TIFG File Format[edit]

'TIGF' is custom file format used to store Images in binary format directly from device's memory. Files with this custom file format can be viewed in the 'BeoVIEW' image viewer.
Image name shall follow following naming convention:
"disaply_<image data format >_prog_<packed/unpacked>_<width>_<height>.tigf'
For eg. display_rgba8888_prog_packed_1920_1080.tigf


Note: This image file can be viewed in other image browsers as well. User needs to change the 'tigf' extension to respective extensions.

Connecting Sensors To EVM[edit]

TDA3XX[edit]

Interfaces[edit]

Display, Capture, JTAG interface, UART & FPD interfaces are highlighted below.

TDA3xx EVM TOP BSP.jpg

ISS MIPI Interface[edit]

The CSI2 interface of the sensor should be connected to this header.

WARNING : Connecting NON MIPI Sensor to this interface, might potentially render the sensor un-usable.

TDA3xx EVM CSI2.jpg

ISS Parallel Interface[edit]

WARNING : Connecting MIPI sensor to Parallel Li connector, might potentially render the sensor un-usable.

TDA3xx EVM TOP updated.jpg

MIPI Interface[edit]

The connector highlighted is green show high speed connector. This connects to TA3xx CSI2 interface and also LI Connector show in 'ISS MIPI Interface'

The UB960 EVM supported by VPS Drivers should be connected to this connector.

WARNING : An MIPI compliant sensor / source should be connected to either one of these interfaces. Connecting 2 different sensors / sources to these two connector is not permitted.

IMI2 Camera Support[edit]

  • By default the support for IMI v2 camera is disabled in VPS drivers, as the changes are not backward compatible with OV sensor serializer module. To enable IMI v2 camera module, user need to enable BSPUTILS_LVDS_IMI2_CAM_ENABLE macro in packages\ti\drv\vps\examples\utility\src\bsputils_lvds.c file and recompile the VPS driver. Note: The IMI v1 camera works well with this macro enabled or disabled.
E2e.jpg {{
  1. switchcategory:MultiCore=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article PDK/PDK TDA VPS User Guide here.

Keystone=
  • For technical support on MultiCore devices, please post your questions in the C6000 MultiCore Forum
  • For questions related to the BIOS MultiCore SDK (MCSDK), please use the BIOS Forum

Please post only comments related to the article PDK/PDK TDA VPS User Guide here.

C2000=For technical support on the C2000 please post your questions on The C2000 Forum. Please post only comments about the article PDK/PDK TDA VPS User Guide here. DaVinci=For technical support on DaVincoplease post your questions on The DaVinci Forum. Please post only comments about the article PDK/PDK TDA VPS User Guide here. MSP430=For technical support on MSP430 please post your questions on The MSP430 Forum. Please post only comments about the article PDK/PDK TDA VPS User Guide here. OMAP35x=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article PDK/PDK TDA VPS User Guide here. OMAPL1=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article PDK/PDK TDA VPS User Guide here. MAVRK=For technical support on MAVRK please post your questions on The MAVRK Toolbox Forum. Please post only comments about the article PDK/PDK TDA VPS User Guide here. For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article PDK/PDK TDA VPS User Guide here.

}}

Hyperlink blue.png Links

Amplifiers & Linear
Audio
Broadband RF/IF & Digital Radio
Clocks & Timers
Data Converters

DLP & MEMS
High-Reliability
Interface
Logic
Power Management

Processors

Switches & Multiplexers
Temperature Sensors & Control ICs
Wireless Connectivity