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.

Error: Loading and starting DSP server 'c6accel_omap3530.x64P' FAILED

Other Parts Discussed in Thread: DM3730, OMAP3530

I can't run c6accel test applicaton on devkit8000 (128mb RAM) with installed Linux 2.6.37 on it. 

All modules runs ok (don't look at dm37x-evm: I used prebuilt rootfs from dm37x DVSDK, but I recompiled kernel with devkit8000_defconfig) 

root@dm37x-evm:/home/c6accel-apps# lsmod
Module Size Used by
lpm_omap3530 6469 0
dsplinkk 125021 1 lpm_omap3530
cmemk 20291 0
root@dm37x-evm:/home/c6accel-apps# ./c6accel_app
******************************************************************************
Sample application for testing kernels in C6Accel started.
******************************************************************************
app: C6accel_create() failed
******************************************************************************
All tests done.
******************************************************************************

I ran this app again with CE_DEBUG=2 option. Please see logs in the attachment 2275.log2.txt

Also in COM port output I saw 

[ 1408.835723] Existing entry's end address is covered by given entry's start & end address., can not create TLB entry for address: [0x86000000] size: [0x1000000]
[ 1408.850860] DSP_init status [0x80008050]

This is kernel command line 

Uncompressing Linux... done, booting the kernel.
[ 0.000000] Linux version 2.6.37 (root@chet-desktop) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #1 Tue Jun 26 13:33:27 MSK 2012
[ 0.000000] CPU: ARMv7 Processor [411fc083] revision 3 (ARMv7), cr=10c53c7f
[ 0.000000] CPU: VIPT nonaliasing data cache, VIPT nonaliasing instruction cache
[ 0.000000] Machine: OMAP3 Devkit8000
[ 0.000000] Memory policy: ECC disabled, Data cache writeback
[ 0.000000] OMAP3430/3530 ES3.1 (l2cache iva sgx neon isp )
[ 0.000000] SRAM: Mapped pa 0x40200000 to va 0xfe400000 size: 0x10000
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 20320
[ 0.000000] Kernel command line: console=ttyO2,115200n8 root=/dev/mmcblk0p2 rw rootwait mem=80M@0x80000000 128M@0x88000000

Would you help me please to resolve this issue.

  • Does the devkit8000_defconfig memory map different from the DM3730 EVM. Can you check what are the changes.

    If the memory map has changed you need to change the CMEM configurations in the loadmodules.sh script and also the OMAP3530 codec server to be able to run C6accel on the DSP.. The memory map inside c6accel server for dm3730 evm is defined in the file server.tcf under the path c6accel_1_01_00_07\soc\packages\ti\c6accel_unitservers\omap3530.

    Another way to debug the failure is to export CE_DEBUG=3 before you run C6accel app, this will give you the complete log of the failure.

    Regards,

    Rahul

  • Rahul Prabhu,

    thank you for answer.

    I am not sure how to check distinctions between settings of memory maps.
    In dm37x_dvsdk there already was file arch/arm/mach-omap2/board-devkit8000.c
    I only put devkit8000_defconfig in arch/arm/configs

    When I recompiled kernel with devkit8000_defconfig I also rebuilt all packages in the DVSDK.
    The modules sdmak.ko, cmemk.ko, dsplinkk.ko and lpm_omap3530.ko I put in /lib/modules/2.6.37/kernel/drivers/dsp on targetfs
    I got first error after initial run: 


    [ 31.995605] CMEMK module: built on Jun 26 2012 at 15:43:47
    [ 32.001373] Reference Linux version 2.6.37
    [ 32.005920] File /usr/local/dvsdk/linuxutils_2_26_03_06/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c
    [ 32.016723] CMEM Range Overlaps Kernel Physical - allowing overlap
    [ 32.023284] CMEM phys_start (0x83700000) overlaps kernel (0x80000000 -> 0x85000000)
    [ 32.031372] CMEMK Error: Failed to request_mem_region(0x83700000, 35651584)
    FATAL: Error inserting cmemk (/lib/modules/2.6.37/kernel/drivers/dsp/cmemk.ko): Bad address

    That's why I changed the CMEM configurations in the loadmodules.sh

    Was:

    modprobe cmemk phys_start=0x83700000 phys_end=0x85000000 pools=20x4096 allowOverlap=1 

    Now:

    modprobe cmemk phys_start=0x85000000 phys_end=0x86300000 pools=20x4096 allowOverlap=1

    I added this shell script to autostarts

    $ cp my_loadmodules.sh /etc/init.d/loadmodules.sh 
    $ cd /etc/init.d/
    $ update-rc.d loadmodules.sh defaults

    After rebooting I thought that all ok

    Starting telnet daemon.
    [ 14.584289] CMEMK module: built on Jun 26 2012 at 15:43:47
    [ 14.590118] Reference Linux version 2.6.37
    [ 14.594604] File /usr/local/dvsdk/linuxutils_2_26_03_06/packages/ti/sdo/linuxutils/cmem/src/module/cmemk.c
    [ 14.607635] allocated heap buffer 0xc6000000 of size 0x12ec000
    [ 14.613861] cmemk initialized

    But not yet.

    I attached logs with CE_DEBUG=3. Look please. 7140.log_DEBUG_3.txt 
    You say that I need to change the CMEM configurations in the OMAP3530 codec server. How can I do this?

  • Changing the memory map of the codec server has been described here:

    http://processors.wiki.ti.com/index.php/Changing_the_DVEVM_memory_map

    For changing the memory map, the first thing you need to know is how much of the 128 MB is occupied by the Linux where it lies in physical memory. Once you know that you can insert the required CMEM section just below the linux memory followed by the DSP memory in the server.cfg file I pointed you to. Once you know where your CMEM region is, place the same settings in the loadmodules.sh.

    The DVSDK for DM3730 had linux memory partitioned into 2 parts (LINUX_MEM1 and LINUX_MEM2)as shown here:

    http://processors.wiki.ti.com/index.php/DVSDK_4.x_FAQ#What_is_the_memory_partition_in_various_modules_in_DVSDK.3F

     Hence we had use allowOverlap=1, to force configuration of CMEM in the memory hole that is present between the 2 partitions. Though this works in case where user knows where the partitions of linux are placed, this is potentially dangerous in cases where you don`t know this information as allowOverlap will try to insert CMEM in the specified memory section even if that region is controlled by linux.

    I hope this sheds some light on the issue you are facing and points you in the right direction. I will take a closer look at your error log and respond back if I have more pointers for you.

    Regards,

    Rahul