Hi, ich arbeite an einem Linkerscript, welches mir eine Section im RAM (die ersten 128 Byte des RAMs) des Microcontrollers reserviert: MEMORY { ramfixed (rw) : ORIGIN = 0x20000000, LENGTH = 0x80 ram (rwx) : ORIGIN = 0x20000080, LENGTH = 64K-0x80 rom (rx) : ORIGIN = 0x08000000, LENGTH = 512K } SECTIONS { .ramfixed : { *(.ramfixed) } >ramfixed Zugriff über: u32 U32FixedRam __attribute__((section(".ramfixed"))); Resultat ist, dass zwar die Adressen richtig verteilt werden aber der Bereich von 0x20000000 - 0x20000080 als Flash ROM deklariert wird. Gibt es Ideen zu dem Problem? danke
Hast du die Variable vielleicht doch initialisiert, dann würde LMA und VMA eine Rolle spielen...
Falls der Hinweis von klaus (Gast) 12.02.2010 16:17 betr. Initialisierung nicht zutrifft: Alexander schrieb: >... > Zugriff über: > u32 U32FixedRam __attribute__((section(".ramfixed"))); s/Zugriff/Definition > Resultat ist, dass zwar die Adressen richtig verteilt werden aber der > Bereich von 0x20000000 - 0x20000080 als Flash ROM deklariert wird. Was bedeutet "als Flash ROM deklariert"? Die Toolchain weiss nichts über "Flash ROM", sie kennt nur die im Linker-Script angegebenen Speicherbereiche mit Namen und Attributen (rw/rx/rwx...). Meckert die Debug-Software das an? Wenn ja, nachgesehen, ob die Debug-Software eine Einstellung für die Memory-Map enthält. Je nach Software muss darin evtl. der "ramfixed"-Speicherbereich als read/write-Access oder RAM eingetragen werden. Wenn nein, ein Minimalbeispiel erstellen, mit dem man das momentane Verhalten nachvollziehen kann und mitteilen, was genau nicht wie gewünscht ist und wie es stattdessen sein soll.
Martin Thomas schrieb: > Was bedeutet "als Flash ROM deklariert"? Die Toolchain weiss nichts über > "Flash ROM", sie kennt nur die im Linker-Script angegebenen > Speicherbereiche mit Namen und Attributen (rw/rx/rwx...). Meckert die > Debug-Software das an? Wenn ja, nachgesehen, ob die Debug-Software eine > Einstellung für die Memory-Map enthält. Je nach Software muss darin > evtl. der "ramfixed"-Speicherbereich als read/write-Access oder RAM > eingetragen werden. Wenn nein, ein Minimalbeispiel erstellen, mit dem > man das momentane Verhalten nachvollziehen kann und mitteilen, was genau > nicht wie gewünscht ist und wie es stattdessen sein soll. ja, openocd meckert, dass er nicht auf Adresse 0x20000000 des ROMS schreiben kann. Desweiteren wird eine .bin datei erstellt, die 400MB groß ist - also von 0x0807FFFF bis 0x20000000...
Alexander schrieb: > ja, openocd meckert, dass er nicht auf Adresse 0x20000000 des ROMS > schreiben kann. > Desweiteren wird eine .bin datei erstellt, die 400MB groß ist - also von > 0x0807FFFF bis 0x20000000... Füge mal "NOLOAD" hinzu. Dadurch wird verhindert, daß der Bereich in die BIN- (oder auch HEX-) Datei geschrieben wird. SECTIONS { .ramfixed (NOLOAD) : { *(.ramfixed) } >ramfixed Erwin
Erwin Reuss schrieb: > Füge mal "NOLOAD" hinzu. Dadurch wird verhindert, daß der Bereich in die > BIN- (oder auch HEX-) Datei geschrieben wird. > > SECTIONS > { > .ramfixed (NOLOAD) : > { > *(.ramfixed) > } >ramfixed > > Erwin Super!! das scheint zu funktionieren. danke..
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.