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


von Christian J. (elektroniker1968)


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

von tuppes (Gast)


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:
1
int myBatteryRamValue __attribute__((section(".batram")));

Et voilà.

von Christian J. (elektroniker1968)


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.

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
Noch kein Account? Hier anmelden.