XDAIS算法封装需要注意的几个问题:
1,algNumAlloc()接口。XDAIS工具生成的算法实现.c文件中,并没有该函数,默认的为NULL。如下面的红色字体标示:
#define IALGFXNS \
&RVM_TI_IALG,/* module ID */ \
NULL, /* activate */ \
RVM_TI_alloc,/* alloc */ \
NULL, /* control (NULL => no control ops) */ \
NULL, /* deactivate */ \
RVM_TI_free, /* free */ \
RVM_TI_initObj, /* init */ \
NULL, /* moved */ \
NULL /* numAlloc (NULL => IALG_MAXMEMRECS) */
如果没有algNumAlloc()函数的话,mem rec的数目是小于等于默认值IALG_DEFMEMRECS(该值为4),也就是说么说么memTab的大小最多为4,当memTab的数目大于4的时候,需要加上该接口,返回当前算法最大的memTab数目。具体可以参考lalg.h文件。
2,XDM_SETACCESSMODE_READ()or XDM_CLEARACCESSMODE_WRITE()。当用到CPU向DSP读写数据时在算法里不要忘记加上相应的该接口函数(可参靠xdm.h文件)
1,algNumAlloc()接口。XDAIS工具生成的算法实现.c文件中,并没有该函数,默认的为NULL。如下面的红色字体标示:
#define IALGFXNS \
&RVM_TI_IALG,/* module ID */ \
NULL, /* activate */ \
RVM_TI_alloc,/* alloc */ \
NULL, /* control (NULL => no control ops) */ \
NULL, /* deactivate */ \
RVM_TI_free, /* free */ \
RVM_TI_initObj, /* init */ \
NULL, /* moved */ \
NULL /* numAlloc (NULL => IALG_MAXMEMRECS) */
如果没有algNumAlloc()函数的话,mem rec的数目是小于等于默认值IALG_DEFMEMRECS(该值为4),也就是说么说么memTab的大小最多为4,当memTab的数目大于4的时候,需要加上该接口,返回当前算法最大的memTab数目。具体可以参考lalg.h文件。
2,XDM_SETACCESSMODE_READ()or XDM_CLEARACCESSMODE_WRITE()。当用到CPU向DSP读写数据时在算法里不要忘记加上相应的该接口函数(可参靠xdm.h文件)