分类:
2012-05-11 15:36:52
原文地址:davinc架构--环境搭建篇 作者:sjj0412
Davinci架构有硬件环境和软件环境:
硬件环境就不用说,肯定拥有就是支持davinci架构的芯片的开发板,我用的devkit8000,官网把它叫做DVEVM,我开始一直把她当成也是软件,所以到网上一直搜都没搜到,郁闷不以,后来才发现就是开发板,看来这个就是英文理解问题啊。
软件环境,就是一些程序:
因为davinci架构下的软件最好在linux编译,所以肯定要有linux环境,这个是最大的软件。
我使用的是ubuntu9.04,非虚拟机形式,如果不太熟悉linux的,可以用虚拟机安装linux,这样可以和window切换,比较方便,如何安装linux我就不讲了,大家到网上搜就可以,装完linux,就装真正的软件。
它要包含那些程序呢:
.dvsdk_setuplinux_3_00_02_44.bin
这个是核心,算法,VISA,驱动,也就是整个davinci架构的代码都在这里了。
dvsdk_setuplinux_3_00_02_44.bin安装后会生成很多文件夹:
jerry@jerry-laptop:~$ ls /home/jerry/dvsdk_3_00_01_42/
bin dvtb_3_00_016
examples biosutils_1_01_00
framework_components_2_24 c64xplus_mp3dec_1_31_001
ceutils_1.06 linuxlibs
linuxutils_2_24_02 kernel_binaries
cg_xml_v2_12_00 local_power_manager_1_24
clips Makefile
codec_engine_2_24 Rules.make
dmai_2_00_01_04 targetfs
docs uninstall
dsplink_1_61_03 xdais_6_24
dvsdk_demos_3_00_00_12
其中codec_engine_2_24是最重要的,我们要开发,最好以这个为基础,这里面有一些库,同时一些事例。
2.xdctools_setuplinux_3_15_01_59.bin
//这个是我们编译davinci软件要用的工具。
3.Dsp/bios
dsp端运行的操作系统,因为在dsp运行的算法其实就是一个线程,要有操作系统才能真正跑起来。
4.TI-C6x-CGT-v6.0.16.1.bin
//这个是dsp的交叉编译链,即在linux下生成可以在c6系列dsp上运行的程序。
上面的软件都可以在
下载。
5.arm交叉编译链crossTool.
这个我用的是4.3.2版本,好像官网推荐是arm2008-q1.
可以在下载。
对于是omap3530最好也要下:
这个是一些复杂算法及server。
因为当我们要使用dvsdk_demos编译复杂应用程序时,要用到这里的(server)cs.x64p
当然你还可以下文件系统等等,但是这些都不是必须的。
上面的软件都是直接执行就可以了。
安装以后我们就可以编译了:
配置:
编译前要修改一些配置文件,两个:
1.dvsdk根目录下的Rule.mk
将其中的一些变量路径修改即可,比如
DVSDK_INSTALL_DIR=${HOME}/dvsdk_3_00_01_42
2.更改code_engine/examples/xdcpath.mk
这个也是,要将各种路径设置对。
编译:
进入
:~$cd /home/jerry/dvsdk_3_00_01_42/codec_engine_2_24/examples
/ti/sdo/ce/examples/
jerry@jerry-laptop:~/dvsdk_3_00_01_42/codec_engine_2_24/examples/ti/sdo/ce/examples$ ls
apps buildutils
codecs
extensions servers
大家可以看到主要的关键的三个目录,apps,codecs,servers,分别放着应用程序代码,算法代码,算法服务器代码。
1因为apps也要用到server,故现编译一个servers,我们选择all_codecs
cd servers/all_codecs
然后执行
make clean
make
即可
如果出错,多数是前面配置Rule.mk,和xdcpaht.mk出错了,可以根据错误提示更改过来即可。
编译完后会在bin/ti_platform_xx/下生成来两个.x64p程序。
all_pm.x64P all.x64P
2.编译应用app
cd apps/video_copy
make clean
make
如果没出错,则在bin/ti_platform_xx/下生成来多个.x64p,及.x5vt程序。
app_local.x64P app_local.xv5T app_remote.xv5T
app_local.x64p是应用和算法都在dsp端的程序
app_local.xv5t是应用和算法都在arm端的程序
app_remote.xv5T是应用在arm端,算法在dsp端的程序,这个程序就是上面的all.x64P
然后我们执行:
要执行,肯定要把程序拷贝到开发板上。
将上面的程序都拷贝到开发板上,然后将dsplinkko.ko,cmem.ko,lpm.ko等驱动也拷贝到开发板,同时写一个加载驱动的脚本loadmodule.sh。
脚本文件内容如下:
#insert cmem driver
Insmod cmemk.ko phys_start=0x85800000 phys_end=0x86000000 pools=20x4096,10x131072,2x1048576
# insert DSP/BIOS Link driver
insmod dsplinkk.ko
# make /dev/dsplink
rm -f /dev/dsplink
mknod /dev/dsplink c `awk "\\$2==\"dsplink\" {print \\$1}" /proc/devices` 0
# insert Local Power Manager driver
insmod lpm_omap3530.ko
rm -f /dev/lpm0
mknod /dev/lpm0 c `awk "/lpm/ {print \\$1}" /proc/devices` 0
然后执行这个脚本./loadmodule.sh
执行上面的脚本很有可能会出错,这是驱动版本和内核版本不匹配问题
只需重新编译驱动即可,这个会在下面章节讲解。
如果没有问题,然后就可以执行应用程序了。
./app_remote.xv5t.