Brian Rhodes wrote:

MV Pro 5.0 toolchain
Codec Engine 2.23.01
DSP/BIOS 5.33.05
XDCTOOLS 3.15.00.50
Framework Components 2.23.01
XDAIS 6.23
DSPLINK 1.61.03
CMEM (linuxutils) 2.23.01

The error message @0,123,595us: [+7 T:0x44643490 S:0x44642d74] OP - Processor_create_d> Loading and starting DSP server 'mpeg2_dec_server.x64P' FAILED, status=[0x80008009] (look for error code 'DSP_EBASE + 0x9' in dsplink*/packages/dsplink/gpp/inc/usr/errbase.h) says...

/* The specified executable file could not be found. */
#define DSP_EFILE                   (DSP_EBASE + 0x9l)

Previously I had simply located the DSP binary in the CWD, but surely I've missed something in the documentation and this is now incorrect. Is there a different way of configuring the path? I recall something from a much older version of CE where you could specify the absolute path in the engine creation call.


I found that I had a conditional including an incorrect config for my server which was using DSP/BIOS 5_33_02 and that was causing the problem loading the server. I am now having an issue with my memory map (I think). I am getting an error when starting up the first server on the dsp (from dsplink).

cmem initialized 9 pools between 0x87800000 and 0x88000000 DSPLINK Module (1.61.03) created on Date: Jun 23 2009 Time: 13:56:46 Assertion failed (cBytes != 0). File : /home/bgr/projects/cerberus/support/code1 Assertion failed (PMGR_MSGQ_IsInitialized == TRUE). File : /home/bgr/projects/c3
Unable to handle kernel NULL pointer dereference at virtual address 00000000

I think it is using the wrong memory area since the real failure here appears to be incorrect data in the memory table. One of the sizes appears as 0 causing the setup to fail, which then causes an Oops on shutdown freeing a NULL ptr.

I tried specifying the memory map in the application config as well.

@0,432,351us: [+2 T:0x40b02490 S:0x40b01d74] OP - Processor_create_d> Adding DSP segment #0 to Link configuration: name='DDR2', startAddress=0x8fa00000, sizeInBytes=0x400000, shared=1, syncd=0 @0,432,595us: [+2 T:0x40b02490 S:0x40b01d74] OP - Processor_create_d> Adding DSP segment #1 to Link configuration: name='DSPLINKMEM', startAddress=0x8fe00000, sizeInBytes=0x30000, shared=1, syncd=0 @0,432,803us: [+2 T:0x40b02490 S:0x40b01d74] OP - Processor_create_d> Adding DSP segment #2 to Link configuration: name='RESET_VECTOR', startAddress=0x8ff00000, sizeInBytes=0x80, shared=1, syncd=0 @0,433,007us: [+2 T:0x40b02490 S:0x40b01d74] OP - Processor_create_d> Adding DSP segment #3 to Link configuration: name='POOLMEM', startAddress=0x8fe30000, sizeInBytes=0xd0000, shared=1, syncd=0 @0,433,210us: [+2 T:0x40b02490 S:0x40b01d74] OP - Processor_create_d> Adding DSP segment #4 to Link configuration: name='DDRALGHEAP', startAddress=0x88000000, sizeInBytes=0x4000000, shared=0, syncd=0 @0,433,405us: [+2 T:0x40b02490 S:0x40b01d74] OP - Processor_create_d> DODSPCTRL was=1; now=0 @0,435,559us: [+0 T:0x4001fbc0 S:0xbedd298c] ti.sdo.ce.osal.Sem - Leaving Sem_post> sem[0x441c0] @0,435,874us: [+0 T:0x4001fbc0 S:0xbedd296c] ti.sdo.ce.osal.Sem - Entered Sem_pend> sem[0x441d8] timeout[0xffffffff]

Anyone had success with this version of dsplink on dm6446?
/** ============================================================================
 *  @file   CFG_DM6446GEM_SHMEM.c
 *
 *  @path   $(DSPLINK)/config/all/
 *
 *  @desc   Defines the configuration information for DSP/BIOS LINK for the
 *          Davinci platform.
 *
 *  @ver    1.61.03
 *  ============================================================================
 *  Copyright (c) Texas Instruments Incorporated 2002-2008
 *
 *  Use of this software is controlled by the terms and conditions found in the
 *  license agreement under which this software has been supplied or provided.
 *  ============================================================================
 */


/*  ----------------------------------- DSP/BIOS LINK Headers       */
#include <dsplink.h>
#include <procdefs.h>


