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文件可以自己生成一下
   只要里面的代码对就行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nput.txt是输入的测试文件。 produce.txt是输入的LR1产生式,能力不大,能if,while,赋值,加,乘,不能处理任何嵌套,没有数组,(这个你可以自己加文法进去进行处理) Grammar.txt是某个博客上的文法,看着很靠谱,但是我没有再做测试的心思了。。。 这个程序没啥bug,但是文法如果有左递归,那肯定是会出现stack overflow的(书上算法就是这么设计的) 另外LR文法不能有二义性,你得在文法里面把算术优先级给解决了。 另外如果加入嵌套,那必然复杂度指数上升,得跑很久。。。。十分钟似乎都不算多。。 运行指南: gui.JtableParse3.java 显示LR1分析表,同时对input里面的文件进行分析。输出词法分析结果到output.txt 输出规约过程,很小一段语句可能就会很长的规约过程。 letex.LexResult.java 显示词法分析结果。输出全部识别出来的单词。 LR1识别实现完全在Parse3包里,自己看名字去读代码。 几乎每一个主要的类我都写了main()方法,可以自己输入一些产生式去试下, 比如书上给的: S' -> S S -> C C C -> c C|d 得到的集合和LR1的结果和书上完全一致 和一些网址上的 S' -> S S -> L = R S -> R L -> * R L -> id R -> L 你可以通过跑ItemTable.java 得到全部的集合和goto集合, 通过跑gotoTable.java 得到goto表 通过跑ActionTable.java 得到action表(cmd形式) 通过跑parse.java 得到两张表的合集和规约过程。 gui.JtableParse3.java 把上面的两张表合在一起图形化了。 我鼓励你发现我的bug *0*虽然我仔细检察过并没有bug 但你可以发布修复bug的最新版本。注意标明原转载网址奥。 更加详细的思路和其他的说明,见下面的网址: https://blog.csdn.net/qinglingLS 和: https://blog.csdn.net/qinglingLS/article/details/89814398 【HIT哈工大编译原理实验】词法分析程序java 【编译原理】求first集合的代码实现java 【编译原理】求GOTO图的代码实现java 【编译原理】LL(1)分析法代码 其他的更新版本可以自己去博客里找一下噢。 写于2019/5/8

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值