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.

1D2D memory copy problem

Other Parts Discussed in Thread: DM3730

Hi,

I have developed a codec for the DM3730 that relies on ACPY3 interface to copy a local buffer to the external memory. The local buffer is a line buffer (in 1D format), but the destination buffer is a 2D image buffer, so I am using the 1D2D copy property of my IDMA3_Obj local variable.

The copy works fine for most of the image, but in some cases parts of the block to be copied are not copied at all. It seems like the copy function misses some parts of the element to be copied (part of the line of the destination 2D matrix). Is there any reason why the copy function does not work only in certain cases ? How can I make sure that the copy will be performed ?

Below you can see the copy function I am using.

/* Use the ACPY3 interface to do a DMA */
void TRUE3DDEC_OSTENDO_ACPY3_1D2D_Copy(IDMA3_Handle hIDMA3,Uns Dst, Uns Src, Uns NumberOfBytesPerLine, Uns NumberOfLines, Uns Stride)
{
    ACPY3_Params params;
    unsigned char* pSrc = (unsigned char*)Src;
    unsigned char* pDst = (unsigned char*)Dst;

    /* Configure the logical channel */
    params.transferType     = ACPY3_1D2D; //1D to 2D transfer
    params.srcAddr          = (void *)pSrc;
    params.dstAddr          = (void *)pDst;
    params.elementSize      = NumberOfBytesPerLine;
    params.numElements      = NumberOfLines;
    params.srcElementIndex     = NumberOfBytesPerLine;
    params.dstElementIndex     = Stride;
    params.numFrames        = 1;
    params.srcFrameIndex     = 0;
    params.dstFrameIndex     = 0;
    params.waitId           = 1;

    /* Configure logical dma channel */
    ACPY3_configure(hIDMA3, &params, 0);
       /* Use DMA to copy data */
    ACPY3_start(hIDMA3);
    /* wait for transfer to finish  */
    ACPY3_wait(hIDMA3);
}

I would greatly appreciate any help with this issue.

Thanks,

