mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SD Karte Speed Up


Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

nachdem ich nun den SD_kartenleser von Holger Klabunde zum Laufen 
gebracht habe, würde ich gerne die Übertragungsgeschwindigkeit ein 
bisschen "pimpen". Das Maximum was ich derzeit schaffe ist

Schreiben von 128 Byte Blöcken mit: 100 kb/s
Lesen von 128 Byte Blöcken mit: 100 kb/s

Anhand der Test die Holger´s zip File anbeiliegen kann man allerdings 
bis zu 300 kb/s schaffen bei einem Takt von 16 MHz und einem Teiler von 
4.

Deswegen schreibe ich nach der Initialisierung in das SPCR-Register für 
die Bits SPR0 und SPR1 jeweils eine 0. Das SPI2X Bit lasse ich auf 0. 
Somit müsste ich einen 4 Teiler haben und mit 4 MHz takten. Leider 
funktioniert das Schreiben dann nicht mehr. Bei einer Einstellung von 01 
und SPI2X = 1 funktioniert alles, allerdings ändert das setzen von SPI2X 
in meinem Fall an der Geschwindigkeit nichts obwohl im Datenblatt steht, 
dass dann ein 8 Teiler wäre und kein 16 Teiler.

Ich verwende einen ATMEGA32 mit 5V VCC und verwende Spannungsteiler auf 
den Leitungen.

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias wrote:
> Ich verwende einen ATMEGA32 mit 5V VCC und verwende Spannungsteiler auf
> den Leitungen.

Kleine Frage, wie groß sind denn die Spannungsteiler dimensioniert?

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
4,7 kOhm und 10kOhm

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias wrote:
> 4,7 kOhm und 10kOhm

Versuch die mal kleiner zu machen, z.B. 1 kOhm + 680 Ohm.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
KLeiner ok, aber mit den Werten komm ich ja gerade mal auf 2,9 V. Ich 
dachte die Datenleitungen hätten Pegel so um die 3,3 bis 3,6 V. Bei 
etwas längeren Leitungen wohl nicht so gut oder ?

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es geht darum den Strom nicht so stark zu begrenzen sonst sind die 
Flanken nicht so gut und es dauert länger bis die Karte einen 
Flankenwechsel erkennt.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habs jetzt mal mit 1 kOhm und 500 Ohm aufgebaut, somit würde ich eine Ua 
von 3,3 V bekommen

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So dass hat ja schonmal was gebraucht jetzt gehen schon 128 kb/s

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mit dem 8-tel Takt, jetzt wird der 4tel Takt probiert

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es funktioniert nun, leider ändert sich auch bei einer Takteinstellung 
von SPR0 und SPR1 jeweils eine 0 nicht die kb/s. Bleiben bei ca. 128 
kb/s. Das kann doch nicht an der Karte liegen oder ?

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
keiner mehr eine Ahnung woran das liegen kann ?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh doch, das ist möglich. Eine meiner Karten schreibt
nur mit 30kB/s. Die ist einfach so lahm. Lesen tut sie
dafür mit 300kB/s. Wie schnell ist denn das lesen ?
FAT-Buffer benutzt ? Das hilft beim lesen nicht viel,
aber einige Karten schreiben damit schneller.

Autor: Der Hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist aber alles noch meilenweit von heutigen Kartenspeeds weg. Das 
müsste doch schneller gehen, oder ??

Die Karten können doch heute bis 20 MB/s, selbst lahme Standardkarten 
gehen oft über 2 MB/s.

Wo liegt denn hier das Problem ??

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann sehr wohl an der Karte liegen...

der SPI-Modus wird ja "normalerweise"(*) (also in der Kamera, im 
Cardreader, etc) nicht benutzt, kann schon sein dass der so langsam ist.

Test mal ne andere Karte dagegen.


