TI-Davinci开发系列之七DVSDK-4.03目录介绍

9 篇文章 1 订阅
9 篇文章 0 订阅

接上篇博文TI-Davinci开发系列之六CCS5.2调试Linux内核》,在简单介绍了CCS5.2的安装及使用方法之后,接下来本文将介绍DVSDK4.03的目录结构,而实际上DVSDK4.03目录及其子目录下都有docs目录,TI的文档是海量的,只要你有耐心大部分问题都可以从文档中找到靠谱的参考,不过本着抛砖引玉的着眼点,本文简要介绍DVSDK4.03的目录结构,希望能给新来者以帮助同时记录下学习的过程毕竟DM3730非常强大,1G Hz COTEX-A8800M HzTMS320C64x跑一些网络视频服务器还是游刃有余的。

/******************************************************************************************************************************************/

 原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb_driver/article/details/8917451,作者:gqb666  
/******************************************************************************************************************************************/

1.1DVSDK4_03软件包及元素介绍

1.1.1 docs文件夹

我们要具体了解整个DVSDK4_03,就必须认真读读TMS320DM3730_Software_Developers_Guide.pdf,里边非常详细介绍整个DVSDK的结构。而dvsdk_4_03_00_06_dm3730_Release_Notes.pdf只是介绍这个DVSDK4_03的特点。


1.1.2根目录MakefileRules.make

dvsdk4_03根目录下,这个Makefile文件告诉你如何编译整个开发包各个元素,而Rules.make里边脚本定义很重要的各个元素所处的路径、名字。使用在dvsdk4_03目录下直接vim Makefilevim Rules.make看看就明白一切,这里特别指出,那些make xxxx_install命令会把对应编译出来的*.kocs.x64P和应用程序 COPYEXEC_DIR=/home/gqb/dm3730/dvsdk4_03/filesystem/dm3730rootfs/opt/dvsdk的路径下,而对应的*.ko(特别是cmemk.kodsplinkk.kolpm_omap3530.kosdmak.ko)会直接COPY/home/gqb/dm3730/dvsdk4_03/filesystem/dm3730rootfs/opt/dvsdk/dsp的目录下,我们已经在根目录下Makefile改好路径了。

在根目录下执行make命令则其编译顺序为

Linux kernel àcmem àsdma àdsplink àlpm àc6run àc6accelàcodecs àdmai àdemos

上面的编译顺序是不能颠倒的。当然有些元素只需要编译一次,因为我们大部分开发是codecsdmai demos,那就得按上面的顺序编译。很多人一直没有正常编译dmaidemos啊,是因为他们根本没看手册,根本不了解这些元素的编译顺序。

下面介绍DVSDK元素包:

TMS320DM3730_Software_Developers_Guide.pdf里第11页,读懂这个框图就读懂整个DVSDK的开发包的内在关系:

                  

注意蓝色标的元素是TI 自己开发的Software。整个图从上到下逐层调用,有些直接调用DSP,有些是需要中间件等等。


1.1.4 bin文件夹

这个是安装DVSDK4_03的时候,用到的安装脚本,可以打开看看这些脚本理解,和编译无关。


1.1.5 biosutils_1_02_02文件夹

这个进去看看doc文件夹里边的pdf文件和release_notes.html就可以了解,BIOS相关LIB,不需要我们单独编译和开发。


1.1.6 cgt6x_6_1_14

这个也不需要我们编译,但是是很重要的LIB和编译工具;


1.1.7 dspbios_5_41_03_17

Dsplink依赖于此源码包,实际上DM3730架构DSP可以看作ARM的外设,而dsplink则是DSP的驱动模块,而dsplink又将dsplink包含了进来,实际上DSPBIOS是跑在TI DSP上的BIOS操作系统


1.1.8 edma3lld_01_11_02_05

这个也不需要我们编译,NX的人可以去修改对应的驱动,负责DMA通信相关的工作;


