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.

AM5728: Data dump out issue from 0x40500000 OCMC_RAM2

Part Number: AM5728

Tool/software:

Hi,

My application is with heterogeneous multicore system (AM5728), and now I need to copy the data from buffer(DDR) or from L2SRAM, to  0x40500000(OCMC_RAM2). The ultimate purpose is to dump out from ARM side.

I made a 1024bytes as one block, the front 1020 bytes of data is engineering data, the last 4 bytes is CRC32 value, to make sure the data integrity. As I did test and found even data transfer to ARM and to PC, I checked the CRC32 of the block is matched with data.

But not all of the data is I expected, e.g. I have an index number by add one every cycle. I found the index is not consistent increasing.

So I thought the data as I read out and calculate CRC in DSP side is not what I'm written. Not always, but 1/5 is wrong. You can check my code below.

Question is how to make sure the data consistant and ganrantee the data is written and read correct. For L2SRAM and for data in DDR.

unsigned char DSP_PARA_DATA[DSP_PARA_DATA_LEN_IN_INT32];
#pragma DATA_SECTION(DSP_PARA_DATA, "L2SRAM")
volatile unsigned int counter_in_L2SRAM;
#pragma DATA_SECTION(counter_in_L2SRAM, "L2SRAM")

for(i = 0; i < uploadParameterLength; i+=4)
{
*(unsigned int*)(DSP_PARA_DATA+i) = (i >> 2) * 0x00000101+ 0x12340000;
}
*(uint32_t*)(DSP_PARA_DATA) = 0xDEADBEEF;
*(uint32_t*)(DSP_PARA_DATA + 4) = counter_in_L2SRAM;//transCost;
*(uint32_t*)(DSP_PARA_DATA + 8) = counter_in_L2SRAM;//count_test6;
Cache_wbInv(DSP_PARA_DATA, 1024, Cache_Type_L2, TRUE);
*(uint32_t*)(DSP_PARA_DATA + 1020) =
xcrc32((const unsigned char *)(DSP_PARA_DATA), 1020, 0);
Cache_wbInv(DSP_PARA_DATA, 1024, Cache_Type_L2, TRUE);


edma3_copy(DSP_PARA_DATA, current_block_ptr->payload + current_fill_offset, uploadParameterLength);