Speicher voll, was tun?

Gast #178817
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 :)
Gast #178818
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
Gast #178819
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
Gast #178820
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 ;-).
Gast #178821
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

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.