Forum: Compiler & IDEs Speicher voll, was tun?


von Sportfreund Lauter (Gast)


Lesenswert?

hallo

ich habe bzgl. AVR und überhaupt mikrocontroller sehr wenig erfahrung.
ich verwende zwangsweise den speziellen funk-chip von atmel, der hat
einen kleinen 8-bit avr-prozessor eingebaut. 2kB Flash/128B EEPROM/128B
SRAM

mein problem ist jetzt, dass ich ein programm geschrieben habe, wo das
hex-file knapp 3kB groß ist, aber der Flash-Speicher ist eben nur 2kB
groß.

was gibt es für tricks oder übliche vorgehensweisen um ein programm
platzsparender zu machen? oder was macht man als anfänger normal auf
dem gebiet falsch?
kann es was mit falschen (globalen)variablen-deklarationen zu tun
haben, oder mit zuvielen funktionen?

für zielführende links bzgl. speicherverwaltung (o.ä.) wäre ich auch
dankbar :)

von Moritz Becker (Gast)


Lesenswert?

Hallo,

ich bin zwar kein Experte, was Speicherverwaltung angeht,
aber meines Wissens sind in dem Hex-File wesentlich mehr Daten
enthalten, als in den Flash geschrieben werden.(CRC usw.)

Beispiel:
Eines meiner Programme für einen Mega8 (8kb Flash)
hat ein 6,8KB großes Hex-File welches nur bis
zur Adresse 9A4 geht. Das sollten 2468 byte sein.
(Bitte nicht schlagen, wenn das jetzt kompletter Blödsinn ist,
aber ich hab' mal versucht, logisch zu denken)

Also stellt sich mir die Frage, ob ein Hex-File 3k groß ist,
oder der zu schreibende Anteil.

Gruß,

Moritz

von Hans (Gast)


Lesenswert?

Servus,

wenn von einem Intel-hex-File die Rede ist, dann ist das natürlich um
einiges grösser als der Speicher, den man auf dem Chip benötigt. Ein
Intel-hex-file ist eine ASCII-Datei. Ein Byte (also 8 Bit auf dem Chip)
z.B. 1111 0000 stehen in dem Intel-Hexfile als Ascii-Zeichen F0  (also
0x46 0x30) Es wird also schonmal doppelt so viel Speicher im
Intel-HexFile für das eigenliche Programm benötigt.
DAzu kommen noch eineige Adressinformationen, Checksummen, ...
Will man einen Überblickek über die große seines Programms hilft ein
Blick in das map-file, dass hoffentlich jeder Linker in irgendeiner
Art ausspuckt....

Gruß
Hans

von Jörg Wunsch (Gast)


Lesenswert?

Oder einfach die Ausgabe von avr-size (oder avr-sizex).  Drastisch
einfacher zu verstehen als das map-File (das braucht man eigentlich
nur, wenn man seinen eigenen Linkerscript debuggen will ;-).

von Sandman (Gast)


Lesenswert?

Oder indem man sich von der .bin Datei die Grösse ansieht. Ist
vielleicht noch ein Stück einfacher als 'avr-size blabla.hex'
einzugeben g



Zumindest WIMRE, hab schon seit Monaten nicht mehr praktisch damit zu
tun gehabt, und mein Gedächtnis ist ein sehr sehr rostiges Sieb

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.