Forum: Compiler & IDEs avr-mem.sh verstehen


von Klaus (Gast)


Lesenswert?

Im Makefile ist avr-mem.sh eingebunden. Das gibt mir auch die Daten aus:
1
pro.elf  :
2
section             size      addr
3
.data                286   8388864
4
.text              30454         0
5
.bss                 304   8389150
6
.debug_aranges       416         0
7
.debug_pubnames     3756         0
8
.debug_info        24423         0
9
.debug_abbrev       3845         0
10
.debug_line        28893         0
11
.debug_frame        2528         0
12
.debug_str          3829         0
13
.debug_loc         13665         0
14
.debug_ranges        584         0
15
Total             112983
16
17
18
AVR Memory Usage:
19
-----------------
20
Device: atmega328p
21
22
Program:   30740 bytes (93.8% Full)
23
(.text + .data + .bootloader)
24
25
Data:        590 bytes (28.8% Full)
26
(.data + .bss + .noinit)

Jetzt habe ich auch einen Bootloader, der ja Platz (per Fusebits 
eingestellt) belegt und den "nutzbaren" Flash verkleinert. Wie kann ich 
die Anzeige dazu überreden, diesen Platz zu berücksichtigen?
Und wie kann ich den Teil abziehen lassen, der von Konstanten im PROGMEM 
belegt ist, also keinen Platz im Flash braucht?

von Bastler (Gast)


Lesenswert?

PROGMEM ist ein anderer Begriff für FLASH. Sogar die initialisierten 
globalen Daten liegen dort und werden von crt0.o ins RAM kopiert.

Einfach mal ein simples Program übersetzen und das .lss File anschauen. 
Da kann man viel über AVR's und C lernen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Klaus schrieb:
> Wie kann ich die Anzeige dazu überreden, diesen Platz zu
> berücksichtigen?

Dazu musst du wohl avr-mem.sh modifizieren.  Es hat keine Ahnung,
dass du einen Teil des Flashs reserviert haben möchtest.

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.