mikrocontroller.net

Forum: Compiler & IDEs RAM - Speicherproblem


Autor: Martin Langbein (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jörg Wunsch
so habs so gemacht wie du gemeint hast..  und wer hätts gedacht es
geht;)

aber so ganz verstanden hab ich noch net warum meine version net lief.
ich hab doch praktisch nur ein pointer der auf ne struktur innerhalb
des puffers zeigt, übergeben.

Und des volatile hab ich seither noch net verwendet weil ich net weiss
was des bewirkt

vielen dank des hat mir viel zeit erspart

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(Bitte keinen neuen Thread für altes Zeug.  Das macht es Anderen, die
den Thread nachträglich verfolgen, praktisch unmöglich, die Auflösung
zu erkennen.  Außerdem erschwert es das Antworten.)

> ich hab doch praktisch nur ein pointer der auf ne struktur innerhalb
> des puffers zeigt, übergeben.

Nein, du hast ein einzelnes Strukturelement kopiert, also nur den
ersten Eintrag deiner fdisk-Tabelle extrahiert.  Das ist erstens
zusätzlicher Aufwand, schon von daher vermeidet man sowas eher,
zweitens kannst du den Pointer nicht anschließend auf den nächsten
Eintrag der Tabelle weiterschalten.  In ganz altem C (pre-C89, das
sogenannte ,,K&R-C'') konnte man Strukturen nicht direkt (ohne
memcpy()) kopieren, schon daher ist das ein Feature, was
C-Programmierer auch heute nur eher spärlich benutzen.

Deine Variante hätte korrekt ungefähr so ausgesehen:
void readPe1(unsigned char *buffer,struct tPartitionEntry **pe){
  MMC_read_sector(0,buffer);
  *pe = (struct tPartitionEntry *)&buffer[PART_ENTRY_ONE];
}


int main(void) {
  unsigned char buffer[512];
  struct tPartitionEntry *pe;

  readPe1(buffer,&pe);
  return 0;
}

Du solltest dir das Kapitel über Zeiger und Felder in deinem
C-Lehrbuch nochmal durchlesen...

Autor: Martin Langbein (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry wegen dem Thread..
so sachen mit pointern haben wir zwar in der schule behandelt... aber
in
visual c++ ham wir uns nie so intensiev damit befasst, was letztlich
mit den variablen passiert und wo sie am ende stehen... da spielt die
ram-größe au net so ne große rolle.. man hat ja 512MB davon..
(zumindest mit dieser einstellung wurde es und beigebracht)

also vielen dank

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.