This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

iuniversal examples fail to build server

Guru 10685 points
Other Parts Discussed in Thread: OMAP3530

I have downloaded the iuniversal examples that are linked to from the bottom of this page:

http://processors.wiki.ti.com/index.php/Getting_started_with_IUNIVERSAL

and having setup a few of the paths correctly in the makefile I find that I cannot build the server component of the examples as the makefile cannot find the servers that are referenced in it. Here is the makefile with the bit that I can't work out put in red bold font:

# Includes your Rules.make from the DVSDK directory
#include /library/dvsdk/dvsdk_3_00_00_30/Rules.make
include ../../../Rules.make

# Location of TI Code Generation Tools if not provided in Rules.make
ifndef CODEGEN_INSTALL_DIR
    CODEGEN_INSTALL_DIR = /home/a0270555/c60_6_1_7
endif

# You must include the location of your tools if you do not use a
# DVSDK Rules.make
ifndef DVSDK_INSTALL_DIR
PLATFORM = omapl137
DVSDK_INSTALL_DIR = /home/a0270521/OMAPL137_arm_1_00_00_07
XDC_INSTALL_DIR = /library/xdc/xdctools_3_10_03
BIOS_INSTALL_DIR = /home/a0270521/bios_5_33_03
LINUXKERNEL_INSTALL_DIR = /library/psp/OMAP35x_SDK_1.0.2/src/linux/kernel_org/2.6_kernel
CE_INSTALL_DIR = $(DVSDK_INSTALL_DIR)/codec_engine_2_22
FC_INSTALL_DIR = $(DVSDK_INSTALL_DIR)/framework_components_2_22_01
LINK_INSTALL_DIR = $(DVSDK_INSTALL_DIR)/dsplink-1_61-prebuilt
XDAIS_INSTALL_DIR = $(DVSDK_INSTALL_DIR)/xdais_6_22_01
CMEM_INSTALL_DIR = $(DVSDK_INSTALL_DIR)/linuxutils_2_22_01
BIOSUTILS_INSTALL_DIR = $(DVSDK_INSTALL_DIR)/biosutils_1_02_01
CODEC_INSTALL_DIR =
LPM_INSTALL_DIR =
EDMA3_LLD_ROOT =
EXEC_DIR = /targethomes/a0270521/$(PLATFORM)/test
endif

ifeq ($(PLATFORM),dm6446)
    XDC_PLATFORM = ti.platforms.evmDM6446
    XDC_TARGETS = "gnu.targets.arm.GCArmv5T ti.targets.C64P"
    CROSS_COMPILE = $(MVTOOL_PREFIX)
else
ifeq ($(PLATFORM),omap3530)
    XDC_PLATFORM = ti.platforms.evm3530
    XDC_TARGETS = "gnu.targets.arm.GCArmv5T ti.targets.C64P"
    CROSS_COMPILE = $(CSTOOL_PREFIX)
else
ifeq ($(PLATFORM),omapl137)
    XDC_PLATFORM = ti.platforms.evmOMAPL137
    XDC_TARGETS = "gnu.targets.arm.GCArmv5T ti.targets.C674"
    CROSS_COMPILE = /library/cs/arm-2007q3/bin/arm-none-linux-gnueabi-
else
# You will have to create servers for your platform and target and set
# the below variables accordingly, see the iuniversal example design doc.
    XDC_PLATFORM = ti.platforms.evmTI816X
    XDC_TARGETS = "gnu.targets.arm.GCArmv5T ti.targets.C674"
    CROSS_COMPILE = /home/ralph/arm-2009q1/bin/arm-none-linux-gnueabi-
endif
endif
endif

# Location of IUNIVERSAL Examples
PACKAGE_DIR = $(shell pwd)

