dev builds
themes manual
device status forums
mailing lists
IRC bugs
dev guide

Rockbox mail archive

Subject: Re: Red Led Dead test II

Re: Red Led Dead test II

From: Mike Holden <>
Date: Thu, 18 Dec 2003 11:47:12 -0000 (GMT)

I would just remind you of the conversations we had after my debugging of
movement RLOD back in May:

My conclusion then : "Basically, when we hit this problem, the
ATA_ALT_STATUS __always__ returns
0x80 (BUSY). This means that wait_for_bsy() loops for 10 seconds before
returning a timeout status. This usually happens when called from
perform_soft_reset() in ata_read_sectors(), and the structure of that
function is that it will loop 9 times waiting for wait_for_bsy() to return
ok (which it never does). We therefore spend 90 seconds looping around
perform_soft_reset() before returning an error which is passed back up to
the read() call in the mpeg thread. This then skips to the next track,
which fails and we go round again until eventually hitting the end of the
playlist (or directory)."

Björn Stenberg said:
> Daniel Gudlat wrote:
>> From my experience and what I read here it seems to me like your test
>> build may cure spontaneous RLOD, but does nothing for movement induced
>> RLOD. So, if we can confirm this to be true, I'd vote for getting the
>> change into the daily builds to help those with spontaneous RLOD, and
>> then see about what if anything can be done about movement induced
>> RLOD...
> The only kind I have seen in my archos is the "spontaneous" kind, and
> that seems to be fixed by my latest ata change.
> I agree that the movement induced RLOD appears to be a different beast.
> I have updated the test firmware to include a new debug menu entry: ATA
> History.
> What I'd like you to do is that when you get a RLOD, go to Debug->ATA
> History and look at the numbers. The screen will look something like
> this:
> 0:0xC4 1:0x30
> 2:0xC4 3:0x30
> 4:0xC4 5:0x30
> 6:0xC4 7:0x30
> 8:0xC4 9:0x30
> 10:0xC4 11:0x30
> 12:0xC4 13:0xE6
> Status: 0x50
> The values are the ata command/event history. 13 is the most recent
> event, 0 is the oldest. The hex value is the event or command:
> #define CMD_DEVICE_RESET 0x08
> #define CMD_READ_SECTORS 0x20
> #define CMD_WRITE_SECTORS 0x30
> #define CMD_READ_MULTIPLE 0xC4
> #define CMD_STANDBY 0xE2
> #define CMD_IDENTIFY 0xEC
> #define CMD_SLEEP 0xE6
> /* fake commands, for the history */
> #define CMD_POWERDOWN 0xf00
> #define CMD_POWERUP 0xf01
> #define CMD_HARD_RESET 0xf02
> #define CMD_SOFT_RESET 0xf03
> #define CMD_RDY_TIMEOUT 0xf04
> #define CMD_BSY_TIMEOUT 0xf05
> The "Status:" line shows the current content of the ATA status register.
> Obviously, what I need to know is what this screen says when a "movement
> RLOD" occurs. If you can write down all the numbers, great. If you are
> pressed for time, start with event 13 and work your way backwards.
> Naturally the latest events are the most interesting ones.
> Misc info: The history screen is redrawn every second. Multiple commands
> are only stored once (i.e. 21 consecutive READs are only shown as a
> single one). SOFT_RESET (0xF03) is used to wake up the disk from SLEEP.
> HARD_RESET (0xF02) is used to wake up from POWERDOWN.
> Happy hunting! :-)
> --
> Björn

Mike Holden
Rockbox page:
Received on 2003-12-18

Page template was last modified "Tue Sep 7 00:00:02 2021" The Rockbox Crew -- Privacy Policy