1.
Codec Engine 中的Codec管理模块
在Code Engine的实现ICodec.xdc中,有一个ICodec的主类,这个ICodec的接口就是Codec Engine中的算法接口类,它主要是声明了以下三个接口:stubFxns,serverFxns以及 ialgFxns。
- metaonly interface ICodec
- {
- readonly config String ialgFxns;
- config String serverFxns;
- config String stubFxns;
- }
ialgFxns: 算法的接口标识串声明。
serverFxns: 远端的调用接口标识声明。
stubFxns: 和serverFxns 相对应的本地侧调用接口的实现。
以下以SCALE为例来说明ialgFxns算法接口的实现,其它两个接口的实现是类似的。在SCALE_TI.xdc中声明了算法接口的标识:
- metaonly module SCALE_TI inherits ti.sdo.ce.examples.extensions.scale.ISCALE
- {
- override readonly config String ialgFxns = "SCALE_TI_SCALE";
- }
而在scale_ti_impl.c中实现了这个接口:
- ISCALE_Fxns SCALE_TI_SCALE = {
- {IALGFXNS},
- SCALE_TI_process,
- SCALE_TI_control,
- };
同理,在scale的两侧封装中实现了分别实现了serverFxns 和stubFxns, 在其相应的源文件中有对其接口的实现,这里不多叙述。IALGFXNS 是一组函数的定义的宏。在这三个接口的实现中,serverFxns 和stubFxns 的实现早于ialgFxns。
2.集成符合标准的Codec
1)
弄清楚Codec的存放路径, 一般在Codec 的package.xdc 中可以找到,以下是在Codec中包含的路径
2)
在server中集成相应的codec, 在.cfg 文件中添加,请注意第二个配置中的组标识和线程属性。groupID 是和优化相关的,这关系到Codec中是否能共用同一个组的资源,线程属性中的优先级在多个Codec的优化中有效,最大值为15。
3)
编译server,如果不出现错误,基本确定算法集成成功。如果需要测试是否成功,在App中编写测试程序进行测试。
注意:在集成Codec之前,请确定Codec所包含的文件是否是完整的,否则在编译server的时候会报错,具体报错信息会在其它文档中说明。
一般的Codec中都是成对的集成,scale是个特例,在一些复杂库中,需要用scale来封装使用其功能。
3. Package中的文件说明
package.xdc-描述该包的名称,版本信息,依赖文件,模块信息等
package.xs-当这个package被require 或者调用的时候去获取可用的文件
package.bld-描述对于该包需要生成的平台,版本(debug,release),以及要编译的源文件,编译生成库或者可执行文件的路径
package.mak-编译生成的中间文件
1)
server 中的.cfg : 系统配置的脚本文件,包含使用到系统的各个模块、集成Codec的路径配置、堆栈大小的设定等
2)
server 中的link.cmd: 编译的时候用到的定义section, segment的文件,具有一定的语法