• codec engine工程中使用ccs下编译的lib库


    这两天将dsp的算法程序放到ccs下,生成lib库文件
    这样的好处就是:
    1. 算法封装成lib库以后,看不到源码,保证了代码的安全性;
    2. 在ccs下,对每个算法的运行时钟数可以直观的得到,方便进行优化处理;
    3. 调试算法方便,在linux下的调试还是不顺手。

    在ccs下建立lib文件比较简单,建立个lib工程,把.c和.h文件加进去
    built一下就OK了,不过built前最好先clean一下
    有几次没clean结果好像没生成新的lib文件,具体原因也没研究,懒

    网上查了点资料,说linux下不能用lib库的,心一凉
    不过老伟说可以的,还给我发了个他和小师弟一起做的文档
    照着做了一下,还真可以
    想了想,为什么能用lib库呢
    应该是用交叉编译器的原因吧,不是gcc编译的,估计是这样
    我把文档贴一下吧,我保存文档的能力真的不强

    ----------------------------------------------------------文档分割线-----------------------------------------------------------
    1、/opt/dvevm_1_20/codec_engine_1_10_01/examples/codecs/videnc_copy/package.bld文件中修改之处:
    var SRCS =["videnc_copy","colorspace","OSD"]; 指出要编译的.c文件的文件名

    2、/opt/dvevm_1_20/codec_engine_1_10_01/examples/codecs/videnc_copy/package.xdc文件增加之处:
    requirescodecs.videnc_copy.DavinciLib;  增加DavinciLib库

    3、在/opt/dvevm_1_20/codec_engine_1_10_01/examples/codecs/videnc_copy目录下增加了DavinciLib文件夹,其中包含以下文件:
    CCS已编译的 Davinci_VLPR_lib.lib 文件, LPRSYS.h 文件。 LPRSYS.h 和videnc_copy.c文件用到的头文件及其变量定义所在的头文件都要放在新增的DavinciLib库文件夹里。
    Videnc_copy.c文件中需要增加:
    #include "DavinciLib/LPRSYS.h"//由于在Videnc_copy.c文件中包含LPRSYS.h中所要使用的变量,

    另外,为使加进去的文件能被加载运行,需要增加一些定义运行规则的文件:
    /opt/dvevm_1_20/codec_engine_1_10_01/examples/codecs/videnc_copy/DavinciLib/package.xs
    将其代码改为:
    function getLibs(prog)
    {
        var name =null;
        if(prog.build.target.isa == "64P") {
           var name = "Davinci_VLPR_lib.lib"; //此处name值改为Davinci_VLPR_lib.lib

           
           print("    willlink with " + this.$name + ":" + name);
        }
        return(name);
    }

    /opt/dvevm_1_20/codec_engine_1_10_01/examples/codecs/videnc_copy/DavinciLib/Makefile
    将其代码改为:
    EXAMPLES_ROOTDIR := $(CURDIR)../../..//CURDIR为当前目录,向上3级目录寻找xdcpaths.mak文件
    include $(EXAMPLES_ROOTDIR)/xdcpaths.mak
    # [CE] add the examples directory itself to the list of paths topackages
    XDC_PATH := $(EXAMPLES_ROOTDIR);$(XDC_PATH)
    include $(EXAMPLES_ROOTDIR)/buildutils/xdcrules.mak

    /opt/dvevm_1_20/codec_engine_1_10_01/examples/codecs/videnc_copy/DavinciLib/package.xdc
    将其代码改为:
    requires ti.sdo.ce.video;
    package codecs.videnc_copy.DavinciLib { //设置路径
    }

    /opt/dvevm_1_20/codec_engine_1_10_01/examples/codecs/videnc_copy/DavinciLib/package.bld
    将其代码改为:
    Pkg.attrs.profile = "debug";
    Pkg.attrs.exportAll = true;
    ------------------------------------------------------------文档分割线---------------------------------------------------------

    几点说明一下:
    1. 我的codec engine是在videnc_copy工程上改的
       Davinci_VLPR_lib.lib 文件是CCS已编译的
        LPRSYS.h文件是库的头文件
    2. 第一条 var SRCS =["videnc_copy","colorspace","OSD"] 没看明白
       "colorspace"和"OSD"应该是生成lib文件的源码文件
       但是既然用了lib文件,干嘛还要添加源码文件了。
       实践了一下,将第一条改为var SRCS =["videnc_copy"]
        OK的。
    3. package.xs、Makefile、package.xdc、package.bld文件可以自己生成一下
       只要里面的代码对就行。

  • 相关阅读:
    Oracle函数如何把符串装换为小写的格式
    Oralce中的synonym同义词
    JS中getYear()的兼容问题
    How to do SSH Tunneling (Port Forwarding)
    所谓深度链接(Deep linking)
    upload size of asp.net
    发一个自动刷网站PV流量的小工具
    解决Visual Studio 2008 下,打开.dbml(LINQ) 文件时,提示"The operation could not be completed." 的问题。
    在资源管理器中使鼠标右键增加一个命令,运行cmd,同时使得当前路径为资源管理器当前的目录
    使用SQL语句获取Sql Server数据库的版本
  • 原文地址:https://www.cnblogs.com/eaglediao/p/7136513.html
Copyright © 2020-2023  润新知