www.mikrocontroller.net

Forum: Compiler & IDEs Speicher voll, was tun?


Autor: Sportfreund Lauter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :)

Autor: Moritz Becker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;-).

Autor: Sandman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.