如何配置DAVINCI内存在DVEVM上,内存是256M,所以Codec中的例程都是按照256M内存进行配置的。而在,其他一些具体应用中,目标板的内存不一定为256M。所以,内存配置是Davinci开发板上一项重要的技术。
笔者公司的开发板是128M,根据相关的文档,重新配置,编译了程序。在128M开发板上成功运行了Video_copy例程。具体步骤如下: DDR内存是ARM和DSP共享的,从Ox80000000到0x90000000。
内存分为了如下几部分:
1:Linux Partition:在ARM linux是按照4KB进行分页。这部分内存由linux独自使用,由于有虚拟内存,所以开发者不能直接操作内存。
2:CMEM: Contiguous Memory Allocator。用于ARM和DSP之间共享内存。由于linux端上内存采用了虚拟机制,分配的内存可能不是连续的;而DSP端内存没有虚拟内存机制一块内存在物理上是连续的。因此,如果直接将一块内存作为参数传递给DSP端进行处理(从linux端传到DSP端),就得不到正确的结果。因此CMEM就是解决这个问题而出现的。通过
CMEM可以开辟连续的内存,用于ARM和DSP端共享内存。
3:The DDRALGHEAP and DDR Sections:用于CODEC动态开辟内存
4: DDR(DDR2在codec engine1.2): 用于存放DSP端代码端和静态数据。
5:The DSPLINKMEM Section: 用于DSPlink,
6:RESET_VECTOR: 用于DSP RESET vector.必须128直接,起始地址必须是整数M. 因此:总内存=DSP server内存+CMEM+linux内存。后面,是笔者内存的具体配置:
具体步骤:一 DSPlink 1.3需要从新编译才能够运行。
编译步骤如下:
1进入/dsplink_1_30_*/packages/dsplink目录
2打开config/all/CFG_Davinci.TXT 文件
3按照图进行修改。
4.修改 Linux/davinci_mvlpro4.0.mk 中
BASE_BUILDOS:你的linux内核位置,以 "/lsp/ti-davinci"结尾.
BASE_CGTOOLS: 你的ARM端工具位置,以 " arm/v5t_le/bin"结尾。
5设置环境变量: export DSPLINK='你DSPlink位置'
6.编译 gmake -C gpp/src gmake -C dsp/src
7.拷贝到目标板dsplinkk.ko gpp/export/BIN/Linux/Davinci/RELEASE/dsplinkk.ko
二、重新编译 Codec server
1.进 examples/servers/video_copy 目录
2. 拷贝copy ../all_codecs/all.tcf to 到examples/servers/video_copy 目录 video_copy.tcf.
3.修改video_copy.tcf文件,参照上图
4.编译, gmake clean 然后gmake
5.拷贝video_copy.x64p到目标板文件系统上。
三、拷贝应用程序
1.进入examples/apps/video_copy/dualcpu/ 目录
2. 拷贝 app.out 可执行文件到目标板文件系统.(如果是DSPLink 1.40需要重新编译)
3. 拷贝 in.dat 到目标板文件系统
4. 拷贝 cmemk.ko 到目标板文件系统.(位于你DVEVM安装目录下)
5. 拷贝 loadmodules.sh 到目标板文件系统。
6. 修改 loadmodules.sh 。
insmod dsplinkk.ko。后面不要参数。
insmod cmemk.ko。按照图上进行修改。
四、运行程序
1.修改目标板的启动参数: setenv bootargs console=ttyS0,115200n8 root=/dev/nfs mem=64M..你其他参数..
2.重新启动
3.执行./loadmodules.sh
4.执行./app.out. 如果一切正确显示成功。不清楚的地方参考SPRAAQ6.pdf文档。