(*) außer zum Initialisieren, aber da ist die Geschwindigkeit ja relativ 
egal

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lesen und Schreiben sind ungefähr gleich schnell. Ich hab eine DS Mini 
karte mit Adapter von Sandisk und die schaft meines Erachtens wesentlich 
schnellere Geschwindigkeiten. Hab hier im Forum irgendwo gelesen, dass 
man bei den Dingern auch einen High Speed Modus einstellen kann, dann 
können die aber angeblich sogar 25Mb/s. Naja egal, aber Holger bekommt 
angeblich bis zu 300 kb/s hin, mir würden 200 reichen, aber 130 sind mir 
noch zu wenig, kann es an den Spannungsteilern liegen ? könnte da ja 
noch ein bissal runtergehen. Oszi könnte doch da Wissen schaffen, wenn 
die Flanken nicht steil genug sind. Wie oben nachzulesen verwende ich 
jetzt die kombi UA/UE = 1kOhm/(1kOhm+500 Ohm)

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Naja egal, aber Holger bekommt angeblich bis zu 300 kb/s
>hin, mir würden 200 reichen, aber 130 sind mir
>noch zu wenig, kann es an den Spannungsteilern liegen ?

Ich krieg sogar mehr hin mit meinem neuesten Programmcode.
Die 400kB/s hab ich schon geknackt. Aber nur mit meiner
schnellsten Karte ! Die meisten meiner Karten liegen viel weiter unten.
Ein paar schaffen ums verrecken keine 200kB/s. Beim schreiben 
jedenfalls.
Sogar eine nagelneue 2GB SD Karte nicht. Auch nicht auf nem ARM7 bei
15MHz SPI :( Bei 15MHz SPI sind mir sogar drei Karten ausgestiegen.
Das mal nur so nebenbei.

Der SPI Modus hat nichts mit dem MMC oder SD Modus zu tun.
Man kann nicht mal sagen das neue große Karten im SPI Modus
besonders schnell sind. Meine schnellste ist eine 256MB MMC plus
von extrememory.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kleiner Nachtrag: Die meisten meiner Karten sind beim lesen
erheblich schneller als beim schreiben.
Bist du sicher das dein ATMega32 auch mit 16MHz läuft ?

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schonmal überlegt, dass es auch an der Software liegen kann? ;) Bringt 
ja nix wenn du mit ner irren Geschwindigkeit die Bytes einzeln in die 
SD-Karte pumpst, aber die Bytes immer nur stundenweise 'reinreichst.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Simon

>Schonmal überlegt, dass es auch an der Software liegen kann?

Guter Hinweis. Meine Messungen beinhalten nur Maximalwerte
um sie vergleichen zu können. Die Daten müssen im realen Leben
aber auch noch irgenwo her kommen. Dann gehts so richtig runter
mit dem Tempo.

Gruß
 Holger

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
holger wrote:
> Dann gehts so richtig runter
> mit dem Tempo.

Jup, oder andersherum gesehen: angenommen du willst eine Datei über 
einen eingebauten Webserver an einen Client schicken. Jetzt wirds 
langsam.

Übrigens: Die 100kb/s sind schon nicht allzuschlecht.

Und achja: Ich konnte bei meinen SD-Karte (Ich weiß nicht mehr die Größe 
der Spannungsteiler-Widerstände. Sind SMD und es steht drauf: 1800 und 
3300. Ich meine dass es 1k8 und 3k3 waren) die SPI Schnittstelle bis 
10MHz (FCPU/2 bei 20MHz) takten und das haben die alle noch mitgemacht

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich denke mal das die SPI Modus einfach mal um den Faktor 4 langsamer 
ist da nur eine Datenleitung benutzt wird statt 4 außerdem wird der AVR 
einfach zu langsam sein, neuere SD-Karten werden ja mit bis zu 50 MHz 
getaktet also kein Wunder wenn hier die Datenrate so niedrig ist, wenn 
der AVR vielleicht höchstens 1 MHz zu schieben vermag. Vielleicht könnte 
man hier mit ein paar Schieberegistern arbeiten an die man die Daten 
parallel übermittelt und dann extern schneller takten tut um die Daten 
dann schneller raustakten zu können als es der AVR macht. Die neuen MMC 
4.0 Karten sollen 8 Datenleitungen haben vielleicht wäre das ne 
Überlegung wert gerade weil man die Daten parallel aus dem AVR 
rausbekommt und das Programm dann auch schneller abläuft.