1.1.9 framework-components_2_26_00_01

这个也不需要我们编译,NX的人可以去修改对应的驱动;


1.1.10 xdais_6_26_01_03

这个就是被中国一些DSP工程师称为万恶的XDAIS算法接口,把中国很多只会使用CCS调试程序的工程师搞得半死,很多人一直停留在DM642这种单核的状态。其实多使用和研究透这个XDAIS,就发觉TI的良苦用心。本人改了xdais_6_26_01_03\packages\ti\xdais\dm里边ividenc.h进行ARM传参数给DSPDSPARM传参数,还改了dmai_2_20_00_15\packages\ti\sdo\dmai\ce里边的Venc.cVenc.h,然后在dvsdk-demos_4_02_00_01\omap3530\encode例子capture.c里举例如何在ARM端调用DSP的算法Venc_process()


1.1.11 xdctools_3_16_03_36

   这个是整个DVSDK的编译工具。


1.1.12 psp

   其实个人感觉这个目录应该叫做bsp(板级支持包),不知道为什么叫psp,反正该目录的源码都是系统软件层等非常底层,如x-loader(其工作原理及流程见下篇博文)用来从不同介质引导u-boot,而u-boot的作用则调试和引导Linux内核。

x-load-1.51是支持NAND BOOT的;

x-load-1.51-mmc是我们自己改出来的版本,是支持SDBOOT的,适合生产和产品维修,使用这个编译的文件进行SDBOOT

注意:u-boot-2010.06-psp04.02.00.07.sdklinux-driver-examples-psp04.02.00.07linux-2.6.37-psp04.02.00.07.sdkTI DVSDK4_03安装的原始软件包。


1.1.13linuxutils_2_26_02_05

编译这个cmemsdma元素之前,必须先编译内核linux-2.6.37


1.1.14 dsplink_1_65_01_05_eng

得到dsplink.ko文件,负责跑在ARM端的Linux与跑在DSP端的BIOS之间的通信,这部门可以作为一个单独的课题放在后续博文讨论;


1.1.15 local-power-manager_1_24_03_10_eng

这个元素是OMAP系列电源管理驱动,低功耗芯片特有的驱动。


1.1.16 c6run_0_98_03_03文件夹

    这个是一个重要的元素,你开发demos的时候用到,见TMS320DM3730_Software_Developers_Guide.pdf里第16页。


1.1.17 c6accel_1_01_00_07文件夹

    这个是一个重要的元素,你开发demos的时候用到,见TMS320DM3730_Software_Developers_Guide.pd里第18页。c6accel_1_01_00_07\dsp\libs里边有很多优化的LIB,适合图像处理和分析。这个东西非常有用,包括DM8168DM8148这些平台的软件都有这个东西。c6accel_1_01_00_07\dsp\libs里边的C64P_LIBPLUS.libfastrts64x.libIQmath_c64x+.libIQmath_RAM_c64x+.libvlib.l64p等等,凡是深入做过DSP算法的工程师对这些TI 优化的LIB肯定不陌生,以前开发DM6446是没有这些好东西的。c6accel_1_01_00_07\dsp\alg提供算法的例子,按照CCS工程的模式管理,TI是照顾一下那些在CCS上开发算法的工程师的感受。


1.1.18 codec-engine_2_26_02_11

   CodecengineTI DAVINCI双核的核心思想,codec-engine_2_26_02_11\packages\ti\sdo\ce里边有很多算法接口,比DM6446多了一个vidanalytics,设计到图像分析LIB


1.1.19 codecs-omap3530_4_02_00_00

这个codecs-omap3530_4_02_00_00是属于codec-engine的一个特例,里边有很多好东西,比如packages\ti\sdo\codecs 里边的h264ench264dec jpegencg711encpackages\ti\sdo\server\cs就是DSP SERVER的配置,注意里边的相关脚本文件。

