Charles, Thanks so much for a definitive answer to this question!!!
Perhaps even more than the answer, I am fascinated by the account you give of how you know this to be the case! I would like to have a better understanding of kernel drivers and DMA memory. As an educational exercise I would like dig through the PRU kernel driver and see this code for myself? Could you tell me where I can find it? Thank you very much. Bill On Wed, Feb 10, 2016 at 12:15 PM, Charles Steinkuehler < [email protected]> wrote: > If you dig through the user-mode uio_pruss code, you will see that the > PRU itself, the PRU memory and control registers, and the large shared > buffer is all accessed via a mmap on the /dev/uio_pruss* device. > > If you dig in the PRU kernel driver, you will see the dram shared > buffer is allocated and handled as DMA memory. The > dma_alloc_coherent() call used to allocate the memory grabs a > physically contiguous chunk, provides physical and virtual addresses, > and sets the page caching flags as needed for the architecture. > > On 2/10/2016 9:07 AM, Tyler Turcotte wrote: > > I have been using the BeagleBone PRU and have been accessing and mapping > > memory this way and thus far it seems as though it is one contiguous > > address. I am relatively new to Beaglebone so maybe one of the more > > experienced may want to step in on this one. > > > > Once I have used prussdrv_get_phys_addr to get the physical address it > > seems to store to one contiguous memory and is limited to 8mb. > > > > I believe it is allocated contiguous from uio_pruss as well. > > > > > > On Friday, February 5, 2016 at 7:33:59 PM UTC-5, Bill Gray wrote: > >> > >> Hi, > >> > >> I've got PRU0 of my BBB pulling in 12 Bytes of data from a ADC with a > >> sampling frequency of 31250hz. > >> > >> I want to stash all of this data in an array that lives in DDR memory. > I > >> would like to make the array 0x4000 bytes (16kB) large. This would > give me > >> 1365 12 byte records and about 43ms of data to play with. > >> > >> I'm currently using prussdrv_map_extmem() to hook me up with the DDR > >> memory. It provides me with a memory block that is 256kB, so I have > plenty > >> of room. > >> > >> The question I have is... can I count on the physical address in this > >> 256kB block of memory to be contiguous? > >> > >> I'm pretty new to linux memory management, but I see that the "page > size" > >> is only 4kB... so I imagine that the virtual memory system might chop my > >> 256kB block up into bits which might not necessarily have contiguous > >> addresses. > >> > >> If I can count on contiguous addresses, this radically simplifies the > >> memory access code in the PRU. If I can't... well, then I can't, and > I've > >> got to figure something else out. > >> > >> When I run experiments I see that the physical addresses are contiguous, > >> but are they guaranteed to be? or has this just been "lucky"? > >> > >> Thanks, > >> > >> Bill > >> > >> > >> > > > > > -- > Charles Steinkuehler > [email protected] > > -- > For more options, visit http://beagleboard.org/discuss > --- > You received this message because you are subscribed to a topic in the > Google Groups "BeagleBoard" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/beagleboard/N47C7-WdsZE/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- Bill Gray Velkess 415 407 7356 -- For more options, visit http://beagleboard.org/discuss --- You received this message because you are subscribed to the Google Groups "BeagleBoard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
