首页 » Web前端 » phpifeq技巧_TI达芬奇系列DM6467T平台的C6Accel视觉库移植

phpifeq技巧_TI达芬奇系列DM6467T平台的C6Accel视觉库移植

访客 2024-12-13 0

扫一扫用手机浏览

文章目录 [+]

目前,我们在开拓的嵌入式视觉系统中,考虑移植TI官方供应的C6Accel视觉库。
C6Accel是一个包括许多旗子暗记处理和数学打算的算法包,它供应了一系列API,可以供ARM端程序调用。
C6Accel符合TI的xDAIS算法标准,可以很随意马虎地通过Codec Engine来调用并快速实行。
我们可以利用C6Accel来加速干系运用程序的开拓,也可以添加自定义的DSP算法来扩展C6Accel。

C6Accel紧张包含3种类型的库文件,如下图所示:

phpifeq技巧_TI达芬奇系列DM6467T平台的C6Accel视觉库移植

详细移植步骤:

phpifeq技巧_TI达芬奇系列DM6467T平台的C6Accel视觉库移植
(图片来自网络侵删)

1、下载准备

首先,要下载两个软件包:c6accel_1_01_00_00_Linux-x86_Setup.bin和C6acceldm6467.tar.gz。
下载地址分别为:

http://software-dl.ti.com/dsps/dsps_public_sw/c6000/web/c6accel/latest/index_FDS.html

http://processors.wiki.ti.com/index.php?title=Using_C6Accel_on_DM6467_with_DVSDK_3.x

创建一个新的文件夹,后面的所有操作都在该文件夹下进行。
我们这里选择的路径为/opt/ti/dvsdk_3_10_00_19_c6accel_example。
路径最好一样,要不然后面在打补丁的时候会有麻烦。

将原DVSDK安装目录下的/examples、/dvsdk_demos_3_10_00_16/data、/cs2dm6467_1_00_00_10和/dvsdk_demos_3_10_00_16/packages复制到当前目录下。
将c6accel_1_01_00_00和C6acceldm6467.tar.gz也解压到当前目录。

2、修正环境变量

接下来,须要修正一些环境变量,这些都包含在Rules.make文件中。
修正过后的Rules.make文件如下所示

DVSDK_INSTALL_DIR=/opt/dvsdk/dvsdk_3_10_00_19

DVSDK_NEW_DEMO_INSTALL_DIR=/opt/ti/dvsdk_3_10_00_19_c6accel_example

C6ACCEL_INSTALL_DIR=$(DVSDK_NEW_DEMO_INSTALL_DIR)/c6accel_1_01_00_00

DVEVM_INSTALL_DIR=$(DVSDK_INSTALL_DIR)

BIOS_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/bios_5_41_00_06

BIOSUTILS_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/biosutils_1_02_02

CE_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/codec_engine_2_25_05_16

LINK_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/dsplink_linux_1_64

ifeq ($(PLATFORM),dm6467)

CODEC_INSTALL_DIR=$(DVSDK_NEW_DEMO_INSTALL_DIR)/cs2dm6467_1_00_00_10

endif

DMAI_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/dmai_2_10_00_12

DEMO_INSTALL_DIR=$(DVSDK_NEW_DEMO_INSTALL_DIR)/dvsdk_demos_3_10_00_16

DVTB_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/dvtb_4_20_10

EDMA3_LLD_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/edma3_lld_01_11_00_03

FC_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/framework_components_2_25_02_06

LINUXUTILS_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/linuxutils_2_25_04_10

CMEM_INSTALL_DIR=$(LINUXUTILS_INSTALL_DIR)

XDAIS_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/xdais_6_25_02_11

XDC_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/xdctools_3_16_01_27

CODEGEN_INSTALL_DIR=/opt/ti/C6000CGT7.3.5

LINUXKERNEL_INSTALL_DIR=/home/tirvideo/lyb/kernel/dm6467

