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.

Codec Engine的Codec中使用trace功能

我用GenCodecPkg生成了codec package,用GenServer生成了server package。我发现server中已经开启了trace功能,也就是可以使用GT_*trace,而Codec中就没有。我想在Codec中使用GT_*trace调试算法,该怎么做?

  • 我很好奇,大家难道都不用调试Codec Engine中的算法吗?

  • 你可以在ccs中调试好算法,然后就不需要在CE中再去麻烦了  我都是这样的

  • 你好 comeback,

    我也是在服务器端添加了自己的codec package,想要添加trace调试工程。

    我也在E2E上发帖询问

    我的帖子:http://e2e.ti.com/support/dsp/omap_applications_processors/f/447/t/243171.aspx

    你是否成功在codec中成功使用trace打印了呢?

  • 你好 Amob,

    我使用的结构是ARM调用DSP端,让DSP完成相应的运算工作。算法已经没有问题并已编译成.lib库文件加到codec package被.x64P服务程序包含。

    应用程序已开启trace功能的, 可以接收到正常地trace打印语句,但是codec代码中添加的trace打印语句没有打印。

    请问你这方面有调试的经验么?

  • 你 codec里的打印是在dsp里运行的,这个trace是打印不出来的,所以我说要在codec里调试就要返回到CCS里跟踪了。
    另外,你的算法lib库你用什么方式加进去的?是加到c6accel模块里的么?

  • 你好, Amob

    http://e2e.ti.com/support/dsp/omap_applications_processors/f/447/p/243171/850748.aspx#850748

    有人回复了我,在codec中打开trace是可以的。之前在别人帮我在DM6467上调试过。

    lib库我是在confilg.bld里或者link.cmd文件中添加的,在编译server的时候就会编译进去。

    c6accel这个模块我不是很熟悉,也一直没有研究过这个模块,我都是用向导生成package。

  • 哦,关于codec的trace你试试看,如能真打印出信息来那最好了,呵呵,我也试试。

    然后关于如何使用lib库,我也是在config.bld和link.cmd里试过,编译也可以编译进去,但是调用的时候总是找不到的,你若要是在codec里成功调用了lib里的函数,方便的话写个过程给我看一下,我用6467T,调用时总是找不到这个lib库,然后只能采用c6的模块来解决了,先谢谢你~

  • 诸位,我不知道大家生成Codec package的步骤是怎样的。我用的是GenCodecPkg,从源代码生成codec。我本想在codec中使用GT_*trace,参考http://processors.wiki.ti.com/index.php/Printing_in_stubs_and_skeletons,但始终没有成功。因为GenCodecPkg生成的工程不是CCS工程,而是普通的eclipse工程,直接在源代码中添加GT_*trace,编译无法通过。后来想了个办法,先自己建立codec的CCS工程,再添加GT_*trace,编译生成lib库,然后在GenCodecPkg生成的算法框架中使用该lib库,这样就可以使用GT_*trace打印信息了。

  • 你好,Amob

    在config.bld中按照手册添加识别库的时候我也遇到过找不到lib库中函数的问题,而在link.cmd文件中添加lib库后没有遇到类似的问题。究其原因还是需要跟踪二种方式的内部流程,我暂时还没有看那方面。

    在server package中link.cmd文件中直接添加引用库的路径和库文件名 “$(ABSOLUTE_PATH)/$(LIB_NAME)” 

    然后直接在codec package中C文件中调用就可以了。

    关于C6,添加算法的确需要用到这个模块,不过我这边的做法没有一个直观的印象,你用的是什么方法?

  • 你好, comeback

    CCS编译成库之后可以使用TRACE功能了? 那么还是说明打开方式或配置可能不对。

    我在E2E上问了一下,如下是回复:

    感觉应该是TI也发现这个trace功能是差强人意,但是在2.X版本应该是可行的,好像还是用法不对或者CODEC ENGINE不完整。

    我现在调试基本是在里面加了很多判断,通过返回值来检查BUFFER是否传递正确。虽然很麻烦,但也是种方法了。

  • TH Wang 你好

    就仅仅在link.cmd里面添加算法lib的路径和文件名即可?我就是在server的packages里的link.cmd文件里面添加了"-l alg.lib",alg.lib放在和link.cmd相同的路径下面,每次编译都能通过,但是就是在codec里应用alg.lib里的函数时,总是提示找不到lib,codec里我也添加了alg.lib的头文件,这样为什么不行呢?

    关于C6,就像里面的加速算法一样,把自己的算法包装成一样的接口,还有packages里的各种配置文件需要修改,如你需要,我可以给你写个手册。

  • @Amob

    我觉得要使用lib的话,应该是在编写Codec的时候调用lib,并一起编译成a64P文件,最后由server打包成x64P,而不是在server中加入lib。

  • 你好, Amob

    直接用路径名和库文件名就可以了,对于link.cmd文件来说这个方法个人觉得怪怪的,好像不是常规用法,不过它的确奏效了。

    C6模块如果你能整理一份简化手册当然是好了!

  • 你好,comeback

    你的做法应该是也可行的,但是通过server的编译信息来看

    building for target C64P ...
    generating interfaces for package servers.test (because package/package.xdc.inc is older than package.xdc) ...
    configuring bin/test.x64P from package/cfg/bin/test_x64P.cfg ...
    platform = ti.platforms.evm3530
    undefined.createMemMapFile(): progName = bin/test_x64P

    NOTE: You can find the complete server data sheet in ./package/info/bin/test.x64P.DataSheet.html
    ------------------------------------------------------------------------------------------------

    algRecs[PLATE_CODECS_IPLATE] = ti.sdo.ce.universal.IUNIVERSAL
    will link with codecs.plate:lib/release/plate.a64P
    will link with ti.sdo.ce.universal:lib/release/universal.a64P
    will link with ti.sdo.ce.bioslog:lib/release/bioslog.a64P
    will link with ti.sdo.ce:lib/release/ce.a64P
    will link with ti.sdo.ce.alg:lib/release/Algorithm_BIOS.a64P
    will link with ti.sdo.ce.ipc.bios:lib/release/ipc_bios.a64P
    will link with ti.sdo.ce.osal.bios:lib/osal_bios.a64P
    will link with ti.sdo.ce.osal.bios:lib/osal_bios_pwrm.a64P
    will link with ti.bios.utils:lib/utils.a64P
    will link with ti.sdo.fc.acpy3:lib/trace/acpy3.a64P
    will link with ti.sdo.fc.memutils:lib/trace/memutils.a64P
    will link with ti.sdo.fc.dman3:lib/trace/dman3Cfg.a64P
    will link with ti.sdo.ce.utils.xdm:lib/release/XdmUtils.a64P
    will link with ti.sdo.ce.node:lib/release/node.a64P
    will link with ti.sdo.fc.rman:lib/trace/rman.a64P
    will link with ti.sdo.fc.dskt2:lib/trace/dskt2.a64P
    will link with ti.sdo.fc.ires.nullresource:lib/trace/nullres.a64P
    will link with ti.sdo.utils.trace:lib/release/gt.a64P
    cl64P main.c ...
    cl64P package/cfg/bin/test_x64Pcfg_c.c ...
    cl64P package/cfg/bin/test_x64P.c ...
    asm64P package/cfg/bin/test_x64Pcfg.s62 ...
    lnk64P bin/test.x64P ...
    all files complete.
    generating external package references package/package.ext.xml ...
    generating package references graph package/package.rel.dot ...
    making release file servers_test.zip (because of package/rel/servers_test.xdc.inc) ...

    在生成最终目标文件时,才会统一链接资源。

  • comeback你好

    你说的这个方法我也试过,在codec里加一个lib,也没成功过,是不是还要在这一级的makefile里添加引用库的命令?

    关于这个引用lib,我总是没成功,所以最后用c6来解决了。

    虽然添加自己的算法解决了,但是这个lib用不了总是不能释怀。

    在codec里如何添加,难道还有更多的配置,你是怎么弄的,能举例具体一点么,谢谢先~

  • @Amob

    现在想想,我当时的做法有点复杂。我是先用GenCodecPkg生成了算法框架,但由于生成的工程不是CCS工程,我就把3个主要文件(两个.h头文件和一个.c文件)拿了出来,加入到了另外新建的一个CCS工程。在这个CCS工程里,你想怎么样都行了,最后生成了lib库。然后又用GenCodecPkg由符合算法标准的lib库生成了Codec Package,最后生成Server Package。

    所以准确来说,我并不是在Codec中调用了lib库,而是先把整个算法打包成了lib库,然后直接生成Codec Package。这么麻烦的目的就是为了使用GT_*trace。后来我又想到是不是可以不用这么麻烦,就直接从Codec中调用lib。关于这一点我还没有实验过,具体情况还不清楚。

  • 哦,这样啊,那相对来说算法还是加到c6里比较简单一些。谢谢你~  新年快乐

  • 请问你有vlib的源码和库么,是否能搞到一份?我在ti那里申请了,还没有批复,现在就急着要用。

  • 我没有VLIB。

  • 你好,TH Wang

    我在servers/all_codecs/link.cmd下按你说的添加lib库,怎么在codecs/viddec_copy中调用lib里的函数就会出现

    undefined             first referenced

    symbol                   in file呢?

  • 你好 Michael Jordan,

    你的问题看上可能是你的代码中拼写错误导致的,也有可能是其他问题。你能不能再详细说明你是怎么做的呢?

    另外,你最好重新POST新贴。

    BR

    TH Wang

  • Amob 你好

    我也是在link.cmd中添加lib的路径和文件名,也是调用的时候找不到lib,你能给我写一个手册吗

  • 在dm8148 与之前3530之类的codec 里面log打印方式是不一样的

  • vlib现在都是开放出来的