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.

MCSDK VIDEO 2.1 PCIE Demo Guide

From Texas Instruments Wiki
Jump to: navigation, search

TIBanner.png


MCSDK Video

Version 2.x

PCIe Based Video Demonstration Guide

Last updated: 10/14/2015


Introduction[edit]

c66x-multicore.jpg

In MCSDK Video 2.x, multiple video demos are provided to uses PCIe as the data IO to achieve real-time video encoding/decoding on Linux PCs with PCIe multiple core DSP cards installed. This PCIe Based Video Demonstration Guide provides instructions on how to run these video demos using the pre-built DSP image included in the release package. The major steps of running video demos include:

  • Build MCSDK Video Host Application to Execute on Linux PC
  • Install and Run Video Demos
  • Reconfigure Demos when Needed

Hardware Configuration for Display Demo Output[edit]

Real-time display of demo output for AVCIU encoding, JPEG2000 transcoding, JPEG2000 decoding, and HEVC transcoding requires high-end PCs. Please refer to MCSDK Video 2.x Linux Getting Started Guide for the list of hardware components used in demo validation.

Where to find the demos[edit]

Demo Name Demo Location inside MCSDK Video Release Package
AVCIU Encoding Demo mcsdk_video_2_x_x_x\demos\pcie_avciuenc_demo
JPEG2000 Transcoding Demo mcsdk_video_2_x_x_x\demos\pcie_j2x_demo
JPEG2000 Decoding Demo mcsdk_video_2_x_x_x\demos\pcie_j2kdec_demo
H264BPMP Decoder Demo mcsdk_video_2_x_x_x\demos\pcie_h264bpmpdec_demo
H264HP Decoder Demo mcsdk_video_2_x_x_x\demos\pcie_h264hpdec_demo
MPEG2 Decoder Demo mcsdk_video_2_x_x_x\demos\pcie_mpeg2dec_demo
MPEG4 Decoder Demo mcsdk_video_2_x_x_x\demos\pcie_mpeg4dec_demo
JPEG Decoder Demo mcsdk_video_2_x_x_x\demos\pcie_jpegdec_demo
H264HP Encoder Demo mcsdk_video_2_x_x_x\demos\pcie_h264hpenc_demo
MPEG2 Encoder Demo mcsdk_video_2_x_x_x\demos\pcie_mpeg2enc_demo
MPEG4 Encoder Demo mcsdk_video_2_x_x_x\demos\pcie_mpeg4enc_demo
JPEG Encoder Demo mcsdk_video_2_x_x_x\demos\pcie_jpegenc_demo
H264HP Encoding Demo with TFTP output (supported in MCSDK Video 2.1) mcsdk_video_2_x_x_x\demos\pcie_h264hpenc_tftpout_demo
H265 (HEVC) Encoder Demo (supported in MCSDK Video 2.2) mcsdk_video_2_x_x_x\demos\pcie_h265enc_demo
H265 (HEVC) Decoder Demo (supported in MCSDK Video 2.2) mcsdk_video_2_x_x_x\demos\pcie_h265dec_demo
H265 (HEVC) Transcoding Demo (supported in MCSDK Video 2.2) mcsdk_video_2_x_x_x\demos\pcie_h265transcode_demo
MPEG2 to H264HP Transcoding Demo (supported in MCSDK Video 2.2) mcsdk_video_2_x_x_x\demos\pcie_mpeg2dec_h264hpenc_demo
Multi-channel H264HP Encoding Demo (supported in MCSDK Video 2.2) mcsdk_video_2_x_x_x\demos\pcie_h264hpenc_multichan_demo


Getting Started from Desktop Linux SDK[edit]

PCIe based video demos are built on Desktop Linux SDK. Before running video demos, please visit Desktop Linux SDK Getting Started Guide to install, setup, and run Desktop Linux SDK out of box demos. Note that video demos requires using larger and pre-reserved contiguous memory allocation (520MB needs to be pre-reserved to run video demos, with 8 MB set asside for Consistent memory allocation) which is provided from Desktop Linux SDK Contiguous Memory Allocation. Running video demos also requires installing cmem autoload and setting permissions for pcie access as described at Desktop Linux SDK CMEM Autoload and Setup udev.


Build MCSDK Video Host Application to Execute on Linux PC[edit]

This section will walk you through how to make MCSDK Video host application binaries so that the video demos can be run on a Linux PC. The overall steps are:

  1. Set up Environment Variable
  2. Build Desktop Linux SDK Host Modules
  3. Build MCSDK Video Host Application Modules



Setting up Environment Variable[edit]

Modify <MCSDK Video Install Dir>/host/setEnv.sh to set the installation directory of Desktop Linux SDK and MCSDK Video. For example, if Desktop Linux SDK is installed at /home/alice/ti/desktop-linux-sdk_01_00_00_07 and MCSDK Video is installed at /home/alice/ti/mcsdk_video_2_1_0_8, modify setEnv.sh as shown below

