EEMEM variable belegt SRAM? (avr-size-x)

Gast #1190798
Lesenswert?
• ▲
▼
Hi.

Ich habe meine Konfigurationsdaten als struct im EEMEM abgelegt, im 
Prinzip so:
1
typedef struct {
2
  ...
3
} Config;
4

5
Config cfg EEMEM;

Das Struct ist etwa 700 Byte gross. Jetzt ist mir beim verwenden von 
avr-sizex.exe aufgefallen das diese 700 Byte nicht nur als belegter 
EEPROM Speicher angezeigt werden, sondern anscheinend auch 700 Byte SRAM 
extra "abgebucht" werden.
Das macht nicht wirklich Sinn oder?
Man liest ja die Daten zur Verarbeitung dann ja über die eeprom 
Funktionen erst explizit in den SRAM.

R
Gast #1190849
Lesenswert?
• ▲
▼
Hi Karl-Heinz,

die Config wird direkt in eine Globale Variable AppConfig geladen.
Nachfolgend ein Auszug aus dem Output von avr-sizex.exe:
1
    Flash     SRAM     EEPROM 
2
    -----     ----     ------ 
3
      32%      68%        36%
4
    18462     2817        742    bytes used
5
    38882     1279       1306    bytes free
6
    57344     4096       2048    bytes capacity
7

8
Top Functions                        Top Variables (global/static) 
9
------------------------------       ------------------------------
10
main                 702 bytes       eeConfig             734 bytes
11
ModeIdle_Process     574 bytes       AppConfig            734 bytes

Ich habe den SRAM Verbrauch mal mit dem restlichen Variablen 
überschlagen
und es ist "eindeutig" das dort 2x734 Bytes addiert werden.

Ich hab jetzt nochmal avr-size.exe getestet.
Das gibt mir folgendes aus:
1
   
2
text     data      bss      dec      hex  filename  
3
17848     1356     2203    21407     539f  main.elf

Hier scheinen die 734 Bytes der eeConfig nicht aufzutauchen (bss?). Ich 
kenne mich allerdings jetzt nicht so gut mit dem sections aus. Lese ich 
ggf. nochmal nach.

R
#1190863
Lesenswert?
• ▲
▼
Revision wrote:
> Hi Karl-Heinz,
>
> die Config wird direkt in eine Globale Variable AppConfig geladen.

Na ja. Was willst du dann?
Klar braucht die auch Speicher.

Nur weil sie ihre Werte beim Hochfahren des Programms aus dem EEPROM 
bekommt, ändert sich ja nichts daran, dass das erst mal eine stink 
normale Variable im SRAM ist.
Gast #1191827
Lesenswert?
• ▲
▼
HI.

Ich habe doch im vorigen Post erwähnt das der Speicher für das Config 
Struct zweimal zum verwendeten SRAM hinzugefügt wird. Von AppConfig UND 
von eeConfig.
Das AppConfig Im SRAM Auftaucht ist klar.
Aber das wird wohl wirklich ein Fehler von avr-sizex.exe sein.

R

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren