本文章整理于网络,不知原作者信息,如有侵权请联系本人(
http://blog.csdn.net/dyzok88)注明,谢谢。
本文操作适用于dvsdk_3_00_02_44版本,新版dvsdk_4与之差别很大,请各位读者知晓。
1. 软件安装
a) 安装dsp编译工具
i.
在windows下复制 TI-C6x-CGT-v6.0.16.1.bin 到与虚拟机共享的share目录
ii.
起动虚拟机,起动控制台
iii.
输入 cd ~/workdir/ 进入workdir目录
iv.
输入 chmod +x TI-C6x-CGT-v6.0.16.1.bin 设定可执行属性
v.
输入 ./TI-C6x-CGT-v6.0.16.1.bin 安装
vi.
安装过程中选择安装路径时,输入 /home/realtimedsp/workdir/cg6x_6_0_16即可
b) 安装 xdc 编译工具
i.
在windows下复制 xdctools_setuplinux_3_15_01_59.bin 到与虚拟机共享的share目录
ii.
起动虚拟机,起动控制台
iii.
输入 cd ~/workdir/ 进入workdir目录
iv.
输入 chmod +x xdctools_setuplinux_3_15_01_59.bin 设定可执行属性
v.
输入 ./xdctools_setuplinux_3_15_01_59.bin 安装
vi.
安装过程中选择安装路径时,输入 /home/realtimedsp/workdir/xdctools_3_15_01_59即可
c) 安装 dsp/bios 编译工具
i.
在windows下复制 bios_setuplinux_5_33_06.bin 到与虚拟机共享的share目录
ii.
起动虚拟机,起动控制台
iii.
输入 cd ~/workdir/ 进入workdir目录
iv.
输入 chmod +x bios_setuplinux_5_33_06.bin 设定可执行属性
v.
输入 ./bios_setuplinux_5_33_06.bin 安装
vi.
安装过程中选择安装路径时,输入 /home/realtimedsp/workdir/bios_5_33_06即可
d) 安装 dvsdk
i.
在windows下复制 dvsdk_3_00_02_44.tar.gz 到与虚拟机共享的share目录
ii.
起动虚拟机,起动控制台
iii.
输入 cd ~/workdir/omap3530/project 进入project目录
iv.
输入 tar -xvf /mnt/windows/dvsdk_3_00_02_44.tar.gz 解压dvsdk工程到本目录下
2. 修改环境配置
a) 配置dvsdk_3_00_02_44/codec_engine_2_24/examples/xdcpaths.mak:
i. 设定xdc用到的环境变量,注意使用绝对路径
设定CE_INSTALL_DIR := /home/realtimedsp/workdir/omap3530/project/dvsdk_3_00_02_44/codec_engine_2_24
设定XDC_INSTALL_DIR := /home/realtimedsp/workdir/xdctools_3_15_01_59
设定BIOS_INSTALL_DIR := /home/realtimedsp/workdir/bios_5_33_06
设定DSPLINK_INSTALL_DIR:= /home/realtimedsp/workdir/omap3530/project/dvsdk_3_00_02_44/dsplink_1_61_03/packages
设定XDAIS_INSTALL_DIR := /home/realtimedsp/workdir/omap3530/project/dvsdk_3_00_02_44/dmai_2_00_01_04
设定FC_INSTALL_DIR := /home/realtimedsp/workdir/omap3530/project/dvsdk_3_00_02_44/framework_components_2_24
设定CMEM_INSTALL_DIR := /home/realtimedsp/workdir/omap3530/project/dvsdk_3_00_02_44/linuxutils_2_24_02
设定BIOSUTILS_INSTALL_DIR := /home/realtimedsp/workdir/omap3530/project/dvsdk_3_00_02_44/biosutils_1_01_00
设定EDMA3_LLD_INSTALL_DIR := /home/realtimedsp/workdir/omap3530/project/dvsdk_3_00_02_44/edma3_lld_01_10_00_01
设定LPM_INSTALL_DIR := /home/realtimedsp/workdir/omap3530/project/dvsdk_3_00_02_44/local_power_manager_1_24
ii. 如果某个工具不存在,又不需要则注释掉即可,同时注释掉跟这个目录相关的语句
iii. 配置arm编译器路径
设定CGTOOLS_V5T := /home/realtimedsp/workdir/arm-2009q1
iv. 配置dsp编译器的路径
设定CGTOOLS_C64P := /home/realtimedsp/workdir/cg6x_6_0_16
设定CGTOOLS_C674 := /home/realtimedsp/workdir/cg6x_6_0_16
3. Dvsdk编译环境配置
a) 输入gedit rules.make
设定DVSDK_INSTALL_DIR=${HOME}/workdir/omap3530/project/dvsdk_3_00_02_44
设定 CODEGEN_INSTALL_DIR=/home/realtimedsp/workdir/cg6x_6_0_16
设定 XDC_INSTALL_DIR=/home/realtimedsp/workdir/xdctools_3_15_01_59
设定 BIOS_INSTALL_DIR=/home/realtimedsp/tools/bios_5_33_06
设定 LINUXKERNEL_INSTALL_DIR=/home/realtimedsp/workdir/omap3530/project/linux-02.01.03.11
设定UBOOT_INSTALL_DIR=/home/realtimedsp/workdir/omap3530/projects/uboot-02.01.03.11
设定CSTOOL_DIR=/home/realtimedsp/workdir/arm-2009q1
设定EXEC_DIR=${HOME}/workdir/filesys/opt/dvsdk/$(PLATFORM)
4.DMAI 编译环境设置
DVSDK_3_00_INSTALL_DIR = $(HOME)/workdir/omap3530/projects/dvsdk_3_00_02_44
CE_INSTALL_DIR_o3530_al =
$(DVSDK_3_00_INSTALL_DIR)/codec_engine_2_24
LINUXKERNEL_INSTALL_DIR_o3530_al =
$(HOME)/workdir/lsp
CROSS_COMPILE_o3530_al =
$(HOME)/workdir/arm-2009q1/bin/arm-none-linux-gnueabi-
XDC_INSTALL_DIR_o3530_al =
$(HOME)/workdir/xdctools_3_15_01_59
EXEC_DIR_o3530_al =
$(HOME)/workdir/filesys/opt/dvsdk/$(PLATFORM)
4. 编译 dvsdk
a)
以上设定完成后,回到 /home/realtimedsp/workdir/omap3530/project/dvsdk_3_00_02_44 目录下,先输入 make clean, 清除以前编译的临时文件,在 输入 make 对 整个的dvsdk工程编译一次。这里会编译cmem组件和lpm组件模块,为以后的算法编译做准备
b)
编译dsplink, 在当前dvsdk根目录下,输入 make dsplink_clean,先清除以前编译产生的临时文件,再输入 make dsplink 编译dsplink组件模块
5. 程序开发
a) codec程序开发
开发Ti程序最简单的方法,复制例程,然后在本例程基础上修改。以下以制作直方图统计为例,说明操作步骤如下:
i. 复制
复制dvsdk_3_00_02_44/codec_engine_2_24/examples/ti/sdo/ce/examples/codecs/目录下的videnc_copy目录, 改变本目录的安全属性,使一般用户可读写。
ii. 改目录名和文件名
首先将复制的目录名改为videnc_histogram, 然后进入目录做如下更改
videnc_copy.c 改为 videnc_histogram.c
VIDENC_COPY.xdc 改为VIDENC_HISTOGRAM.xdc (注意大写)
VIDENC_COPY.xs 改为VIDENC_HISTOGRAM.xs (注意大写)
videnc_copy_ti.h 改为videnc_histogram_ti.h
videnc_copy_ti_priv.h 改为videnc_histogram_ti_priv.h
iii. 改文件内容
1. Makefile内容不变
2. package.bld: 打开package.bld, 查找替换文件中的copy 为 histogram
3. Package.mak 是自动生成的文件,不变。
4. Package.xdc: 打开Package. xdc, 改 copy为histogram, 改COPY为 HISTOGRAM
5. Package.xs: 打开Package.xs, 查找替换文件中的copy 为 histogram, 查找替换文件中的COPY 为 HISTOGRAM
6. Videnc_histogram.c: 打开videnc_histogram.c, 查找替换文件中的copy 为 histogram,查找替换文件中的COPY 为 HISTOGRAM
7. VIDENC_HISTOGRAM.xdc: 打开VIDENC_HISTOGRAM.xdc,查找替换文件中的COPY 为 HISTOGRAM
8. VIDENC_HISTOGRAM.xs不变
9. videnc_histogram_ti.h: 打开videnc_histogram_ti.h,查找替换文件中的COPY 为 HISTOGRAM
10. videnc_histogram_ti_priv.h: 打开videnc_histogram_ti_priv.h,查找替换文件中的COPY 为 HISTOGRAM
iv. 添加算法
打开Videnc_histogram.c
想加算法的话,就用自己的算法替换第 333 行到 381 行的复制语句,不做替换是就是个简单的内存复制,我们暂不加自己的算法。
v.
编译
在命令窗口中进入本工程的根目录, 先调用make clean清过程文件,再调用用make 生成codec库, 这时在lib目录里可以生成videnc_histogram.a64P等库文件,如果没有生成这些文件,则说明之前中间哪一步做错了。
b) server程序开发
开发Ti程序最简单的方法,复制例程,然后在本全程基础上修改。以下以制作直方图统计为例,说明操作步骤如下:
i. 复制
复制dvsdk_3_00_02_44/codec_engine_2_24/examples/ti/sdo/ce/examples/servers/目录下的all_codecs目录, 改变本目录的安全属性,使一般用户可读写。
ii. 改目录名和文件名
首先将复制的目录名改为video_histogram, 然后进入目录做如下更改
改all.cfg 为video_histogram.cfg
改all.tcf 为video_histogram.tcf
iii. 改文件内容
1.
link.cmd: 不变
2.
main.c: 查找替换文件中的all_codecs为 video_histogram
3.
package.bld: 查找替换文件中的all_codecs为 video_histogram, 替换 serverName = "all" 为 serverName = "video_histogram"
4.
package.mak: 不变
5.
package.xdc: 查找替换文件中的all_codecs为 histogram
6.
video_histogram.cfg: 查找替换文件中的all_codecs 为 videnc_histogram, 查找替换videnc_copy为videnc_histogram,查找替换文件中的VIDENC_COPY 为 VIDENC_HISTOGRAM
iv. 编译
在命令窗口中进入本工程的根目录, 先调用make clean清过程文件,再调用用make 生成server库, 这时在工程的bin/ti_platforms_evm3530目录下可以生成video_histogram.x64P库文件,如果没有生成这个文件,则说明之前中间哪一步做错了。
c) 应用程序开发
开发Ti程序最简单的方法,复制例程,然后在本全程基础上修改。以下以制作直方图统计为例,说明操作步骤如下:
i. 复制
复制dvsdk_3_00_02_44/codec_engine_2_24/examples/ti/sdo/ce/examples/apps/目录下的video_copy目录, 改变本目录的安全属性,使一般用户可读写。
ii. 改目录名
首先将复制的目录名改为video_histogram, 然后进入目录做如下更改
iii. 改内容
1.
remote.cfg : 查找替换文件中的video_copy为 video_histogram, 替换 all_codecs 为 video_histogram
2.
local.cfg : 查找替换文件中的viddec_copy为 viddec_histogram, 替换 VIDDEC_COPY 为 VIDDEC_HISTOGRAM, 替换 video_copy为 video_histogram,
3.
app.c
查找videnc_copy, 替换为videnc_histogram, 查找 video_copy, 替换为 video_histogram
iv. 编译
在命令窗口中进入本工程的根目录, 先调用dvsdk_3_00_02_44/codec_engine_2_24/examples/ti/sdo/ce/examples/apps/video_histogram/make clean清过程文件,再调用用dvsdk_3_00_02_44/codec_engine_2_24/examples/ti/sdo/ce/examples/apps/video_histogram/make 生成可执行程序, 这时在工程的/bin/ti_platforms_evm3530目录下可以生成app_remote.xv5T文件,如果没有生成这个文件,则说明之前中间哪一步做错了。
6. 利用nfs起动测试程序
i. 建立测试目录
虚拟机控制台下输入 mkdir -p ~/workdir/filesys/opt/dvsdk/xdm_test 建立测试目录
ii. 复制测试文件
a. 复制 cmem.ko, 虚拟机控制台下输入
realtimedsp@realtimedsp-desktop:~$ cp ~/workdir/omap3530/project/dvsdk_3_00_02_44/linuxutils_2_24_02/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.ko ~/workdir/filesys/opt/dvsdk/xdm_test/
b. 复制 dsplink.ko, 虚拟机控制台下输入
realtimedsp@realtimedsp-desktop:~$ cp ~/workdir/omap3530/project/dvsdk_3_00_02_44/dsplink_1_61_03/packages/dsplink/gpp/export/BIN/Linux/OMAP3530/RELEASE/dsplinkk.ko ~/workdir/filesys/opt/dvsdk/xdm_test/
c. 复制 lpm_omap3530.ko, 虚拟机控制台下输入
realtimedsp@realtimedsp-desktop:~$ cp ~/workdir/omap3530/project/dvsdk_3_00_02_44/local_power_manager_1_24/packages/ti/bios/power/modules/omap3530/lpm/lpm_omap3530.ko ~/workdir/filesys/opt/dvsdk/xdm_test/
d. 复制 sdmak.ko, 虚拟机控制台下输入
realtimedsp@realtimedsp-desktop:~$ cp ~/workdir/omap3530/project/dvsdk_3_00_02_44/linuxutils_2_24_02/packages/ti/sdo/linuxutils/sdma/src/module/sdmak.ko ~/workdir/filesys/opt/dvsdk/xdm_test/
e. 复制loadmodules.sh, 模块加载/卸载脚本,虚拟机控制台下输入
realtimedsp@realtimedsp-desktop:~$ cp ~/workdir/omap3530/project/dvsdk_3_00_02_44/codec_engine_2_24/examples/apps/system_files/OMAP3530/*.sh /home/realtimedsp/workdir/filesys/opt/dvsdk/xdm_test/
f. 修改loadmodules.sh,输入
realtimedsp@realtimedsp-desktop:~$ gedit ~/workdir/filesys/opt/dvsdk/xdm_test/loadmodules.sh
将第58行内容改动如下
insmod cmemk.ko phys_start=0x84e00000 phys_end=0x86000000 pools=20x4096,10x131072,2x1048576,1x256000,8x829440,2x131072,10x4096
g. 复制arm应用程序 虚拟机输入
realtimedsp@realtimedsp-desktop:~$ cp ~/workdir/omap3530/project/dvsdk_3_00_02_44/codec_engine_2_24/examples/ti/sdo/ce/examples/apps/video_histogram/bin/ti_platforms_evm3530/app_remote.xv5T ~/workdir/filesys/opt/dvsdk/xdm_test/
h. 复制arm应用程序 虚拟机输入
realtimedsp@realtimedsp-desktop:~$ cp ~/workdir/omap3530/project/dvsdk_3_00_02_44/codec_engine_2_24/examples/ti/sdo/ce/examples/servers/video_histogram/bin/ti_platforms_evm3530/video_histogram.x64P ~/workdir/filesys/opt/dvsdk/xdm_test/
i. 复制测试用数据文件,虚拟机输入
realtimedsp@realtimedsp-desktop:~$ cp ~/workdir/omap3530/project/dvsdk_3_00_02_44/codec_engine_2_24/examples/ti/sdo/ce/examples/apps/video_histogram/in.dat /home/realtimedsp/workdir/filesys/opt/dvsdk/xdm_test/
j. 复制内核到tftpboot目录,没有则按照使用说明书编译一个
realtimedsp@realtimedsp-desktop:~$ cp ~/workdir/lsp/arch/arm/boot/uImage ~/workdir/tftpboot
7. 在ICETEK-OMAP3530-EVM实验箱上测试和运行
i.
断除ICETEK-OMAP3530-EVM系统电源,关闭实验箱左上角电源总开关。
ii.
取出ICETEK-OMAP3530-EVM系统配件箱中的串口通信电缆;用此线连接ICETEK-OMAP3530-EVM板上J26插座和PC机COM1插座。
iii.
取出ICETEK-OMAP3530-EVM系统配件箱中的以太网电缆;用此线连接ICETEK-OMAP3530-EVM板上以太网插座J13和PC机网络插座。
iv.
取出ICETEK-OMAP3530-EVM系统配件箱中的电源连接电缆;用此电缆连接实验箱左侧电源插座和220V交流供电接线插座。
v.
用视频线连接视频前端的摄像头到ICETEK-OMAP3530-EVM板的J33,视频输入
vi.
用lcd排线连接lcd70到evm的U13,做视频输出
vii.
Pc机起动超级终端【Davinci-超级终端】
viii.
插入起动用sd卡到 ICETEK-OMAP3530-EVM 的J16
ix.
开启实验箱总电源,开启ICETEK-OMAP3530-EVM板的电源开关。正常情况下ICETEK-OMAP3530-EVM板上电源指示灯D12将亮起。
x.
观察【Davinci-超级终端】中的显示,当出现计数时,按回车,进行如下操作:
could not establish link
Hit any key to stop autoboot: 0
输入回车以暂停起动
OMAP3_EVM # setenv bootargs 'initcall_debug console=ttyS2,115200n8 noinitrd rw ip=192.168.1.77:192.168.1.103:192.168.1.1:255.255.255.0::eth0:off eth=70:64:66:75:66:6c root=/dev/nfs nfsroot=192.168.1.103:/home/realtimedsp/workdir/filesys, rootdelay=15 mem=78M'
输入起动参数,配置为nfs起动
OMAP3_EVM # tftp 0x80200000 uImage 从tftp下载起动内核
OMAP3_EVM # boot 起动
......
initcall ip_auto_config+0x0/0xe08 returned 0 after 1547694 usecs
initcall ip_auto_config+0x0/0xe08 returned 0 after 1547694 usecs
<6>Waiting 15sec before mounting root device...
Waiting 15sec before mounting root device... 为保证顺利nfs起动,重新插拨一下网线
......
INIT: Entering runlevel: 5
Starting telnet daemon.
Starting syslogd/klogd: done
Starting thttpd. 到这里说明nfs起动已经成功
i.
虚拟机下,起动控制台,输入如下
realtimedsp@realtimedsp-desktop:~$ telnet 192.168.1.77
Trying 192.168.1.77...
Connected to 192.168.1.77.
Escape character is '^]'.
_____ _____ _ _
| _ |___ ___ ___ ___ | _ |___ ___ |_|___ ___| |_
| | _| .'| . | . | | __| _| . | | | -_| _| _|
|__|__|_| |__,|_ |___| |__| |_| |___|_| |___|___|_|
|___| |___|
Arago Project http://arago-project.org omap3evm
Arago 2009.09 omap3evm
omap3evm login: root 以根用户权限登录ICETEK-DM355-EVM嵌入式操作系统
root@omap3evm:~# cd /opt/dvsdk/xdm_test 进入程序测试目录
root@omap3evm:~# ./loadmodules.sh 加载组件,辅助调用dsp用
root@omap3evm:~# ./app_remote.xv5T 起动算法调用程序
ii.
这时程序应该可以运行了,只不过我们的算法现在还没有加入进去,他只是实现了一个视频文件的复制功能,程序运行后会在本目录下生成一个与in.dat一样大小的文件 out.dat,只不过这个复制过程是在dsp端运行的,而文件的读写过程是在arm端进行的。
关闭【Davinci-超级终端】窗口;
关闭【终端】窗口;
退出Ubuntu开发环境;
关闭ICETEK-OMAP3530-EVM系统电源开关;
卸除ICETEK-OMAP3530-EVM与PC机连接的串口电缆;
卸除ICETEK-OMAP3530-EVM与PC机连接的以太网电缆。