#!/bin/sh

export DESKTOP_LINUX_SDK_DIR=/home/alice/ti/desktop-linux-sdk_01_00_00_07
export MCSDK_VIDEO_DIR=/home/alice/ti/mcsdk_video_2_1_0_8

Then, run the following commands to set up the environment:
<syntaxhighlight lang="bash"> cd host source setEnv.sh </syntaxhighlight>


Building Desktop Linux SDK Host Modules[edit]

Runt the following commands to build Desktop Linux SDK:
<syntaxhighlight lang="bash"> cd host ./makeCleanSdk.sh ./makeSdk.sh </syntaxhighlight>

Sample console display after running ./makeCleanSdk.sh:

make -C  /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv clean
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv'
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv'
make -C  /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem clean
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem'
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem'
make -C  /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module clean
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module'
make -C /lib/modules/3.2.0-29-generic-pae/build M=/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/moduleclean
make[2]: Entering directory `/usr/src/linux-headers-3.2.0-29-generic-pae'
  CLEAN   /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module/.tmp_versions
  CLEAN   /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module/Module.symvers
make[2]: Leaving directory `/usr/src/linux-headers-3.2.0-29-generic-pae'
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module'
make -C  /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox/host clean
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox/host'
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox/host'
make -C  /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr clean
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr'
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr'
make -C  /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/dnldmgr clean
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/dnldmgr'
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/dnldmgr'
make -C  /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/sync clean
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/sync'
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/sync'
make -C  /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/filetestdemo/host clean
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/filetestdemo/host'
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/filetestdemo/host'
make -C  /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/dsp_utils clean
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/dsp_utils'
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/dsp_utils'

Sample console display after running ./makeSdk.sh:

