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 :)
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
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
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 ;-).
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.