公司之前的demo板,基于DM368 + 海力士128M DDR + 三星128M Flash + TVP5150 AD解码器;
公司自己做的板子, 基于DM368 + 镁光256M DDR + 256M Flash + TVP5158 AD解码器;
UBL、u-boot中相关DDR的代码已经根据镁光256M DDR作了调整,内核和文件系统还有应用,先不作更改放到板子上,测试系统,后续的驱动、应用等再更改。目前系统启动后出现如下问题:
======Run application sctrip file=====
=====cd /dm368/=====
CMEMK module: built on Mar 24 2011 at 19:34:57
Reference Linux version 2.6.32
File /sdk/build/DVSDK_4_02/4_02_00_06/arago-install/arago-tmp/work/dm365-evm-none-linux-gnueabi/ti-linuxutils-1_2_26_01_02-r52d/linuxutils_2_26_01_02/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c
allocated heap buffer 0xc8000000 of size 0x4400000
heap fallback enabled – will try heap if pool buffer is not available
CMEM Range Overlaps Kernel Physical – allowing overlap
CMEM phys_start (0x1000) overlaps kernel (0x80000000 -> 0x83c00000)
cmemk initialized
IRQK module: built on Mar 24 2011 at 19:35:11
Reference Linux version 2.6.32
File /sdk/build/DVSDK_4_02/4_02_00_06/arago-install/arago-tmp/work/dm365-evm-none-linux-gnueabi/ti-linuxutils-1_2_26_01_02-r52d/linuxutils_2_26_01_02/packages/ti/sdo/linuxutils/irq/src/module/irqk.c
irqk initialized
EDMAK module: built on Mar 24 2011 at 19:35:06
Reference Linux version 2.6.32
File /sdk/build/DVSDK_4_02/4_02_00_06/arago-install/arago-tmp/work/dm365-evm-none-linux-gnueabi/ti-linuxutils-1_2_26_01_02-r52d/linuxutils_2_26_01_02/packages/ti/sdo/linuxutils/edma/src/module/edmak.c
=====run app=====
cksic login: Mount TF Card OK! (/dev/mmcblk0p1)
insmod: can't insert 'cmemk.ko': File exists
insmod: can't insert 'irqk.ko': File exists
insmod: can't insert 'edmak.ko': File exists
insmod: can't insert 'dm365mmap.ko': File exists
Encode demo started.
CMEM Error: init: Failed to open /dev/cmem: 'No such device'
CMEM Error: init: Failed to open /dev/cmem: 'No such device'
CMEM Error: CMEM file descriptor -1 (failed 'open()'), ensure CMEMK kernel module cmemk.ko has been installed with 'insmod'CMEM Error: CMEM file descriptor -1 (failed 'open()'), ensure CMEMK kernel module cmemk.ko has been installed with 'insmod'CMEM Error: CMEM file descriptor -1 (failed 'open()'), ensure CMEMK kernel module cmemk.ko has been installed with 'insmod'Failed to allocate memory.
Error: Failed to create buftab
Error: Failed to create video encoder: h264enc
可以看到cmem分配了 (0x80000000 -> 0x83c00000)60M的空间,并初始化成功。后面挂载内核模块的时候出错:
insmod: can't insert 'cmemk.ko': File exists
insmod: can't insert 'irqk.ko': File exists
insmod: can't insert 'edmak.ko': File exists
insmod: can't insert 'dm365mmap.ko': File exists
因挂载cmemk.ko模块失败,导致后面打开/dev/cmem设备失败。
想请教下,DDR大小更改后,上面四个模块为什么挂载失败?是不是因为内存大小更改后,需要重新配置cmem模块?
Chris Meng:
你好,
使用新的DDR配置的UBL,但uboot/uImage/文件系统都使用原来的,应用软件是否能正常运行?
你使用的是DVSDK而不是IPNC的软件?
Chongqing Yuan:
回复 Chris Meng:
孟工:
您好!
我是基于DVSDK_DM365_4_02_00_06开发。
使用新的DDR配置UBL,uboot中,我针对DDR的配置的修改有:
DVSDK目录/psp/u-boot-2010.12/include/configs/davinci_dm365evm.h中,
CONFIG_NR_DRAM_BANKS为8;
PHYS_SDRAM_1_SIZE为256M;
CONFIG_MAX_RAM_BANK_SIZE为32M;
同时,把psp/u-boot-2010.12/board/davinci/common/misc.c中dram_init_banksize()函数和psp/u-boot-2010.12/arch/arm/lib/board.c中的__dram_init_banksize()函数,根据RAM大小和BANK数初始化。
内核从demo移植到kernel未作更改。是否UBL DDR更改后,内核中也要做相应的更改?
如上图,因为cmemk.ko没有正常insmod成功,基于cmem的应用层的代码也是无法启动的。
Chongqing Yuan:
回复 Chongqing Yuan:
Chris Meng:
回复 Chongqing Yuan:
你好,
你能否先回答一下“使用新的DDR配置的UBL,但uboot/uImage/文件系统都使用原来的,应用软件是否能正常运行?”?
你修改Uboot后,应用程序无法正常运行时,uboot里面的配置的参数是否有改动?
DVSDK我不是很熟悉,我用的是IPNC的软件。
Chongqing Yuan:
回复 Chris Meng:
孟工:
您好!
您说的“使用新的DDR配置的UBL,但uboot/uImage/文件系统都使用原来的,应用软件是否能正常运行?”这样的问题,我没有尝试。
以下的一条关于cmem的链接:
http://wenku.baidu.com/link?url=xziKKqZKAlUR2kiwzY6-kVk51n3hVGmRy1qbjblVS-xsqWhZR1krKghTj0W6FVZTBFPImZBb_-t9W43KXRcGwAQ-rk5hSVLJpV1eMap3JHy
新板子更换DDR,我除了修改UBL代码,uboot中针对DDR的代码也做如上第三条回复的更改。内核、文件系统及相关视频编解码应用未作更改,直接移植到新板子。
内核、文件系统可以正常启动,别的应用程序也正常,但是在系统进入文件系统,执行/etc/init.d/开机自启动脚本中的挂载cmemk.ko模块时出错,导致一楼出现的错误,从而导致依赖于cmem的视频相关程序不能运行。除了这个错误,板子是能够进入Linux命令行并操作的。
Chongqing Yuan:
回复 Chris Meng:
孟工:
您好!
cmem问题应该是解决了。根据cmem原理,系统是把整块内存分成 Linux System 和 CMEM Device Driver 两块来使用。在uboot bootargs参数中,设置mem=60M,是分配60M 给 Linux System,内存首地址:0X80000000,到0X83C00000。那么剩下的196M内存就分配给 CMEM Device Driver ,首地址:0X83C00000,结束地址:0X90000000,之前的CMEM Error: init: Failed to open /dev/cmem: 'No such device'错误,应该是DDR大小改变后,没有更改insmod cmemk.ko时候的地址造成的。
非常感谢您的及时帮助,问题得以解决,以后有别的问题,再向您请教!
谢谢您!