make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv'
gcc -Werror -ggdb  -I . -I inc -I ../ -I shared -I ../sync -D _FILE_OFFSET_BITS=64  -c src/pciedrv.c -o obj/pciedrv.o
ar rcs lib/pciedrv.a obj/pciedrv.o
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv'
make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem'
gcc -Werror  -I . -I inc -I .. -I ../config -I module -D _FILE_OFFSET_BITS=64  -c src/cmem_drv.c -o obj/cmem_drv.o
ar rcs lib/cmem_drv.a obj/cmem_drv.o
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem'
make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module'
make -C /lib/modules/3.2.0-29-generic-pae/build M=/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module modules
make[2]: Entering directory `/usr/src/linux-headers-3.2.0-29-generic-pae'
  CC [M]  /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module/cmem.o
  LD [M]  /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module/cmem_dev.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module/cmem_dev.mod.o
  LD [M]  /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module/cmem_dev.ko
make[2]: Leaving directory `/usr/src/linux-headers-3.2.0-29-generic-pae'
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/module'
make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox/host
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox/host'
gcc -ggdb -I .. -I ../inc -I ../.. -I ../../pciedrv  -I ../../config -D MAILBOX_ON_HOST -c src/mailBox_host.c -o obj/mailBox_host.o
gcc -ggdb -I .. -I ../inc -I ../.. -I ../../pciedrv  -I ../../config -D MAILBOX_ON_HOST -c ../src/mailBox.c -o ../obj/mailBox.o
ar rcs lib/mailBox.a  obj/mailBox_host.o  ../obj/mailBox.o
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox/host'
make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr'
gcc  -ggdb -I . -I .. -I ../config -c src/bufmgr.c -o obj/bufmgr.o
ar rcs lib/bufmgr.a obj/bufmgr.o
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr'
make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/dnldmgr
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/dnldmgr'
gcc -Werror -ggdb   -I . -I inc -I .. -I ../pciedrv -I ../driver/module -c src/dnldmgr.c -o obj/dnldmgr.o
ar rcs lib/dnldmgr.a obj/dnldmgr.o
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/dnldmgr'
make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/sync
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/sync'
gcc  -ggdb -I . -I ..  -c src/syncLock.c -o obj/syncLock.o
gcc  -ggdb -I . -I ..  -c src/syncBarr.c -o obj/syncBarr.o
ar rcs lib/sync.a obj/syncLock.o obj/syncBarr.o
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/sync'
make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/filetestdemo/host
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/filetestdemo/host'
gcc -ggdb -I ../../../sdk -I ../../../sdk/pciedrv -I ../../../sdk/cmem -I ../../../sdk/mailBox -I ../../../sdk/bufmgr -I inc -I ../inc -D MAILBOX_ON_HOST -D BUF_DEBUG -D DEMO_VERBOSE -c src/demo_filetest.c -o obj/demo_filetest.o
gcc -ggdb obj/demo_filetest.o ../../../sdk/pciedrv/lib/pciedrv.a ../../../sdk/cmem/lib/cmem_drv.a ../../../sdk/mailBox/host/lib/mailBox.a ../../../sdk/bufmgr/lib/bufmgr.a ../../../sdk/dnldmgr/lib/dnldmgr.a -o bin/demo_filetest -lpciaccess -lpthread -lrt -lbfd
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/filetestdemo/host'
make -C /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/dsp_utils
make[1]: Entering directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/dsp_utils'
gcc -I ../../sdk -I ../../sdk/pciedrv -I ../../sdk/dnldmgr -I inc -I ../../sdk/cmem  -c src/argparse.c -o obj/argparse.o
gcc -I ../../sdk -I ../../sdk/pciedrv -I ../../sdk/dnldmgr -I inc -I ../../sdk/cmem  -c src/dsp_utils.c -o obj/dsp_utils.o
gcc  obj/argparse.o obj/dsp_utils.o ../../sdk/dnldmgr/lib/dnldmgr.a ../../sdk/pciedrv/lib/pciedrv.a ../../sdk/cmem/lib/cmem_drv.a ../../sdk/sync/lib/sync.a  -o bin/dsp_utils -lpciaccess -lpthread -lbfd
make[1]: Leaving directory `/home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/demos/dsp_utils'

Building MCSDK Video Host Application Modules[edit]

Runt the following commands to build MCSDK Video host application:
<syntaxhighlight lang="bash"> cd host ./makeCleanVideoApp.sh ./makeVideoApp.sh </syntaxhighlight>
After the compilation is completed, bin and obj folders will be created under <MCSDK Video Install Dir>/host. MCSDK Video host binary "demo_c667x" can be found from host/bin directory.

gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/dataSrc/FileReader.c -o obj/dataSrc/FileReader.o
gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/deviceIO/DeviceIO.c -o obj/deviceIO/DeviceIO.o
gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/deviceIO/DeviceIOTx.c -o obj/deviceIO/DeviceIOTx.o
gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/deviceIO/DeviceIORx.c -o obj/deviceIO/DeviceIORx.o
gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/scheduler/Scheduler.c -o obj/scheduler/Scheduler.o
gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/reorder/Reorder.c -o obj/reorder/Reorder.o
gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/dataSnk/FileWriter.c -o obj/dataSnk/FileWriter.o
gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/dataSnk/Display.c -o obj/dataSnk/Display.o
gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/utils/utils.c -o obj/utils/utils.o
gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/algs/j2kenc/j2eDynCfg.c -o obj/algs/j2kenc/j2eDynCfg.o
gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/parseArgs.c -o obj/parseArgs.o
gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/algs/alg.c -o obj/algs/alg.o
gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/demoDrv.c -o obj/demoDrv.o
gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/demoBufferPools.c -o obj/demoBufferPools.o
gcc -Wall -ggdb -D_FILE_OFFSET_BITS=64 -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/config -I /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk -I iface -I src -D MAILBOX_ON_HOST -c src/main.c -o obj/main.o
gcc obj/dataSrc/FileReader.o obj/deviceIO/DeviceIO.o obj/deviceIO/DeviceIOTx.o obj/deviceIO/DeviceIORx.o obj/scheduler/Scheduler.o obj/reorder/Reorder.o obj/dataSnk/FileWriter.o obj/dataSnk/Display.o obj/utils/utils.o obj/algs/j2kenc/j2eDynCfg.o obj/parseArgs.o obj/algs/alg.o obj/demoDrv.o obj/demoBufferPools.o obj/main.o /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/pciedrv/lib/pciedrv.a /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/cmem/lib/cmem_drv.a /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/mailBox/host/lib/mailBox.a /home/xghdv501/ti/desktop-linux-sdk_01_00_00_07/sdk/bufmgr/lib/bufmgr.a  -o bin/demo_c667x -lpciaccess -lpthread -lbfd -lrt -lglut -lGL -lGLEW


Prepare the EVM[edit]

If you are using ADVANTECH LIGHTNING DSPC-8681E and DSPC-8682E cards, please proceed to the next chapter.

If you are using single C6678 EVM with AMC to PCIe Adapter Card (i.e., TMDSEVM6678L with TMDXEVMPCI), please follow the instructions below to set up the hardware, and then proceed to the next chapter.

Step 1: IBL Flash
Follow instructions at MCSDK IBL to update the IBL EEPROM image from BIOS MCSDK version 2.1.2.5. For the IBL flash, only steps 1-9 are needed. In step 1 of IBL flash, please unzip I2crom_0x51_c6678_le.zip to obtain and use an updated i2crom_0x51_c6678_le.bin, in which the BAR region sizes have been tuned for the use case of video demos.


Step 2: Hardware Setup
Follow the guidelines at Hardware Setup for TMDSEVM6678 with TMDXEVMPCI to install and check the hardware.



Install and Run Video Demos[edit]

This section will walk you through how to install and run a video demo. The overall steps include

  • Install a Video Demo
  • One-time Setup and Initialization
  • Run a Video Demo


Install a Video Demo[edit]

Before running the demo, ensure installation directory of Desktop Linux SDK and MCSDK Video is correctly set in <MCSDK Video Install Dir>/demos/pcie_xxx_demo/scripts/setDemoEnv.sh. For example, if Desktop Linux SDK is installed at /home/alice/ti/desktop-linux-sdk_01_00_00_07 and MCSDK Video is installed at /home/alice/ti/mcsdk_video_2_1_0_8, modify setDemoEnv.sh as shown below

#!/bin/sh

export DESKTOP_LINUX_SDK_DIR=/home/alice/ti/desktop-linux-sdk_01_00_00_07
export MCSDK_VIDEO_DIR=/home/alice/ti/mcsdk_video_2_1_0_8
...

Then, run the following commands to set up the environment variable if this has not been done before. <syntaxhighlight lang="bash"> cd demos/pcie_xxx_demo/scripts source setDemoEnv.sh </syntaxhighlight>

After that, run the following command to prepare the scripts which are needed for running the demo: <syntaxhighlight lang="bash"> cd demos/pcie_xxx_demo/scripts ./installDemo.sh </syntaxhighlight>

After this, all the scripts for running the demo will exist at the folder of demos/pcie_xxx_demo/scripts, as shown below for H264HP encoder demo.

xghdv501@QuadShannonDemoPC3:~/ti/mcsdk_video_2_1_0_8/demos/pcie_h264hpenc_demo/scripts$ ll
total 56
drwxr-xr-x 3 xghdv501 xghdv501 4096 Apr  5 17:21 ./
drwxr-xr-x 4 xghdv501 xghdv501 4096 Feb 26 11:42 ../
drwxr-xr-x 2 xghdv501 xghdv501 4096 Apr  5 17:21 bootcfg/
-rw-r--r-- 1 xghdv501 xghdv501 8430 Apr  5 17:21 codecParams.cfg
-rwxr-xr-x 1 xghdv501 xghdv501  193 Apr  5 17:21 demoSave2File.sh*
-rwxr-xr-x 1 xghdv501 xghdv501  411 Apr  5 17:21 dnld_dsp.sh*
-rwxr-xr-x 1 xghdv501 xghdv501  436 Apr  5 17:21 init_dsp.sh*
-rwxr-xr-x 1 xghdv501 xghdv501 2902 Feb 25 23:12 installDemo.sh*
-rw-r--r-- 1 xghdv501 xghdv501   85 Apr  5 17:21 multiClip.cfg
-rwxr-xr-x 1 xghdv501 xghdv501  458 Apr  5 17:21 reset_dsp.sh*
-rw-r--r-- 1 xghdv501 xghdv501  328 Feb 26 11:52 setDemoEnv.sh
-rwxr-xr-x 1 xghdv501 xghdv501  124 Feb 25 23:12 uninstallDemo.sh*


One time Setup and Initialization[edit]

Every time after rebooting the PC, first do "source setDemoEnv.sh" if that has not been done after the rebooting. <syntaxhighlight lang="bash"> cd demos/pcie_xxx_demo/scripts source setDemoEnv.sh </syntaxhighlight>

Then, initialize the DSPs by running the following commands, with CPU frequency specified for DSP initialization. <syntaxhighlight lang="bash"> cd demos/pcie_xxx_demo/scripts ./init_dsp.sh <cpu_frequency> </syntaxhighlight>

The argument of the above command indicates the CPU frequency to be used for the demo. For example, execute the following command to do DSP initialization with 1.25GHz operation. <syntaxhighlight lang="bash"> ./init_dsp.sh 1250 </syntaxhighlight>

This init_dsp command automatically detects the number of TI PCI devices and prints the information out. For example, executing the command on Quad C6678 DSPC 8681 card will show the following TI PCI device information in the console display.

Number of devices: 4
Device: 0 : dspc8681

boot config file initcfg_1250.txt
 DSP boot config addr 0x86ff00
 DSP boot config size in bytes 8
Boot config words: 0xbabeface,
Boot config words: 0x19,
 Overriding image entry point with input 860000 Download image success !
Device: 1 : dspc8681

boot config file initcfg_1250.txt
 DSP boot config addr 0x86ff00
 DSP boot config size in bytes 8
Boot config words: 0xbabeface,
Boot config words: 0x19,
 Overriding image entry point with input 860000 Download image success !
Device: 2 : dspc8681

boot config file initcfg_1250.txt
 DSP boot config addr 0x86ff00
 DSP boot config size in bytes 8
Boot config words: 0xbabeface,
Boot config words: 0x19,
 Overriding image entry point with input 860000 Download image success !
Device: 3 : dspc8681

boot config file initcfg_1250.txt
 DSP boot config addr 0x86ff00
 DSP boot config size in bytes 8
Boot config words: 0xbabeface,
Boot config words: 0x19,
 Overriding image entry point with input 860000 Download image success !

Note that the above "init_dsp.sh" needs to executed just once after powering up the demo Linux PC with a PCIe TI Multicore DSP Card installed.


Preparing for Video Demos[edit]

Note that input clips are not provided for JPEG2000 transcoding and AVCIU encoding in the MCSDK Video package Before running these demo, make sure the input clip is available and its location is correctly updated in demos/pcie_xxx_demo/scripts/multiClip.cfg. For the other demos, the input clips are provided at demos/pcie_xxx_demo/testVecs/input with corresponding multiClip.cfg, and therefore can be run as is.

Creating input clips for JPEG2000 transcoding and AVC Intra encoding demos

The input clips for JPEG2000 transcoding and AVC Intra encoding demos shall be 1920x1080 10-bit 4:2:2 YUV clips. To create such input clips, please follow the steps below:

Alternatively if you have compressed YUV 4:2:2, 10bpp streams (e.g. ProRes streams), please use the following command to decode "ffmpeg –i sample.XXX –pix_fmt yuv422p10le –y output.yuv".

Number of DSPs needed for running the demos in real-time

In order to run the demos in real-time, the number of DSPs needed is different. The table below lists the number of DSPs required for running individual demos in real-time.
To achieve real-time performance, please specify the number of DSPs for the command of "./dnld_dsp.sh". Also please modify demoDisplay.sh to specify the DSP cores (-t option) used for the demo when needed. Using JPEG2000 Transcoding Demo as the example, the packaged demoDisplay.sh has "-t 0:31" for Quad C6678. When one Octal card is available, "-t 0:63" can be used to achieve 30fps JPEG2000 transcoding. When two Octal cards are available, "-t 0:127" can be used to achieve 60fps JPEG2000 transcoding.

Real-time Demo Number of DSPs
AVCIU Encoding Demo (10-bit) 3   DSPs (24  DSP cores) for 60fps
JPEG2000 Transcoding Demo (10-bit) 16 DSPs (128 DSP cores) for 60fps 
8   DSPs (64   DSP cores) for 30fps
4   DSPs (32 DSP cores) for 15fps
JPEG2000 Decoding Demo (8-bit) 3   DSPs (24   DSP cores) for 24fps
HEVC transcoding Demo (supported in MCSDK Vide 2.2) Codecs are in Alpha stage, channel density TBA


Run Video Demos[edit]

For running a video demo, first reset DSP, then download sv04, and finally execute the demo:

Run a demo with output saved to file (applicable to all the demos)

<syntaxhighlight lang="bash"> cd demos/pcie_xxx_demo/scripts ./reset_dsp.sh <cpu_frequency> ./dnld_dsp.sh <num_dsps> ./demoSave2File.sh </syntaxhighlight>

Console display after running ./reset_dsp.sh 1250 for one DSPC-8681E:

Num of devices 4

 Iterations waited for entry point to clear 1
Dsp 0:  DSP Reset success !

 Iterations waited for entry point to clear 1
Dsp 1:  DSP Reset success !

 Iterations waited for entry point to clear 1
Dsp 2:  DSP Reset success !

 Iterations waited for entry point to clear 1
Dsp 3:  DSP Reset success !
Number of devices: 4
Device: 0 : dspc8681

boot config file initcfg_1250.txt
 DSP boot config addr 0x86ff00
 DSP boot config size in bytes 8
Boot config words: 0xbabeface,
Boot config words: 0x19,
 Overriding image entry point with input 860000 Download image success !
Device: 1 : dspc8681

boot config file initcfg_1250.txt
 DSP boot config addr 0x86ff00
 DSP boot config size in bytes 8
Boot config words: 0xbabeface,
Boot config words: 0x19,
 Overriding image entry point with input 860000 Download image success !
Device: 2 : dspc8681

boot config file initcfg_1250.txt
 DSP boot config addr 0x86ff00
 DSP boot config size in bytes 8
Boot config words: 0xbabeface,
Boot config words: 0x19,
 Overriding image entry point with input 860000 Download image success !
Device: 3 : dspc8681

boot config file initcfg_1250.txt
 DSP boot config addr 0x86ff00
 DSP boot config size in bytes 8
Boot config words: 0xbabeface,
Boot config words: 0x19,
 Overriding image entry point with input 860000 Download image success !

Console display after running ./dnld_dsp.sh 4 for one DSPC-8681E:

boot config file ./bootcfg/bootcfg_0.txt
 DSP boot config addr 0x800000
 DSP boot config size in bytes 20
Boot config words: 0xbabeface,
Boot config words: 0x0,
Boot config words: 0x3,
Boot config words: 0x12345678,
Boot config words: 0x90abcdef,
 Overriding image entry point with input c000000 Download image success !

boot config file ./bootcfg/bootcfg_1.txt
 DSP boot config addr 0x800000
 DSP boot config size in bytes 20
Boot config words: 0xbabeface,
Boot config words: 0x1,
Boot config words: 0x3,
Boot config words: 0x12345678,
Boot config words: 0x90abcdef,
 Overriding image entry point with input c000000 Download image success !

boot config file ./bootcfg/bootcfg_2.txt
 DSP boot config addr 0x800000
 DSP boot config size in bytes 20
Boot config words: 0xbabeface,
Boot config words: 0x2,
Boot config words: 0x3,
Boot config words: 0x12345678,
Boot config words: 0x90abcdef,
 Overriding image entry point with input c000000 Download image success !

boot config file ./bootcfg/bootcfg_3.txt
 DSP boot config addr 0x800000
 DSP boot config size in bytes 20
Boot config words: 0xbabeface,
Boot config words: 0x3,
Boot config words: 0x3,
Boot config words: 0x12345678,
Boot config words: 0x90abcdef,
 Overriding image entry point with input c000000 Download image success !

At the end of executing ./demoSave2File.sh, the output file is created under demos/pcie_xxx_demo/testVecs/output directory with Test Complete displayed in console:

 Test Complete.


Run a demo with output displayed (applicable to JPEG2000 decoding, JPEG2000 transcoding, AVCIU encoding, HEVC Transcoding, and MPEG2 to H264HP Transcoding)

<syntaxhighlight lang="bash"> cd demos/pcie_xxx_demo/scripts ./reset_dsp.sh <cpu_frequency> ./dnld_dsp.sh <num_dsps> ./demoDisplay.sh </syntaxhighlight>

In demoDisplay.sh, <iter> (-i) specifies the number of iterations the input clip will be decoded/transcoded/encoded. The output will be displayed on the PC for the number of iterations specified.



Configure TFTP to run H264HP Encoding Demo with TFTP output[edit]

The pcie_h264hpenc_tftpout_demo demonstrates sending the encoded output to both PCIe and TFTP. Before running this demo, TFTP server needs to be installed and configured correctly. This demo has been verified with TFTP server installed and running on a Windows PC. Please follow instructions below for the TFTP setup.

1. Physical connection

Connect the EVM and the Windows PC which will run the TFTP server to a Ethernet switch with Ethernet cables.

2. TFTP server installation on PC

Download and install TFTP server v3.35 from TFTP Download Link.

3. Start TFTP Server on the PC

Click on the settings button and increase the timeout duration in the Settings window. A timeout of 20 seconds should be sufficient.

TFTP-SETTING.JPG

4. Enable ARP entry on the PC with TFTP server running

Enable ARP entry on the PC so that it can send packets to EVM. This is done by opening the command prompt and entering the command: arp –s <dsp_ip_addr> <dsp_mac_addr>. Note that dsp_ip_addr and dsp_mac_addr are the same as the localIpAddress and localMacAddress, respectively, both of which can be found in the configuration file tftp.cfg. In this tftp.cfg, serverIpAddress and serverMacAddress specify the IP and MAC address of the PC, which can be found be running the command ipconfig /all. Since both the DSP and the PC needs to be in the same subnet, specify DSP's IP address (i.e., localIpAddress) correspondingly after getting the PC's IP address (i.e., serverIpAddress). The DSP's MAC address (i.e., localMacAddress) can be any valid MAC address, such as the physical MAC address of the DSP or the one included in the provided tftp.cfg, as long as the same MAC address is not used anywhere else in the same subnet.

5. Output file to TFTP can be found under the Current Directory of the TFTP server after the test is completed.


Demo Reconfiguration When needed[edit]

Codec Re-configuration[edit]

After installing a demo, multiClip.cfg and codecParams.cfg can be found under demos/pcie_xxx_demo/scripts directory. They can be modified to reconfigure a test when the input clip and/or codec parameters are updated.

Edit multiClip.cfg

Modify multiClip.cfg using the following format

<input_file1>
<output_file1>
<number_of_frames1>
<input_file2>
<output_file2>
<number_of_frames2>
... 


Edit codecParams.cfg

Modify codecParams.cfg when codec static/dynamic parameters and inArgs (applicable to JPEG2K Encoder only) need to be updated. Use the following format, and Comment shows the parameter name as in the codec public header files.

<ParameterName> = <ParameterValue> # Comment 


Demo Re-configuration[edit]

After installing a demo, demoxxx.sh can be found under demos/pcie_xxx_demo/scripts directory. In these scripts, Host application "demo_c667x" is called for running the demos.

The configuration parameters for the host application are as follows:

  • <algorithm> (-a): supported algorithms
  • <codec-params> (-c): configuration file for the codec(s), i.e., codecParams.cfg
  • <clip-params> (-f): input/output clip configuration file, i.e., multiClip.cfg
  • <network-params> (-n): network configuration file for using TFTP, i.e., tftp.cfg (needed only for pcie_h264enc_tftpout_demo)
  • <team-mapping> (-t): list of node IDs comprising a algorithm processing team. The first node in list is assumed to be the master node
  • <width> (-w): video width
  • <height> (-h): video height
  • <iter> (-i): number of iterations to run the demo
  • <display-width> (optional): display width when the demo application sends the frames to the display
  • <display-height> (optional): display height when the demo application sends the frames to the display
  • <display-rate> (optional): display frame rate when the demo application sends the frames to the display


Multi-Channel Support for Concurrent Encoding/Decoding[edit]

In production release of MCSDK Video 2.1, multi-channel support is added to achieve concurrent codec processing on multiple chips. With each chip hosting one channel, DSPC-8681E and DSPC-8682E can support four and eight coding channels, respectively. In MCSDK Video 2.2, multi-channel support is enhanced to achieve concurrent codec processing on a single C6678 chip.

Follow the steps below to build and run multi-channel demos.

  • Linux Desktop SDK Preparation
  • Rebuild MCSDK Video Host Application Modules
  • Prepare Scripts and Run Multi-Channel Demo


Linux Desktop SDK Preparation[edit]

With an increasing number of codec channels, multi-channel demos require larger and pre-reserved contiguous memory allocation. Please follow Desktop Linux SDK CMEM Allocation to allocate larger and pre-reserved contiguous memory. 656 MB is needed to run 4 channels while 848 MB is needed to run 8 channels. Then, follow Desktop Linux SDK CMEM Autoload and Set Permission to install CMEM autoload and set permissions for PCIe access.


Rebuild MCSDK Video Host[edit]

After allocating pre-reserved contiguous memory, installing CMEM autoload and setting permissions for PCIe access as above, please rebuild MCSDK Video host application modules: <syntaxhighlight lang="bash"> cd host ./makeCleanVideoApp.sh ./makeVideoApp.sh </syntaxhighlight>

Prepare Scripts and Run Multi-Channel Demo[edit]

Since each codec instance has its own input/output, create multiple "multiClip*.cfg" files under "demos/pcie_xxx_demo/scripts" to specify the input/output for codec instances, such as multiClip0.cfg for chip 0, multiClip1.cfg for chip 1, multiClip2.cfg for chip 2, and multiClip3.cfg for chip 3. Examples of multiClip*.cfg:

multiClip0.cfg

../testVecs/input/airshow_p1920x1080.yuv
../testVecs/output/airshow_p1920x1080-0.264
5


multiClip1.cfg

../testVecs/input/airshow_p1920x1080.yuv
../testVecs/output/airshow_p1920x1080-1.264
5


Then, modify "demoSave2File.sh" under "demos/pcie_xxx_demo/scripts" to allow multiple codec instances. Using 4-channel H264HP encoder as the example:

CLIP_CONFIG0=multiClip0.cfg
CLIP_CONFIG1=multiClip1.cfg
CLIP_CONFIG2=multiClip2.cfg
CLIP_CONFIG3=multiClip3.cfg
CODEC_PARAMS=codecParams.cfg

$MCSDK_VIDEO_HOSTBIN_DIR/demo_c667x -v
-a H264HPENC -f $CLIP_CONFIG0 -c $CODEC_PARAMS -t "0 1 2 3" --width=1920 --height=1080
-a H264HPENC -f $CLIP_CONFIG1 -c $CODEC_PARAMS -t "8 9 10 11" --width=1920 --height=1080
-a H264HPENC -f $CLIP_CONFIG2 -c $CODEC_PARAMS -t "16 17 18 19" --width=1920 --height=1080
-a H264HPENC -f $CLIP_CONFIG3 -c $CODEC_PARAMS -t "24 25 26 27" --width=1920 --height=1080


After the scripts are ready, follow the procedure earlier to run the demo: <syntaxhighlight lang="bash"> cd demos/pcie_xxx_demo/scripts ./reset_dsp.sh <cpu_frequency> ./dnld_dsp.sh <num_dsps> ./demoSave2File.sh </syntaxhighlight>

Internals to PCIe Based MCSDK Video Demo[edit]

For users who are interested in how the PCIe based MCSDK video demos are developed, please refer to the following link for the development guide:



Congratulations! At this time, you already should have finished running the PCIe based out of box demos. The following section is for recompiling the DSP build (sv04.out) for the demo.

Rebuild DSP when Needed[edit]

When there is code change to DSP build(sv04.out for PCIe based demos), recompiling of sv04 can be done following instructions at Build MCSDK Video DSP Application. Scripts are also provided from the host directory to make DSP as well as all the builds used in the PCIe based demos. Please follow the instructions below to recompile DSP and/or all the builds.

Setting up Environment Variable[edit]

Modify <MCSDK Video Install Dir>/host/setEnv.sh to set the installation directory of Desktop Linux SDK and also MCSDK Video.

Ensure all the components required for compiling DSP builds are installed as specified in MCSDK Video 2.x Getting Started Guide for Linux. Then, modify <MCSDK Video Install Dir>/dsp/mkrel/setupenvMsys.sh to set the installation directory of required TI tools (TI_TOOL_DIR) and Active Perl (PERL_ROOT). Note that if the TI tools required by MCSDK Video are installed under different directories, please make corresponding changes in setupenvMsys.sh as needed to point to the correct path of the installed components/tools. Please refer to MCSDK Video 2.x Getting Started Guide for Linux: Set Up Env to Rebuild DSP for more details.

After that, run the following commands:
<syntaxhighlight lang="bash"> cd host source setEnv.sh </syntaxhighlight>


Recompiling DSP build[edit]

Runt the following commands to rebuild DSP build (sv04): <syntaxhighlight lang="bash"> cd host ./makeDsp.sh </syntaxhighlight>


Recompiling All the builds[edit]

Runt the following commands to recompile all the builds: SDK, Video host, and Video DSP: <syntaxhighlight lang="bash"> cd host ./makeAll.sh </syntaxhighlight>


Uninstall a Video Demo[edit]

To uninstall a Video demo, run the following command to remove the scripts which are generated when running ./installDemo.sh:

<syntaxhighlight lang="bash">

cd demos/pcie_xxx_demo/scripts ./uninstallDemo.sh </syntaxhighlight>


Useful Resources and Links[edit]

Product Download and Updates[edit]

For product download and updates, please visit the links listed in the table below.

Product Download Link
MCSDK Video (2.2 GA) Download http://software-dl.ti.com/sdoemb/sdoemb_public_sw/mcsdk_video/latest/index_FDS.html
MCSDK Video (2.2 Alpha) Download

http://software-dl.ti.com/sdoemb/sdoemb_public_sw/mcsdk_video/02_02_00_42/index_FDS.html
http://software-dl.ti.com/sdoemb/sdoemb_public_sw/mcsdk_video/02_02_00_45/index_FDS.html

BIOS MCSDK Download http://software-dl.ti.com/sdoemb/sdoemb_public_sw/bios_mcsdk/02_01_02_05/index_FDS.html
Desktop Linux SDK Download http://software-dl.ti.com/sdoemb/sdoemb_public_sw/desktop_linux_sdk/01_00_00_07/index_FDS.html
http://software-dl.ti.com/sdoemb/sdoemb_public_sw/desktop_linux_sdk/01_00_02_00/index_FDS.html
http://software-dl.ti.com/sdoemb/sdoemb_public_sw/desktop_linux_sdk/01_00_03_00/index_FDS.html
C6678 Codec Download http://software-dl.ti.com/dsps/dsps_public_sw/codecs/C6678/index.html



MCSDK Video Instructions[edit]

Please visit the links below to install MCSDK Video, run the video demos, and get the details on how the MCSDK Video demos are developed.

Wiki Links
Getting Started Guide MCSDK Video Getting Started for Linux
MCSDK Video Getting Started for Windows
Desktop Linux SDK Getting Started
Demo Guide Run PCIe based Demos on Advantech DSPC-8681E & DSPC-8682E
Run TFTP based Demos on TMDXEVM6678LXE
Development Guide MCSDK Video Host (via PCIe) Development Guide
MCSDK Video DSP Development Guide


Technical Support[edit]

For technical discussions and issues, please visit the links listed in the table below.

Forum/Wiki Link
C66x Multicore forum http://e2e.ti.com/support/dsp/c6000_multi-core_dsps/f/639.aspx
Multimedia Software Codecs forum http://e2e.ti.com/support/embedded/multimedia_software_codecs/default.aspx
TI-RTOS forum http://e2e.ti.com/support/embedded/f/355.aspx
Code Composer Studio forum http://e2e.ti.com/support/development_tools/code_composer_studio/f/81/t/3131.aspx
TI C/C++ Compiler forum http://e2e.ti.com/support/development_tools/compiler/f/343/t/34317.aspx
Embedded Processors wiki http://processors.wiki.ti.com

NoteNote: When asking for help in the forum you should tag your posts in the Subject with “MCSDK VIDEO”, the part number (e.g. “C6678”) and additionally the component (e.g. “NWAL”).



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 MCSDK VIDEO 2.1 PCIE Demo 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 MCSDK VIDEO 2.1 PCIE Demo Guide here.

C2000=For technical support on the C2000 please post your questions on The C2000 Forum. Please post only comments about the article MCSDK VIDEO 2.1 PCIE Demo Guide here. DaVinci=For technical support on DaVincoplease post your questions on The DaVinci Forum. Please post only comments about the article MCSDK VIDEO 2.1 PCIE Demo Guide here. MSP430=For technical support on MSP430 please post your questions on The MSP430 Forum. Please post only comments about the article MCSDK VIDEO 2.1 PCIE Demo Guide here. OMAP35x=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article MCSDK VIDEO 2.1 PCIE Demo Guide here. OMAPL1=For technical support on OMAP please post your questions on The OMAP Forum. Please post only comments about the article MCSDK VIDEO 2.1 PCIE Demo Guide here. MAVRK=For technical support on MAVRK please post your questions on The MAVRK Toolbox Forum. Please post only comments about the article MCSDK VIDEO 2.1 PCIE Demo Guide here. For technical support please post your questions at http://e2e.ti.com. Please post only comments about the article MCSDK VIDEO 2.1 PCIE Demo 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