免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2428 | 回复: 0
打印 上一主题 下一主题

DSPLink [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-17 13:02 |只看该作者 |倒序浏览
DSPLink(2)2008-06-16 12:03[color="#3366ff"]DSPLink[color="#3366ff"]这一阵子上班的时间差不多都在折腾着这个东西。TI的工具链体系复杂又不好弄,每个工具都可以花钱来买,或者绕过去用非标准方法做。真不知道他们那帮做技术的怎么能算计这么精?看起来还是ADI厚道些,虽然当初也是整天埋怨没有人肯免费教你,但是毕竟人家文档做的清楚,几千页读下来至少也有点儿感觉了。直到现在还是没搞明白,要是想用CCS这个IDE来开发算法,到底需要加多少插件。难道说CE、XDC、BIOS、DSPLink、FC、CMEM这些Davinci的高级玩意儿真的只能在Linux字符界面下封装算法、配置、编译、链接、调试……?据说DSPLink也是可以profile的。不过连一份系统点儿的API手册还没发现,高级玩意儿还是慢慢看吧~
[color="#3366ff"]现在就是不会用DSPLink看DSP端的log、trace,配置了BIOS也不知道到底管不管用。不过之前对DSPLink模块和例程的编译过程总算告一段落了,希望算是做了点儿有用的工作:
[color="#3366ff"]1. 环境变量vi etc/host/scripts/Linux/dsplinkenv.bash ->export DSPLINK=/opt/dvevm_1_10/dsplink_1_30_08_02/packages/dsplinkvi ~/bin/dsplk ->source /opt/dvevm_1_10/dsplink_1_30_08_02/packages/dsplink/etc/host/scripts/Linux/dsplinkenv.bashchmod u+x ~/bin/dsplk. dsplk/**** 用“.”或“source”执行的shell脚本运行在当前进程;否则运行在子shell进程里,无法修改当前shell的环境变量 ****/
[color="#3366ff"]2. GPP工具路径vi make/Linux/davinci_mvlpro4.0.mk ->BASE_BUILDOS    := /opt/mv_pro_4.0/montavista/pro/devkit/lsp/ti-davinciBASE_CGTOOLS    := /opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le/binOSINC_PLATFORM := /opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le/lib/gcc/armv5tl-montavista-linuxeabi/3.4.3/includeOSINC_TARGET    := /opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le/target/usr/includeBASE_OSLIB      := /opt/mv_pro_4.0/montavista/pro/devkit/arm/v5t_le/lib3. DSP工具路径vi make/DspBios/c64xxp_5.xx_linux.mk ->BASE_INSTALL    := /optXDCTOOLS_DIR    := /opt/dvevm_1_10/xdctools_1_21BASE_CGTOOLS    := /opt/TI/cg6x_6_0_144. DSP/BIOS内存配置cd dsp/inc/DspBios/Davincicp dsplink-davinci-base.tci.256MB dsplink-davinci-base.tci/**** 由sample的tcf引用,不影响模块本身 ****/5. DSPLink内存配置vi config/all/CFG_Davinci.TXT/**** 应与DSP内存配置保持一致,但不知有何实际用途 ****/6. DSPLink模块配置文件vi config/CURRENTCFG.MK/**** 由dsplinkcfg生成 ****/7. 编译脚本#!/bin/sh. dsplkif [ "$1" = "dsp" -o "$1" = "gpp" ]then    if [ "$2" = "-m" ]    then        source etc/host/scripts/Linux/dsplinkcfg        cd ${DSPLINK}/$1/src/        make clean        make -s    fi    cd ${DSPLINK}/$1/src/samples    #make clean    make -selse    cd ${DSPLINK}/package/ti/dsplink/dsp/DspBios/Davinci/RELEASE/    scp *.out root@192.168.0.66:dsplink/    cd ${DSPLINK}/package/ti/dsplink/gpp/Linux/Davinci/RELEASE    scp dsplinkk.ko *gpp root@192.168.0.66:dsplink/    cd ${DSPLINK}fi8. 卸载、加载模块的顺序rm -f /dev/dsplinkrmmod dsplinkkinsmod dsplinkk.komknod /dev/dsplink c 230   0/**** 若先rmmod后rm设备节点,模块会崩溃,并且无法卸载 ****/9. 增加GPP组件vi gpp/src/samples/net/Linux/COMPONENT ->## 生成目标文件 ##COMP_NAME       := NETCOMP_PATH       := $(GPPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)netCOMP_TYPE       := EXECOMP_TARGET     := netgppCOMP_MEMSPACE   := USER## 导出目标文件 ##EXP_TARGETS     := netgppvi gpp/src/samples/DIRS ->DIRS += net10.增加DSP组件vi dsp/src/samples/net/DspBios/COMPONENT ->## 生成目标文件 ##COMP_NAME       := NETCOMP_PATH       := $(DSPROOT)$(DIRSEP)src$(DIRSEP)samples$(DIRSEP)netCOMP_TYPE       := EXECOMP_TARGET     := net.out## 导出目标文件 ##EXP_TARGETS     := net.outvi dsp/src/samples/DIRS ->DIRS += net11.GPP端加入源文件(以自定义的UDP打包函数为例)cp /media/win/Projects/examples/udplib/udplib.cpp gpp/src/samples/net/Linux/udplib.ccp /media/win/Projects/examples/udplib/udplib.h gpp/src/samples/net/Linux/udplib.hvi gpp/src/samples/net/Linux/COMPONENT ->EXP_HEADERS     := loop.h              \   Linux/loop_os.h     \   Linux/udplib.hvi gpp/src/samples/net/Linux/SOURCES ->SOURCES := loop_os.c \               udplib.c \               main.c12.CHNL驱动之ARM篇EXPORT_APIDSP_STATUSCHNL_AllocateBuffer (IN ProcessorId procId,                     IN ChannelId   chnlId,                     OUT Char8 **    bufArray,                     IN Uint32      size,                     IN Uint32      numBufs) ;EXPORT_APIDSP_STATUSCHNL_Issue (IN ProcessorId      procId,            IN ChannelId        chnlId,            IN ChannelIOInfo * ioReq) ;EXPORT_APIDSP_STATUSCHNL_Reclaim (IN     ProcessorId       procId,              IN     ChannelId         chnlId,              IN     Uint32            timeout,              IN OUT ChannelIOInfo *   ioReq) ;/**** 与DSP端使用GIO还是SIO无关 ****/13.CHNL驱动之GIO篇#define DSPLINK_alloc(poolId, bufPtr, size)                     \        (((POOL->allocators [poolId]).fxns->alloc)              \                (POOL->allocators [poolId].object,              \                 bufPtr,                                        \                 size))vi dsp/src/samples/net/swiLoop.c ->void switx(Arg arg0, Arg arg1){SWILOOP_TransferInfo * info = (SWILOOP_TransferInfo *) arg0;(Void) arg1 ; /* To remove compiler warning */GIO_submit (info->gioOutputChan,IOM_WRITE,info->outputBuffer,(size_t *) &(info->bufferSize),&(info->appWriteCb)) ;}/**** 异步GIO能用于SWI ****/14.CHNL驱动之SIO篇#define DSPLINK_alloc(poolId, bufPtr, size)                     \        (((POOL->allocators [poolId]).fxns->alloc)              \                (POOL->allocators [poolId].object,              \                 bufPtr,                                        \                 size))vi dsp/src/samples/net/tskLoop.c ->void tsktx(TSKLOOP_TransferInfo * info){Arg arg = 0 ;SIO_issue(info->outputStream,info->buffers [0],info->bufferSize,arg);SIO_reclaim (info->outputStream,(Ptr *) &(info->buffers [0]), &arg) ;}/**** 同步SIO只能用于TSK ****//**** 包含SIO的TSK可同步地执行算法,相当于CE中调用process函数 ****/15.Issue/Reclaim模型/**** Put/Get模型会自动分配内置交换缓冲,Issue/Reclaim不会 ****//**** Issue 不论收/发,向CHNL的另一端传入指针,非阻塞 ****//**** Reclaim 不论收/发,从CHNL的另一端传出指针,I/O阻塞 ****//**** Issue与Reclaim一起使用,可达到Put或Get的效果 ****//**** Issue与Reclaim分开使用,可提供一定的缓冲深度 ****/16.Tconfvi dsp/src/samples/net/loop.tci ->var tsk0 = bios.TSK.create("tsk0");tsk0.fxn = prog.extern("tskLoop");var swi0 = bios.SWI.create("swi0");swi0.fxn = prog.extern("switx");swi0.arg0 = prog.extern("info");vi dsp/src/samples/net/swiLoop.c ->extern far SWI_Obj swi0;SWI_post(&swi0);/**** 在tci里面添加模块比在程序中调用API动态添加更方便,而且对程序结构的简化也很有帮助 ****//**** BIOS模块和API相关内容参考TI文档 ****//**** typedef struct SWI_Obj SWI_Handle; ****//**** loop.tci由dsp/src/samples/net/DspBios/Davinci/loop.tcf引用 ****/
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/89580/showart_1866093.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP