MMC Lin von Ulrich radig

Gast #222116
Lesenswert?
• ▲
▼
Hallo.
Ich bin gerade dabei die eine MMC mit der LIB von Ulrich Radig
anzusteuern. Ich habe überall wo Mega32 steht Mega16 reingeschrieben
(sind ja PIN kompatibel)
(ich nutze die beispiel funktion)
Dann hab ich noch ein paar zusätzliche UART-Debug strings hinzugefügt.
(und eine funtkion die Wartet bis eine Taste gedrückt wird:
1
  //Initzialisierung der seriellen Schnittstelle
2
  IOInit();
3
  
4
  //öffnet einen kanal für printf
5
  fdevopen (uart_putchar, NULL, 0);
6

7
  DDRC = 0x00;
8
  PORTC = 0xFF;
9
  printf ("~");  //Debug String
10
  while ((PINC|0b11111110)==0xFF); //Warte bis taste gedrückt
11

12
  //Initialisierung der MMC/SD-Karte
13
  printf ("System OK\n\n");    //Debug String
14
  while ( mmc_init() !=0) //ist der Rückgabewert ungleich NULL ist ein
15
Fehler aufgetreten
16
    {
17
    printf("** Keine MMC/SD Karte gefunden!! **\n");  
18
    }
19
    
20
  printf("Karte gefunden!!\n");  //Debug String
21
  printf("0");  //Debug String
22
  Cluster_Data_Store();//laden Cluster OFFSET und Size ins EEPROM
23
  //Initialisierung der MMC/SD-Karte ENDE!
24
  printf("1");  //Debug String
25
  unsigned char Buffer[512];
26
  unsigned int tmp;
27
........

über den UART komt folgende rein: (solange ich die taste Drücke)
~System OK
Karte gefunden!!
0~System OK
Karte gefunden!!
0~System OK
Karte gefunden!!
0~

d.h nach der Funktion Cluster_Data_Store(); wird ein Reset ausgelöst (/
die funktion main beginnt von vorne)

Wodurch könnte das zu stande kommen ?
Gast #222119
Lesenswert?
• ▲
▼
OK, hab des Porgramm jetzt aufn mega32 geladen....und es geht ohne
probleme. Lag wahrscheilich wirklich am speicher. Wiso ist der Speicher
eigentlich zu klein ? /was ist an dem FAT16 System zu gross ?
#222120
Lesenswert?
• ▲
▼
FAT16 erfordert, dass du immer einen gesamten Sektor im SRAM liegen hast
(wenn ich mich nicht irre, sogar zweimal). Und das sind schonmal 512
Bytes (je Sektor). Dann noch die Variablen, das läppert sich zusammen.

FAT ist nunmal nicht das optimale System, dafür leider das
verbreitetste. Ist nunmal die Rache von Onkel Bill...

...
Gast #222121
Lesenswert?
• ▲
▼
Der Grund da das FAT Dateisystem nicht auf jedem Controller funktioniert
 liegt tatsächlich an den Buffer - Variablen
FAT16 ---> Sektorgröße = 512Byte macht x2 1024Byte und ist somit zu
groß für zB Mega8 mit 1K SRAM-Speicher.


MfG
Gast #222123
Lesenswert?
• ▲
▼
Also 512Byte Buffer sind immer fuer SD-Ram/MMC Karte notwendig wenn man
sie beschreiben will. Egal ob mit Filesystem oder nicht. Es waere
qsicherlich auch denkbar sich ein FAT12/FAT16/FAT16BIG zu schreiben das
auch nur mit 512Byte Buffer und vermutlich so 100Byte fuer bestimmte
Variablen auskommt.
Es waer sicherlich grottenlahm und total ineffizient, aber machbar
sollte es sein. Es wird aber auch einiges an Flashrom brauchen.

Wollte ich bei Gelegenheit mal machen, allerdings reicht es in den
meisten Faellen doch aus ein einziges File zu beschreiben. Das kann man
dann auch direkt und linear und  spart sich viel Aufwand.

Olaf

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.