Forum: Mikrocontroller und Digitale Elektronik AVR Studio: Liste der SRAM-Adressen statischer Variablen


von Guido (Gast)


Lesenswert?

Hallo,

ist es möglich sich mit dem AVR Studio eine Liste mit den SRAM-Adressen 
der statischen Variablen auszugeben?

Ist da avr-nm das Richtige? Wenn ja, verstehe ich die Ausgabe nicht!

Folgender Beispielcode:
1
int main(void)
2
{ 
3
  static uint32_t test32 = 0x12345678;
4
  static uint16_t test16 = 0;
5
  test16 = (uint16_t)test32;
6
  test32 = 0x12345678;
7
}

Im Watch-Fenster des Simulators im AVR-Studio werden nun folgende 
SRAM-Adressen angzeigt:

test32 0x0100 (0256 dez)
test16 0x0104 (0260 dez)

Mit
avr-nm --size-sort --print-size -r -td *.elf

bekomme ich folgende Ausgabe:

00000214 00000066 T main
00000160 00000026 T __do_copy_data
00000186 00000016 T __do_clear_bss
08388864 00000004 d test32.1356
08388868 00000002 b test16.1357

Wie komme ich denn auf die SRAM Adressen?
Ist die Ausgabe durch avr-nm der Speicherbedarf für Initalisierung der 
statischen Variablen im FLASH?

Wäre klasse, wenn mir da jemand auf die Sprüunge helfen könnte!

Grüße

Guido

von Guido (Gast)


Lesenswert?

Oder ist das nicht möglich?

von Georg G. (df2au)


Lesenswert?

Sieh dir das automatisch erzeugte *.lss File an. Da steht alles drin.

von Guido (Gast)


Lesenswert?

Georg G. schrieb:
> Sieh dir das automatisch erzeugte *.lss File an. Da steht alles
> drin.

Aber so ne richtige Liste ist das ja auch nicht:
1
...
2
3
  test16 = (uint16_t)test32;
4
  de:  80 91 00 01   lds  r24, 0x0100
5
  e2:  90 91 01 01   lds  r25, 0x0101
6
  e6:  a0 91 02 01   lds  r26, 0x0102
7
  ea:  b0 91 03 01   lds  r27, 0x0103
8
  ee:  90 93 05 01   sts  0x0105, r25
9
  f2:  80 93 04 01   sts  0x0104, r24
10
  test32 = 0x12345678;
11
  f6:  88 e7         ldi  r24, 0x78  ; 120
12
  f8:  96 e5         ldi  r25, 0x56  ; 86
13
  fa:  a4 e3         ldi  r26, 0x34  ; 52
14
  fc:  b2 e1         ldi  r27, 0x12  ; 18
15
  fe:  80 93 00 01   sts  0x0100, r24
16
 102:  90 93 01 01   sts  0x0101, r25
17
 106:  a0 93 02 01   sts  0x0102, r26
18
 10a:  b0 93 03 01   sts  0x0103, r27
19
 10e:  80 e0         ldi  r24, 0x00  ; 0
20
 110:  90 e0         ldi  r25, 0x00  ; 0
21
22
...

Klar man kann es bei den STS-Befehlen sehen.

Dann muss man sich wohl selber daraus eine entsprechende Liste 
generieren!?

von Christopher B. (chrimbo) Benutzerseite


Lesenswert?

Nicht im LSS-File, sondern im MAP-File!

von Stefan E. (sternst)


Lesenswert?

Guido schrieb:
> Wie komme ich denn auf die SRAM Adressen?

Indem du von der angezeigten Adresse 8388608 abziehst.

Etwas offensichtlicher wäre es, wenn du dir die Adressen nicht 
unsinniger weise dezimal ausgeben lassen würdest.

von Guido (Gast)


Lesenswert?

Stefan Ernst schrieb:
> Etwas offensichtlicher wäre es, wenn du dir die Adressen nicht
> unsinniger weise dezimal ausgeben lassen würdest.

Ahhh ... cool. Danke!
1
avr-nm --size-sort --print-size -r -tx *.elf

...
1
000000d6 00000042 T main
2
000000a0 0000001a T __do_copy_data
3
000000ba 00000010 T __do_clear_bss
4
00800100 00000004 d test32.1356
5
00800104 00000002 b test16.1357

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.