Den Kartenleser von Holger Klabunde kenne ich nicht, gibts dazu irgenwo 
einen Link wo man sich das Projekt mal anschauen kann?

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Thomas O. wrote:
> wenn
> der AVR vielleicht höchstens 1 MHz zu schieben vermag.

Huh?! Ne null darfste schon dranhängen...

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Thomas

Sicher wäre es schön wenn man statt SPI mit nur einer
Datenleitung 4 oder 8 Datenleitungen benutzen könnte.
Dann musst du aber Mitglied im Club werden. Kostet
ja nur ein paar tausend Euro im Jahr. Der Hacken an der
Sache: Du darfst deinen Code nicht mehr frei rausgeben.

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Achso wusste nicht das die das Geheimhalten und Geld dafür verlangen 
aber mit einem Logic-Analyzer müsste man doch dahinterkommen. Gibts da 
nichts aus der Linux-Ecke?

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dann setzt doch auf Compact Flash ein paar Latches und die Sache läuft 
rund und vor allem schneller weil parallel und der µC kann nebenher noch 
andere Sachen erledigen als sich nur ums schieben zu kümmern.

Wenn ihr aber bei SPI bleiben wollt könnte man die fertigen Daten wo 
also alle sdrin ist, Start-Stop Funktion, Adresse, Byte usw. in ein 
großes parallel zu seriel Schieberegister laden und dann extern mit den 
maximal möglichen 25 MHz austakten.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>dann setzt doch auf Compact Flash ein paar Latches und die Sache läuft
>rund und vor allem schneller weil parallel und der µC kann nebenher noch
>andere Sachen erledigen als sich nur ums schieben zu kümmern.

Danke für den Tip. Der uC erledigt das schieben aber nicht selbst.
Das macht das Hardware SPI Modul. Solange das schiebt kann der
uC schon mal Daten aus dem Speicher holen und den Schleifenzähler
runterzählen.

Compact Flash ist nicht wirklich gut an einem 40poligen uC.
Erstens kann man den Sockel kaum löten und zweitens gehen
die Hälfte der IO Pins dabei drauf. SPI braucht nur vier Pins.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
liege ich somit falsch, dass eine SPI SCK Änderung um das doppelte z.B. 
von Teiler 8 auf Teiler 4 keine Geschwindigkeitsändrung in der Datenrate 
veruracht ?

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Bist du sicher das dein ATMega32 auch mit 16MHz läuft ?

eigentlich schon, habe an XTAL1 und XTAL2 einen 16MHz Quarz zwei 27pf 
Kondensatoren gegen Masse und in den Fuse-Bits habe ich External Quarz/ 
Resonator (1111) (11) im AVR eingestellt. Noch dazu ein CKOPT, da man 
dass beim MEGA32 ab 16 MHz takten benötigt. Habe ich etwas vergessen ?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Habe ich etwas vergessen ?

