Rockbox.org home
release
dev builds
extras
themes manual
wiki
device status forums
mailing lists
IRC bugs
patches
dev guide



Rockbox mail archive

Subject: Aligning the buffer for DMA

Aligning the buffer for DMA

From: Boris Gjenero <boris.gjenero_at_gmail.com>
Date: Mon, 02 Mar 2009 14:30:13 -0500

Hello,

While working on the PP502x ATA DMA patch (
http://www.rockbox.org/tracker/task/9708 ) I noticed that data in the
buffer is not always properly aligned for DMA. The buffering.c code
word-aligns the first frame, but the DMA code needs alignment of sector
boundaries. For example, if the size of the ID3v2 tag in an MP3 file
isn't divisible by 4, the whole file must be read via PIO.

Another issue is cache line alignment of the start and end of reads. If
they're not aligned, the start and end must be read via PIO to prevent
cache line interference. This would double the number of ATA commands
needed.

It's easy to change buffer alignment. FS#9708 already has a separate
patch which word-aligns the buffer for DMA. But is it okay to do this?
  Will it cause errors or slowdowns due to unaligned reads? I
understand that even if it is a good idea it probably belongs in
separate platform-independent patch.

Regards,

Boris
Received on 2009-03-02


Page was last modified "Jan 10 2012" The Rockbox Crew
aaa