PCIe Access - achieve bursts without DMA
flat view
From: Moese, Michael <hidden>
Date: 2014-01-30 12:27:14
Hello PPC-developers, I'm currently trying to benchmark access speeds to our PCIe-connected IP-co= res located inside our FPGA. On x86-based systems I was able to achieve bursts = for both read and write access. On PPC32, using an e500v2, I had no success at = all=20 so far.=20 I tried using ioremap_wc(), like I did on x86, for writing, and it only res= ults in my writes just being single requests, one after another. For reads, I noticed I could not ioremap_cache() on PPC, so I used simple i= oremap() here.=20 I used several ways to read from the device, from simple readl(),memcpy_fro= m_io(),=20 memcpy() to cacheable_memcpy() - with no improvements. Even when just iss= uing a batch of prefetch()-calls for all the memory to read did not result in re= ad bursts. I only get really poor results, writing is possible with around 40 MiByte/s= , whereas I =20 can read at about only 3 MiByte/s. After hours of studying the reference manual from freescale, looking into o= ther code and searching the web, I'm close to resignation. Maybe someone of you has some more directions for me, I'd appreciate every = hint that leads me to my problem's solution - maybe I just missed something or l= ack=20 knowledge about this architecture in general. Thanks for your reading. Michael