Forum: Mikrocontroller und Digitale Elektronik SD-Karte Partitions/Filesystem error


von Alex (Gast)


Lesenswert?

Hallo!

Ich habe folgendes Problem! Ich benutze eine Kingston 2 GB SD 
Speicherkarte und versuche diese auf dem Webmodul nach Ulrich Radig ans 
laufen zu kriegen. Hierzu verwende ich die Bibliothek nach Roland 
Riegel.
Das Initialisieren der Karte mit der Funktion f16_init(); klappt auch 
schon.
Allerdings bekomme ich in der Funktion f16_check(); die Fehlermeldung 
"SD-Karte opening filesystem fail". Allerdings habe ich die Karte schon 
mit verschiedenen Betriebssystemen auf Fat 16 Formatiert 
(win2k,XP-Eingabeaufforderung,ubuntu-commandline) Leider unterstützten 
Partition Magic und GPartet irgendwie keine SD Karten. Meine Frage nun 
so oft wie ich die Karte Formatiert habe, könnte es sich um einen 
anderen Fehler handeln oder hat schon mal jemand nen ähnlichen Fehler 
gehabt?


Bei einem 2 Versuch habe ich dann auch versucht mit folgendem Quellcode 
die Karte anzusprechen:



f16_init();

struct partition_struct* partition;
partition = 
partition_open(sd_raw_read,sd_raw_read_interval,sd_raw_write,sd_raw_writ 
e_interval,0);
if(partition==0)
{
  ausgabe("partition leer");
}

Hier gibt mir das Modul "partition leer" aus was ja darauf führen kann 
das schon die ganze Partition nicht erkannt wurde und nicht nur das 
Dateisystem nicht.
Habe mich schon durch mehrere Forenbeiträge gelesen doch nichts konnte 
mir wirklich helfen.

Bin für jede Hilfe Dankbar

Grüße
Alex

von MeinerEiner (Gast)


Lesenswert?

Formatier das Teil mal in ner Digicam. PC-Formatierungen haben bei mir 
auch nie funktioniert.

von GeraldB (Gast)


Lesenswert?

> Formatier das Teil mal in ner Digicam. PC-Formatierungen haben bei mir
> auch nie funktioniert.

Wobei das nicht immer funktionieren muß, da einige Digicams ein völlig 
eigenes Dateiformat verwenden.

Panasonic stellt für seine eigenen SD-Karten ein Formatierungsprogramm 
für Windows zur Verfügung. Es funktioniert aber auch mit Karten anderer 
Hersteller.
http://panasonic.jp/support/global/cs/sd/download/sd_formatter.html

von prinz3nroll3 (Gast)


Lesenswert?

Hallo,
ob die karte okay ist kannst du mit nem tool von der ct testen.
dieses ist eigentlich für usb sticks aber das ist egal.
http://www.heise.de/software/download/h2testw/50539
gruß

von Alex (Gast)


Lesenswert?

Danke schon mal für die hilfe.
Ich habe die SD Karte mit einer Digicam formatiert und jetzt hängt sich 
das Programm in der init auf. Ich muss morgen mal schauen woran es 
liegt.
Denke das es was anderes ist (der ATmega den ich verwende ist 80 % voll 
vielleicht liegt es daran (werde denn mal entschlacken müssen)

Danke
Alex

von Alex (Gast)


Lesenswert?

Hallo nochmal
leider ging es nach selbst nach Fehlerüberprüfung immer noch nicht.
Das Modul hängt sich sogar jetzt schon früher auf.

In der schleife

for(uint16_t i = 0; ; ++i)
 {
      response = sd_raw_send_command_r1(55, 0);  // APP_CMD
      response = sd_raw_send_command_r1(41, 0);

      itoa(response,zwischenspeicher,10);
      ausgabe(zwischenspeicher);

      if(!(response & (1 << R1_IDLE_STATE)))
      {
            break;
       }
       if(i == 0x7fff)
       {
            unselect_card();
            spi_rec_byte();
            spi_high_frequency();
            return 0;
        }
}

hängt sich das Modul immer auf und ich weiß nicht wieso (habe es mit 
einer vom PC formatiereten Karte getestet und mit einer von einer 
Digicam formatierten Karte. Manchmal geht er hierduch aber sehr oft 
bleibt er hier hängen. Die ausgabe hierbei ist immer 1. In die if 
abfragen geht er gar nicht. In meinem Programm ist derzeit nur die Usart 
und das Bearbeiten der SD Karte. Noch irgendjemand eine idee warum er 
durch diese Schleife nicht durchkommt? Ich sehe hier eigentlich keinen 
Bufferüberlauf oder so.

Grüße
Alex

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.