[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [microblaze-uclinux] DMA and cache
On 8/2/07, John Williams <jwilliams@xxxxxxxxxxxxxx> wrote:
Jim Van Vorst wrote:
> I'm using 2.6 currently. Am I better off moving to 2.4 until this gets
> fixed up?
Hard to say - I don't think there's a lot of work to get this going,
it's just still in the queue.
> Also, does the u-boot or kernel build care about C_BANK0_HIGHADDR, or is
> just for the bitstream?
Hmm, good question. I'd have to go digging. The uncached shadow thing
was a bit of a hack that I did in 2.4 to try to improve ethernet DMA
performance (avoiding a big cache invalidate loop after receving each
More specifically, I would think the OS would want to know the actual physical
size of ram. If you lied to it would it end up double mapping memory? I.e. if
you have 64M and set HIGHADDR to 128M, ran petalinux-copy-autoconfig and
rebuilt, the OS would think it had 128M to play with, then allocs from 64M - 128M
would remap to 0M - 64M?
Is this an order of operations thing? Do you set HIGHADDR to 64M then make
the kernel with that, then set it back to 128M in the .mhs file and rebuild the
bitstream with that?
Also, if I wanted to take a different path and allocate some (uncacheable) BRAM for the DMA,
is there some central point in the code to handle that? It looks like there is
one file that plays the UNCACHED_SHADOW OR/AND game but that calls
some kernel allocation stuff. What I'd want is another freelist that pointed to
my BRAM and use that. Does the kernel have a create_freelist() type of
function and memory alloc/free routines that can take my freelist context?
It got copied into 2.6 when lynuxworks hacked out the initial port, but
I don't think it's ever been tested.
My advice is probably to stick with 2.6, and either debug/test the
UNCACHED_SHADOW support as is, or put a dcache_invalidate call into your
driver to make sure the cache is clean.
microblaze-uclinux mailing list
Project Home Page :
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/