#if defined (__cplusplus)
EXTERN "C" {
#endif /* defined (__cplusplus) */


/** ============================================================================
 *                                DSPLINK MEMORY SECTION DIAGRAM
 *
 *         |--------------[ 0xXXXXXX00 ]---------------------------------|
 *         |                                                             |
 *         |                   RESET VECTOR (0x80)                       |
 *         |               Last two nibbles must be zero                 |
 *         |                                                             |
 *         |-------------------------------------------------------------|
 *         |                                                             |
 *         |                   DSP CODE/DATA                             |
 *         |               DSP executable is loaded to this section      |
 *         |                                                             |
 *         |=============================================================|
 *         |                                                             |
 *         |                   DSPLINK SHARED MEMORY0                    |
 *         |               Shared control structure is loaded here       |
 *         |                                                             |
 *         |-------------------------------------------------------------|
 *         |                                                             |
 *         |                   DSPLINK SHARED MEMORY1                    |
 *         |               Shared control structure is loaded here       |
 *         |                                                             |
 *         |-------------------------------------------------------------|
 *         |                                                             |
 *         |                   POOL Buffer Memory                        |
 *         |               Pool's buffers are created in this area       |
 *         |                                                             |
 *         |-------------------------------------------------------------|
 *
 *  ============================================================================
 */

/** ============================================================================
 *  @name   DRVHANDSHAKEPOLLCOUNT
 *
 *  @desc   POLL Count for Driver handshake.
 *  ============================================================================
 */
#define  DRVHANDSHAKEPOLLCOUNT        ((Uint32) 100000000u)

/** ============================================================================
 *  @name   SHAREDENTRYID/SHAREDMEMORYADDR/SHAREDMEMORYSIZE
 *
 *  @desc   Indicates startaddress/size for dsplink shared memory region.
 *  ============================================================================
 */
#define  SHAREDENTRYID0     0
#define  SHAREDMEMORYADDR0  0x8FE00000
#define  SHAREDMEMORYSIZE0  0x00005000u

/** ============================================================================
 *  @name   SHAREDENTRYID/SHAREDMEMORYADDR/SHAREDMEMORYSIZE
 *
 *  @desc   Indicates startaddress/size for dsplink shared memory region.
 *  ============================================================================
 */
#define  SHAREDENTRYID1     1
#define  SHAREDMEMORYADDR1  0x8FE05000
#define  SHAREDMEMORYSIZE1  0x0002B000u

/** ============================================================================
 *  @name   RESETCTRLADDR
 *
 *  @desc   Indicates the start address of Reset Ctrl memory region.
 *          last two nibbles must be zero i.e. align to 256 boundary.
 *  ============================================================================
 */
#define  RSTENTRYID         2
#define  RESETCTRLADDR      0x8FF00000
#define  RESETCTRLSIZE      0x00000080u

/** ============================================================================
 *  @name   CODEMEMORYADDR/CODEMEMORYSIZE
 *
 *  @desc   Indicates startaddress/size for dsplink code region.
 *  ============================================================================
 */
#define  CODEENTRYID        3
#define  CODEMEMORYADDR     0x8FF00080
#define  CODEMEMORYSIZE     0x000FFF80u

/** ============================================================================
 *  @name   POOLMEMORYADDR/POOLMEMORYSIZE
 *
 *  @desc   Indicates startaddress/size for dsplink POOL memory region.
 *  ============================================================================
 */
#define  POOLENTRYID        4
#define  POOLMEMORYADDR     (SHAREDMEMORYADDR1 + SHAREDMEMORYSIZE1)
#define  POOLMEMORYSIZE     0x000D0000u

/** ============================================================================
 *  @name   LINKCFG_memTable_00
 *
 *  @desc   Memory table ID 0.
 *  ============================================================================
 */
STATIC LINKCFG_MemEntry  LINKCFG_memTable_00 [] =
{
    {
        SHAREDENTRYID0,                   /* ENTRY          : Entry number */
        "DSPLINKMEM",                     /* NAME           : Name of the 
memory region */
        SHAREDMEMORYADDR0,                /* ADDRPHYS       : Physical address 
*/
        SHAREDMEMORYADDR0,                /* ADDRDSPVIRT    : DSP virtual 
address */
       (Uint32) -1,                       /* ADDRGPPVIRT    : GPP virtual 
address (if known) */
        SHAREDMEMORYSIZE0,                /* SIZE           : Size of the 
memory region */
        TRUE,                             /* SHARED         : Shared access 
memory? */
        FALSE,                            /* SYNCD          : Synchornized? */
    },
    {
        SHAREDENTRYID1,                   /* ENTRY          : Entry number */
        "DSPLINKMEM1",                    /* NAME           : Name of the 
memory region */
        SHAREDMEMORYADDR1,                /* ADDRPHYS       : Physical address 
*/
        SHAREDMEMORYADDR1,                /* ADDRDSPVIRT    : DSP virtual 
address */
        (Uint32) -1,                      /* ADDRGPPVIRT    : GPP virtual 
address (if known) */
        SHAREDMEMORYSIZE1,                /* SIZE           : Size of the 
memory region */
        TRUE,                             /* SHARED         : Shared access 
memory? */
        FALSE,                            /* SYNCD          : Synchornized? */
    },
    {
        RSTENTRYID,                        /* ENTRY          : Entry number */
        "RESETCTRL",                       /* NAME           : Name of the 
memory region */
        RESETCTRLADDR,                     /* ADDRPHYS       : Physical address 
*/
        RESETCTRLADDR,                     /* ADDRDSPVIRT    : DSP virtual 
address */
        (Uint32) -1,                       /* ADDRGPPVIRT    : GPP virtual 
address (if known) */
        RESETCTRLSIZE,                     /* SIZE           : Size of the 
memory region */
        TRUE,                              /* SHARED         : Shared access 
memory? */
        FALSE,                             /* SYNCD          : Synchornized? */
    },
    {
        CODEENTRYID,                       /* ENTRY          : Entry number */
        "DDR2",                            /* NAME           : Name of the 
memory region */
        CODEMEMORYADDR,                    /* ADDRPHYS       : Physical address 
*/
        CODEMEMORYADDR,                    /* ADDRDSPVIRT    : DSP virtual 
address */
        (Uint32) -1,                       /* ADDRGPPVIRT    : GPP virtual 
address (if known) */
        CODEMEMORYSIZE,                    /* SIZE           : Size of the 
memory region */
        TRUE,                              /* SHARED         : Shared access 
memory? */
        FALSE,                             /* SYNCD          : Synchornized? */
    },
    {
        POOLENTRYID,                       /* ENTRY          : Entry number */
        "POOLMEM",                         /* NAME           : Name of the 
memory region */
        POOLMEMORYADDR,                    /* ADDRPHYS       : Physical address 
*/
        POOLMEMORYADDR,                    /* ADDRDSPVIRT    : DSP virtual 
address */
        (Uint32) -1,                       /* ADDRGPPVIRT    : GPP virtual 
address (if known) */
        POOLMEMORYSIZE,                    /* SIZE           : Size of the 
memory region */
        TRUE,                              /* SHARED         : Shared access 
memory? Logically */
        FALSE,                             /* SYNCD          : Synchornized? */

    },
    {
        5,                     /* ENTRY          : Entry number */
        "DSPIRAM",             /* NAME           : Name of the memory region */
        0x11800000,            /* ADDRPHYS       : Physical address */
        0x11800000,            /* ADDRDSPVIRT    : DSP virtual address */
        (Uint32) -1,           /* ADDRGPPVIRT    : GPP virtual address (if 
known) */
        0x10000,               /* SIZE           : Size of the memory region */
        TRUE,                  /* SHARED         : Shared access memory? */
        FALSE,                 /* SYNCD          : Synchornized? */
    },
    {
        6,                     /* ENTRY          : Entry number */
        "DSPL1DRAM",           /* NAME           : Name of the memory region */
        0x11F04000,            /* ADDRPHYS       : Physical address */
        0x11F04000,            /* ADDRDSPVIRT    : DSP virtual address */
        (Uint32) -1,           /* ADDRGPPVIRT    : GPP virtual address (if 
known) */
        0xC000,                /* SIZE           : Size of the memory region */
        TRUE,                  /* SHARED         : Shared access memory? */
        FALSE,                 /* SYNCD          : Synchornized? */
    },
} ;

/** ============================================================================
 *  @name   LINKCFG_memTables
 *
 *  @desc   Array of memory tables in the system.
 *  ============================================================================
 */
STATIC LINKCFG_MemEntry * LINKCFG_memTables [] =
{
    LINKCFG_memTable_00        /* Memory Table 0 */
} ;

/** ============================================================================
 *  @name   LINKCFG_ipsTable_00
 *
 *  @desc   IPS table ID 0.
 *  ============================================================================
 */
STATIC LINKCFG_Ips  LINKCFG_ipsTable_00 [] =
{
    {
        "IPS",                   /* NAME           : Name of the 
Inter-Processor-Signaling component */
        (Uint32) 32,             /* NUMIPSEVENTS   : Number of IPS events to be 
supported */
        (Uint32) SHAREDENTRYID0, /* MEMENTRY       : Memory entry ID (-1 if not 
needed) */
        (Uint32) 46,             /* GPPINTID       : Interrupt no. to used by 
the IPS on GPP-side. (-1 if uni-directional to DSP) */
        (Uint32) 16,             /* DSPINTID       : Interrupt no. to used by 
the IPS on DSP-side. (-1 if uni-directional to GPP) */
        (Uint32) 4,              /* DSPINTVECTORID : Interrupt vector no. to 
used by the IPS on DSP-side. (-1 if uni-directional to GPP) */
        (Uint32) 50000000,       /* ARGUMENT1      : Poll value for which IPS 
waits while sending event (-1 if infinite) */
        0                        /* ARGUMENT2      : Second IPS-specific 
argument */
    },
    {
        "IPS",                   /* NAME           : Name of the 
Inter-Processor-Signaling component */
        (Uint32) 32,             /* MAXIPSEVENTS   : Number of IPS events to be 
supported */
        (Uint32) SHAREDENTRYID1, /* MEMENTRY       : Memory entry ID (-1 if not 
needed) */
        (Uint32) 47,             /* GPPINTID       : Interrupt no. to used by 
the IPS on GPP-side. (-1 if uni-directional to DSP) */
        (Uint32) 17,             /* DSPINTID       : Interrupt no. to used by 
the IPS on DSP-side. (-1 if uni-directional to GPP) */
        (Uint32) 5,              /* DSPINTVECTORID : Interrupt vector no. to 
used by the IPS on DSP-side. (-1 if uni-directional to GPP) */
        (Uint32) 50000000,       /* ARGUMENT1      : Poll value for which IPS 
waits while sending event (-1 if infinite) */
        0                        /* ARGUMENT2      : Second IPS-specific 
argument */
    }
} ;

/** ============================================================================
 *  @name   LINKCFG_ipsTables
 *
 *  @desc   Array of IPS tables in the system.
 *  ============================================================================
 */
STATIC LINKCFG_Ips * LINKCFG_ipsTables [] =
{
    LINKCFG_ipsTable_00        /* IPS Table 0 */
} ;

/** ============================================================================
 *  @name   LINKCFG_poolTable_00
 *
 *  @desc   Pool table ID 0.
 *  ============================================================================
 */
STATIC LINKCFG_Pool  LINKCFG_poolTable_00 [] =
{
    {
        "SMAPOOL",                /* NAME           : Name of the pool */
        (Uint32) SHAREDENTRYID1,  /* MEMENTRY       : Memory entry ID (-1 if 
not needed) */
        (Uint32) 0x70000,         /* POOLSIZE       : Size of the pool (-1 if 
not needed) */
        (Uint32) -1,              /* IPSID          : ID of the IPS used */
        (Uint32) -1,              /* IPSEVENTNO     : IPS Event number 
associated with POOL */
        POOLENTRYID,              /* POOLMEMENTRY   : Pool memory region 
section ID  */
        0x0,                      /* ARGUMENT1      : First Pool-specific 
argument */
        0x0                       /* ARGUMENT2      : Second Pool-specific 
argument */
    }
} ;

/** ============================================================================
 *  @name   LINKCFG_poolTables
 *
 *  @desc   Array of Pool tables in the system.
 *  ============================================================================
 */
STATIC LINKCFG_Pool * LINKCFG_poolTables [] =
{
    LINKCFG_poolTable_00       /* Pool Table 0 */
} ;

/** ============================================================================
 *  @name   LINKCFG_dataTable_00
 *
 *  @desc   Data driver table ID 0.
 *  ============================================================================
 */
STATIC LINKCFG_DataDrv  LINKCFG_dataTable_00 [] =
{
    {
        "ZCPYDATA",              /* NAME           : Name of the data driver */
        0,                       /* BASECHANNELID  : Base channel ID for the 
driver */
        16,                      /* NUMCHANNELS    : Number of channels 
supported */
        16384,                   /* MAXBUFSIZE     : Maximum size of buffer 
supported (-1 if no limit) */
        (Uint32) SHAREDENTRYID1, /* MEMENTRY       : Memory entry ID (-1 if not 
needed) */
        0,                       /* POOLID         : Pool id for allocating 
buffers */
        1,                       /* QUEUELENGTH    : Queue length for the data 
driver */
        1,                       /* IPSID          : ID of the IPS used */
        1,                       /* IPSEVENTNO     : IPS Event number 
associated with data Driver */
        0x0,                     /* ARGUMENT1      : First data driver specific 
argument */
        0x0                      /* ARGUMENT2      : Second data driver 
specific argument */
    }
} ;

/** ============================================================================
 *  @name   LINKCFG_dataTables
 *
 *  @desc   Array of Data driver tables in the system.
 *  ============================================================================
 */
STATIC LINKCFG_DataDrv * LINKCFG_dataTables [] =
{
    LINKCFG_dataTable_00       /* Data Table 0 */
} ;

/** ============================================================================
 *  @name   LINKCFG_mqtObjects
 *
 *  @desc   Array of Message Queue Transport objects in the system.
 *  ============================================================================
 */
STATIC LINKCFG_Mqt  LINKCFG_mqtObjects [] =
{
    {
        "ZCPYMQT",                /* NAME           : Name of the Message Queue 
Transport */
        (Uint32) SHAREDENTRYID1,  /* MEMENTRY       : Memory entry ID (-1 if 
not needed) */
        (Uint32) -1,              /* MAXMSGSIZE     : Maximum message size 
supported (-1 if no limit) */
        1,                        /* IPSID          : ID of the IPS used */
        0,                        /* IPSEVENTNO     : IPS Event number 
associated with MQT */
        0x0,                      /* ARGUMENT1      : First MQT-specific 
argument */
        0x0                       /* ARGUMENT2      : Second MQT-specific 
argument */
    }
} ;

/** ============================================================================
 *  @name   LINKCFG_ringIoObjects
 *
 *  @desc   Array of RINGIO objects in the system.
 *  ============================================================================
 */
STATIC LINKCFG_RingIo  LINKCFG_ringIoObjects [] =
{
    {
        "RINGIOTABLE",  /* NAME           : Name of the RingIO Table */
        SHAREDENTRYID0, /* MEMENTRY       : Memory entry ID (-1 if not needed) 
*/
        64,             /* NUMENTRIES     : Number of RingIO entries supported 
*/
        0,              /* IPSID          : ID of the IPS used */
        0               /* IPSEVENTNO     : IPS Event number associated with 
RingIO */
    }
} ;

/** ============================================================================
 *  @name   LINKCFG_mplistObjects
 *
 *  @desc   Array of MPLIST objects in the system.
 *  ============================================================================
 */
STATIC LINKCFG_MpList  LINKCFG_mplistObjects [] =
{
    {
        "MPLISTTABLE",         /* NAME           : Name of the MpList Table */
        SHAREDENTRYID1,        /* MEMENTRY       : Memory entry ID (-1 if not 
needed) */
        64,                    /* NUMENTRIES     : Number of MpList entries 
supported */
        (Uint32) -1,           /* IPSID          : ID of the IPS used */
        (Uint32) -1            /* IPSEVENTNO     : IPS Event number associated 
with MpList */
    }
} ;

/** ============================================================================
 *  @name   LINKCFG_mpcsObjects
 *
 *  @desc   Array of MPCS objects in the system.
 *  ============================================================================
 */
STATIC LINKCFG_Mpcs  LINKCFG_mpcsObjects [] =
{
    {
        "MPCS",                /* NAME           : Name of the MPCS Table */
        SHAREDENTRYID1,        /* MEMENTRY       : Memory entry ID (-1 if not 
needed) */
        256,                   /* NUMENTRIES     : Number of MPCS entries 
supported */
        (Uint32) -1,           /* IPSID          : ID of the IPS used */
        (Uint32) -1            /* IPSEVENTNO     : IPS Event number associated 
with MPCS */
    }
} ;

/** ============================================================================
 *  @name   LINKCFG_gppObject
 *
 *  @desc   Configuration object for the GPP.
 *  ============================================================================
 */
STATIC LINKCFG_Log  LINKCFG_logObject = {
    FALSE,             /* GDMSGQPUT         : GPP->DSP MSG Transfer  - MSGQ_put 
call */
    FALSE,             /* GDMSGQSENDINT     : GPP->DSP MSG Transfer  - GPP 
sends interrupt */
    FALSE,             /* GDMSGQISR         : GPP->DSP MSG Transfer  - DSP 
receives interrupt */
    FALSE,             /* GDMSGQQUE         : GPP->DSP MSG Transfer  - Message 
queued at DSP */
    FALSE,             /* DGMSGQPUT         : DSP->GPP MSG Transfer  - MSGQ_put 
call */
    FALSE,             /* DGMSGQSENDINT     : DSP->GPP MSG Transfer  - DSP 
sends interrupt */
    FALSE,             /* DGMSGQISR         : DSP->GPP MSG Transfer  - GPP 
receives interrupt */
    FALSE,             /* DGMSGQQUE         : DSP->GPP MSG Transfer  - Message 
queued at GPP */
    FALSE,             /* GDCHNLISSUESTART  : GPP->DSP CHNL Transfer - Entering 
inside ISSUE call */
    FALSE,             /* GDCHNLISSUEQUE    : GPP->DSP CHNL Transfer - ISSUE: 
Buffer is queued in internal structure on GPP */
    FALSE,             /* GDCHNLISSUECOMPL  : GPP->DSP CHNL Transfer - ISSUE 
call completed */
    FALSE,             /* GDCHNLXFERSTART   : GPP->DSP CHNL Transfer - 
Initiating a buffer transfer by GPP */
    FALSE,             /* GDCHNLXFERPROCESS : GPP->DSP CHNL Transfer - Actual 
transfer of buffer is going to take place */
    FALSE,             /* GDCHNLXFERCOMPL   : GPP->DSP CHNL Transfer - Buffer 
transfer is complete */
    FALSE,             /* GDCHNLRECLSTART   : GPP->DSP CHNL Transfer - Entering 
RECLAIM call */
    FALSE,             /* GDCHNLRECLPEND    : GPP->DSP CHNL Transfer - RECLAIM: 
Wait on a semaphore */
    FALSE,             /* GDCHNLRECLPOST    : GPP->DSP CHNL Transfer - RECLAIM: 
Posting the Semaphore */
    FALSE,             /* GDCHNLRECLCOMPL   : GPP->DSP CHNL Transfer - RECLAIM 
call completed */
    FALSE,             /* DGCHNLISSUEQUE    : DSP->GPP CHNL Transfer - ISSUE: 
Buffer is queued in internal structure on DSP */
    FALSE,             /* DGCHNLXFERSTART   : DSP->GPP CHNL Transfer - 
Initiating a buffer transfer by DSP */
    FALSE,             /* DGCHNLXFERPROCESS : DSP->GPP CHNL Transfer - Actual 
transfer of buffer is going to take place */
    FALSE,             /* DGCHNLXFERCOMPL   : DSP->GPP CHNL Transfer - Buffer 
transfer is complete */
    FALSE,             /* DGCHNLRECLPEND    : DSP->GPP CHNL Transfer - RECLAIM: 
Wait on a semaphore */
    FALSE,             /* DGCHNLRECLPOST    : DSP->GPP CHNL Transfer - RECLAIM: 
Posting the Semaphore */
    10,                /* MSGIDRANGESTART   : MSG ID range: lower limit */
    20                 /* MSGIDRANGEEND     : MSG ID range: upper limit */
} ;

/** ============================================================================
 *  @name   LINKCFG_linkDrvObjects
 *
 *  @desc   Array of Link driver objects in the system.
 *  ============================================================================
 */
STATIC LINKCFG_LinkDrv  LINKCFG_linkDrvObjects [] =
{
    {
        "SHMDRV",                                                 /* NAME       
    : Name of the link driver */
        DRVHANDSHAKEPOLLCOUNT,                                       /* 
HSHKPOLLCOUNT  : Poll value for which handshake waits (-1 if infinite) */
        (Uint32) SHAREDENTRYID1,                                  /* MEMENTRY   
    : Memory entry ID (-1 if not needed) */
        0,                                                        /* IPSTABLEID 
    : ID of the IPS table used */
        sizeof (LINKCFG_ipsTable_00) / sizeof (LINKCFG_Ips),      /* IPSENTRIES 
    : Number of IPS supported */
        0,                                                        /* 
POOLTABLEID    : ID of the POOL table */
        sizeof (LINKCFG_poolTable_00) / sizeof (LINKCFG_Pool),    /* NUMPOOLS   
    : Number of POOLs supported */
        0,                                                        /* 
DATATABLEID    : ID of the data driver table */
        sizeof (LINKCFG_dataTable_00) / sizeof (LINKCFG_DataDrv), /* NUMDATADRV 
    : Number of data drivers supported */
        0,                                                        /* MQTID      
    : ID of the MQT */
        0,                                                        /* 
RINGIOTABLEID  : RingIO Table Id used for this DSP */
        0,                                                        /* 
MPLISTTABLEID  : MpList Table Id used for this DSP */
        0                                                         /* 
MPCSTABLEID    : MPCS Table ID used for this DSP */
    },
} ;

/** ============================================================================
 *  @name   LINKCFG_dspObjects
 *
 *  @desc   Array of configuration objects for the DSPs in the system.
 *  ============================================================================
 */
STATIC LINKCFG_Dsp  LINKCFG_dspObject =
{
    "DM6446GEM",                                             /* NAME           
: Name of the DSP */
    DspArch_C64x,                                            /* ARCHITECTURE   
: DSP architecture */
    "COFF",                                                  /* LOADERNAME     
: Name of the DSP executable loader */
    FALSE,                                                   /* AUTOSTART      
: Autostart the DSP (Not supported) */
    "DEFAULT.OUT",                                           /* EXECUTABLE     
: Executable for autostart */
    DSP_BootMode_Boot_Pwr,                                   /* DOPOWERCTRL    
: Link does the Power Ctrl of DSP. */
    RESETCTRLADDR,                                           /* RESUMEADDR     
: Resume address */
    RESETCTRLADDR,                                           /* RESETVECTOR    
: Reset Vector for the DSP */
    RESETCTRLSIZE,                                           /* RESETCODESIZE  
: Size of code at DSP Reset Vector */
    1,                                                       /* MADUSIZE       
: DSP Minimum Addressable Data Unit */
    (Uint32) -1,                                             /* CPUFREQ        
: DSP Frequency (in KHz), -1 if default setting is to be used */
    Endianism_Little,                                        /* ENDIAN         
: DSP Endianism */
    FALSE,                                                   /* WORDSWAP       
: Words must be swapped when writing to memory */
    0,                                                       /* MEMTABLEID     
: ID of the memory table used */
    sizeof (LINKCFG_memTable_00)/sizeof (LINKCFG_MemEntry),  /* MEMENTRIES     
: Number of entries in memory table */
    0,                                                       /* LINKDRVID      
: ID of the link driver used */
    0,                                                       /* ARG1           
: Bus No of PCI card */
    0,                                                       /* ARG2           
: Slot No of PCI card */
    0,                                                       /* ARG3           
: DSPLINK Shared memory region for control data structures creation */
    0,                                                       /* ARG4           
: Unused */
    (Uint32) -1l                                             /* ARG5           
: EDMA channel number,  Unused  for DM6446*/

} ;

/** ============================================================================
 *  @name   DM6446GEM_SHMEM_Config
 *
 *  @desc   DSP/BIOS LINK configuration structure.
 *  ============================================================================
 */
LINKCFG_DspConfig  DM6446GEM_SHMEM_Config = {
    (LINKCFG_Dsp *)       &LINKCFG_dspObject,                   /* DSPOBJECTS   
  : Array of DSP objects */
    sizeof (LINKCFG_linkDrvObjects)/sizeof (LINKCFG_LinkDrv),   /* NUMLINKDRVS  
  : Number of Link Drviers*/
    (LINKCFG_LinkDrv *)   LINKCFG_linkDrvObjects,               /* 
LINKDRVOBJECTS : Array of Link Driver objects */
    sizeof (LINKCFG_memTables)/sizeof (LINKCFG_MemEntry *),     /* NUMMEMTABLES 
  : Number of memory tables */
    (LINKCFG_MemEntry **) LINKCFG_memTables,                    /* MEMTABLES    
  : Array of Memory tables */
    sizeof (LINKCFG_ipsTables)/sizeof (LINKCFG_Ips *),          /* NUMIPSTABLES 
  : Number of IPS tables */
    (LINKCFG_Ips **)      LINKCFG_ipsTables,                    /* IPSTABLES    
  : Array of IPS tables */
    sizeof (LINKCFG_poolTables)/sizeof (LINKCFG_Pool *),        /* 
NUMPOOLTABLES  : Number of POOL tables */
    (LINKCFG_Pool **)     LINKCFG_poolTables,                   /* POOLTABLES   
  : Array of Pool tables */
    sizeof (LINKCFG_dataTables)/sizeof (LINKCFG_DataDrv *),     /* 
NUMDATATABLES  : Number of data tables */
    (LINKCFG_DataDrv **)  LINKCFG_dataTables,                   /* DATATABLES   
  : Array of data tables */
    sizeof (LINKCFG_mqtObjects)/sizeof (LINKCFG_Mqt),           /* NUMMQTS      
  : Number of MQTs */
    (LINKCFG_Mqt *)       LINKCFG_mqtObjects,                   /* MQTOBJECTS   
  : Array of MQT objects */
    sizeof (LINKCFG_ringIoObjects)/sizeof (LINKCFG_RingIo),     /* 
NUMRINGIOTABLES: Number of RINGIO tables */
    (LINKCFG_RingIo *)    LINKCFG_ringIoObjects,                /* 
RINGIOOBJECTS  : Array of RINGIO objects */
    sizeof (LINKCFG_mplistObjects)/sizeof (LINKCFG_MpList),     /* 
NUMMPLISTTABLES: Number of MPLIST tables */
    (LINKCFG_MpList *)    LINKCFG_mplistObjects,                /* 
MPLISTOBJECTS  : Array of MPLIST objects */
    sizeof (LINKCFG_mpcsObjects)/sizeof (LINKCFG_Mpcs),         /* 
NUMMPCSTABLES  : Number of MPCS tables */
    (LINKCFG_Mpcs *)      LINKCFG_mpcsObjects,                  /* MPCSOBJECTS  
  : Array of MPCS objects */
    (LINKCFG_Log *)       &LINKCFG_logObject,                   /* LOGOBJECT    
  : Pointer to LOG object */
} ;


#if defined (__cplusplus)
}
#endif /* defined (__cplusplus) */


