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.

Linux/66AK2H12: question of DDR3 performance

Part Number: 66AK2H12


Tool/software: Linux

My board is 66ak2hk,my board and evm,I test all of them.

Board have tow DDR, DDR3A 8G DIMM and DDR3B 2G chip on board.

DDR3A_REMAP_EN PIN is float , down on chip.

/proc/iomem like:

80000000-9fffffff : System RAM (boot alias)
a0000000-afffffff : pcie_mem
b0000000-b7ffffff : System RAM (boot alias)
f0000000-ffffffff : System RAM (boot alias)
800000000-81FFFFFF : System RAM
800008000-80092f023 : Kernel code
80097c000-800a0d143 : Kernel data
830000000-837ffffff : System RAM
838000000-86fffffff : CMEM
870000000-8ffffffff : System RAM
980000000-99fffffff : CMEM
9a0000000-9ffffffff : System RAM

I think DDR3B loacte 2G, DDR3A loacte 8G DIMM, and OS run on DDR3A.

OS is Linux ver 4.4.41 not RT.

I use mmap /dev/mem to malloc RAM on DDR3B and malloc function get RAM on DDR3A.

use memcpy() truans data on DDR3A and DDR3B

fmem means mmap RAM on DDR3B,malloc means RAM on DDR3A

test result is:

root@k2hk-evm:~# ./mem 
memP1 addr = 0xb6fd2000!
memP2 addr = 0xb6fcc000!
mallocP1 addr = 0x00021008!
mallocP2 addr = 0x00026010!
memcpy malloc -> fmem!
i = 100000, blocksize = 20480, dur = 3(s) 163514(us)!
memcpy fmem -> malloc!
i = 100000, blocksize = 20480, dur = 92(s) 300060(us)!
memcpy malloc -> malloc!
i = 100000, blocksize = 20480, dur = 0(s) 254845(us)!
memcpy fmem -> fmem!
i = 100000, blocksize = 20480, dur = 183(s) 6233(us)!

look that, why trans data from fmem to malloc so slow?trans 20480 byte data one cycle.

and i run the TI example edmabw,result is

Single channel EDMA bandwidth measured in GB/s
==============
From DSP Core: 0 1 2 3 4 5 6 7
==============
ddr => ddr : 0.030 0.030 0.048 0.047 0.042 0.042 0.048 0.047
ddr => msmc : 0.104 0.111 0.124 0.123 0.126 0.125 0.128 0.127
ddr => l2 : 0.105 0.112 0.130 0.129 0.130 0.129 0.130 0.129
msmc => ddr : 0.049 0.049 0.078 0.079 0.077 0.077 0.079 0.079
msmc => msmc : 0.293 0.295 0.294 0.295 0.295 0.295 0.468 0.462
msmc => l2 : 0.295 0.296 0.296 0.296 0.296 0.296 0.297 0.295
l2 => ddr : 0.049 0.050 0.081 0.080 0.080 0.080 0.081 0.082
l2 => msmc : 0.294 0.296 0.295 0.295 0.296 0.296 0.296 0.295
l2 => l2 : 0.278 0.279 0.279 0.280 0.295 0.295 0.279 0.277