DSP

[共享] 达芬奇DM6468算法移植手册--Linux下XDM标准算法DSP端处理步骤

2019-07-13 20:08发布

首先,按照DM6467用户手册在Linux下正确安装所需的各种软件,并正确配置各种环境变量及路径(见另文)。以下操作均在DVSDK目录下进行,本文主要介绍符合TI标准XDM算法架构的自编算法编译实现步骤及DSP端服务器的实现。 步骤一: codec_engine_2_10_02/examples/ti/sdo/ce/examples/codecs目录中复制其中的Imgenc1_copy文件夹,对新文件夹重新命名(如Imgenc1_abcde),此时Imgenc1_abcde中有文件:IMGENC1_COPY.xdcIMGENC1_COPY.xsmakefilepackage.bldpackage.xdcpackage.xs;其中,makefile不用作变动,将IMGENC1_COPY.xdcIMGENC1_COPY.xspackage.bldpackage.xdcpackage.xs文件内容中所有的“copy”修改为“abcde”,注意修改后的大小写必须与修改前的保持一致,再将IMGENC1_COPY.xdcIMGENC1_COPY.xs文件名改为IMGENC1_ABCDE.xdcIMGENC1_ABCDE.xs,再次强调修改后的大小写必须与修改前的保持一致。 步骤二: codec_engine_2_10_02/examples/ti/xdais/dm/examples目录中复制其中的Imgenc1_copy文件夹,对新文件夹重新命名(如Imgenc1_abcde),此时Imgenc1_abcde中有文件:imgenc1_copy.cimgenc1_copy.qtiimgenc1_copy_ti.himgenc1_copy_ti_priv.hpackage.bldpackage.xdcpackage.xs;将这些文件内容中所有的“copy”修改为“abcde”,注意修改后的大小写必须与修改前的保持一致,再将imgenc1_copy.cimgenc1_copy.qtiimgenc1_copy_ti.himgenc1_copy_ti_priv.h文件名中的“copy”改为“abcde”,再次强调修改后的大小写必须与修改前的保持一致;接着,对imgenc1_abcde.c进行修改,此文件就是实现自编算法的主文件,其中包含五个主要的函数接口,xxx_TI_freexxx_TI_allocxxx_TI_controlxxx_TI_processxxx_TI_initObj,其中xxx_TI_control实现命令控制,xxx_TI_process实现算法处理,imgenc1_abcde_ti_priv.h提供了imgenc1_abcde.c所需的结构定义及函数声明。 步骤三: codec_engine_2_10_02/examples/ti/sdo/ce/examples/codecs/Imgenc1_abcde目录中打开终端,运行gmake命令,如果编译成功,则将在codec_engine_2_10_02/examples/ti/xdais/dm/ examples/Imgenc1_abcde目录中生成包含Imgenc1_abcde.a64PImgenc1_abcde.a470MV文件的lib目录,运行gmake clean即可清除生成的所有的文件。 步骤四: dm6467_dvsdk_combos_1_17/packages/ti/sdo/codecs目录中复制其中的Imgenc1_copy文件夹,对新文件夹重新命名(如Imgenc1_abcde),对其中所有文件名及文件内容的修改如步骤一或者步骤二所述,并将步骤二中的自编算法实现文件imgenc1_abcde.c复制到此文件夹,再将步骤三中生成的在codec_engine_2_10_02/examples/ti/xdais/dm/Imgenc1_abcde/lib目录中文件Imgenc1_abcdeImgenc1_abcde.a470MV拷贝到此文件夹的lib目录中。 步骤五: dm6467_dvsdk_combos_1_17/packages/ti/sdo/servers/encode目录中,根据需要修改encode.cfg(服务器配置文件),再转到dm6467_dvsdk_combos_1_17/目录下,打开终端,运gmake命令,及可在dm6467_dvsdk_combos_1_17/packages/ti/sdo/servers/encode目录中生成相应的DSP服务器端文件encodeCombo.x64P,运行gmake clean即可清除生成的所有的文件。 encode.cfg(服务器配置文件)修改 /* get various codec modules; i.e., implementation of codecs */下添加 var IMGENC1_ABCDE=xdc.useModule('ti.sdo.codecs.imgenc1_abcde.IMGENC1_ABCDE'); IMGENC1_ABCDE.alg.codeSection = "DDR2"; /* Switching off Outs Bufs Cache */下添加 IMGENC1_ABCDE.manageOutBufsCache = [ false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false ]; 紧接着在Server.algs = [
]
中添加
{name: "abcde", mod: IMGENC1_ABCDE, groupId : n , threadAttrs: {
stackMemId: 0, priority: Server.MINPRI + 1}
}, 注意:n为顺序排列的数字,(0~n 找到DSKT2.DARAM_SCRATCH_SIZES = [ 32768, 32768, 32768,32768,32768,0,0, /* ... */ 0 ];其中的非零元素个数与Server.algs = [
]
中的元素个数相对应,默认值为32678(最多支持20个数字)