www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Rowley Crosswork ARM: RAM Placement Batterie Ram


Autor: Christian J. (elektroniker1968)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

kann mir jemand, der sich mit dieser Oberfläche gut auskennt verraten, 
wie ich eine Variable im Batterie RAM ablegen kann?

Mir sind die beiden Linker Files

Philips_LPC2368_MemoryMap.xml
enthält: AHB Peripherals, Battery Ram, APB Peripherals, USB Ram usw

flash_placment.xml
----Internal SRAM,SRRAM usw
--------.fast_run .vectors_ram usw
----External RAM...
------.stack, .heap, .bss, .data_run usw

bekannt, ebenso wie ich mit der _attribute (section .batram) Anweisung 
Variablen in festen Bereichen allokieren kann.

Das Batterieram wird auch im ersten File schon erwähnt und wo es liegt, 
im zweiten File aber ist keine Sektion dafür eingerichtet. Richte ich 
diese unter Internal SRAM.... ein und vergebe ihr die Adresse wird das 
beim Linken muckiert. Die anderen Einträge habenm auch keine fixen 
Adressen zugeordnet nur reservierte Wörter.

Bitte um Schritt für Schritt Anleitung, das intutive habe ich schon 
alles ausprobiert, die neue Sektion .batram wird nicht erkannt, ebenso 
wird die Adresse E0004000 angemeckert.

Gruss,
Christian

Autor: tuppes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1. Im flash_placement.xml ein neues Memory Segment anlegen (Kontextmenü, 
"New Memory Segment") -> kriegt defaultmäßig den Namen "New"

2. Das Name-Attribut ändern in "Battery RAM" -> Schreibweise muss genau 
übereinstimmen mit dem Namen aus dem MemoryMap.xml

3. Eine Memory Section dort hineinlegen (Kontextmenü, "New Program 
Section") -> kriegt auch den Namen "New"

4. Das Name-Attribut ändern in was Sinnvolles, z.B. ".batram".

5. Das Load-Attribut auf "No" setzen, sonst wird die Sektion bei jedem 
Laden initialisiert - willst du bei Batterie-RAM nicht.

6. Im Sourcecode Variable deklarieren:
int myBatteryRamValue __attribute__((section(".batram")));

Et voilà.

Autor: Christian J. (elektroniker1968)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

leider nicht ganz, das war auch mein Fehler im flash placement 
herumzufummeln.

1. Im File Philips_LPC2368_MemoryMap.xml unter "Battery Ram" eine neue 
Sektion anlegen zB .batram, Alignment auf 4 setzen, Load Type auf No.

2. Im flash_placement muss nichts geändert werden.

Der Linker erzeugt im Symbol Explorer automatisch die neue Sektion 
.batram, sobald man die Schlüsselwörter verwendet. Er meckert nur wenn 
er .batram nicht im Philips File findet. Ebenso meckert er wenn man die 
Startadresse eingegeben hat, weil die schon festgelegt ist in der 
Überschrift.

Nach einem Vergleich mit dem Listing File stimmt die Adresse der neuen 
Variable auch, ebenso hat er _batram_start richtig angelegt.

Thats all.

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.