Danillo

  • Hi Danillo,

    There are various potential reasons for problems during image copping. You should check for memory overlapping.

    The problem should be due to incorrect calculation of image width.

    Also could you post some info about image properties of the pictures where the function works fine and of pictures where appears problems. The picture info which is important for me is the resolution, image type and color depth.

    BR

    Tsvetolin Shulev

  • Hi Tsvetolin,

    the image I am working on is a 1280x720 UYVY frame. I divide it into blocks of 80x80, and as soon as I get a result with an 80x80 block, I copy it over to the destination. The procedure is exactly the same for every block, and I use the function given in my previous email. I noticed that for some 80x80 blocks, only parts of the image are missing. For example, I usually get an error at block (2,14), in the top right corner of the image.

    I also collected some debug information, which can be found below.

    For the creation of the DMA structures:

    [DSP] @0,209,424tk: [+2 T:0x87c523d4 S:0x87c5600c] ti.sdo.fc.dman3 - DMAN3_grantDmaChannels> Context 0x85a000f0
    [DSP] @0,209,784tk: [+0 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Enter (context=0x85a000f0, alg=0x85a009a0, groupId=0, dmaTab=0x863abb00, numChans=2)
    [DSP] @0,209,881tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Channel 0
    [DSP] @0,209,932tk: [+0 T:0x87c523d4 S:0x87c55f4c] ti.sdo.fc.acpy3 - ACPY3_getEnvMem> Enter (dmaTab=0x863abb00, memRec=0x87c55fd4)
    [DSP] @0,209,999tk: [+2 T:0x87c523d4 S:0x87c55f4c] ti.sdo.fc.acpy3 - ACPY3_getEnvMem> memRec size0x40, alignment 0x20 memType IDMA3_INTERNAL
    [DSP] @0,210,067tk: [+0 T:0x87c523d4 S:0x87c55f4c] ti.sdo.fc.acpy3 - ACPY3_getEnvMem> Exit
    [DSP] @0,210,115tk: [+4 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Env Requested memTab[0]: size=0x40, align=0x20, space=IALG_SCRATCH, attrs=IALG_DARAM0
    [DSP] @0,210,194tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Channel 1
    [DSP] @0,210,242tk: [+0 T:0x87c523d4 S:0x87c55f4c] ti.sdo.fc.acpy3 - ACPY3_getEnvMem> Enter (dmaTab=0x863abb18, memRec=0x87c55fd4)
    [DSP] @0,210,308tk: [+2 T:0x87c523d4 S:0x87c55f4c] ti.sdo.fc.acpy3 - ACPY3_getEnvMem> memRec size0x40, alignment 0x20 memType IDMA3_INTERNAL
    [DSP] @0,210,374tk: [+0 T:0x87c523d4 S:0x87c55f4c] ti.sdo.fc.acpy3 - ACPY3_getEnvMem> Exit
    [DSP] @0,210,420tk: [+4 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Env Requested memTab[1]: size=0x40, align=0x20, space=IALG_SCRATCH, attrs=IALG_DARAM0
    [DSP] @0,210,501tk: [+0 T:0x87c523d4 S:0x87c55f14] ti.sdo.fc.dskt2 - DSKT2_allocScratch> Enter (alg=0x85a009a0, mutexId=0, numRecs=2)
    [DSP] @0,210,575tk: [+0 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.dskt2 - _DSKT2_getReqScratchSize> Enter (ialgSpace=IALG_DARAM0, numRecs=2)
    [DSP] @0,210,643tk: [+0 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.dskt2 - _DSKT2_getReqScratchSize> Exit (size=0xc0)
    [DSP] @0,210,700tk: [+0 T:0x87c523d4 S:0x87c55e6c] ti.sdo.fc.dskt2 - _DSKT2_initializeAndUseSharedScratch> Enter (scratchGroupId=0, numRecs=1)
    [DSP] @0,210,775tk: [+0 T:0x87c523d4 S:0x87c55e24] ti.sdo.fc.dskt2 - _DSKT2_getScratchRequestInfo> Enter (ialgSpace=IALG_DARAM0, numRecs=1)
    [DSP] @0,210,862tk: [+0 T:0x87c523d4 S:0x87c55e24] ti.sdo.fc.dskt2 - _DSKT2_getScratchRequestInfo> Exit (sizeBestCase=192, sizeWorstCase=192, numScratchRecs=1)
    [DSP] @0,210,947tk: [+0 T:0x87c523d4 S:0x87c55e4c] ti.sdo.fc.dskt2 - _DSKT2_useSharedScratch> Enter (scrBuffDesc->base=0x10f04000)
    [DSP] @0,211,011tk: [+0 T:0x87c523d4 S:0x87c55e4c] ti.sdo.fc.dskt2 - _DSKT2_useSharedScratch> Exit (status=TRUE)
    [DSP] @0,211,069tk: [+0 T:0x87c523d4 S:0x87c55e4c] ti.sdo.fc.dskt2 - _DSKT2_useSharedScratch> Enter (scrBuffDesc->base=0x10f04000)
    [DSP] @0,211,134tk: [+0 T:0x87c523d4 S:0x87c55e4c] ti.sdo.fc.dskt2 - _DSKT2_useSharedScratch> Exit (status=TRUE)
    [DSP] @0,211,193tk: [+0 T:0x87c523d4 S:0x87c55e6c] ti.sdo.fc.dskt2 - _DSKT2_initializeAndUseSharedScratch> Exit
    [DSP] @0,211,249tk: [+0 T:0x87c523d4 S:0x87c55e@1,340,309us: [+0 T:0x41cbd490 S:0x41cbc98c] OC - Comm_put> Enter(queue=0x0, msg=0x403ca880)
    @1,340,370us: [+0 T:0x41cbd490 S:0x41cbc98c] OC - Comm_put> return (0)
    @1,340,401us: [+0 T:0x41cbd490 S:0x41cbc984] OC - Comm_get> Enter(queue=0x10000, msg=0x41cbca24, timeout=-1)
    @1,340,645us: [+0 T:0x41cbd490 S:0x41cbc984] OC - Comm_get> MSGQ_get() status=0x8000, return (0)
    c4] ti.sdo.fc.dskt2 - _DSKT2_getScratchUsed> Enter (alg=0x85a009a0, mutexId=0, heapId=0)
    [DSP] @0,211,321tk: [+0 T:0x87c523d4 S:0x87c55ec4] ti.sdo.fc.dskt2 - _DSKT2_getScratchUsed> Exit (size=0xfa00)
    [DSP] @0,211,379tk: [+0 T:0x87c523d4 S:0x87c55ef4] ti.sdo.fc.dskt2 - _DSKT2_useSharedScratch> Enter (scrBuffDesc->base=0x10f04000)
    [DSP] @0,211,443tk: [+0 T:0x87c523d4 S:0x87c55ef4] ti.sdo.fc.dskt2 - _DSKT2_useSharedScratch> Exit (status=TRUE)
    [DSP] @0,211,497tk: [+0 T:0x87c523d4 S:0x87c55ef4] ti.sdo.fc.dskt2 - _DSKT2_useSharedScratch> Enter (scrBuffDesc->base=0x10f04000)
    [DSP] @0,211,561tk: [+0 T:0x87c523d4 S:0x87c55ef4] ti.sdo.fc.dskt2 - _DSKT2_useSharedScratch> Exit (status=TRUE)
    [DSP] @0,211,615tk: [+0 T:0x87c523d4 S:0x87c55eec] ti.sdo.fc.dskt2 - _DSKT2_incrScratchReferenceCount> Enter (scratchMutexId=0)
    [DSP] @0,211,676tk: [+0 T:0x87c523d4 S:0x87c55eec] ti.sdo.fc.dskt2 - _DSKT2_incrScratchReferenceCount> Exit
    [DSP] @0,211,728tk: [+0 T:0x87c523d4 S:0x87c55eec] ti.sdo.fc.dskt2 - _DSKT2_incrScratchReferenceCount> Enter (scratchMutexId=0)
    [DSP] @0,211,789tk: [+0 T:0x87c523d4 S:0x87c55eec] ti.sdo.fc.dskt2 - _DSKT2_incrScratchReferenceCount> Exit
    [DSP] @0,211,841tk: [+0 T:0x87c523d4 S:0x87c55f14] ti.sdo.fc.dskt2 - DSKT2_allocScratch Exit (status=1)
    [DSP] @0,211,898tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Creating channel 0, size 0x40, align 0x20, scratchEnv 0x10f13a00
    [DSP] @0,211,971tk: [+4 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> IDMA3 Object Requested mem[0]: size=0x28, align=0x4 heapId=1
    [DSP] @0,212,047tk: [+4 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> IDMA3 Object Allocated mem[0]: size=0x28, align=0x4, heapId=1, base=0x85a00a38
    [DSP] @0,212,130tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Assigning qdmaChannel 0
    [DSP] @0,212,183tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Env buffer of size 0x40 requested
    [DSP] @0,212,245tk: [+4 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Env Allocated memTab[0]: size=0x40, align=0x20, heapId=1, base=0x862caaa0
    [DSP] @0,212,324tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Initializing IDMA3_handle
    [DSP] @0,212,379tk: [+0 T:0x87c523d4 S:0x87c55f1c] ti.sdo.fc.dman3 - initHandle> Enter (handle=0x85a00a38, dmaTab=0x863abb00, qdmaChannel=0, env=0x862caaa0, scratchEnv=0x10f13a00, context=0x85a000f0)
    [DSP] @0,212,482tk: [+2 T:0x87c523d4 S:0x87c55f1c] ti.sdo.fc.dman3 - initHandle> Initializing IDMA3 handle with 1 tccs, 1 PaRams, qdmaChannel 0, env 0x862caaa0
    [DSP] @0,212,559tk: [+2 T:0x87c523d4 S:0x87c55f1c] ti.sdo.fc.dman3 - initHandle> Non-zero env handle
    [DSP] @0,212,609tk: [+2 T:0x87c523d4 S:0x87c55f1c] ti.sdo.fc.dman3 - initHandle> paRam block 0x1c04020, tcc Table 0x85a00000
    [DSP] @0,212,672tk: [+2 T:0x87c523d4 S:0x87c55f1c] ti.sdo.fc.dman3 - initHandle> Call protocol Init function
    [DSP] @0,212,727tk: [+0 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> Enter (handle=0x85a00a38)
    [DSP] @0,212,784tk: [+2 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> Initialize ACPY3
    [DSP] @0,212,836tk: [+0 T:0x87c523d4 S:0x87c55ec4] ti.sdo.fc.acpy3 - _ACPY3_init > Enter
    [DSP] @0,212,885tk: [+0 T:0x87c523d4 S:0x87c55ec4] ti.sdo.fc.acpy3 - initQdmaSettings> Enter
    [DSP] @0,212,932tk: [+2 T:0x87c523d4 S:0x87c55ec4] ti.sdo.fc.acpy3 - initQdmaSettings> Unlock all Qdma channels
    [DSP] @0,212,986tk: [+0 T:0x87c523d4 S:0x87c55ec4] ti.sdo.fc.acpy3 - initQdmaSettings > Exit
    [DSP] @0,213,032tk: [+0 T:0x87c523d4 S:0x87c55ec4] ti.sdo.fc.acpy3 - _ACPY3_init > Exit
    [DSP] @0,213,077tk: [+2 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> Scratch env 0x10f13a20
    [DSP] @0,213,146tk: [+2 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> Address of env in persistent memory 0x862caac0
    [DSP] @0,213,212tk: [+2 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> Initializing IPRH register to 0x0
    [DSP] @0,213,270tk: [+2 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> Initializing IPR mask to 0x1
    [DSP] @0,213,325tk: [+2 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> IPR clear masks 0x0 and 0x1
    [DSP] @0,213,381tk: [+2 T:0x87c523d4 S:0x87c55ee4] ti.sdo.@1,344,002us: [+0 T:0x41cbd490 S:0x41cbc98c] OC - Comm_put> Enter(queue=0x0, msg=0x403ca880)
    @1,344,032us: [+0 T:0x41cbd490 S:0x41cbc98c] OC - Comm_put> return (0)
    @1,344,063us: [+0 T:0x41cbd490 S:0x41cbc984] OC - Comm_get> Enter(queue=0x10000, msg=0x41cbca24, timeout=-1)
    @1,344,338us: [+0 T:0x41cbd490 S:0x41cbc984] OC - Comm_get> MSGQ_get() status=0x8000, return (0)
    fc.acpy3 - ACPY3_initEnv> Saving original values of Tccs (1) PaRams (1) and waitIdofFinal (-1)
    [DSP] @0,213,452tk: [+0 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> Exit (status=TRUE)
    [DSP] @0,213,503tk: [+0 T:0x87c523d4 S:0x87c55f1c] ti.sdo.fc.dman3 - initHandle> Exit (status=1)
    [DSP] @0,213,554tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Assigned Qdma Channel(s):0
    [DSP] @0,213,608tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Assigned PaRam(s):
    [DSP] @0,213,660tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> dmaTab[0].handle's paRamAddr 0x1c04020
    [DSP] @0,213,722tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> 1 (Addr 0x1c04020)
    [DSP] @0,213,775tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Assigned Tcc(s):
    [DSP] @0,213,826tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> 32
    [DSP] @0,213,872tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Creating channel 1, size 0x40, align 0x20, scratchEnv 0x10f13a40
    [DSP] @0,213,945tk: [+4 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> IDMA3 Object Requested mem[1]: size=0x28, align=0x4 heapId=1
    [DSP] @0,214,018tk: [+4 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> IDMA3 Object Allocated mem[1]: size=0x28, align=0x4, heapId=1, base=0x863abe00
    [DSP] @0,214,097tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Assigning qdmaChannel 1
    [DSP] @0,214,149tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Env buffer of size 0x40 requested
    [DSP] @0,214,209tk: [+4 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Env Allocated memTab[1]: size=0x40, align=0x20, heapId=1, base=0x863abe40
    [DSP] @0,214,286tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Initializing IDMA3_handle
    [DSP] @0,214,339tk: [+0 T:0x87c523d4 S:0x87c55f1c] ti.sdo.fc.dman3 - initHandle> Enter (handle=0x863abe00, dmaTab=0x863abb18, qdmaChannel=1, env=0x863abe40, scratchEnv=0x10f13a40, context=0x85a000f0)
    [DSP] @0,214,441tk: [+2 T:0x87c523d4 S:0x87c55f1c] ti.sdo.fc.dman3 - initHandle> Initializing IDMA3 handle with 1 tccs, 1 PaRams, qdmaChannel 1, env 0x863abe40
    [DSP] @0,214,517tk: [+2 T:0x87c523d4 S:0x87c55f1c] ti.sdo.fc.dman3 - initHandle> Non-zero env handle
    [DSP] @0,214,566tk: [+2 T:0x87c523d4 S:0x87c55f1c] ti.sdo.fc.dman3 - initHandle> paRam block 0x1c04040, tcc Table 0x85a00001
    [DSP] @0,214,630tk: [+2 T:0x87c523d4 S:0x87c55f1c] ti.sdo.fc.dman3 - initHandle> Call protocol Init function
    [DSP] @0,214,682tk: [+0 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> Enter (handle=0x863abe00)
    [DSP] @0,214,738tk: [+2 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> Initialize ACPY3
    [DSP] @0,214,788tk: [+0 T:0x87c523d4 S:0x87c55ec4] ti.sdo.fc.acpy3 - _ACPY3_init > Enter
    [DSP] @0,214,833tk: [+0 T:0x87c523d4 S:0x87c55ec4] ti.sdo.fc.acpy3 - _ACPY3_init > Exit
    [DSP] @0,214,878tk: [+2 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> Scratch env 0x10f13a60
    [DSP] @0,214,933tk: [+2 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> Address of env in persistent memory 0x863abe60
    [DSP] @0,214,996tk: [+2 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> Initializing IPRH register to 0x0
    [DSP] @0,215,052tk: [+2 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> Initializing IPR mask to 0x2
    [DSP] @0,215,107tk: [+2 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> IPR clear masks 0x0 and 0x2
    [DSP] @0,215,162tk: [+2 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> Saving original values of Tccs (1) PaRams (1) and waitIdofFinal (-1)
    [DSP] @0,215,232tk: [+0 T:0x87c523d4 S:0x87c55ee4] ti.sdo.fc.acpy3 - ACPY3_initEnv> Exit (status=TRUE)
    [DSP] @0,215,282tk: [+0 T:0x87c523d4 S:0x87c55f1c] ti.sdo.fc.dman3 - initHandle> Exit (status=1)
    [DSP] @0,215,331tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Assigned Qdma Channel(s):1
    [DSP] @0,215,385tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Assigned PaRam(s):
    [DSP] @0,215,446tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> dmaTab[1].handle's paRamAddr 0x1c0404@1,347,664us: [+0 T:0x41cbd490 S:0x41cbc98c] OC - Comm_put> Enter(queue=0x0, msg=0x403ca880)
    @1,347,695us: [+0 T:0x41cbd490 S:0x41cbc98c] OC - Comm_put> return (0)
    @1,347,725us: [+0 T:0x41cbd490 S:0x41cbc984] OC - Comm_get> Enter(queue=0x10000, msg=0x41cbca24, timeout=-1)
    @1,348,000us: [+0 T:0x41cbd490 S:0x41cbc984] OC - Comm_get> MSGQ_get() status=0x8000, return (0)
    0
    [DSP] @0,215,507tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> 2 (Addr 0x1c04040)
    [DSP] @0,215,561tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Assigned Tcc(s):
    [DSP] @0,215,611tk: [+2 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> 33
    [DSP] @0,215,660tk: [+0 T:0x87c523d4 S:0x87c55f74] ti.sdo.fc.dman3 - createChannels> Exit (status=0)
    [DSP] @0,215,713tk: [+4 T:0x87c523d4 S:0x87c55fe4] ostendo.TRUE3DDEC.gt - TRUE3DDEC_OSTENDO_dmaInit called!
    [DSP] @0,215,765tk: [+4 T:0x87c523d4 S:0x87c55fe4] ostendo.TRUE3DDEC.gt - videncObj->dmaHandle1D1D8B = 0x85a00a38
    [DSP] @0,215,822tk: [+4 T:0x87c523d4 S:0x87c55fe4] ostendo.TRUE3DDEC.gt - videncObj->dmaHandle1D2D8B = 0x863abe00
    [DSP] @0,215,879tk: [+4 T:0x87c523d4 S:0x87c5600c] ti.sdo.fc.dman3 - DMAN3_createChannels> Assigned Qdma: 0
    [DSP] @0,215,932tk: [+4 T:0x87c523d4 S:0x87c5600c] ti.sdo.fc.dman3 - DMAN3_createChannels> Assigned PaRam(s):
    [DSP] @0,215,985tk: [+2 T:0x87c523d4 S:0x87c5600c] ti.sdo.fc.dman3 - DMAN3_createChannels> dmaTab[0].handle's paRamAddr 0x1c04020
    [DSP] @0,216,049tk: [+4 T:0x87c523d4 S:0x87c5600c] ti.sdo.fc.dman3 - DMAN3_createChannels> 1 (Addr 0x1c04020)
    [DSP] @0,216,105tk: [+4 T:0x87c523d4 S:0x87c5600c] ti.sdo.fc.dman3 - DMAN3_createChannels> Assigned Tcc(s):
    [DSP] @0,216,159tk: [+4 T:0x87c523d4 S:0x87c5600c] ti.sdo.fc.dman3 - DMAN3_createChannels> 32
    [DSP] @0,216,207tk: [+4 T:0x87c523d4 S:0x87c5600c] ti.sdo.fc.dman3 - DMAN3_createChannels> Assigned Qdma: 1
    [DSP] @0,216,260tk: [+4 T:0x87c523d4 S:0x87c5600c] ti.sdo.fc.dman3 - DMAN3_createChannels> Assigned PaRam(s):
    [DSP] @0,216,312tk: [+2 T:0x87c523d4 S:0x87c5600c] ti.sdo.fc.dman3 - DMAN3_createChannels> dmaTab[1].handle's paRamAddr 0x1c04040
    [DSP] @0,216,375tk: [+4 T:0x87c523d4 S:0x87c5600c] ti.sdo.fc.dman3 - DMAN3_createChannels> 2 (Addr 0x1c04040)
    [DSP] @0,216,431tk: [+4 T:0x87c523d4 S:0x87c5600c] ti.sdo.fc.dman3 - DMAN3_createChannels> Assigned Tcc(s):
    [DSP] @0,216,483tk: [+4 T:0x87c523d4 S:0x87c5600c] ti.sdo.fc.dman3 - DMAN3_createChannels> 33
    [DSP] @0,216,537tk: [+0 T:0x87c523d4 S:0x87c5600c] ti.sdo.fc.dman3 - DMAN3_grantDmaChannels> Exit (status=0)

    For the copy functions, here are the logs of some blocks (most of them were successfully copied, the ones that failed had the exact same log information):

    [DSP] @1,506,322tk: [+0 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Enter (handle=0x863abe00)
    [DSP] @1,506,381tk: [+2 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Setup IDMA for transfer from 0x10f13a40 to 0x1c04040
    [DSP] @1,506,454tk: [+0 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Exit
    [DSP] @1,506,498tk: [+0 T:0x87c573cc S:0x87c5d06c] ti.sdo.fc.acpy3 - ACPY3_wait> Enter (handle=0x863abe00)
    [DSP] @1,506,554tk: [+0 T:0x87c573cc S:0x87c5d06c] ti.sdo.fc.acpy3 - ACPY3_wait> Exit
    [DSP] @1,509,400tk: [+0 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> Enter (handle=0x863abe00, transferNo=0)
    [DSP] @1,509,484tk: [+2 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> WaitId is the last allocated waitId
    [DSP] @1,509,544tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> 1D2D transfer
    [DSP] @1,509,594tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> src 0x10f10800, dst 0x8385e460, acnt 0xa0, bcnt 0x50
    [DSP] @1,509,667tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> bcnt reload 0x50, srcIndex 0xa0, dstIndex 0xa00
    [DSP] @1,509,734tk: [+2 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> Tcc 33
    [DSP] @1,509,781tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> Link this transfer to 0xffff Opt is 0x12100c
    [DSP] @1,509,848tk: [+0 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Enter (handle=0x863abe00)
    [DSP] @1,509,906tk: [+2 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Setup IDMA for transfer from 0x10f13a40 to 0x1c04040
    [DSP] @1,509,979tk: [+0 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Exit
    [DSP] @1,510,023tk: [+0 T:0x87c573cc S:0x87c5d06c] ti.sdo.fc.acpy3 - ACPY3_wait> Enter (handle=0x863abe00)
    [DSP] @1,510,079tk: [+0 T:0x87c573cc S:0x87c5d06c] ti.sdo.fc.acpy3 - ACPY3_wait> Exit
    [DSP] @1,512,974tk: [+0 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> Enter (handle=0x863abe00, transferNo=0)
    [DSP] @1,513,058tk: [+2 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> WaitId is the last allocated waitId
    [DSP] @1,513,117tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> 1D2D transfer
    [DSP] @1,513,168tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> src 0x10f10800, dst 0x8385e5a0, acnt 0xa0, bcnt 0x50
    [DSP] @1,513,240tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> bcnt reload 0x50, srcIndex 0xa0, dstIndex 0xa00
    [DSP] @1,513,307tk: [+2 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> Tcc 33
    [DSP] @1,513,354tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> Link this transfer to 0xffff Opt is 0x12100c
    [DSP] @1,513,421tk: [+0 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Enter (handle=0x863abe00)
    [DSP] @1,513,479tk: [+2 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Setup IDMA for transfer from 0x10f13a40 to 0x1c04040
    [DSP] @1,513,552tk: [+0 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Exit
    [DSP] @1,513,596tk: [+0 T:0x87c573cc S:0x87c5d06c] ti.sdo.fc.acpy3 - ACPY3_wait> Enter (handle=0x863abe00)
    [DSP] @1,513,652tk: [+0 T:0x87c573cc S:0x87c5d06c] ti.sdo.fc.acpy3 - ACPY3_wait> Exit
    [DSP] @1,516,508tk: [+0 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> Enter (handle=0x863abe00, transferNo=0)
    [DSP] @1,516,591tk: [+2 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> WaitId is the last allocated waitId
    [DSP] @1,516,652tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> 1D2D transfer
    [DSP] @1,516,702tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> src 0x10f10800, dst 0x8385e6e0, acnt 0xa0, bcnt 0x50
    [DSP] @1,516,775tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> bcnt reload 0x50, srcIndex 0xa0, dstIndex 0xa00
    [DSP] @1,516,841tk: [+2 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> Tcc 33
    [DSP] @1,516,889tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> Link this transfer to 0xffff Opt is 0x12100c
    [DSP] @1,516,955tk: [+0 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Enter (handle=0x863abe00)
    @1,755,257us: [+0 T:0x41cbd490 S:0x41cbc224] OC - Comm_put> Enter(queue=0x0, msg=0x403ca880)
    @1,755,318us: [+0 T:0x41cbd490 S:0x41cbc224] OC - Comm_put> return (0)
    @1,755,348us: [+0 T:0x41cbd490 S:0x41cbc21c] OC - Comm_get> Enter(queue=0x10000, msg=0x41cbc2bc, timeout=-1)
    @1,755,654us: [+0 T:0x41cbd490 S:0x41cbc21c] OC - Comm_get> MSGQ_get() status=0x8000, return (0)
    [DSP] @1,517,053tk: [+2 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Setup IDMA for transfer from 0x10f13a40 to 0x1c04040
    [DSP] @1,517,127tk: [+0 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Exit
    [DSP] @1,517,171tk: [+0 T:0x87c573cc S:0x87c5d06c] ti.sdo.fc.acpy3 - ACPY3_wait> Enter (handle=0x863abe00)
    [DSP] @1,517,227tk: [+0 T:0x87c573cc S:0x87c5d06c] ti.sdo.fc.acpy3 - ACPY3_wait> Exit
    [DSP] @1,518,953tk: [+0 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> Enter (handle=0x863abe00, transferNo=0)
    [DSP] @1,519,035tk: [+2 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> WaitId is the last allocated waitId
    [DSP] @1,519,096tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> 1D2D transfer
    [DSP] @1,519,147tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> src 0x10f10800, dst 0x8385e820, acnt 0xa0, bcnt 0x50
    [DSP] @1,519,220tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> bcnt reload 0x50, srcIndex 0xa0, dstIndex 0xa00
    [DSP] @1,519,286tk: [+2 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> Tcc 33
    [DSP] @1,519,386tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> Link this transfer to 0xffff Opt is 0x12100c
    [DSP] @1,519,452tk: [+0 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Enter (handle=0x863abe00)
    [DSP] @1,519,511tk: [+2 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Setup IDMA for transfer from 0x10f13a40 to 0x1c04040
    [DSP] @1,519,584tk: [+0 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Exit
    [DSP] @1,519,628tk: [+0 T:0x87c573cc S:0x87c5d06c] ti.sdo.fc.acpy3 - ACPY3_wait> Enter (handle=0x863abe00)
    [DSP] @1,519,684tk: [+0 T:0x87c573cc S:0x87c5d06c] ti.sdo.fc.acpy3 - ACPY3_wait> Exit
    [DSP] @1,520,894tk: [+0 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> Enter (handle=0x863abe00, transferNo=0)
    [DSP] @1,520,975tk: [+2 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> WaitId is the last allocated waitId
    [DSP] @1,521,036tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> 1D2D transfer
    [DSP] @1,521,087tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> src 0x10f10800, dst 0x8385e8c0, acnt 0xa0, bcnt 0x50
    [DSP] @1,521,160tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> bcnt reload 0x50, srcIndex 0xa0, dstIndex 0xa00
    [DSP] @1,521,227tk: [+2 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> Tcc 33
    [DSP] @1,521,274tk: [+4 T:0x87c573cc S:0x87c5d044] ti.sdo.fc.acpy3 - ACPY3_configure> Link this transfer to 0xffff Opt is 0x12100c
    [DSP] @1,521,340tk: [+0 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Enter (handle=0x863abe00)
    [DSP] @1,521,399tk: [+2 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Setup IDMA for transfer from 0x10f13a40 to 0x1c04040
    [DSP] @1,521,472tk: [+0 T:0x87c573cc S:0x87c5d054] ti.sdo.fc.acpy3 - ACPY3_start> Exit
    [DSP] @1,521,516tk: [+0 T:0x87c573cc S:0x87c5d06c] ti.sdo.fc.acpy3 - ACPY3_wait> Enter (handle=0x863abe00)
    [DSP] @1,521,572tk: [+0 T:0x87c573cc S:0x87c5d06c] ti.sdo.fc.acpy3 - ACPY3_wait> Exit

    Thanks for your help.

    Best regards,

    Danillo

  • Tsvetolin,

    I have another piece of information for you. I modified my code and now I am doing copies using a smaller buffer (2,560 bytes, instead of 12,800), and I have no problems with the copy function.

    Could the problem I'm facing with the larger buffer be related to the size of the buffers to be transferred?

    Is it possible that I am using the assigned channel before the copy was done, so the previous copy that was on progress is lost ?

    I am not doing any channel assignment control, and just using the ACPY3 function. Is there any other configuration I am missing here?

    Thanks,

    Danillo

  • Dear Tsvetolin,

    apparently the issue with the memory copy using ACPY3 has been resolved. I was using ACPY3 to copy only parts of the image, while at certain positions I was still accessing the memory directly. I guess this inconsistency in accessing the external memory affected the timing of the ACPY3, which eventually affected only parts of the image. Now I am using ACPY3 to copy the entire image, and now I do not see the effect reported before.

    Thanks for your help.

    Best regards,

    Danillo

  • Hi Danillo,

    Thanks for sharing the decision of the issue. As I read the description I think so that reading the image data in different moments could provoke issue in some moment when the image data has been changed.

    BR

    Tsvetolin Shulev