LinkerScript absolute RAM Adressen

Gast #1595163
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
Moderator Persönliche Seite
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.
Gast
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
Gast
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..

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.