/** ============================================================================
 *  @file   dsplink-dm6446gem-base.tci
 *
 *  @path   $(DSPLINK)/dsp/inc/DspBios/5.XX/DM6446GEM/
 *
 *  @desc   This file defines base configuration for DSP/BIOS LINK.
 *
 *  @ver    1.61.03
 *  ============================================================================
 *  Copyright (c) Texas Instruments Incorporated 2002-2008
 *
 *  Use of this software is controlled by the terms and conditions found in the
 *  license agreement under which this software has been supplied or provided.
 *  ============================================================================
 */


/*  ============================================================================
 *  Load assert support
 *  ============================================================================
 */
utils.importFile("assert.tci");

/*  ============================================================================
 *  Load base TCI file.
 *  ============================================================================
 */
utils.loadPlatform("ti.platforms.evmDM6446");

/*  ============================================================================
 *  Enable common BIOS features used by all examples
 *  ============================================================================
 */
bios.disableRealTimeAnalysis(prog);
bios.enableMemoryHeaps(prog);
bios.disableRtdx(prog);
bios.enableTskManager(prog);

/*  ============================================================================
 *  GBL
 *  ============================================================================
 */
prog.module("GBL").ENABLEALLTRC    = false ;
prog.module("GBL").PROCID          = parseInt (arguments [0]) ;

