DSP

arm与dsp通信

2019-07-13 09:43发布

                       DVSDK双核异构通信环境搭建 1.到TI官网下载源码dvsdk_dm3730-evm_4_00_00_22_setuplinux(需要注册用户),板子给的demo中也有改软件包(我的路径:G:Project_Programlinuxdemodvsdksource)。 2.将下载的源码拷贝到Linux, chmod +x dvsdk_dm3730-evm_4_00_00_22_setuplinux命令让文件可执行,./dvsdk_dm3730-evm_4_00_00_22_setuplinux,进入下面的界面   (选择包含交叉arm-none-linux-gnueabi-的交叉编译环境) 我用的是板子上给的arm-2009q1,这里面就包含上面的交叉编译环境   使用默认的安装目录即可   全部选上,然后默认下一步,最后大概半小时完成安装 3.安装完成后会在安装目录下生成以下文件,然后对它进行编译       (1).进入filesystem文件夹,建立双核通信的驱动生成目录,所有的生成的文件都在该文件夹下面     Mkdir -p dm3730rootfs/opt/dvsdk    (2).修改Rules.make文件,指定文件生成目录      Vim Rules.make       将最后一行改成上面的文件目录 EXEC_DIR=/home/davinci/dm3730/dvsdk4_03/filesystem/dm3730rootfs/opt/dvsdk的路径下,而对应的*.ko(特别是cmemk.kodsplinkk.kolpm_omap3530.kosdmak.ko)会直接COPY/home/davinci/dm3730/dvsdk4_03/filesystem/dm3730rootfs/opt/dvsdk/dsp的目录下,自动的,我们已经在总的Makefile改好路径了。在开发X-LAODER,U-BOOT,LINUX-2.6.32,DVSDK等等会发觉这个omap3530omap3OMAP34XX、或者omap3630类似名字,是因为DM3730的架构和它们类似,同一个家族的,TI DM3730的软件开发都是在他们前身不断开发出来的,这一点搞得很乱 (3).修改Makefile          第一行改成适合devkit8500板子适合的内核配置文件      (4).bootloader uboot可以单独编译,没必要在这里集成编译,因为这里只需要用到编译好的内核的配置文件。      ( 2).编译    因为我们没必要把怎个集成环境都编译一次,用不到也浪费时间,可以建立一个脚本对必要的进行编译即可    Make dvsdk_setup.sh    加入下面的内容:    make linux_clean make linux make linux_install   make cmem_clean make cmem make cmem_install echo "......build sdma......" read $CMDNAME   make sdma_clean make sdma make sdma_install   echo "......build dsplink......" read $CMDNAME   make dsplink_clean make dsplink make dsplink_install   echo "......build lpm......" read $CMDNAME   make lpm_clean make lpm make lpm_install   echo "......build c6run......" read $CMDNAME   make c6run_clean make c6run make c6run_examples #make c6run_install   echo "......build c6ccel......" read $CMDNAME make c6accel_clean make c6accel #make c6accel_install   echo "......build ceexamples......" read $CMDNAME   make ceexamples_clean make ceexamples   echo "......build codecs......" read $CMDNAME   make codecs_clean make codecs make codecs_install   echo "......build dmai......" read $CMDNAME   make dmai_clean make dmai make dmai_install   make demos_clean make demos make demos_install          然后让脚本文件可执行chmod +x dvsdk_setup.sh        运行脚本:./setup.sh         编译半小时左右完成     (4).       我们使用read $CMDNAME命令停顿一下,便于分析编译的正确性,回车往下继续编译。运行这个./build_dvsdk.sh之前,一定要先编译内核linux-2.6.32!就是说,如果你的linux-2.6.32使用make distclean或make clean等命令,或刚刚拿到我们的光盘安装,一定要先编译linux-2.6.32,内核编译正常后,会在对应的目录生产很多临时文件,编译CMEM等元素就会去读这些内核临时文件,才能往下编译。只要这个内核有这些临时文件,就可以编译CMEM了,不需要每次都编译一次内核。编译内核方法后面再介绍。在总的Makefile里边提到: Linux àcmem àsdma àdsplink àlpm àc6run àc6accelàcodecs àdmai àdemos 脚本文件的编译顺序一定要按照上面的编译顺序。         (5).环境搭建好以后,我们要了解通信原理,最终要的就是                CodecengineTI DAVINCI双核的核心思想,codec-engine_2_26_02_11packages isdoce里边有很多算法接口,比DM6446多了一个vidanalytics 4.最后一步就是修改codec-engine_2_26_01_09中的    这个路径下的xdcpaths.mak这个文件,这是以后我们编译程序所要依赖的各种接工具的安装目录  做如下修改: 从上到下:               上面的修改一定要正确,然后下面的可以根据自己的交叉编译环境来配置,做小的修改 具体可参照下面的文档(http://www.verydemo.com/demo_c161_i229663.html)   上面配置好以后,可以进入到      可以看到上面apps(ARM端程序开发)codecs(dsp算法程序开发)servers(集成dsp的算法,使能被arm端识别调用)   知识总结:   (1).uboot在分配内存的时候   内存可以任意设置,只需保证后端Linux128M内存即可 mem=68M@0x80000000 mem=128M@0x88000000    也可以参照上面截图的设置,只要内存不越界都行。    (2).整个框架所用到的有用的函数       dvsdk app中的函数 if(ce=Engine_open(engineName,NULL,NULL));                   ce:Engine_open返回的句柄   enc=VIDENC_create(ce,encoderName,¶ms);                   ce:Engine_open返回的句柄   enconderName:打算调用dsp端的算法   ¶ms:算法所需要传递的参数     该函数在算法创建成功后,可以通过该接口设置算法所需 要使用的动态参数。例如要进行视频编码的图像数据格式, 图像的宽高信息等 status=VIDENC_control(enc,XDM_GETSTATUS,&encDyParams,&encStatus);     enc:算法句柄   XDM_GETSTATUS:判断是要获取还是要置参数   encDyParams:动态参数的结构体   encStatus:是否成功标志     该函数执行最终的算法调用,调用该函数相当于远程调用 DSP端的算法处理函数,执行相应的算法调用并将算法处 理结果返回调用端 status=VIDENC_process(enc,&inBufDesc,&outBufDesc,&encInArgs,&encOutArgs)   enc:算法句柄   &inBufDesc:输入Buffer的数据结构信息   &outBufDesc:输出Buffer的数据结构信息(包括物理地址,大小)   &encInArgs:输入参数信息   &encOutArgs:输出参数信息 VINDENC_delete(enc);删除暂时不用的算法实例 Engine_close(ce);关闭Engine_open打开的Engine实例     上面配置完成了就可以进行程序开发了 参考文档: http://news.cecb2b.com/info/20130506/575727.shtml http://blog.csdn.net/lanqilovezs/article/details/20746689 http://zjbintsystem.blog.51cto.com/964211/1199430 http://blog.csdn.net/gzzaigcnforever/article/details/7463525 http://blog.csdn.net/hyanglu1573/article/details/12882199 http://bbs.csdn.net/topics/370205213