Part Number: AM6442
Is there memory copy throughput between IPC memory and SRAM
customer test based on example: C:\ti\mcu_plus_sdk_am64x_09_00_00_31\examples\drivers\ipc\ipc_rpmsg_echo\am64x-evm
change cmd file to allocate IPC memory to SRAM or DDR.
Uint8 gIpcShareMem[2248] _attribute_((aligned(128),section(".bss.ipc_vring_mem")));
SECTIONS
{
.bss.ipc_vring_mem (NOLOAD) :{} > RTOS_NORTOS_IPC_SHM_MEM
}
MEMORY
{
//allocate to SRAM
RTOS_NORTOS_IPC_SHM_MEM :ORIGIN = 0x701D4000, LENGTH = 0x0000C000
//Or allocate to DDR4
RTOS_NORTOS_IPC_SHM_MEM :ORIGIN = 0x90004000, LENGTH = 0x0000C000
}
#define SIZE_TEST 512 //512byte, or 256,128
//read operation:
memcpy(&gTest[0],&gIpcShareMem[0],SIZE_TEST);
//or
for(int16 iTemp = 0; iTemp < SIZE_TEST; iTemp++)
{
gTest[iTemp] =gIpcShareMem[iTemp];
}
//write operation memcpy(&gIpcShareMem[0],&gTest[0],SIZE_TEST);
Or:
for(int16 iTemp = 0; iTemp <SIZE_TEST; iTemp++)
{
gIpcShareMem[iTemp] = gTest[iTemp];
}
toggle a GPIO before and after operation loop, get below result.
|
Read operation |
|||||
|
item |
source |
destination |
512byte |
256byte |
128byte |
|
1 |
SRAM(IPC) |
SRAM(none IPC) |
36.5us |
18.5us |
9 us |
|
2 |
SRAM(IPC) |
DDR4(none IPC) |
39us |
18.7us |
9.3us |
|
3 |
SRAM(none IPC) |
SRAM(none IPC) |
4.2us |
2.2us |
1.2us |
|
4 |
DDR4(IPC) |
SRAM(none IPC) |
115us |
56us |
27us |
|
5 |
DDR4(IPC) |
DDR4(none IPC) |
122us |
56.8us |
28us |
|
6 |
DDR4(none IPC) |
DDR4(none IPC) |
5.4us |
2.6us |
1.3us |
|
Write operation |
|||||
|
item |
source |
destination |
512byte |
256byte |
128byte |
|
1 |
SRAM(none IPC) |
SRAM(IPC) |
4.2us |
2.2us |
1.2us |
|
2 |
SRAM(none IPC) |
DDR4(IPC) |
4.2us |
2.2us |
1.2us |
|
3 |
SRAM(none IPC) |
SRAM(none IPC) |
4.2us |
2.2us |
1.2us |
|
4 |
DDR4(none IPC) |
SRAM(IPC) |
5.6us |
2.5us |
1.4us |
|
5 |
DDR4(none IPC) |
DDR4(IPC) |
5.4us |
2.5us |
1.3us |
|
6 |
DDR4(none IPC) |
DDR4(none IPC) |
5.4us |
2.6us |
1.3us |
Is the result expected?