prog.module("GBL").C64PLUSCONFIGURE   = true ;
prog.module("GBL").C64PLUSL2CFG       = "32k" ;
prog.module("GBL").C64PLUSL1DCFG      = "32k" ;
prog.module("GBL").C64PLUSMAR128to159 = 0x00008000 ;

/*  ============================================================================
 *  MEM
 *  ============================================================================
 */
prog.module("MEM").STACKSIZE = 0x1000 ;

/*  ============================================================================
 *  MEM : RESET_VECTOR
 *  ============================================================================
 */
var RESET_VECTOR = prog.module("MEM").create("RESET_VECTOR");
RESET_VECTOR.base        = 0x8FF00000;
RESET_VECTOR.len         = 0x00000080;
RESET_VECTOR.space       = "code/data";
RESET_VECTOR.createHeap  = false;
RESET_VECTOR.comment     = "RESET_VECTOR";

/*  ============================================================================
 *  MEM : DDR2
 *  ============================================================================
 */
var DDR2 = prog.module("MEM").instance("DDR2");
DDR2.base             = 0x8FF00080;
DDR2.len              = 0x000FFF80;
DDR2.space            = "code/data";
DDR2.createHeap       = true;
DDR2.heapSize         = 0x10000;
DDR2.comment          = "DDR2";

