mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik HC8SX Filestruktur in RAM


Autor: Harald Hermenau (mirona)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich versuche folgende Funktion zum Leben zu erwecken.
Basierend auf den Routinen für SD Karten von Elm Chan soll von einer SD 
Karte ein File gelesen werden.

#include "bmp.h"
#include "ff.h"

struct BMPHeader tBMP;

void ReadBMP (void) {
  FIL *BMPFile;
  FATFS BMPfs;
  volatile unsigned int *readByte;
  unsigned char BMPBuffer[512];
  volatile FRESULT fres;
  unsigned int i;

  for (i = 0; i < 512; i++) {
    BMPBuffer[i] = 0;
  }

  if ((f_mount (0, &BMPfs)) == FR_OK) {
    fres = f_open (BMPFile, "ML123456.bmp", 0);
    if (fres == FR_OK) {
      fres = f_read (BMPFile, BMPBuffer, 512, readByte);
    } else {
      fres = f_close (BMPFile);
    }
  }
  f_close (BMPFile);
}
Das ganze läuft auf einem H8SX (R5F61668R mit 1024 kByte Flash und 56 
kByte RAM) Prozessor von Renesas. Kompiliert wird mit dem Renesas 
Compiler. Das Debugging erfolgt mit dem E10A Debugger von Renesas

Was ist das Problem?
Der Hardwarezugriff auf die Karte funktioniert. Auch die einzelnen 
Funktion der FAT scheinen zu funktionieren. Sie wurden einzeln mit dem 
Monitor getestet.
In obigem Programm wird nun der Zeiger auf BMPFile in den ROM Bereich 
gelinkt.
Da diese Struktur ja mit Leben gefüllt werden soll, funktioniert das 
nicht. Nun tritt aber folgender Effekt auf. Wenn die Funktionen f_read 
und f_close auskommentiert werden, zeigt der Zeiger von BMPFile in den 
RAM. Somit werden alle relevanten Daten von der Karte gelesen und in die 
Filestruktur geladen.
Ich verstehe nicht, warum der Linker die Struktur im ROM anlegen will?
Am zur Verfügung stehenden Speicher kann es meiner Meinung nach nicht 
liegen, der ist mit 56 kByte ausreichend groß und wird nur vom Stack 
genutzt.
Vielleicht kann mir jemand helfen.
Danke

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.