至于CODECS机制的原理有几个pdf文档(sprued5.pdfsprued6.pdfspruec8.pdfsprue67.pdfspraae7.pdf)TMS320 DSPAlgorithm Standard算法标准提到的:SPRU352.pdfSPRU360.pdfSPRU361.pdfspru424.pdf估计也没有人去下载看,这个spraae7.pdf文档还提到一个CODEC机制的例子spraae7b.zip。要想成为骨灰级双核算法工程师入门,这些都需要好好看看。很多人问在这个CODECS机制里DSP算法能不能使用malloc申请内存,我们说这是可以,它指向dvsdk4_03\codecs-omap3530_4_02_00_00\packages\ti\sdo\server\cs\server.tcf里的定义的bios.DDR2.heapSize   = 0x500000TI默认很小才128K,所以你malloc大于128K就崩溃了),而DDR2的段在memmap.tci定义。不过大的空间申请TI不建议这样使用。


1.1.20 dmai_2_20_00_15

这个是一个重要的元素,你开发demos的时候用到,见TMS320DM3730_Software_Developers_Guide.pd里第20页。里边packages\ti\sdo\dmai\apps有很多如何直接在ARM调用DSP的例子,注意如果你要编译dmai\apps\video_encode_io的例子,就必须使用dmai\ce目录下的Venc_org.c_bkVenc_org.h_bk(记得改回名字Venc.cVenc.h),而当前Venc.cVenc.h被我们修改过满足从ARM端传输参数给DSP了,和encode例子配合的,更完美。


1.1.21 dvsdk-demos_4_02_00_01

encode是进行H264 encode D1例子,可以D1 encode和音频输入G711 encode,带显示输出;

decode可以进行H264 DECODEG711 DECODE

edge_detection是一个如何使用c6accel的例子,如何使用VLIB


1.1.23 filesystem

DM3730的文件系统,包括NFS文件系统和对应生成ubifs的工具;


1.1.24 dvtb_4_20_18

    这个也是一个CODEC应用的特例。


1.1.25 example-applications

    有关matrix-gui-e-1.3的开发包,主要是QT+html5框架的GUI图形界面开发接口,可扩展性非常强大。


1.1.26 graphics-sdk_4.03.00.02

DM3730集成PowerVR SGX530 GPU软核,本目录为该GPU模块内核态及用户态驱动(OpenGL ES1.0、OpenGL ES2.0、OpenCV实现)及一些OpenGL在移动设备和PC设备的demo程序;


1.1.27 gstreamer-ti_svnr919

   著名流媒体开源软件框架,编译出来为gst-launch等一系列命令行工具,可以通过Linux V4L2视频框架采集的视频及ALSA音频框架采集的音频通过tcp/udp/rtp/rtsp等流媒体传输协议构建一个流媒体服务器,而其他终端上的流媒体体播放器则可以访问该流媒体服务器,如何利用好该开源框架,将会使开发工作达到事半功倍的效果。


总的来说,dvsdk-demos_4_02_00_01里边的例子就是LINUX的上层应用软件,而DMAI是中间件,也是LINUX深一层的应用程序,是上层应用软件通过DMAI调用codec-enginedsplinkframework的等元素。其实双核就是ARMHOST,而DSP只是一个屏蔽的外围设备,ARM端通过初始化和调用一个函数就可以访问DSP了,DSP处理的结果就放到共享内存里供ARM使用。


总结:

   TIDSP是个强大的好东西,特别非常适合自己开发算法的中国工程师(当然绝大部分算法都是COPY移植过来的),因为编程灵活,支持C语言,开发成本非常低(相对FPGA)。在嵌入式领域,处理数字信号算法等等,目前COTEX-A15 1.4G都跑不赢800MHzC64+。当然支持浮点的C674XC66X  系列DSP就更恐怖了。跟我们桐烨科技合作的一些博导,对这方面感触非常深。其实,应用TI DSP,他们还没有完全达到骨灰级的水平,因为很多片上资源和优化LIB都没用上。