Ja möglicherweise. In MMCReadSektor und in MMCWriteSektor
stelle ich (wie unvorsichtig) automatisch auf SPI Doublespeed.
Evtl. arbeitest du die ganze Zeit schon mit demselben Teiler :(

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich versuche Initialisierung von Schreib bzw. Lesevorgang so zu trennen 
in dem ich in der Getdriveinformation() den 128 Taktteiler nehme und den 
Speed bevor ich mit RemoveFile() beginne auf 0x50 (also 4Teiler) und 
SPSR=0x01 hochdrehe.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sollte ich also nach der Initialisierung auf 0x50 stellen, dann Lese und 
schreibe ich automatisch mit fosc/2, da innerhalb der Funktionen ja auf 
SPSR= 0x01 umgestellt wird. Dann verstehe ich die 100kB/s erst recht 
nicht ;-(((

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Getdriveinformation() ist dafür der falsche Platz !
Das wird in MMCIdentify() bereits gemacht. Siehe Anfang und Ende
von MMCIdentify().

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das habe ich bereits bemerkt und sry ich meinte die MMCIdentify(). Zu 
beginn wird ja der 128 Teiler zu initialsierung hergenomme und dann zu 
Ende auf 0x50 umgestellt, was der 4 Teiler bei SPSR = 0x00 wäre.

Bei derartiger Einstellung schaffe ich, wenn ich 128 Bytes schreibe:
Schreiben: 108, 5 kB/s
Lesen:     120,6  kB/s

Bin ratlos !

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie groß ist die Karte eigentlich ?
Kannst du mal ein komplettes Log posten ?

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Karte ist 1 GB Gross ist von SANdisk und ist eine MINI SD mit 
Adapter kostet bei Reichelt so um die 10 €. Der log lautet:

******************************************************************
ATMega FAT DOS-Read-Write-Test3md 17: 0xFF 0xFF 0x00d 24: 0xFF
 by Holgi
Cmd 17
FAT16 0xFF
bootSecOffset 32
WS
Cmd 1
Reserved Sectors 8FF 0xFF 0x
Cmd 24:
FAT Sectors 1120xFF 0x000x
Cmd
Num. of FAT's 2
Cmd 17: 0xFF 0
secPerCluster 100 0x
Cmd 17:

BytesPerCluster 512000006E9F00
RS
FATFirstSector 40 0xFF 0x00 0xFF 0
FirstRootSector 26417: 0xFF 0xFF 0x00d
RootDirSectors 32000
Cmd 17: 0xFF
FirstDataSector 296xFF 0xFF 0x
Cmd 17:
maxsect 288000
RootDirSectors 32
FirstDataSector 581
maxsect 1984000
FirstDirCluster 0
maxcluster 61959
Using FAT12
Using FAT16
Using FAT32

Using FAT Buffer
MMC/SD Card
FAST_SPI_WRITE
FAST_SPI_READ
FAST_FWRITE
FAST_FREAD
F_CPU 16000000

Start writing files
128  18.45s 108.4kB/s

Start reading files
128  16.59s 120.5kB/s
Test done.

**************************************************************

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist aber kein Original-LOG von mir.
Hoffentlich hast du nicht auch an anderen Stellen rumgefummelt.

Was ist das denn ? => secPerCluster 100
Wie ist denn die Karte formatiert ?
serPerCluster ist bei allen meinen Karten
eine Zweierpotenz: 1,2,4,8,16,32,64,128

Das funktioniert so wirklich ?

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das ist aber kein Original-LOG von mir.

Doch, habe nur den Schreibtest mit 128 Bytes drinnengelassen, den Rest 
habe ich auskommentiert und die DEBUG-Comments hab ich angemacht. 
Ansonsten hab ich nix gemacht.

Habe in Knoppix eine leere DOS-Partitionstabelle angelegt. Dann eine 
partition (primär), dann von Zyliner 1 bis 1016. Dann das FAT16 mit hex 
6 als fs gemacht und das ganze geschrieben:

*******in Linux********
fdisk /dev/sda
o
n
1
1
1016
t
6
w
***********************

Dann habe ich die Karte in Windows XP probiert, dort erkannte er sie, 
aber nicht formatiert. Dann habe ich unter Dateiträgerverwaltung mit FAT 
und einer size von 16k (kleiner ging es nicht) formatiert.
Ab dem zeitpunkt erkannte Windows und das Programm die Karte und das FS 
und das Schreiben und Lesen ging los;-)

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schalte doch mal MMC_DEBUG_COMMANDS ab.
Das könnte schon sehr aufhalten.
Wundert mich das das LOG nicht voll von CMDxx Ausgaben ist ?

Mit dem secPerCluster Wert wirds aber Probleme geben.
Partitionier die Karte doch mal in Win neu.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Partitionieren tu ich sie ja immer in Linux. Ich hab ein LOW-Voltage 
FORMAT Tool im Web gefunden, dass di Karte vollkommen platt macht und 
dann partitioniere ich immer in Linux. Wie soll ich da vorgehen.
Soll ich die Karte wieder komplett löschen und dann in Windows mit FAT 
formatieren ? Dann erkennt das Programm das FAT16 nämlich nie.

>>Schalte doch mal MMC_DEBUG_COMMANDS ab.
Auch schon gemacht, keine deutliche verbesserung spürbar, leider.

>>Mit dem secPerCluster Wert wirds aber Probleme geben.
Das würde ich gerne richtig machen. Schätze das da der Fehler liegt. Wie 
mach ich das genau in Windows ?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Soll ich die Karte wieder komplett löschen und dann in Windows mit FAT
>formatieren ?

Ja mach, das mal.

> Dann erkennt das Programm das FAT16 nämlich nie.

Wie alt ist die Version meines Programmes ?
Damit hatte ich noch nie Ärger.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab jetzt 2 unterschiedliche SD-Karten formatiert und getestet. Eine 16 
MB und eine 1GB

ATMega FAT DOS-Read-Write-Test3
 by Holgi
FAT16
bootSecOffset 57
Reserved Sectors 8
FAT Sectors 112
Num. of FAT's 2
secPerCluster 1
BytesPerCluster 512
FATFirstSector 65
FirstRootSector 289
RootDirSectors 32
FirstDataSector 321
maxsect 28800
FirstDirCluster 0
maxcluster 28481
Using FAT12
Using FAT16
Using FAT32

Using FAT Buffer
MMC/SD Card
FAST_SPI_WRITE
FAST_SPI_READ
FAST_FWRITE
FAST_FREAD
F_CPU 16000000

Start writing files
128  16.14s 123.9kB/s

Start reading files
128  16.46s 121.5kB/s
Test done.



ATMega FAT DOS-Read-Wr
 by Holgi
FAT16
bootSecOffset 249
Reserved Sectors 2
FAT Sectors 243
Num. of FAT's 2
secPerCluster 32
BytesPerCluster 16384
FATFirstSector 251
FirstRootSector 737
RootDirSectors 32
FirstDataSector 769
maxsect 1984000
FirstDirCluster 0
maxcluster 61977
Using FAT12
Using FAT16
Using FAT32

Using FAT Buffer
MMC/SD Card
FAST_SPI_WRITE
FAST_SPI_READ
FAST_FWRITE
FAST_FREAD
F_CPU 16000000

Start writing files
128  18.71s 106.8kB/s

Start reading files
128  16.57s 120.7kB/s
Test done.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sieht für mich gut aus. Ich weiss: für dich nicht :(
Dann sind die Dinger halt so langsam. Sind die Debug Ausgaben
in mmc_spi.h wirklich alle aus ?

Zieh dir mal die neuste Software von meiner Homepage.

In dos.h aktivierst du dann:

FASTER_FWRITE
FASTER_FREAD

Beim schreiben bringt das ~3-4%. Beim lesen einiges mehr.
Aber auch das wird dich nicht glücklich machen.

Gruß
 Holger

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Sind die Debug Ausgaben
in mmc_spi.h wirklich alle aus ?

ja vertrau mir :-) die sind aus.

>Beim schreiben bringt das ~3-4%. Beim lesen einiges mehr.
Aber auch das wird dich nicht glücklich machen.

hört sich doch gut an, wenn ich sagen kann, das es an der Karte liegt, 
dann ist das ja für mich ok, dann hol ich mir eben eine schnelle und 
nehme eine aus deinen Test. Mir gehts nur eben logischerweise darum, ob 
ich etwas falsch mache. Ich zieh mir jetzt die Software und meld mich 
dann wieder.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also:

Auf meiner 1 GB SD-Karte hat die neue Version grössere Verbesserungen 
gebracht, als du gedacht hättest:

***********************************************************************
ATMega FAT DOS-Read-Write-Test3
by Holgi
FAT16
bootSecOffset 249
Reserved Sectors 2
FAT Sectors 243
Num. of FAT's 2
secPerCluster 32
BytesPerCluster 16384
FATFirstSector 251
FirstRootSector 737
RootDirSectors 32
FirstDataSector 769
maxsect 1984000
FirstDirCluster 0
maxcluster 61977
Using FAT12 FAT16 FAT32

Using FAT Buffer
MMC/SD Card
FAST_SPI_WRITE FAST_SPI_READ
FASTER_FWRITE
FASTER_FREAD
F_CPU 16000000

Deleting files

Start writing files
  1  62.26s  32.1kB/s
  2  36.94s  54.1kB/s
  4  24.45s  81.7kB/s
  8  18.06s 110.7kB/s
 16  15.04s 132.9kB/s
 32  13.34s 149.9kB/s
 64  12.56s 159.2kB/s
 77  12.51s 159.8kB/s
128  12.18s 164.2kB/s

Start reading files
  1  71.32s  28.0kB/s
  2  40.21s  49.7kB/s
  4  24.66s  81.1kB/s
  8  16.89s 118.4kB/s
 16  13.00s 153.8kB/s
 32  11.06s 180.8kB/s
 64  10.09s 198.2kB/s
 77  10.01s 199.8kB/s
128   9.60s 208.3kB/s

Verifying files
77.TXT verify ok !
128.TXT verify ok !
Test done.
************************************************************************ 
*

Beim Lesen also schon die 200 ! Super.
Jetztkommt gleich noch der Test mit der 16 MB

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da nur 16 MB draufpassen, beginnt der Test bei 8Bytes. Man muss 
bedenken, dass diese Karte schon mindestens3-4 Jahre alt ist. Wenn ich 
mir deinen Test mit einer Sandisk 256MB anschaue, bin ich mit der alten 
Karte beim Schreiben gleichschnell. Beim Lesen fehlen noch ein paar 
Bytes ;-)

***********************************************************************
ATMega FAT DOS-Read-Write-Test3
 by Holgi
FAT16
bootSecOffset 57
Reserved Sectors 8
FAT Sectors 112
Num. of FAT's 2
secPerCluster 1
BytesPerCluster 512
FATFirstSector 65
FirstRootSector 289
RootDirSectors 32
FirstDataSector 321
maxsect 28800
FirstDirCluster 0
maxcluster 28481
Using FAT12 FAT16 FAT32

Using FAT Buffer
MMC/SD Card
FAST_SPI_WRITE FAST_SPI_READ
FASTER_FWRITE
FASTER_FREAD
F_CPU 16000000

Deleting files

Start writing files
  8  15.82s 126.4kB/s
 16  12.72s 157.2kB/s
 32  11.10s 180.1kB/s
 64  10.34s 193.4kB/s
 77  10.28s 194.5kB/s
128   9.93s 201.4kB/s

Start reading files
  8  16.77s 119.2kB/s
 16  12.89s 155.1kB/s
 32  10.93s 182.9kB/s
 64   9.97s 200.6kB/s
 77   9.88s 202.4kB/s
128   9.48s 210.9kB/s

Verifying files
77.TXT verify ok !
128.TXT verify ok !
Test done.
************************************************************************ 
*

PS: Das Programm von dir ist übrgens der hammer. Hab ich bis jetzt noch 
gar nicht erwähnt.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt nur einen kleinen BUg in der Dumbsect.c wo der aufruf der USART 
funktion ser_putc(' ') kommt macht mein Compiler mucken.

***undefined reference******

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sieht doch schon besser aus !
Benutze im neuen makefile jetzt -02 statt -Os.
Das bringt auch schon einiges.

Die Testdaten sind zum Teil schon recht alt.
Ich mach irgendwann mal einen neuen Messlauf.

Viel Spaß dann noch
 Holger

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Hilfe !

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ser_puthex ist auskommentiert !

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So jetzt hab ich hyper SPeed YEEEEEEEES !
Also, das mit dem optimierlevel auf 02 ist der Tipp. Schau dir mal die 
Werte an:

********************************************16 MB Karte
ATMega FAT DOS-Read-Write-Test3
 by Holgi
No Flash !ATMega FAT DOS-Read-Write-Test3
 by Holgi
No Flash !ATMega FAT DOS-Read-Write-Test3
 by Holgi
FAT16
bootSecOffset 57
Reserved Sectors 8
FAT Sectors 112
Num. of FAT's 2
secPerCluster 1
BytesPerCluster 512
FATFirstSector 65
FirstRootSector 289
RootDirSectors 32
FirstDataSector 321
maxsect 28800
FirstDirCluster 0
maxcluster 28481
Using FAT12 FAT16 FAT32

Using FAT Buffer
MMC/SD Card
FAST_SPI_WRITE FAST_SPI_READ
FASTER_FWRITE
FASTER_FREAD
F_CPU 16000000

Deleting files

Start writing files
  8   9.80s 204.0kB/s
 16   7.80s 256.4kB/s
 32   6.74s 296.7kB/s
 64   6.25s 320.0kB/s
 77   6.20s 322.5kB/s
128   6.00s 333.3kB/s

Start reading files
  8   9.61s 208.1kB/s
 16   7.21s 277.3kB/s
 32   5.99s 333.8kB/s
 64   5.40s 370.3kB/s
 77   5.33s 375.2kB/s
128   5.10s 392.1kB/s

Verifying files
77.TXT verify ok !
128.TXT verify ok !
Test done.


*************************************** 1 GB Karte
ATMega FAT DOS-Read-Write-Test3
 by Holgi
FAT16
bootSecOffset 249
Reserved Sectors 2
FAT Sectors 243
Num. of FAT's 2
secPerCluster 32
BytesPerCluster 16384
FATFirstSector 251
FirstRootSector 737
RootDirSectors 32
FirstDataSector 769
maxsect 1984000
FirstDirCluster 0
maxcluster 61977
Using FAT12 FAT16 FAT32

Using FAT Buffer
MMC/SD Card
FAST_SPI_WRITE FAST_SPI_READ
FASTER_FWRITE
FASTER_FREAD
F_CPU 16000000

Deleting files

Start writing files
  8  12.46s 160.5kB/s
 16  10.20s 196.0kB/s
 32   9.16s 218.3kB/s
 64   8.69s 230.1kB/s
 77   8.76s 228.3kB/s
128   8.44s 236.9kB/s

Start reading files
  8   9.78s 204.4kB/s
 16   7.37s 271.3kB/s
 32   6.17s 324.1kB/s
 64   5.57s 359.0kB/s
 77   5.51s 362.9kB/s
128   5.27s 379.5kB/s

Verifying files
77.TXT verify ok !
128.TXT verify ok !
Test done.
********************************************************************

Das ist absolute Spitzenklasse, ich sag ja, super Prog, grossen Respekt 
!!!

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist ja schon fast unheimlich ;)

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, unheimlich GEILLLL ;-)
Siehste mal was aus deinem Proggi alles rausholbar ist, sogar so ne alte 
16 Mb Karte geht ab wie Schmitz´s Katze ;-))))

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.