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.

[OMAPL137] lad, codec engine, dsplink

Other Parts Discussed in Thread: OMAP-L137

I'm currently using a reconfigured dsplink-1_61 (expanding the code/data space, using memory from 0xc2000000 for DDR2 and memory above that for cmem (c3000000 - c4e00000), with the following in the config/all file.

/** ============================================================================
 *  @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         0
#define  RESETCTRLADDR      0xC5000000
#define  RESETCTRLSIZE      0x1000

/** ============================================================================
 *  @name   CODEMEMORYADDR/CODEMEMORYSIZE
 *
 *  @desc   Indicates startaddress/size for dsplink code region.
 *  ============================================================================
 */
#define  CODEENTRYID        1
#define  CODEMEMORYADDR     (0xC2000000)
#define  CODEMEMORYSIZE     (0x01000000)

/** ============================================================================
 *  @name   SHAREDENTRYID/SHAREDMEMORYADDR/SHAREDMEMORYSIZE
 *
 *  @desc   Indicates startaddress/size for dsplink shared memory region.
 *  ============================================================================
 */
#define  SHAREDENTRYID0     2
#define  SHAREDMEMORYADDR0  (RESETCTRLADDR + RESETCTRLSIZE)
#define  SHAREDMEMORYSIZE0  0x5000

/** ============================================================================
 *  @name   SHAREDENTRYID/SHAREDMEMORYADDR/SHAREDMEMORYSIZE
 *
 *  @desc   Indicates startaddress/size for dsplink shared memory region.
 *  ============================================================================
 */
#define  SHAREDENTRYID1     3
#define  SHAREDMEMORYADDR1  (SHAREDMEMORYADDR0 + SHAREDMEMORYSIZE0)
#define  SHAREDMEMORYSIZE1  0x2B000

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

The associated dsp/inc file and the server.tcf file put the sections in the same place. My cmem configuration puts pools between 0xc3000000 and 0xc4e000000 (way more than I need).

I noticed that Codec Engine has a dsplink directory with files in it that don't match this. These files are associated with lad. I'm not intentionally using lad, but I don't know if Codec Engine uses these files. If not, since I don't rebuild it, how does it get its memory configuration?

I'm currently have multiple tasks/threads on both the ARM9 and DSP sides of the OMAP-L137. They have worked up until now. All of my trace output suggests that everything is fine. Then I add a code statement and the server image load/start hangs. Note that it doesn't matter what the statement is. It could be a GT_0trace. It could be an assignment. It could repeat an existing statement (to null effect). I'm wondering if it has anything to do with Codec Engine's memory configuration. (My server code is very large and does not fit in the default code/data size.)

Do any of you know if Codec Engine has some limitations related to either the size of the memory segments or the use of memory outside of the usual memory map? (I've added more memory from 0xc4000000 to 0xc7ffffff. The memory is functional (read/write/etc) and Linux is still inside its 0xc0000000 to 0xc1ffffff bounds.

  • If your app .cfg file uses 'Engine.createFromServer()', codec engine will get memory segment information from a generated info.js file, that is created when your server is built. You can see the usage of Engine.createFromServer() in the codec engine example apps remote.cfg files, and an info.js file under the example servers/all_codocs/package/info directory. If you do use Engine.createFromServer(), however, the CMEM memory address will be obtained during the Engine_open() call, by querying the CMEM module.

    If you are not using LAD, then codec engine will not be using the files in the dsplink/utils directory. You would only use LAD if you had multiple processes calling Engine_open(), and wanted to ensure that the DSP executables and Link configurations matched.

    If you run your app with CE_DEBUG=2, you should see output showing what the memory segments are that codec engine is passing to dsplink.

    Regards,

        Janet