/*  ============================================================================
 *  MEM : DSPLINKMEM
 *  ============================================================================
 */
var DSPLINKMEM = prog.module("MEM").create("DSPLINKMEM");
DSPLINKMEM.base             = 0x8FE00000;
DSPLINKMEM.len              = 0x00030000;
DSPLINKMEM.createHeap       = false;
DSPLINKMEM.comment          = "DSPLINKMEM";

/*  ============================================================================
 *  MEM : POOLMEM
 *  ============================================================================
 */
var POOLMEM = prog.module("MEM").create("POOLMEM");
POOLMEM.base        = 0x8FE30000;
POOLMEM.len         = 0x000D0000;
POOLMEM.createHeap  = false;
POOLMEM.comment     = "POOLMEM";


/*  ============================================================================
 *  MEM : IRAM
 *  ============================================================================
 */
var IRAM    = prog.module("MEM").instance("IRAM");
IRAM.len    = 0x8000 ;
/*  ===========================================================================
 *  Editing the mem_ext structure to set the external memory  setting for your 
 *  board. For more information see section 4.2 in spru007 pdf.
 *  ===========================================================================
 */

var mem_ext = [
{
    comment:    "DDRALGHEAP: off-chip memory for dynamic algmem allocation",
    name:       "DDRALGHEAP",
    base:       0x88000000,   
    len:        0x04000000,
    space:      "code/data"
},
{
    comment:    "L1DSRAM: off-chip memory for dynamic algmem allocation",
    name:       "L1DSRAM",
    base:       0x11F04000,
    len:        0x10000,
    space:      "data"
},

{
    comment:    "L1PSRAM: on chip memory for program",
    name:       "L1PSRAM",
    base:       0x11e08000,   
    len:        0x4000,
    space:      "data"
}, 
{
    comment:    "DDR2: off-chip memory for code and data",
    name:       "DDR2",
    base:       0x8FA00000,
    len:        0x00400000,
    space:      "code/data"
},
{
    comment:    "DSPLINK: off-chip memory for DSPLINK code and data",
    name:       "DSPLINKMEM",
    base:       0x8FE00000,
    len:        0x00030000,
    space:      "code/data"
},
{
    comment:    "POOLMEM: memory used for pools",
    name:       "POOLMEM",
    base:       0x8FE30000,
    len:        0x000D0000,
    space:      "code/data"
},
{
    comment:    "RESET_VECTOR: off-chip memory for the reset vector table",
    name:       "RESET_VECTOR",
    base:       0x8FF00000,
    len:        0x00000080,
    space:      "code/data"
},
];