LINUXLIBS_INSTALL_DIR=$(DVSDK_INSTALL_DIR)/linuxlibs-2009.11-armv5te

CSTOOL_DIR=/opt/arm-2009q1

CSTOOL_PREFIX=$(CSTOOL_DIR)/bin/arm-none-linux-gnueabi-

MVTOOL_DIR=$(CSTOOL_DIR)

MVTOOL_PREFIX=$(CSTOOL_PREFIX)

EXEC_DIR=/home/tirvideo/lyb/armfs/opt/dvsdk/c6accel

EXEC_DIR_C6ACCEL = $(EXEC_DIR)/c6accel_app

3、添加C6Accel到DM6467 DVSDK

C6acceldm6467.tar.gz软件包供应了patch功能,自动对C6Accel安装目录下的许多文件进行修正,免去了不少人工修正的花费。
要利用其patch功能,只须要在当前目录下实行命令:

patch -p1 < dm6467_patch/dm6467_c6accel.patch

接下来,须要编译C6Accel,编译的命令如下所示。
编译完成之后,在之前Rules.make中指定的install路径/home/tirvideo/lyb/armfs/opt/dvsdk/c6accel中会涌现编译好的运用程序以及codec server和loadmodule.sh等文件。

~/dvsdk_3_10_00_19_c6accel_example$ make c6accel_clean

~/dvsdk_3_10_00_19_c6accel_example$ make c6accel

~/dvsdk_3_10_00_19_c6accel_example$ make c6accel_insta

4、集成C6Accel到demo程序

要利用C6Accel,我们选用已有的Encodedemo,在其根本上进行修正,将采集的视频进行Sobel处理,然后进行H264编码。

修正./ cs2dm6467_1_00_00_10/Makefile,将C6Accel添加进XDC的环境变量。

# Set XDCPATH to contain necessary repositories.

# Please do not modify anything below

XDCPATH= $(CURDIR);$(C6ACCEL_INSTALL_DIR)/soc/packages;$(CODEC_INSTALL_DIR)/packages;$(XDAIS_INSTALL_DIR)/packages;$(FC_INSTALL_DIR)/packages;$(FC_INSTALL_DIR)/fctools/packages;$(BIOS_INSTALL_DIR)/packages;$(BIOSUTILS_INSTALL_DIR)/packages;$(CMEM_INSTALL_DIR)/packages;$(LINK_INSTALL_DIR)/packages;$(LINK_INSTALL_DIR);$(CE_INSTALL_DIR)/packages;$(CE_INSTALL_DIR)/cetools/packages;$(EDMA3_LLD_INSTALL_DIR)/packages

修正./cs2dm6467_1_00_00_10/packages/ti/sdo/server/cs/codec.cfg,将C6Accel添加进codecserver的codec列表。

/ "Use" the various codec modules; i.e., implementation of codecs.

All these "xdc.useModule" commands provide a handle to the codecs,

which we'll use to initialize config params and add the codecs to

the Server.algs array.

/

var C6ACCEL = xdc.useModule('ti.c6accel.ce.C6ACCEL');

C6ACCEL.serverFxns = undefined;

C6ACCEL.stubFxns = undefined;

C6ACCEL.serverFxns = "UNIVERSAL_SKEL";

C6ACCEL.stubFxns = "UNIVERSAL_STUBS";

C6ACCEL.alg.FLOAT = false;

C6ACCEL.alg.watermark = false;

C6ACCEL.alg.codeSection = "DDR2";

C6ACCEL.alg.udataSection = "DDR2";

C6ACCEL.alg.dataSection = "DDR2";

……

/

The array of algorithms this server can serve up. This array also

configures details about the threads which will be created to run the

algorithms (e.g. stack sizes, priorities, etc.).

/

