Brettschneider Falk <[EMAIL PROTECTED]> writes:
>I've done some measuring based on the DMA-copy driver sources you've
>provided to us and I saw a strange collapse of the DMA speed at transfer
>size = 0x1fff6 bytes. Have you noticed that too, and do you have an
>explanation? I don't get it why that happened.
> do {
> a.len = (len >= 0x10000) ? (0x10000-1) : len;
> //printf("a.len=0x%x ", a.len);
> //printf("a.dst=0x%08x ", a.dst);
> //printf("a.addr=0x%08x\n", a.addr);
> ioctl(fd, MEMIO_DMA, &a);
> a.dst += a.len;
> a.addr += a.len;
> len -= a.len;
> } while (len);
Never transfer odd numbers of bytes by DMA unless you have a darn good
reason to (or to odd addresses). DMA engines like nice, aligned sources,
destinations, and counts. _Sometimes_ they can optimize the start and end
and use internal FIFOs to work well in those cases (ones used in
bit-blitters and 3d-texturing, for example) but the 64x DMA engine is not
optimized for that, and I assume the davinci is similar. Try -8 or -16
instead of -1.
--
Randell Jesup
[EMAIL PROTECTED]
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source