Forum Discussion
Altera_Forum
Honored Contributor
11 years agoACP port under Linux
Hi, Is there any trick to using the ACP port from FPGA under Linux (3.9)? I'm setting the f2h AR & AW CACHE/PROT/USER by hand, post-qsys, but don't see any indication that the SCU cares at all...
Altera_Forum
Honored Contributor
10 years ago --- Quote Start --- How did you measure the performance comparison between using the ACP port and FPGA-SDRAM port? --- Quote End --- Running the clock at 150Mhz and seeing how much streaming data we could get over the bus from an mSGDMA. From my notes: ACP was 280MB/s, f2h_axi was 380MB/s, f2h_sdram was 564MB/s. --- Quote Start --- If I would use the ACP port, do I need to cast the buffer to an unsigned long long to manage the data in 64 bits format? is it required? My FPGA module has a 32 bits bus data. --- Quote End --- I think you'll get best performance with a 64-bit bus, but I don't think the datatype of the structure matters since all software accesses to memory will go through the optimized cache/memory-interfaces first. But if you do any kind of random access in the FPGA module (as opposed to streaming), though, that should probably be in 64-bit chunks and might turn out to be easier with the ACP port, but will of course be much slower than streaming. --- Quote Start --- I am trying to setup the ACP port, so I have some questions: 1. Do I need to use the FPGA to HPS port instead the FPGA to SDRAM ports? --- Quote End --- Yes, only the FPGA to HPS works for ACP. f2h_axi on my qsys. --- Quote Start --- 2. Do I need to cast the buffer I allocated in the driver to a 'unsigned long long' to read/write data? is it required? --- Quote End --- I don't see any need to per above. --- Quote Start --- 3. Is it required to set the f2h_AR[AW]CACHE attributes as you said in the second post? --- Quote End --- Check if latest Qsys does this automatically now. But it might still be needed. --- Quote Start --- After sending the command to perform the DMA task using the ACP port (phy_addr | 0x80000000) I got a "Kernel panic - not syncing", do you have a repository where I can take a look at the code of your driver when using the ACP? --- Quote End --- Sorry, no, but I'm using configuration identical to GnuRadio. I do recall spending a lot of time getting the right boot-loader/device-tree/kernel/, any chance it is that? If so, try to get any kind of working system at all first so you can rule out these issues. Then, just add/subtract your HDL to this working system. When I started my project late 2014, I did everything from the SocKit Linaro Desktop at rocketboards, that was my golden model. I could add/delete software and hardware incrementally from that version and know immediately if I'd done something wrong.