下转博文《TI-Davinci开发系列之八x-loader工作流程分析》。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TI达芬奇数字媒体处理器DM3730资料汇总 DM3730Digital Media Processors.pdf: 讲解DM3730的硬件资源及电器特性。 DM3730Digital Media Processors Silicon Revisions.pdf 讲解DM3730的硬件资源及特性勘误修正。 DM37x Multimedia Device Technical Reference Manual.pdf 这是一个非常重要的文档,在以后的编程中涉及到硬件的地方都需查看这个手册。手册中详细讲解了各片上资源的工作方式,配置寄存器地址及配置功能。 AM37xDM37x Schematic Checklist.pdf 文档里有一网络连接,这个连接可以带起找到最新的图解列表,推荐一些电器连接。 xDAIS-DM(Digital Media)User Guide.pdf 本文讲解了数字媒体开发的一个标准。xDAIS 是一个标准,它定义了TI DSP算法接口的标准。这样大大提高了DSP算法软件的通用性。DSP算法工程师要写出能被ARM通过Codec Engine调用的算法,必须保证自己的算法接口符合这个标准。因此,DSP算法工程师也必须了解这个软件模块。 Using DMA with Framework Components for'C64x+.pdf xDAIS DSKT2 User's Guide.pdf 本文档的目的是描述xDAIS DSKT2模块算法支持和配置api。DSKT2是符合xDAIS标准的一个模块,用来管理分配内存的。 Framework Components是TI提供的一个软件模块,负责DSP侧的memory 和DMA资源管理。因此,DSP算法工程师需要了解这个 软件模块。可以登录如下链接。 http://tiexpressdsp.com/wiki/index.php?title=Framework_Components_FAQ Framework Components DMAN3/ACPY3 Users Guide 查看如下链接 http://processors.wiki.ti.com/index.php/Framework_Components_DMAN3/ACPY3_Users_Guide TMS320DM3730_Software_Developers_Guide.pdf 如果你致力成为一个基于Linux的应用开发工程师,那么这个文档你必须详细阅读。 本文讲解了基于Linux开发环境的软件开发向导,他能帮你快速的掌握整个软件开发的整体流程,并讲解了几个例程供你参考。 Codec_Engine_Application_Developer_User's_Guide.pdf 如果你致力成为一个ARM侧的嵌入式系统工程师,那么这个文档你必须详细阅读。 本文讲解了基于嵌入式操作系统的应用程序开发人员不必关注DSP侧的实现细节,只需按照一定的规范调用API,就可以完成 DSP算法的操作。这就类似于把DSP完全看成一个黑盒子。 CodecEngine_Server_Integrator_UserGuide.pdf 如果你致力成为一个DSP侧的系统工程师,那么这个文档你必须详细阅读。 本文讲解了如何按照一定的标准配置DSP/BIOS以及其他的配置,而创建一个DSP侧的编解码服务端。以便于为ARM侧服务。其 中涉及DSP/BIOS实时操作系统的使用,算法工程的算法集成,任务分配等等。 Codec Engine Algorithm Creator User's Guide.pdf 如果你致力成为一个算法工程师,那么这个文档你必须详细阅读。 本文讲解了如何把自己的算法按照xDM标准封装成算法库,以便于使用CE的编解码服务应用工程师调用。 关于算法工程师更多的资料如下: TMS320 DSP Algorithm Standard Rulesand Guidelines.pdf TMS320 DSP Algorithm Standard API Reference (SPRU360).pdf TMS320 DSP Algorithm Standard Developer’s Guide (SPRU424).pdf 如果你是硬件工程师那么你可以到下面这个链接,查看关于DM37x 的硬件设计。 http://processors.wiki.ti.com/index.php/DM37x_Hardware_Design_Guide 如果你是软件工程师那么你可以到下面链接,查看关于DM37x Software Design Guide http://processors.wiki.ti.com/i

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值