|
c't Projekte - c't-Bot und c't-Sim -
Mailinglisten
[Voriger (Datum)]
[Nächster (Datum)]
[Voriger (Thread)]
[Nächster (Thread)]
[Nach Datum][Nach Thread]
Absender: Timo Sandmann
Datum: Di, 16.09.2008 15:30:53
In-reply-to:
<000001c9176c$766a13e0$0400a8c0@mexpnew>
References:
<000001c9176c$766a13e0$0400a8c0@mexpnew>
Hallo Frank,
Am 15.09.2008 um 21:51 schrieb Frank Menzel:
Hallo Timo,
Start ist bei 282 und Ende bei 2280.
Den Patch habe ich eingespielt (Zeilen manuell eingefügt da direkt in
der Mail drin) und muss sagen: Es klappt prima !
MMC-Test prima, der ja vorher aber auch schon lief mit denselben
Kartendaten. Aber das Map_Delete läuft jetzt wunderbar durch und die
Karte ist in 40 Sekunden gelöscht. Jedenfalls bricht er nicht kurz
nach
dem Start ab. Ist die Löschzeit annähernd richtig ? Scheint mir doch
recht lange zu sein.
dein MMC-Test hatte ergeben, dass es ca. 3,7 ms dauert, 512 Byte zu
schreiben, das sind also ungefähr 7,4 ms pro KB. Folglich dauert es
(theoretisch) 4096 KB * 7,4 ms / KB = 30 s für die ganze Map-Datei.
Aber: Die Lösch-Funktion "stresst" die Karte viel mehr, es werden ohne
Unterbrechung die Daten (alles Nullen) geschrieben, beim MMC-Test
hingegen hat die Karte immer etwas Luft, weil auch Daten gelesen,
Puffer aufbereitet werden und die ganze Testroutine nur beim Display-
Update ausgeführt wird.
Ich denke genau hier lag auch das Problem: Wenn die Karte nach einem
Schreibvorgang "fertig" meldet, sind die Daten wohl noch nicht im
Flashspeicher angekommen, die Antwort heißt nur, dass die Karte wieder
bereit ist. Irgendwann ist der Cache im Kartencontroller aber voll
bzw. er muss auf einen anderen Flashblock wechseln und das dauert dann
deutlich länger. Hier hat der Timeout in mmc_write_sector_spi() nicht
mehr ausgereicht (der Zähler war in 16 Bit) und es kam zu "Fehler 3".
Mit dem Patch ist der Timeout-Zähler 24 Bit groß, das reicht dann auch
für den (seltenen) Fall, dass die Karte länger braucht, bis sie wieder
bereit ist.
Ich muss noch mal überlegen, ob damit jetzt auch wirklich alle
(Timeout-)Fälle abgedeckt sind, dann stelle ich den Patch ins SVN. Da
der Zähler erhöht wird, während die Hardware das aktuelle Byte
überträgt, verlangsamt der Patch die ganze Geschichte übrigens nicht,
so dass sich für schnellere Karten kein Nachteil ergibt.
Grüße,
Timo
|
|