Server.algs = [

{name: "c6accel", mod: C6ACCEL , threadAttrs: {

stackMemId: 0, priority: Server.MINPRI + 1},

groupId : 0,

},

将DVSDK中的encode demo复制过来,将该文件夹重命名为encodesobel,并重命名encode.cfg为encodesobel.cfg,然后修正该文件,利用新的codec server。

var demoEngine = Engine.createFromServer(

"dm6467",

"./c6accel_dm6467.x64P",

"ti.c6accel_unitservers.dm6467"

);

修正./dvsdk_demos_3_10_00_16/dm6467/encodesobel/Makefile,将C6Accel添加进XDC环境变量。

# Package path for the XDC tools

XDC_PATH= $(USER_XDC_PATH);../../packages;$(C6ACCEL_INSTALL_DIR)/soc/packages;$(DEMO_INSTALL_DIR)/packages;$(DMAI_INSTALL_DIR)/packages;$(CE_INSTALL_DIR)/packages;$(FC_INSTALL_DIR)/packages;$(LINK_INSTALL_DIR)/packages;$(LINK_INSTALL_DIR);$(XDAIS_INSTALL_DIR)/packages;$(CMEM_INSTALL_DIR)/packages;$(CODEC_INSTALL_DIR)/packages;$(CE_INSTALL_DIR)/examples

C6ACCEL_LIB = $(C6ACCEL_INSTALL_DIR)/soc/c6accelw/lib/c6accelw_dm6467.a470MV

C6ACCEL_BINARY= $(C6ACCEL_INSTALL_DIR)/soc/packages/ti/c6accel_unitservers/dm6467/c6accel_dm6467.x64P

……

install_$(TARGET):

@install -d $(EXEC_DIR)

@install $(TARGET) $(EXEC_DIR)

@install $(TARGET).txt $(EXEC_DIR)

@install $(C6ACCEL_BINARY) $(EXEC_DIR)

@echo

@echo Installed $(TARGET) binaries to $(EXEC_DIR)..

$(TARGET): $(OBJFILES) $(C6ACCEL_LIB) $(XDC_LFILE)

@echo

@echo Linking $@ from $^..

$(LINK.c) -o $@ $^

修正video.c。
这部分的修正比较多,添加的代码紧张包括创建C6Accel句柄,进行Sobel处理等。
详细修正请参看源文件,这里不再详细讲解,须要特殊把稳程序中buffer的利用以及句柄的创建和删除。

5、编译

~/dvsdk_3_10_00_19$ make all

~/dvsdk_3_10_00_19$ cd ../dvsdk_3_10_00_19_c6accel_example

~/dvsdk_3_10_00_19_c6accel_example$ make codecs_clean

~/dvsdk_3_10_00_19_c6accel_example$ make codecs

~/dvsdk_3_10_00_19_c6accel_example$ make demos

~/dvsdk_3_10_00_19_c6accel_example$ make install

末了,在/home/tirvideo/lyb/armfs/opt/dvsdk/c6accel中,就会涌现所有的运用程序以及运行程序所需的驱动、脚本文件和codec server(.x64p文件)。

运行测试

在CE的框架下,调用C6Accel中供应的sobel函数,修正CS开拓包和encode demo程序,实现视频流的sobel处理功能。

在基本类似的条件下,修正encodedecode demo程序,实现视频流的encode、decode和sobel处理功能。

小结

理清各个模块之间的关系,比如DVSDK、C6Accel、Codec Engine、Codec Server、demo decode和sobel等各自的浸染和相互之间的调用关系。
这样,在做程序移植的时候,才不会被各种解释文档牵着鼻子走,而忽略了建立这些功能模块的实际意义。

标签:

相关文章

大数据BU,引领未来商业变革的新引擎

随着科技的飞速发展,大数据已经渗透到了各行各业,成为推动企业创新、提升竞争力的关键因素。大数据BU(大数据业务单元)作为企业数字化...

Web前端 2024-12-15 阅读0 评论0

若何把php文件技巧_php的文件上传

这里首先声明一下这一章的内容比较多,比较难,你要抱着和自己去世磕的态度。细微之处不放过,多敲多练是王道。 学习就像爬山,得一步一步...

Web前端 2024-12-15 阅读0 评论0