Hallo, nachdme ich nun mehrer (2 C-Dateien test.c und lcd.c) in ein hex kompiliert habe. ist die größe auf 4 Kb angewachsen. leider zu groß für meinen 4433. Welche Compiler und Linker flags solle ich sinnvollerweise nehmen wenn ich 2 oder mehrer C-dateien habe. Da ich beim test alles in einer datei hatte und die *.hex nach dem aufteilen wesentlich größer ist vermute ich das man hier mittels den flags was ändern kann. Hat irgend jemand noch eien Idee ?? Gruß Bernd
Die Größe der Hex-Datei ist nicht die Größe die das Programm wirklich hat! Wieviel Platz das Programm wirklich braucht kannst du dir mit avr-size.exe anzeigen lassen. Mit -Os kann man auf eine möglichst geringe Größe optimieren.
Beim avr-gcc-Aufruf bzw. an die entsprechende Stelle ins makefile. Wenn du das Makefile von Volker Oth verwendest sollte das aber sowieso schon drin stehen.
im avrfreaks forum schwirrt ein tool rum nennt sich avr-sizex. das kann man in avr_make file einbinden...dann sieht die ausgabe so aus wie unten..find ich ganz nützlich. wenn du es nicht findest sag bescheid ich lade es dann mal hier hoch. text data bss dec hex filename 188 0 2 190 be rtctest.elf avr-sizex --mcu at90s8515 rtctest.elf Flash SRAM EEPROM ----- ---- ------ 2% 4% 0% Errors: none
Hallo, bitte poste mal die avr-sizex. Ich kann sie nicht finden. DANKE Martin
@BAB: avrsize funktioniert prima, ich kann es jedoch nicht in das MAKE-File einbinden. Habe es so in avr-make eingefügt wie in der README beschrieben, der compiler zeigt dennoch die alte größenangabe an. Ich benutze avrgcc-3.0.2. Wie hast Du das eingebunden? Gruß Jonas
...hat sich erledigt, musste auch in der project-Makefile eingetragen werden. Gruß J.
mhh..also ich habe es nur in der avr_make und nicht in der projekt make datei eingefügt. ich benutze allerdings gcc 3.2
Also mir macht das Programm keine Freude... Ich habe jetzt meine avr_make so umgestrickt: >size: > $(SIZE) $(TRG).elf > avr-sizex --mcu $(MCU) $(TRG).elf Das ist der relevante Teil aus meinen Project-Makefiles: >include $(AVR)/avrfreaks/avr_make > >$(TRG).o : $(TRG).c Aber er zeigt mir eben nichts an... Was ist denn bitte falsch?
ist das wirkliche Program wirklich soviel kleiner wie das *.hex file? Mein Programm hat im Hexfile ueber 2KB. Er sagt mir aber das wenn ich das in meinen AT90S2313 (2KB Speicher) einbrenne, nur 32% belegt sind, kommt das hin, oder ist da was falsch?
Ja, 32 % kommt ungefähr hin. Wenn man sich eine .hex Datei ansiehst stellt mann fest, dass jedes Byte als Hexadezimale Zahl dargestellt ist, also mindestens 2 Zeichen belegt. Hinzu kommen noch Zeichen für neue Zeilen und am Anfang jeder Zeile steht meist noch die Speicheradresse. Eine .bin Datei ist dagegen so kodiert, dass sie dierkt die Zeichen enthält, die auch später im MCU stehen werden. Somit dürfte diese in der Größe ziemlich genau dem entsprechen, was an Controller Speicher belegt wird.
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.