# Set XDCPATH to contain necessary repositories (variables from Rules.make)
XDCPATH = ^;$(CURDIR)/packages;$(PACKAGE_DIR)/packages;$(CE_INSTALL_DIR)/packages;$(CE_INSTALL_DIR)/cetools/packages;$(BIOS_INSTALL_DIR)/packages;$(CODEC_INSTALL_DIR);$(FC_$

# Set the number of concurrent build threads (i.e. jobs)
JOBS = 1

# Conditionally set the XDCOPTIONS
XDCOPTIONS=v

########################################################
## Shouldn't have to modify anything be low this line ##
########################################################

# Currently only Linux apps are supported thus the app extension is always the same
APP_EXT = v5T

# Parse XDC_TARGETS to find the ARM and DSP targets
XDC_ARM_TARGET = $(shell echo $(XDC_TARGETS) | cut -d' ' -f1)
XDC_DSP_TARGET = $(shell echo $(XDC_TARGETS) | cut -d' ' -f2)

# Export environment variables needed by config.bld and Makefile.app
export CODEGEN_INSTALL_DIR
export XDC_INSTALL_DIR
export XDC_PLATFORM
export XDC_TARGETS
export XDCPATH
export XDCOPTIONS
export XDCARGS
export PACKAGE_DIR
export PLATFORM_SHORT
export CROSS_COMPILE
export XDC_ARM_TARGET
export XDC_DSP_TARGET
export APP_EXT

# Set the location of the xdc executable
XDC = $(XDC_INSTALL_DIR)/xdc XDCOPTIONS=$(XDCOPTIONS) XDCTARGETS=$(XDC_TARGETS)

# Get the suffix of the XDC_PLATFORM to identify appropriate paths
PLATFORM_SHORT = $(patsubst .%,%,$(suffix $(XDC_PLATFORM)))

ifeq ($(PLATFORM_SHORT),"")
$(error Failed to get short platform name from $(XDC_PLATFORM) $(PLATFORM_SHORT))
endif

# Search for the server path with all lower case letters
PLATFORM_SHORT_LC = $(shell echo $(PLATFORM_SHORT) | tr [:upper:] [:lower:])
SERVER_PATH = $(wildcard packages/ti/sdo/servers/*$(PLATFORM_SHORT_LC))
SERVER_PATH_SHORT  = $(shell echo $(SERVER_PATH) | cut -d' ' -f1)

ifeq ($(SERVER_PATH),"")
$(error No servers found with $(SERVER_EXTENSION) extension)
endif

.PHONY: clean clean_apps codecs servers apps fir randgen install all

help:
        @echo
        @echo "You must specify a build target. Available targets are: "
        @echo "    all, codecs, servers, apps, fir, randgen, install, clean"

all: codecs servers apps

codecs:
        $(XDC) XDCBUILDCFG=$(PACKAGE_DIR)/config.bld -PR packages/ti/sdo/algos

servers:
        $(XDC) XDCBUILDCFG=$(PACKAGE_DIR)/config.bld -P $(SERVER_PATH)

I have truncated the makefile. The issue is for the "servers" rule. SERVER_PATH evaluates to an empty string because packages/ti/sdo/servers/*evmTI816X does not exist in the folder. Should I be copying one of the existing servers to get this working and if so could someone recommend which one is most appropriate (out of evm3530  evmdm6446  evmomapl137) given I'm using the DM8168?

Thanks,

Ralph

  • The iUniversal example you are reffering to was developed to be used in conjunction with CodecEngine 2.xx.  The TI81XX family of devices is only supported in CodecEngine 3.xx thus there are no servers for your particular device in the example.

    Most (if not all) the information provided on the page is still applicable but the example hasn't been update to supported newer CodecEngine device versions.  The CodecEngine 3.xx package provides a few examples, one of which is an iUniversal copy example.  Navigate to the examples directory of your Codec Engine installation and follow the instructions provided in the build_instructions.html file to guide your through the building and running of these examples. 

  • If your final goal is to build some IUNIVERSAL examples fr 816X, maybe you should try a more recent version of Codec Engine.

    For instance CE 3.23.00.07 includes examples specifically for 816X using IUNIVERSAL APIs.

  • Okay, it looks like I'm going to face an uphill battle with these examples. The reason I prefer these examples to the ones in the EZSDK is that they have actual algorithms in rather than just doing a memory copy which is just what the Codec Engine examples in the EZSDK do. Whenever I modify the Codec Engine examples slightly to do some basic algorithmic procesing, the algorithm fails the QualiTI test!!!

    Anyway, I might try creating my own codec servers using GenCodecPkg but I won't get hung up on it.

    Thanks for the replies,

    Ralph