PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WinAVR (Anzeige Speicherbelegung nach dem compilieren)?



Henry
01.08.2008, 19:48
Hallo,

meine Frage hat zwar nicht direkt mit der C-Programmierung zu tun, aber ich denke hier passt es am besten rein.

Im Outputfenster von WinAVR (Programmers Notepad) wurde mir bisher immer beim compilieren angezeigt wie viel Speicher vom Controller schon belegt ist.
Seit einiger Zeit wird mir diese Funktion nicht mehr angezeigt. Auch eine neuinstallation von WinAVR had dieses Problem nicht beheben können.

Kann mir da jemand einen Tip geben wie ich diese Anzeige wieder bekommen kann?

Danke schon einmal

sternst
01.08.2008, 20:30
Das liegt nicht an WinAVR, sondern an deinem Makefile.
Dort muss halt am Ende des Build-Prozesses ein entsprechender avr-size Aufruf stehen.

Henry
01.08.2008, 20:32
Kannst Du mir sagen wie der aussehen muss?

Edit:
Folgendes steht in meinem Makefile:

# Display size of file.
HEXSIZE = $(SIZE) --target=$(FORMAT) $(TARGET).hex
ELFSIZE = $(SIZE) -A $(TARGET).elf
AVRMEM = avr-mem.sh $(TARGET).elf $(MCU)

sizebefore:
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_BEFORE); $(ELFSIZE); \
$(AVRMEM) 2>/dev/null; echo; fi

sizeafter:
@if test -f $(TARGET).elf; then echo; echo $(MSG_SIZE_AFTER); $(ELFSIZE); \
$(AVRMEM) 2>/dev/null; echo; fi


Edit 2:

Ich kann allerdings die Datei "avr-mem.sh" nicht im Installationsverzeichnis von WinAVR finden. Wenn ich das richtig sehe, dann wird die dafür benötigt, oder?

sternst
01.08.2008, 21:07
Ersetze avr-mem.sh durch:
$(SIZE) -C

Henry
01.08.2008, 21:22
Leider funktioniert das auch nicht.
Ich habe mittlerweile auch über Umwege die Datei "avr-mem.sh" besorgt und in das bin Verzeichnis kopiert. Leider hilft auch das nicht.

Ich erhalte im Outpu folgende Meldung in dem Bereich wo die Größe ercheninen soll:

Größe vorher:
0 [main] sh 8568 fork_copy: user/cygwin data pass 0 failed, 0x46F000..0x474434, done 1804, windows pid 8600, Win32 error 5
/usr/bin/sh: fork: Resource temporarily unavailable
make.exe: *** [sizebefore] Error 128


Die in der Meldung aufgeführten Pfade gibt es allerdings nicht imInstallationspfad.

sternst
01.08.2008, 21:25
Und was funktioniert bei meiner Variante nicht?

Henry
01.08.2008, 21:31
Da gibt es diese Meldung:

Creating Extended Listing: Lichtbalken_M8.lss
avr-objdump -h -S Lichtbalken_M8.elf > Lichtbalken_M8.lss
0 [main] sh 4776 fork_copy: user/cygwin data pass 0 failed, 0x46F000..0x474434, done 1804, windows pid 9260, Win32 error 5
/usr/bin/sh: fork: Resource temporarily unavailable
make.exe: *** [Lichtbalken_M8.lss] Error 128

sternst
01.08.2008, 21:51
Sieht so aus, als könne die Cygwin-Umgebung keinen neuen Prozess starten.
Könnte auch ein Windows-Problem sein. Mache mal einen Reboot.

Henry
01.08.2008, 22:12
Leider hat auch ein Neustart das Problem nicht gelöst.
Ich werde für heute die Fehlersuche einstellen, da ich morgen sehr früh raus muss.
Morgen werde ich dann mal vergleichen was an meinem Notebook anders sit, da funktioniert die Anzeige. Ich befürchte aber da wir nichts groß anders sein.

gute nacht erst einmal und Danke für die bisherige Hilfe

Henry
05.08.2008, 13:48
Hallo,

ich habe nun mal nachgesehen ob ich einen Unterschied zwischen den beiden Rechnern finden kann. Außer das auf meinem Desktop PC AVRStudio installiert war konnte ich nichts finden was die Ursache sein kann.
Leider habe ich auch keine Anzeige nachdem ich AVRStudio deinstalliert habe, also lag es auch nicht daren :-(

Was genau ist denn die Cygwin-Umgebung? Ist das ein Windowseigener Dienst oder etwas von WinAVR?

EDIT: Auch an leicht unterschiedlchen makefiles die ich in Verwendung habe liegt es nicht.

sternst
05.08.2008, 15:51
Was genau ist denn die Cygwin-Umgebung? Ist das ein Windowseigener Dienst oder etwas von WinAVR?
Weder noch. Cygwin stellt eine Unix ähnliche Umgebung zur Verfügung, was die Portierung deutlich vereinfacht.

Es könnte auch sein, dass du mehrere unterschiedliche Cygwin-DLLs (cygwin1.dll) im Pfad hast, überprüfe das doch mal.

Henry
05.08.2008, 17:33
Es existiert nur eine "cygwin1.dll" im Verzeichnis /bin.
Habe auch komplett meine Systemplatte durchsucht und keine weiteren gefunden.