TI中文支持网
TI专业的中文技术问题搜集分享网站

66ak2h12大量问题请教,与DDR相关

66ak2h12芯片,自己的单板,有两块内存,一个是2G,一个是8G, DDR3A_REMAP_EN 管教应该是悬空的,内部下拉。

系统启动后,显示的/proc/iomem(内存部分如下):

80000000-9fffffff : System RAM (boot alias)
a0000000-afffffff : pcie_mem
b0000000-b7ffffff : System RAM (boot alias)
f0000000-ffffffff : System RAM (boot alias)
800000000-81fffffff : 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

测试20kB数据通过memcpy拷贝速率,测试结果如下,如果通过mmap映射2G DDR,则拷贝速率非常慢,而malloc两块内存的拷贝非常快,请问什么原因?测试结果如下:另外,拷贝数据到2G DDR似乎也比较快。

mmap /dev/mem内存的地址为0xd0000000,在下面的测试结果中为fmem

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

由于单板作为PCIe EP把PCIe地址空间映射到2G DDR,所以这个性能是不够的,请问,这个问题是如何造成的?

这里是采用sdk附带的例程edmabw运行后的结果,请问这个测试结果是否有问题

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   

Thomas Yang1:

请问您是怎么映射fmem空间的,有没有使能cache?malloc空间是哪个地址?

另外PCIE空间传输的话,肯定是通过EDMA进行的,那么您做的memcpy测试是否有意义呢?

xs wan:

回复 Thomas Yang1:

系统运行的Linux4.4.41,在Linux系统下,采用mmap /dev/mem的方式映射的fmem,映射地址为0xA8000000,malloc直接调用的,没有制定参数。请问,如何在malloc时指定地址,而且在K2HK中,如何指定DDR3A呢,其地址为0x800000000~0x9FFFFFFFF,或者mmap的时候如何指定采用DDR3A。

请问,如何开cache?

还有,为什么PCIE空间就是EDMA传输呢?好像直接采用memcpy也是可以的,ARM端。

在我的应用中,我是采用的openmpacc例程中的EdmaMgr_copy1D1D()传输的(outbound,从内存往0x50000000拷贝数据),也存在一个问题,就是如果每次发送的数据比较小,如20K左右,则PCIe传输30MB/s左右,但是在1MB数据时,速率可以到300MB/s。并且如果每次发送的数据更大,则速率也有降低。

另外,我的应用中需要通过PCIe获取数据,多个数据源(10个左右),每个数据源每次的数据在20KB左右,但是总的数据速率在100MB/s左右,请问,是否可以通过单核EDMA方式实现数据接收?

xs wan:

回复 xs wan:

再请教一个问题,在TI资料中,看到如下库函数:

EdmaMgr_copy1D1DLinked()

请问,这个函数是否可以通过多个edma通道同时传输多组数据?

赞(0)
未经允许不得转载:TI中文支持网 » 66ak2h12大量问题请教,与DDR相关
分享到: 更多 (0)