Eeprom Adressen der Daten

Gast #178612
Hallo,

ich bin auf der Suche nach einer Erklärung wie die Eeprom Daten aus dem
C-Code (eeprom section) in das Eeprom des Prozessors organisiert werden.
Meine bisherigen Erfahrungen haben gezeigt, dass die Daten einfach
rückwärts in des Eeprom geschrieben werden. D.h. der Letzte Eeprom Wert
im C-Code steht im Assembler File an erster Stelle, also hat auch die
nierdrigste Adresse im Eeprom und so weiter.
Meine Frage hierzu: kann man generell von dieser Methode ausgehen oder
hängt dies von Faktoran ab?

Grüße
Günni
Gast
Ich würde nicht davon ausgehen.  Früher wurden sie genau andersrum
sortiert.  Die neue Reihenfolge beim GCC 3.4 scheint ein Fietscher,
das ein Seiteneffekt irgendeiner anderen Änderung ist.  Du musst auch
immer damit rechnen, dass der Compiler u. U. mal Variablen nach Größe
sortiert (z. B. um 16-bit Variablen zusammen zu halten).

Wenn Du eine bestimmte Reihenfolge brauchst, dann deklariere den
gesamte EEPROM-Inhalt in eine struct hinein, und benutze diese struct
als einzige Variable im EEPROM überhaupt.
Gast
Hi

wenn du die genauen Addressen außerhalb deines Programms brauchst (ich
hab das mal für eine Konfiguration mittels PC benötigt) dann kannst du
diese aus dem map-file extrahieren. Ein kleines perl Skrip hat bei mir
die Daten extrahiert und in eine Datei zur weiteren Verarbeitung
geschrieben.

#!/bin/perl -w

open(INPUT,"main.map") or die "Fehler beim Öffnen des map file:
$!\n";
open(OUTPUT,"> eeprom_addr.bin") or die "Fehler beim Öffnen von
eeprom_addr.bin: $!\n";

$merker = 0;

#eeprom-addressen aus map file extrahieren
while(defined($i = <INPUT>))
{
  if($merker == 1)
  {
    if($i =~ __eeprom_end)
    {
      $merker = 0;
    }
    else
    {
      if($i =~ /eeprom_./)
      {
        $i =~ s/ {1,}//;
        $i =~ s/ {1,}/#/;
        $i =~ s/\n/#/g;
        $i =~ s/\r//g;
        $i =~ s/0x00810//g;

        print OUTPUT $i
      }
    }
  }

  if($i =~ /\*\(\.eeprom\*\)/)
  {
    $merker = 1;
  }
}

print OUTPUT '#';

close(INPUT);
close(OUTPUT);

Nicht schön erfüllt aber seinen Zweck.

Matthias

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.