This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM368-IPNC CMEMK load error

Hi Engineers

My system is based on the DM368-IPNC and we make our own board.

Using Ver2.0 s/w, most of function is OK but after updating Ver2.5, there is an error on CMEMK loading.

Please kindly help me solve this problem.

In the middle of booting process

 << DM368-IPNC Verion 2.0 >>  ==> It's OK

CMEMK module: built on Dec 21 2010 at 12:17:18
  Reference Linux version 2.6.18
  File /home/pine/IPNetCam/dvsdk_2_10_01_18/linuxutils_2_24_03/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c
allocated heap buffer 0xc4000000 of size 0x5200000
CMEM Range Overlaps Kernel Physical - allowing overlap
CMEM phys_start (0x1000) overlaps kernel (0x80000000 -> 0x82e00000)
cmemk initialized

 << DM368-IPNC Version 2.5 >> ==> It's Error
CMEMK module: built on Dec 30 2010 at 21:01:51
  Reference Linux version 2.6.18
  File /home/pine/IPNetCam2.5/dvsdk_2_10_01_18/linuxutils_2_24_03/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c
CMEM Range Overlaps Kernel Physical - allowing overlap
CMEM phys_start (0x83000000) overlaps kernel (0x80000000 -> 0x88000000)
CMEMK Error: Failed to request_mem_region(0x83000000, 83886080)
insmod: cannot insert `cmemk.ko': Bad address (-1): Bad address

Thanks in advance and

Happy New Year.!!!!!!

Hennessy

 

 

  • It appears that you are using different u-boot "mem=##M" parameters for your "OK" and "Error" runs.  Since you haven't listed your loadmodules.sh (with the "insmod cmemk.ko" command) or your u-boot bootargs I can only infer them, but here are some observations...

    In the OK case, we get a hint of your "mem=##M" setting - since the CMEM info lists the kernel address range as (0x80000000 - 0x82e00000) - as being "mem=46M".

    In the Error case, that same hint implies "mem=128M" (0x80000000 - 0x88000000), and the "allowing overlap" message shows that your insmod contained "insmod cmemk.ko phys_start=0x83000000".  The failed request_mem_region() also indicates that the Linux kernel owns this area, and indicates that your trying "phys_start=0x83000000 phys_end=0x8b000000".

    If you want to start CMEM memory at 0x83000000 then you will need to ensure that the u-boot parameter is at most "mem=48M".  If you want the Linux kernel to go from 0x80000000 - 0x88000000 then you will need to have phys_start be 0x88000000 or greater.

    Regards,

    - Rob

  • Henessey,

    As Rob mentioned, the issue is with the bootargs of "mem=##M". In ver 2.5 of IPNC release, we have made mem=48M and hence the CMEM changes are done accordingly. Looks like you might not have updated the bootargs. Please refer to the user guide and check if all the bootargs are as per the document. Also, if you need further details, please share your bootargs and complete boot log in passing and failing case and we can look into it.

    Regards,

    Anshuman

    PS: Please mark this post as verified, if you think it has answered your question. Thanks.

  • Dear Mr Robert , Anshuman.

    When i changed the bootarg  "mem=48M", like your explanation, problem was disappeared.

    I really appreciate your kind help.

    Hennessy.

     

     

  • HI

    Maybe you can set bootargs like this :set boot atgs ''mem=48M@0x80000000 console=ttyS0,115200n8 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",you must add 0x80000000 after 'mem=48M'.