Symbole für Adressen im externen EEPROM

#1657326
Lesenswert?
• ▲
▼
Aus einem Makefile extrahiert
1
...
2
  --change-section-address .data-0x800000 \
3
  --change-section-address .bss-0x800000 \
4
  --change-section-address .noinit-0x800000 \
5
  --change-section-address .eeprom-0x810000 
6
...
Es ist also alles jenseits von 0x810000 verfügbar.

Vorschlag: 0x820000

Werner

Edit: Ich sehe gerade dass bis 840000 belegt ist, also 0x850000,
oder gleich 0xA00000.

;)
Gast #1657590
Lesenswert?
• ▲
▼
Hallo Werner, danke fuer deine Hilfe!
Was ich an der Sache nicht verstehe: wie wird in diesem Fall denn aus 
einer Variable die Adresse 0? Also, in welchem Speicher ist die section 
0xA00000 und was steht an dieser Adresse? Wuerde mich freuen, wenn du 
mir mit einer Erklaerung den Linker etwas naeherbringen koenntest :-)
#1657999
Lesenswert?
• ▲
▼
Ist im Link aus dem zweiten Beitrag erklärt.

Ein Pointer ist beim AVR 16 Bit, kann also Werte von 0x0000 bis 0xFFFF 
annehmen. Der Compiler/Linker verwendet längere (vermute mal 32 oder 64 
Bit). Hier werden 24 Bit benötigt (0xA00000). Durch den avr-objcopy wird 
dieser Bereich aus dem erzeugten elf-Binärfile extrahiert und 
(üblicherweise) in ein hex File umgewandelt. Da hierbei nur 16 Bit 
Adressen benötigt werden (bzw. verwendet werden können), werden die 
überzähligen Bits einfach abgeschnitten.


Original:  uint32_t orgptr = 0xA01234;
Ziel:      uint16_t targptr = orgptr;   // Ergebnis = 0x1234;

Automagically ;-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.