/*  ===========================================================================
 *  Editing the Param structure to match the CPU setting for your board.
 *  For more information see section 4.3 "Setting Platform Param" in spru007 
pdf.
 *  ===========================================================================
 */

var params = {
    clockRate: 594,
    catalogName: "ti.catalog.c6000",
    deviceName: "DM6446",
    mem: mem_ext
};

/*  ===========================================================================
 *  Customize generic platform file with parameters specified above.
 *  This loads the specified platform configuration with minimal set of DSP /
 *  BIOS components. We explicitly enable the components required furthur.
 *  For futhur refrence one can look into section 3.3 of spru007 pdf.
 *  ===========================================================================
 */

utils.loadPlatform("ti.platforms.generic", params);


/*  ===========================================================================
 *  Enable heaps for the memory section created in mem_ext structure and enable
 *  task manager.
 *  ===========================================================================
 */
 
bios.enableMemoryHeaps(prog);
bios.enableTskManager(prog);


/*  ===========================================================================
 *  Create heaps in memory segments that are to have heap
 *  ===========================================================================
 */

bios.DDR2.createHeap = true;
bios.DDR2.heapSize   = 0x10000; 

bios.DDRALGHEAP.createHeap = true; 
bios.DDRALGHEAP.heapSize   = bios.DDRALGHEAP.len;  

