TI中文支持网
TI专业的中文技术问题搜集分享网站

DM368板子更换DDR后问题

    公司之前的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时候的地址造成的。
 
    非常感谢您的及时帮助,问题得以解决,以后有别的问题,再向您请教!
 
    谢谢您!

赞(0)
未经允许不得转载:TI中文支持网 » DM368板子更换DDR后问题
分享到: 更多 (0)