Forum: PC-Programmierung .Hex Dateien und Atmega's


von U. S. (corpsman)


Lesenswert?

Guten Morgen allerseits,

Ich bin gerade dabei eine Plattform unabhängige Entwicklungsumgebung 
"KLab" für die Entwicklung von Atmega Projekten zu erstellen.

Ich bin sozusagen auch schon im Beta Test Stadium (siehe hier : 
http://corpsman.de/KLab.png ), sprich Compilieren, Programmieren, Fuse 
Bits Lesen Schreiben, Debuggen via Terminal, alles kein Problem.

Zur Zeit steht neben Bugs suchen das "Komfort" einbauen auf dem Plan, 
und hier kommt auch meine Frage.

Der Einfachste Test einer IDE ist sie selbst zu benutzen, also habe ich 
mich daran gemacht und mir eine "Funkuhr" geschrieben, nun ist es so, 
wenn ich meine Font Library einbinde, nutzt diese anscheinend zu viel 
Speicher, denn auf dem Atmega644 läuft das Programm und unter dem 
Atmega32 spielt alles verrückt.

Also dachte ich mir, soll die IDE Prüfen ob die Hex Files die 
Programmiert werden auch nicht zu groß sind. Einige Suche hier im Forum 
und via google später und ich kann aus den Hex Files die Anzahl der zu 
schreibenden Bytes auslesen ( die Stimmt auch, denn AVR-Dude zeigt die 
selbe Zahl an ), meiner Information nach hat der Atmega32 32768 Byte 
Flash, Compiliere ich meine Font lib mit nur einer Font kommt

Hexfile Size : 22856 CPU Flash Size : 32768 thats 70% of Flashspace

mit 3 Fonts kommt :

Hexfile Size : 28294 CPU Flash Size : 32768 thats 86% of Flashspace

Beides müste also funktionieren, leider ist dem aber nicht so.

Das Reine Auslesen der "zu schreibenden" Bytes scheint demnach nicht zu 
Funktionieren, hat wer von euch noch eine Idee wie ich an "mehr" und 
aussage kräftigere Informationen komme ?

Das Ziel wäre natürlich ein Programmieren zu verhindern, sollte der 
Speicherbedarf zu Groß werden..

von ... (Gast)


Lesenswert?

Dein Problem dürfte eher der Ram-Bedarf Deiner "Funkuhr" sein. Der 
ATMega32 hat nur 2kb, der ATMega644 4kb.

von U. S. (corpsman)


Lesenswert?

Ok,

Das kann schon sein, schließlich sind die Fonts nicht gerade klein, ich 
bin auch schon dabei raus zu kriegen, wie ich sie ins EEprom Schiebe ( 
dass soll wohl irgendwie gehn .. )

Hat jemand ne Idee wie ich die "Ram" bzw. die Aufteilung des Bedarfs der 
einzelnen Speicherbereiche aus den Hex Files auslesen kann ?

Die Größe des Flash EEProm : 32768, Internal Ram 2048, und EEprom 1024 
weis ich g.

Gruß

Corpsman

von Stefan E. (sternst)


Lesenswert?

U. Schächterle schrieb:
> Hat jemand ne Idee wie ich die "Ram" bzw. die Aufteilung des Bedarfs der
> einzelnen Speicherbereiche aus den Hex Files auslesen kann ?

Aus den HEX-Files gar nicht (bzw. nur extrem mühselig durch 
Code-Analyse). Aber aus der ELF-Datei ganz einfach, z.B. mittels 
avr-size.

von U. S. (corpsman)


Lesenswert?

Cool, also deine.elf Datei heist bei mir .out und ergibt mit AVR-Size :

   text    data     bss     dec     hex filename
  12260    3292       4   15556    3cc4 project.out

Wenn ich Beitrag "avr-size: Wie groß ist das Programm denn nun wirklich?" glauben kann, dann 
muss ich also nun

text + data mit 32768

und

data + bss  mit  2048

prüfen, Richtig ??

Gehe ich richtig davon aus, dass die Angaben alle in Hex sind ?

von Stefan E. (sternst)


Lesenswert?

U. Schächterle schrieb:
> muss ich also nun
>
> text + data mit 32768
>
> und
>
> data + bss  mit  2048
>
> prüfen, Richtig ??

Ja, wobei data+bss<2048 keine Garantie dafür ist, dass das RAM 
ausreicht. Denn hierbei ist nicht der dynamische RAM-Verbrauch (z.B. 
Stack) mit berücksichtigt.

U. Schächterle schrieb:
> Gehe ich richtig davon aus, dass die Angaben alle in Hex sind ?

Nein. "dec" ist die Summe in Dezimal und "hex" ist die Summe in 
Hexadezimal.


PS: Probiere doch mal folgendes ;-)
avr-size -C --mcu=atmega32 DATEI.out

von U. S. (corpsman)


Lesenswert?

lol,

Das ist schon mal eine MEGA Hilfe,

vielen Dank.

corpsman@corpsman2:/sda5/sda5/Tools/Projects/Atmega_Projekte/tg12864b_03 
r$  avr-size -C --mcu=atmega32 project.out
AVR Memory Usage
----------------
Device: atmega32

Program:   15552 bytes (47.5% Full)
(.text + .data + .bootloader)

Data:       3296 bytes (160.9% Full)
(.data + .bss + .noinit)


corpsman@corpsman2:/sda5/sda5/Tools/Projects/Atmega_Projekte/tg12864b_03 
r$  avr-size -C --mcu=atmega644 project.out
AVR Memory Usage
----------------
Device: atmega644

Program:   15552 bytes (23.7% Full)
(.text + .data + .bootloader)

Data:       3296 bytes (80.5% Full)
(.data + .bss + .noinit)


corpsman@corpsman2:/sda5/sda5/Tools/Projects/Atmega_Projekte/tg12864b_03 
r$

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.