/*  ===========================================================================
 *  Enable heaps in the L1DSRAM (internal L1 cache ram, fixed size) 
 *  and define the label for heap usage. We are setting the value of 
 *  bios.L1DSRAM.len again to 64 K because loadPlatform function call by,default
 *  assumes the value of L1DSRAM Cache to be 32 K and resets the length of 
 *  L1DSRAM to 48 K.
 *  ===========================================================================
 */

bios.L1DSRAM.createHeap       = true;
bios.L1DSRAM.len              = 0x10000;
bios.L1DSRAM.heapSize         = bios.L1DSRAM.len;
bios.L1DSRAM.enableHeapLabel  = true;
bios.L1DSRAM["heapLabel"]     = prog.extern("L1DHEAP");

/*  ===========================================================================
 *  GBL
 *  ===========================================================================
 */

/*  ===========================================================================
 *  Settings corresponding to GBL Module can be reffered to Section 2.8 in PDF 
 *  spru403. This is required to set the memory configuration in TCF File.
 *  ===========================================================================
 */

prog.module("GBL").C64PLUSCONFIGURE   = true ;
prog.module("GBL").C64PLUSL2CFG       = "64k" ;
prog.module("GBL").C64PLUSL1DCFG      = "16k" ;
prog.module("GBL").C64PLUSL1PCFG      = "16k" ;
prog.module("GBL").C64PLUSMAR128to159 = 0x0000ff80;


