On Mon, Aug 18, 2014 at 1:42 PM, Alfredo Muniz <mun...@seas.upenn.edu>
wrote:

> Expect one more update to mark the finishing of documentation on Friday.


Philip requested that I do a summary of my findings before then so here
goes.

If we want GNU Radio to support a multitude of coprocessors we need to be
able to offer both contiguous memory allocation support and scatter gather
list support (get_user_pages method). I think we all agree that whatever
goes into runtime must be general and not device specific since we don't
want to keep changing things when a new device comes out.

Contiguous memory allocation support is needed for devices such as the
ARM<==>DSP in the keystone2 because the DSP doesn't have an MMU or IOMMU.
There is support for scatter-gather lists but is highly abstracted by the
multicore navigator that its seems like a different thing all together. TI
uses CMEM, Nvidia uses NVMAP, Qualcomm uses PMEM, Android uses ION,  which
essentially do the same thing but for different devices. I went down the
CMEM road because thats what people were recommending on the e2e forums for
zero copy work on the keystone2. I think we should be able to support
things like this and I think we can with minor additions to runtime.
Integrating a memory allocator into GNU Radio will require that most of
device specific things/memory allocator specific things be done in the OOT
which I think is doable. All we need to do to GNU Radio is change the
buffer location in memory.

Scatter gather list support is needed for devices such as the Zynq where
the AXI DMA supports scatter gather lists. First we pass our buffer from
userspace to the kernel module using ioctl. The module runs get_user_pages
on it which essentially gives us the translation from userspace virtual to
kernelspace physical without a need to copy to kernel (kernelspace
virtual). We can then use the scatter-gather api in the kernel to send to
the bus address. The reason for scatter-gather is that the buffer is large
so spans many pages that are not contiguous in memory so devices that
support scatter-gather make it appear contiguous in memory. This is an
overall better solution as its pretty much the standard to include
scatter-gather dma support (its just very abstracted in the keystone2).
Integrating this into GNU Radio is possible with the changes I have already
made to runtime on my GNU Radio branch. I can probably write a module and
test this myself before the conference since I have a zedboard and
experience with developing on the zynq and friends with experience
developing on the zynq aka you guys plus I've probably read LDD3 too many
times.

So thats my recommendation for GNU Radio after three full months of working
on this. I guess after my last documentation update on Friday and of course
the conference, I'll be updating during the coproc calls.
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to