1、DVSDK安装
本文提供的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
2、DVSDK配置
(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-boot的nfs环境变量参数为虚拟机的默认IP地址。
(6) 设置内存的参数为默认的128MB。
(7) 设置内核加载方式为默认的TFTP。
(8) 设置文件加载方式为默认的NFS。
(9) 配置完成。
3、DVSDK编译
(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.ko、dm365mmap.ko、cmemk.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/targetfs。U-Boot的mem参数设置为"mem=32M@0xc0000000 mem=64M@0xc4000000",这样做是为了给DSP开辟一块32MByte的内存空间,其他参数保持不变。假如使用的是256MByte的DDR2,U-Boot的mem参数设置为"mem=32M@0xc0000000 mem=192M@0xc4000000"。具体设置请参考下图NFS的设置。
4、DVSDK例子演示
以下演示均使用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.ko、dm365mmap.ko、cmemk.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所需驱动模块,假如在此之前其他程序没有加载过CMEM、DSPLink、LPM等驱动模块,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 ApplicationInterface,DMAI 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格式文件中分辨率为480x272的30帧图像编码为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编解码
使用GStreamer做H.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编解码
使用GStreamer做MPEG-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