/*  ===========================================================================
 *  MEM
 *  ===========================================================================
 */

/*  ===========================================================================
 *  The size of the global stack in Minimum Addressable Data Units. It is 
 *  the estimated minimum global stack size required for this application.
 *  For furthur details one can refer to CCS help.
 *  ===========================================================================
 */

prog.module("MEM").STACKSIZE = 0x1000 ;

/*  ===========================================================================
 *  This defines the size of the .args section. The .args section contains the 
 *  argc, argv, and envp arguments to the program's main() function. Code 
 *  Composer loads arguments for the main() function into the .args section. 
 *  The .args section is parsed by the boot file.
 *  For furthur details one can refer to CCS help.
 *  ===========================================================================
 */

prog.module("MEM").ARGSSIZE = 200;


/*  ===========================================================================
 *  Enable MSGQ and POOL Managers
 *  ===========================================================================
 */

/*  ===========================================================================
 *  The MSGQ and POOL module allows for the structured sending and receiving 
 *  of variable length messages. This module can be used for homogeneous or 
 *  heterogeneous multi-processor messaging.
 *  For furthur details one can refer to CCS help.
 *  ===========================================================================
 */
 
bios.MSGQ.ENABLEMSGQ = true;
bios.POOL.ENABLEPOOL = true;

/*  ===========================================================================
 *  Set all code and data sections to use DDR2
 *  ===========================================================================
 */
 
/*  ===========================================================================
 *  One should change all the BIOS section to DDR2 / DDRALGHEAP so as to improve
 *  the perfomance by utlizing Internal mmemory for Code/ Data placement.
 *  ===========================================================================
 */

bios.setMemCodeSections (prog, bios.DDR2) ;
bios.setMemDataNoHeapSections (prog, bios.DDR2) ;
bios.setMemDataHeapSections (prog, bios.DDRALGHEAP) ;

/*  ===========================================================================
 *  Since all the sections are pointing to DDR2 / DDRALGHEAP we can remove the
 *  IRAM section which is created as default and will not be furthur used.
 *  ===========================================================================
 */

bios.MEM.instance("IRAM").destroy();

/*  ===========================================================================
 *  MEM : Global
 *  ===========================================================================
 */

/*  ===========================================================================
 *  One should change all the BIOS section to DDR2 / DDRALGHEAP so as to improve
 *  the perfomance by utlizing Internal mmemory for Code/ Data placement.
 *  ===========================================================================
 */ 
prog.module("MEM").BIOSOBJSEG = bios.DDRALGHEAP;
prog.module("MEM").MALLOCSEG  = bios.DDRALGHEAP;

/*  ===========================================================================
 *  TSK : Global
 *  ===========================================================================
 */

/*  ===========================================================================
 *  One should change all the BIOS section to DDR2 / DDRALGHEAP so as to improve
 *  the perfomance by utlizing Internal mmemory for Code/ Data placement.
 *  ===========================================================================
 */
 
prog.module("TSK").STACKSEG = bios.DDRALGHEAP ;

/*  ===========================================================================
 *  Generate configuration files...
 *  ===========================================================================
 */
if (config.hasReportedError == false) {

    prog.gen();
}



/*****************************************************************************/
/*                                                                           */
/*                   ITTIAM SYSTEMS PVT LTD, BANGALORE                       */
/*                          COPYRIGHT(C) 2008                                */
/*                                                                           */
/*  This program is proprietary to Ittiam Systems Pvt. Ltd. and is protected */
/*  under Indian Copyright Act as an unpublished work.Its use and disclosure */
/*  is  limited by  the terms and conditions of a license  agreement. It may */
/*  be copied or  otherwise reproduced or  disclosed  to persons outside the */
/*  licensee 's  organization  except  in  accordance  with  the  terms  and */
/*  conditions of  such an agreement. All  copies and reproductions shall be */
/*  the  property  of Ittiam Systems Pvt.  Ltd. and  must  bear  this notice */
/*  in its entirety.                                                         */
/*                                                                           */
/*****************************************************************************/

/*
 *  ======== mpeg2_dec_app.cfg ========
 */
environment['xdc.cfg.check.fatal'] = 'false';

/* use the tracing utility module */
var TraceUtil = xdc.useModule('ti.sdo.ce.utils.trace.TraceUtil');
TraceUtil.attrs = TraceUtil.SOCRATES_TRACING;


/* set up OSAL */
var osalGlobal = xdc.useModule('ti.sdo.ce.osal.Global');
osalGlobal.runtimeEnv = osalGlobal.DSPLINK_LINUX;

osalGlobal.armDspLinkConfig = {
        memTable: [
                ["DDRALGHEAP", {addr: 0x88000000, size: 0x04000000, type: 
"other"}],
                ["RESET_VECTOR", {addr: 0x8F00000, size: 0x00000080, type: 
"reset"}],
                ["DDR2", {addr: 0x8FF00080, size: 0x000FFF80, type: "main"}],
                ["DSPLINKMEM", {addr: 0x8FE00000, size: 0x00030000, type: 
"link"}],
        ],
};


/*
 *  ======== Engine Configuration ========
 */
var Engine = xdc.useModule('ti.sdo.ce.Engine');
var myEngine = Engine.createFromServer(
    "mpeg2_dec_server",        // Engine name (as referred to in the C app)
    "./server_production/mpeg2_dec_server.x64P", // path to server exe, 
relative to its package dir
    "ittiam.servers.mpeg2_dec_server" // server package
    );


_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to