Hallo,
ich spiele gerade etwas mit meinem M8 herum, dabei ist mir folgendes
aufgefallen:
Wenn ich ein etwas größeres "const array" im RAM ablege, dann bekomme
ich nach dem Kompillieren von avr-mem.sh folgendes angezeigt:
1 | Size after:
|
2 | main.elf :
|
3 | section size addr
|
4 | .text 1602 0
|
5 | .data 936 8388704
|
6 | .bss 24 8389640
|
7 | .stab 7692 0
|
8 | .stabstr 4135 0
|
9 | Total 14389
|
10 |
|
11 | AVR Memory Usage:
|
12 | -----------------
|
13 | Device: atmega8
|
14 |
|
15 | Program: 2538 bytes (31,0% Full)
|
16 | (.text + .data + .bootloader)
|
17 |
|
18 | Data: 960 bytes (93,8% Full)
|
19 | (.data + .bss + .noinit)
|
lege ich das "const array" jedoch mit den Funktionen aus pgmspace.h und
PROGMEM in den Flash, so erhalte ich folgendes Ergebnis:
1 | Size after:
|
2 | main.elf :
|
3 | section size addr
|
4 | .text 2242 0
|
5 | .data 300 8388704
|
6 | .bss 24 8389004
|
7 | .stab 7740 0
|
8 | .stabstr 4151 0
|
9 | Total 14457
|
10 |
|
11 | AVR Memory Usage:
|
12 | -----------------
|
13 | Device: atmega8
|
14 |
|
15 | Program: 2542 bytes (31,0% Full)
|
16 | (.text + .data + .bootloader)
|
17 |
|
18 | Data: 324 bytes (31,6% Full)
|
19 | (.data + .bss + .noinit
|
Wie kommt es dazu, dass bei beiden Versionen der Programmspeicher
annähernd gleich belegt ist? Im zweiten Fall belegt doch das const array
zusätzlich Platz im Flash.
An der ".text" section sieht man es ja sehr schön, aber warum wird es in
avr-mem.sh nicht beachtet?
Gruß
Christian