首页 > 代码库 > OMAPL138的DVSDK双核开发教程

OMAPL138的DVSDK双核开发教程

1DVSDK安装

       本文提供的DVSDK双核开发步骤的开发环境如下:

PC操作系统:Win7-64bit

虚拟机版本:VMwareWorkstation 7.0.0

Ubuntu版本:Ubuntu10.04-32bit

DVSDK版本:DVSDK-4.03

       DVSDK的安装包dvsdk_omapl138-evm_04_03_00_06_setuplinux可以在OMAPL138资料光盘的tools目录下找到,也可以在TI官网下载。下载前需要注册一个TI账号,注册后才能用账号去下载DVSDK和其他文件。

TI官网下载链接:

http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/dvsdk/DVSDK_4_00/latest/index_FDS.html

1)       将DVSDK软件包拷贝到Ubuntu虚拟机中,然后执行如下语句:

Host#    sudo chmod +xdvsdk_omapl138-evm_04_03_00_06_setuplinux

Host#    ./dvsdk_omapl138-evm_04_03_00_06_setuplinux

2DVSDK配置

1)       执行以下命令设置DVSDK环境变量,此环境变量指明DVSDK的安装路径,请根据DVSDK实际安装路径修改。

Host#    exportDVSDK="/home/tl/ti-dvsdk_omapl138-evm_04_03_00_06/"

2)       执行以下命令进行DVSDK编译设置。

Host#    sudo ${DVSDK}/setup.sh

       此命令运行的是DVSDK安装目录下的setup.sh脚本。

3)       将文件系统安装到默认路径。

4)       设置tftp路径为默认路径。

5)       设置u-bootnfs环境变量参数为虚拟机的默认IP地址。

6)       设置内存的参数为默认的128MB

7)       设置内核加载方式为默认的TFTP

8)       设置文件加载方式为默认的NFS

9)       配置完成。

3DVSDK编译

1)       修改DVSDK顶层目录下Rules.mak文件的58~59行内容为如下。

#LINUXKERNEL_INSTALL_DIR=$(SDK_INSTALL_DIR)/psp/linux-2.6.37-psp03.21.00.04.sdk

LINUXKERNEL_INSTALL_DIR=/home/tl/omapl138/linux-2.6.37//广州创龙OMAPL138开发板适用的linux-2.6.37内核源码路径

       以上操作的作用是将内核源码路径更换为广州创龙开发板适用的linux-2.6.37内核源码路径,务必确保内核源码存在于/home/tl/omapl138/linux-2.6.37目录下。linux-2.6.37源码软件包可以在光盘的Linux目录下找到。

2)       修改DVSDK顶层目录下Makefile文件的3~5行内容为如下:

#DEFAULT_LINUXKERNEL_CONFIG=da850_omapl138_defconfig

DEFAULT_LINUXKERNEL_CONFIG=da850_omapl138_tl_defconfig

DEFAULT_UBOOT_CONFIG=da850evm_config

       修改此处的作用是指明使用的内核配置文件。

3)       进入DVSDK顶层目录,并执行如下命令清理DVSDK源码。

Host# make clean

4)       在DVSDK顶层目录中执行如下命令重新编译DVSDK

Host#    make all

5)       在DVSDK顶层目录中执行如下命令安装DVSDK相关组件到文件系统。文件系统的路径是"/home/tl/targetfs",此路径可以通过Rules.mak的相关行修改。

Host#    sudo make install

       此操作会将DVSDK编译生成的dsplinkk.kodm365mmap.kocmemk.ko等其他组件安装到文件系统。dsplinkk.ko安装在文件系统"/lib/modules/2.6.37/kernel/drivers/dsp"目录下.

       更多应用开发案例请参考DVSDK安装目录中的如下文档:

ti-dvsdk_omapl138-evm_04_03_00_06/docs/OMAPL138_Software_Developers_Guide.pdf

6)       使用光盘中的linux-2.6.37内核镜像和安装有DVSDK双核组件的文件系统启动开发板。文件系统默认是在虚拟机的/home/tl/targetfs/目录下,如用NFS启动文件系统,请务必将U-Boot中的nfsroot设置为文件系统所在路径/home/tl/targetfsU-Bootmem参数设置为"mem=32M@0xc0000000 mem=64M@0xc4000000",这样做是为了给DSP开辟一块32MByte的内存空间,其他参数保持不变。假如使用的是256MByteDDR2U-Bootmem参数设置为"mem=32M@0xc0000000 mem=192M@0xc4000000"。具体设置请参考下图NFS的设置。

 

4DVSDK例子演示

       以下演示均使用DVSDK解压出来的文件系统,默认是在虚拟机的/home/tl/targetfs/目录下。

 

4.1 Matrix Application Launcher GUI演示

       连接LCD触摸屏,开发板上电,在Login处输入root再按回车键进入文件系统,执行以下命令启动MatrixApplication Launcher GUI界面:

Target#        /etc/init.d/matrix-gui-estart

       第一次使用DVSDK解压出来的文件系统,在启动Matrix ApplicationLauncher GUI界面时,需要点击触摸屏进行校准。

       执行以下命令关闭Matrix Application LauncherGUI界面:

Target#        /etc/init.d/matrix-gui-estop

 

       也可以执行以下命令手动启动触摸屏校准程序:

Target#        ts_calibrate

 

4.2 DSPLink Examples演示

       在新产生的文件系统中,默认是不会安装dsplinkk.kodm365mmap.kocmemk.ko这三个驱动,执行以下命令安装此三个驱动程序,以后开机不需要再执行。

Target#        update-modules                              //更新驱动

Target#        modprobe -l                                    //查看是否更新成功

Target#     /etc/init.d/loadmodule-rc start  //载双核通信相关驱动

 

       执行以下命令进入DSPLink Examples所在目录:

Target#        cd /usr/share/ti/ti-dsplink-examples/

 

       各个例子的解释请看用户手册的DSPLINK开发入门或者MCSDK开发入门相关章节。在当前目录执行以下命令运行所有的DSPLinkExamples

Target#        ./ti-dsplink-examples-run.sh

 

4.3 c6Run Example Applications演示

       C6EZRun是一个免费、开源的开发工具,使用户可以在异构的DSP+ARM处理器上无缝地使用DSP。更多详情请登录以下网址:

       http://processors.wiki.ti.com/index.php/C6Run_Project

      

4.3.1 Setup

       执行以下命令重新加载App所需驱动模块,假如在此之前其他程序没有加载过CMEMDSPLinkLPM等驱动模块,unloadmodules.sh脚本可以不用执行。

Target#        ./unloadmodules.sh

Target#        ./loadmodules.sh

 

4.3.2 C6RunApp Examples

       C6RunAppExamples的作用是使用c6runapp工具运行一个DSP程序。

   在当前目录执行以下命令运行一个简单的“hello world例子:

Target#        ./hello_world_arm             //程序运行在ARM

Target#        ./hello_world_dsp             //程序运行在DSP,将信息返回到ARM打印

 

       在当前目录执行以下命令运行浮点性能测试例子:

Target#      ./bench_arm

Target#      ./bench_dsp

Target#      ./cfft_arm

Target#     ./cfft_dsp

4.4 C6Accel Apps演示

       C6AccelApp调用了DSP kernel APIs进行定点/浮点计算,执行以下命令运行测试程序:

Target#        ./loadmodules_omapl138_c6accel.sh            //加载相关内核驱动模块

 

Target#        ./c6accel_app

      所有的测试数据将会保存在benchmarking.txt测试文件中,请输入以下命令查看详细的测试数据:

Target#     cat /usr/share/ti/c6accel-apps/benchmarking.txt

4.5 DMAI Apps 演示

       DMAI全称是Davinci Multimedia ApplicationInterfaceDMAI Apps主要演示音视频、图像等多媒体数据处理能力。执行以下命令进入DMAI Apps目录并重新加载相关内核驱动:

Target#      ./etc/init.d/loadmodule-rc restart

 

4.5.1 Audio

       此例子将AAC文件解码后送往Line out播放,在演示先将耳机接到Line out接口,然后执行以下命令,可以在耳机听到解码后的声音。

Target#        ./audio_decode1_omapl138.x470MV -c aachedec -e decode -i /usr/share/ti/data/sounds/davincieffect.aac -n 1000

 

       执行以下命令可将AAC文件解码为PCM文件:

Target#        ./audio_decode_io1_omapl138.x470MV -c aachedec -e decode -i /usr/share/ti/data/sounds/davincieffect.aac -n 1000-o output.pcm

 

4.5.2 Display

       接上LCD显示屏后执行以下命令,可在LCD上观察到变化的竖条测试图案:

Target#        ./video_display_omapl138.x470MV -y 16 -O lcd --display_buffer 2

 

4.5.2 Video

       执行以下命令可将H.264格式文件30帧解码为YUV格式文件:

Target#        ./video_decode_io2_omapl138.x470MV -c h264dec -e decode -i /usr/share/ti/data/videos/davincieffect_480x272.264-n 30 -o output.yuv

 

       执行以下命令可将YUV格式文件中分辨率为480x27230帧图像编码为H.264 BP格式文件。

Target#        ./video_encode_io1_omapl138.x470MV -c h264enc \

-i output.yuv -o output.264 -r 480x272 -n 30

 

4.5.4 Speech

  执行以下命令将G.711 speech格式文件解码为 PCM格式文件:

Target#        ./speech_decode_io1_omapl138.x470MV -c g711dec -e decode -i /usr/share/ti/data/sounds/davincieffect.g711 -ooutput.pcm

 

       执行以下命令可将以上生成的PCM格式文件重新编码为G.711 speech格式文件:

Target#       ./speech_encode_io1_omapl138.x470MV -c g711enc -eencode -i output.pcm -o output.g711

 

4.5.5 Image

       执行以下命令可将JPEG格式文件解码为YUV格式文件:

Target#        ./image_decode_io1_omapl138.x470MV -c jpegdec -e decode  -i /usr/share/ti/data/images/remi003_422i.jpg -ooutput.yuv

 

       执行以下命令可将上面生成的YUV格式文件重新编码为JPEG格式文件:

Target#       ./image_encode_io1_omapl138.x470MV -c jpegenc -eencode -i output.yuv -o output.jpg -r 720x576 --iColorSpace 3 --oColorSpace 1

       以上参数和YUV文件的配置有关,默认的颜色空间格式是YUV422 ILE。如需了解更多关于此App相关参数请运行以下命令:

Target#        ./image_encode_io1_omapl138.x470MV -h

 

4.6 Qt/Embedded Examples 演示

       DVSDK的文件系统中提供了很多Qt演示程序,

       执行以下命令会运行一个日历表Qt程序,如需停止请按Ctrl+C

Target#        ./calendar -qws -geometry 480x240+0+0

 

4.7  GStreamer Pipelines演示

       GStreamer是一个开源的多媒体框架库。利用它,可以构建一系列的媒体处理模块,包括从简单的ogg播放功能到复杂的音频(混音)和视频(非线性编辑)的处理。

       在进行演示前,请先将LCD显示屏接好,同时将耳机接到Line out接口,然后执行以下命令重新加载相关内核驱动:

Target#        /etc/init.d/loadmodule-rc restart

 

       可以使用以下命令查看GStreamer已支持的开发包:

Target#        gst-inspect

 

4.7.1  H.264编解码

       使用GStreamerH.264编解码测试,命令如下:

Target#      gst-launch videotestsrc num-buffers=1000 ! TIVidenc1 codecName=h264encengineName=codecServer ! filesink location=sample.264 -v         

 

       然后执行以下命令,可以在LCD上看到竖条测试图像和黑白闪烁图像。

Target#      gst-launch filesrc location=sample.264 ! typefind !TIViddec2 ! queue ! TIC6xColorspace engineName=codecServer ! queue !tidisplaysink2 -v    

 

4.7.2 MPEG-4编解码

       使用GStreamerMPEG-4编解码测试,命令如下:

Target#       gst-launch videotestsrc num-buffers=1000 ! TIVidenc1 codecName=mpeg4encengineName=codecServer ! filesink location=sample.m4v -v 

       然后执行以下命令,可以在LCD上看到竖条测试图像和黑白闪烁图像。

Target#      gst-launch filesrc location=sample.m4v ! typefind !TIViddec2 ! queue ! TIC6xColorspace engineName=codecServer ! queue !tidisplaysink2 -v 

 

4.7.3 GStreamer 播放H.264视频

       执行以下命令即可使用GStreamer播放H.264视频,可在LCD看到播放效果。

Target#       gst-launch filesrc location=/usr/share/ti/data/videos/davincieffect_480x272.264! typefind ! TIViddec2 ! queue ! TIC6xColorspace engineName=codecServer ! queue! tidisplaysink2 -v

 

 

4.7.4 GStreamer 播放MPEG-4视频

       执行以下命令即可使用GStreamer播放MPEG-4视频,可在LCD看到播放效果。

Target#      gst-launch filesrc location=/usr/share/ti/data/videos/davincieffect_480x272.mpeg4

 ! typefind ! TIViddec2 ! queue !TIC6xColorspace engineName=codecServer ! queue ! tidisplaysink2 -v

 

4.7.5 GStreamer 播放MPEG-2视频

       执行以下命令即可使用GStreamer播放MPEG-2视频,可在LCD看到播放效果。

Target#      gst-launch filesrclocation=/usr/share/ti/data/videos/davincieffect_480x272.m2v ! TIViddec2codecName=mpeg2dec engineName=codecServer ! queue ! TIC6xColorspace engineName=codecServer! queue ! tidisplaysink2 -v 

 

4.7.6 GStreamer 播放AAC音频

       执行以下命令即可使用GStreamer播放AAC音频,可在耳机上听到播放效果。

Target#     gst-launch filesrc location=/usr/share/ti/data/sounds/davincieffect.aac

num-buffers=100 ! typefind ! TIAuddec1 ! alsasink -v

详细文档请查阅广州创龙使用手册:

http://pan.baidu.com/s/1bnvRJh9?qq-pf-to=pcqq.c2c

 

       更多应用开发案例请参考DVSDK安装目录中的如下文档:

ti-dvsdk_omapl138-evm_04_03_00_06/docs/OMAPL138_Software_Developers_Guide.pdf