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



Rockbox mail archive

Subject: Re: Feature Request
From: Christophe Avoinne (christophe.avoinne_at_laposte.net)
Date: 2002-11-17


----- Original Message -----
From: "Björn Stenberg" <bjorn_at_haxx.se>
To: <rockbox_at_cool.haxx.se>
Sent: Sunday, November 17, 2002 1:32 AM
Subject: Re: Feature Request

> Greg Haerr wrote:
> > 2. The system could use asynchronous ata_sector_read/writes
> > without waiting for completion, (Bjorn/Linus is this possible
> > with the Archos HW?)
>
> Yes it is, we can use interrupt controlled transfers. However this adds a
fair bit of complexity but only little extra speed (if any). Thus we haven't
bothered to implement it.
>
> --
> Björn

1) Indeed, using an interrupt will reduce waste of cpu usage in yield() if
it can signal the scheduler to reactivate the waiting thread to read/write
the data at the end of interrupt. But the actual design chosen for threading
doesn't allow the interrupt to do so : you must wait for another thread to
yield before the waiting thread will resume and read/write the data.

2) Asynchronous read or write can be more interesting if the code can handle
the previous data sectors while the interrupt reads the new data sectors to
reduce the polling time to get the right data. But such an exercise will
complicate too much the current ATA code, without being sure of such an
opportunity is real.

3) SH1 can use an auto request DMA transfer initiated when executing
interrupt to get/put data from/to ATA PIO DATA. But the fact that SH1 is a
big-endian machine and IDE a little-endian data storage, it is not possible
to swap bytes through the DMA process, so the CPU would need to swap them
after a DMA transfer (which is the major drawback to use it). Using DMA
might only become interesting if using asynchronous read or write like in
2).

My 2 cents worth.



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