PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WinAVR compiliert garnicht



Nomi_S
12.04.2006, 17:23
Hi

Ich bin Anfänger und habe den Bausatz Asuro erfolgreich gelötet, jetzt wollte ich anfangen meinen Asuro zu programmieren.
Leider will das nicht funktionieren, ich habe die Software WinAVR installiert und diese will, selbst test.c nicht compiliert :


//#include "asuro.h"

int main(void)
{
Init();

while(1);
return 0;
}


die asuro.h sieht folgendermaßen aus:


/************************************************** *****************************
*
* File Name: asuro.h
* Project : ASURO
*
*
* Ver. Date Author Comments
* ------- ---------- -------------- ------------------------------
* 1.00 14.08.2003 Jan Grewe build
* 2.00 14.10.2003 Jan Grewe LEFT_VEL, RIGHT_VEL -> MotorSpeed(unsigned char left_speed, unsigned char right_speed);
* LeftRwd(),LeftFwd(),RightRwd(),RigthFwd() -> MotorDir(unsigned char left_dir, unsigned char right_dir);
* GREEN_ON,GREEN_OFF,RED_ON,RED_OFF -> StatusLED(unsigned char color);
* LED_RED_ON, LED_RED_OFF -> FrontLED(unsigned char color);
* Blink(unsigned char left, unsigned char right) -> BackLED(unsigned char left, unsigned char right);
* Alles in Funktionen gefasst => leichter verständlich ?!?!
* 2.10 17.10.2003 Jan Grewe new Timer funktion void Sleep(unsigned char time36kHz)
*
*
* Copyright (c) 2003 DLR Robotics & Mechatronics
************************************************** ***************************/
/************************************************** *************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* any later version. *
************************************************** *************************/

#ifndef ASURO_H
#define ASURO_H

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>

#define FALSE 0
#define TRUE 1

#define OFF 0
#define ON 1

#define GREEN 1
#define RED 2
#define YELLOW 3

/* Init function Processor will be initalized to work correctly */
void Init(void);

/* Set Status LED (OFF,GREEN,RED,YELLOW)*/
/* example code set Status LED GREEN */
/* StatusLED(GREEN); */
inline void StatusLED(unsigned char color);
/* function for front LED */
/* example code front LED On */
/* FrontLED(ON); */
inline void FrontLED(unsigned char status);

/* function for Back LEDs */
/* example code right LED On left LED Off */
/* BackLED(OFF,ON); */
void BackLED(unsigned char left, unsigned char right);

/* Set motor direction (FWD,RWD,BREAK,FREE)*/
/* example code set Direction for right motor to rewind */
/* MotorDir(BREAK,RWD); */
inline void MotorDir(unsigned char left_dir, unsigned char right_dir);

/* range for motor speed 0..255 */
/* example code set speed for left motor to 150 */
/* MotorSpeed(150,0); */
inline void MotorSpeed(unsigned char left_speed, unsigned char right_speed);

/* function for serial communication */
void SerWrite(unsigned char *data,unsigned char length);
/* timeout = 0 => bloking mode !!! */
void SerRead(unsigned char *data, unsigned char length, unsigned int timeout);

/* function to read out line follow phototransistors (left,rigth) */
void LineData(unsigned int *data);

/* function to read out odometrie phototransistors (left,rigth) */
void OdometrieData(unsigned int *data);

/* function to read out switches */
unsigned char PollSwitch (void);
/* for working with Interrupt */
void StartSwitch(void);
void StopSwitch(void);

/* Sleep function using 36kHz counter */
void Sleep(unsigned char timer36kHz);
/* ----------- END ------------ */


/* --------------- INTERNAL ------------- */
#define GREEN_LED_ON PORTB |= GREEN_LED
#define GREEN_LED_OFF PORTB &= ~GREEN_LED
#define RED_LED_ON PORTD |= RED_LED
#define RED_LED_OFF PORTD &= ~RED_LED

#define FWD (1 << PB5) /* (1 << PD5) */
#define RWD (1 << PB4) /* (1 << PD4) */
#define BREAK 0x00
#define FREE (1 << PB4) | (1 << PB5) /* (1 << PD4) | (1 << PD5)*/

#define IRTX (1 << PB3)
#define GREEN_LED (1 << PB0)
#define RED_LED (1 << PD2)

#define PWM (1 << PB1) | (1 << PB2)
#define RIGHT_DIR (1 << PB4) | (1 << PB5)
#define LEFT_DIR (1 << PD4) | (1 << PD5)

#define SWITCHES (1 << PD3)
#define SWITCH_ON PORTD |= SWITCHES
#define SWITCH_OFF PORTD &= ~SWITCHES

#define BATTERIE (1 << MUX0) | (1 << MUX2) //ADC5
#define SWITCH (1 << MUX2) //ADC4
#define IR_LEFT (1 << MUX0) | (1 << MUX1) //ADC3
#define IR_RIGHT (1 << MUX1) //ADC2
#define FRONT_LED (1 << PD6)

#define ODOMETRIE_LED (1 << PD7)
#define ODOMETRIE_LED_ON PORTD |= ODOMETRIE_LED
#define ODOMETRIE_LED_OFF PORTD &= ~ODOMETRIE_LED

#define WHEEL_LEFT (1 << MUX0) //ADC1
#define WHEEL_RIGHT 0 //ADC0

#endif /* ASURO_H */



An diesen Dateien sollte es wirklich nicht liegen denn sie werden so zum dowload angeboten und der Fehler wurde meines Wissens noch nicht protokoliert.


Folgender Fehler erscheint bei jeglichen Versuchen meine Tools make bzw clean auszuführen (auch diese sind standart und wurden von mir nicht verändert):



> "C:\Programme\Asuro\Beispiel-Programme\FirstTry\Test-all.bat"

C:\Programme\Asuro\Beispiel-Programme\FirstTry>make all
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > asuro.d; \
[ -s asuro.d ] || rm -f asuro.d
AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x50000, State 0x10000
C:\Programme\WinAVR\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487
make: *** [asuro.d] Error 1

> Process Exit Code: 2
> Time Taken: 00:02


Ich habe die Software schon neu installiert und die neueste Version von WinAVR installiert und es erscheint aber immernoch dieser Fehler.
Leider habe ich auch keine Anwort zu diesem Thema im Internet gefunden. Mittlerweile habe ich einige Stunden versucht und kein Erfolg gehabt, langsam macht sich Frust breit.

Hat jemand ne Ahnung woran das denn liegen könnte oder hat vielleicht sogar jemand den gleichen Fehler und wie kann man diesen Fehler beheben!?

Vielen dank für eure Hilfe

Simon

Arexx-Henk
12.04.2006, 21:09
Hallo,

Ich nehme an es handelt sich um Windows (nicht Linux)...


C:\Programme\WinAVR\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487

Hier wird gesucht nach 'C:\Programme\WinAVR\...' aber dass Verzeichnis 'WinAVR' ist bei mir 'C:\WinAVR'.

Ist da irgendwo beim instalation etwas in 'C:\Programme' installiert worden?

Gruss

Henk

Nomi_S
13.04.2006, 02:17
Hi vielen dank für deine rasche Antwort


Ich nehme an es handelt sich um Windows (nicht Linux)...

du hast recht, es handelt sich um ein Windows XP, da war ich wohl nicht genau genug. Brauchst du noch weitere Infos zum System? Gibt es bekannte Konflikte bei der Verwendung bestimmter Programme (Firewall, Virenscanner..., hab sie zwar auch alle mal ausgeschaltet, hat sich aber nichts geändert...) Ich glaube nämlich, dass das Problem auf einem Konflikt zwischen WinAVR und einer anderen Anwendung beruht, weil dieser Fehler sonst so selten protokoliert wird (rein spekulativ!).


Hier wird gesucht nach 'C:\Programme\WinAVR\...' aber dass Verzeichnis 'WinAVR' ist bei mir 'C:\WinAVR'.Ist da irgendwo beim instalation etwas in 'C:\Programme' installiert worden?

Ich hatte zu diesem Zeitpunkt das Installationsverzeichnis "C:\Programme\WinAVR\..." gewählt, habe es mittlerweile auch schon mit einer Neuinstallation (nach Deinstallation und Neustart des Rechners) im Standartverzeichnis "C:\WinAVR" versucht. Die Fehlermeldung berücksichtig dies und sieht dann entsprechend so aus:


> "C:\ASURO_scr\FirstTry\Test-all.bat"

C:\ASURO_scr\FirstTry>make all
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > test.d; \
[ -s test.d ] || rm -f test.d
AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x50000, State 0x10000
C:\WinAVR\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487
make: *** [test.d] Error 1

> Process Exit Code: 2
> Time Taken: 00:08

Ich habe übrigens in meiner Verzweiflung auch im Arexx Forum gepostet, von dem aus du hier her verlinks ;-)

Vielen Dank für dein Bemühen

Ganz liebe Grüße
Simon

ogni42
13.04.2006, 08:16
Teste mal, was von den installierten Programmen funktioniert und was nicht
make.exe
avr-gcc.exe
sed

Nomi_S
13.04.2006, 10:21
Wie soll ich die Testen!? (Tut mir Leid bin mit dem Programm ein blutiger anfänger) Ich habe jetzt wieder die vom Asuro mitgelieferten Dateien geöffnet (test.c mit #include "asuro.h"). Die datei make.exe habe ich jetzt über "Tools/[WinAVR] make all" gestartet. Aber auch hier entsteht der bekannt Fehler:



> "make.exe" all
set -e; avr-gcc -MM -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=asuro.lst asuro.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > asuro.d; \
[ -s asuro.d ] || rm -f asuro.d
AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x50000, State 0x10000
C:\WinAVR\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487
make.exe: *** [asuro.d] Error 1

> Process Exit Code: 2
> Time Taken: 00:02

auch wenn ich die anderen noch Verfügbaren Tools starte ("[WinAVR] Make clean" und "[WinAVR] Programm") bekomme ich diese Fehlermeldung.

Was ist die Datei avr-gcc.exe und wie teste ich diese.

Vielen Dank für die Hilfe

Simon

ogni42
13.04.2006, 10:27
Shell (cmd.exe) öffnen und die einzelnen Programmnamen eintippen. Ansonsten mal die Pfade überprüfen. Werden die Programme überhaupt gefunden?

Nomi_S
13.04.2006, 10:44
also wenn ich die Datei avr-gcc.exe über die Eingabeaufforderung starte kommt folgende Meldung


avr-gcc.exe: keine Eingabedateien

oder muss ich die da noch spezielle Befehle zum laden von einer Datei ausführen!?

bei der Datei make.exe gibt es folgende Meldung:


make.exe: *** No targets specified and no makefile found. Stop.

Vielen Dank
Simon

SprinterSB
13.04.2006, 11:16
C:\WinAVR\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487

Sieht aus, als wär deine Windows-Umgebung zu klein um eine sh zu starten.

Möglicherweise liegt das Problem im Makefile (nicht bei make), weil da Kommandos drinne sind, die Pipes bauen und die viel Speicher brauchen.

(avr-gcc | sed > *** || rm ***) --- das zerrt am Speicher!

avr-gcc wird gefunden und korrekt ausgeführt.

make wird gefunden und ausgeführt.

Wenn du dich in ein Verzeichnis stellst, das ein "Makefile" enthält, sollte make es ausführen.

Nomi_S
13.04.2006, 11:25
Was heißt das denn jetzt für mich. Wie kann ich den Fehler beheben!?
Einen neuen Arbeitsspeicher besorgen!?!

Vielen Dank für deine sachkundige Auskunft!

Simon

SprinterSB
13.04.2006, 14:20
Mehr Speicher bringt wahrscheinlich nichts. Was nicht stimmt sind wohl Einstellungen zusammen mit den resourcenfressenden Kommandos im Makefile. Evtl hilft es schon, wenn du dein Makefile etwas weniger fordernd schreibst ;-)

Was sagt denn mem?

Nomi_S
13.04.2006, 14:35
Evtl hilft es schon, wenn du dein Makefile etwas weniger fordernd schreibst

Das Problem ist ja das die nicht von mir ist, die ist von Arexx mitgeliefert worden. Ich kenne mich leider auch nicht damit aus, so dass ich sie auch nicht abspecken kann. Welche ist das denn genau!?


Was sagt denn mem?

Was meinst du damit!?

Vielen Dank
Simon

Superhirn
15.04.2006, 12:37
Mem = memory denk ich.
ich hab auch so ein problem. Ich kann make nicht verwenden. Du könntest jedoch diese:
http://www.dirkbaumann.de/html/software.html
seite verwenden. Hier musst du statt make das avr-gcc und objcopy dirket aufrufen. dann gehts vieleicht. bei mir schon.

Nomi_S
15.04.2006, 12:51
Hi an alle die mir geholfen haben,

nachdem ich wusste, dass das Problem ein Betriebssystem-Bedingtes-Problem ist, habe ich ein wenig rumgebastelt. Dabei habe ich leider mein Windows XP abgeschossen, was nicht weiter tragisch war, weil ich das 3 Jahre alte System eh mal neu aufspielen wollte.
Jetzt nach der Neuistallation tut alles einwandfrei.
D.h. das Problem hat sich "fast von selbst" aufgelöst.

Vielen Dank an alle die mir beim Beheben des Problems geholfen haben und ein frohes Osterfest.

Ganz liebe Grüße
Simon

Superhirn
15.04.2006, 14:19
Wie war das? XP ist der fehler. ich glaub nähmlich dass das bei mir ist denn ich habe auch ein zugriffsproblem. Gibs da irgendeine lösung dass wieder freizugeben? ich will mein XP ja nicht aufgeben, denn es sind sehr viele programme installiert, GB-weiße daten zu sichern, das design verabschiedet sich (vista), ... das will ich verhindern.

Nomi_S
15.04.2006, 14:49
Wo der Fehler genau liegt kann ich dir nicht sagen. Ich denke (Spekulation!!), dass sich WinAVR mit irgendwelchen Anwendungen bzw. vielleicht auch nur Einstellungen nicht verträgt. Das Führt dazu, dass er die gewünschten Befehle nicht ausführen kann. Aber mehr kann ich dir leider nicht sagen.

Vielleicht liegt es am vista designe (reiner verdacht!), das hatte ich auch und habe es nicht wieder installiert. Aber da kann ich jetzt nur noch spekulieren. Kann da jemand gegenteiliges berichten!?

Was hast du denn für eine Fehlermeldung!?

Liebe Grüße
Simon

jonas
16.04.2006, 13:40
frohe ostern zusammen!
ich hab auch ein ähnliches problem. Seitdem ich mir in WinAVR ein neues Projekt erstellen wollte, kann ich nichts mehr compilieren bzw. ich kann noch nicht mal das output fenster anzeigen lassen, weil dann ne fehlermeldung kommt. neuinstallation hat bisher auch nichts gebracht.
was ich auch komisch finde ist, wenn ich einstellungen in WinAVR änder und das Programm neu installiere, finde ich meine geänderten einstellungen unverändert wieder(wer das jetzt verstanden hat...). ich vermute, dass WinAVR irgendwo in den Systemordnern ne datei ablegt, wo es das ganze zeugs abspeichert.
es weiß aber nicht jemand zufällig wie die datei heißt, wo ich die finden kann oder wie ich mein problem sonst noch lösen kann (ohne XP platt zu machen!) ?

Superhirn
16.04.2006, 18:06
Hi,

die Dateien, die du suchst sind meistens im ordner file:///C:/Dokumente un Einstellungen/Benutzername/Anwendungsdaten
Bei mir haben jedoch andere programme noch ordner wie application data,... erstellt. also such einfach da.

Hier meine Fehlermeldun in WinAVR:

> "make.exe" all
AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x470000, State 0x10000
C:\Programme\WinAVR\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487

-------- begin --------
avr-gcc (GCC) 3.4.5
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x470000, State 0x10000
C:\Programme\WinAVR\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487
make.exe: *** [sizebefore] Error 1

> Process Exit Code: 2
> Time Taken: 00:09
In VMLab hab ich auch irgendsoein problem.
Und in AVR-Studio auch. Hier die fehlermeldung aus Studio mit GCC-Plugin:


AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x470000, State 0x10000
C:\Programme\WinAVR\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487
rm -rf Supero-PCE-GCC.o main2-random.o Supero-PCE-GCC.elf dep/ Supero-PCE-GCC.hex Supero-PCE-GCC.eep
AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x470000, State 0x10000
C:\Programme\WinAVR\utils\bin\rm.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487
make: [clean] Error 1 (ignored)
Build succeeded with 0 Warnings...
AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x470000, State 0x10000
C:\Programme\WinAVR\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 487
avr-gcc.exe -mmcu=atmega16 -Wall -gdwarf-2 -O0 -MD -MP -MT Supero-PCE-GCC.o -MF dep/Supero-PCE-GCC.o.d -c ../Supero-PCE-GCC.c
../Supero-PCE-GCC.c:1: fatal error: opening dependency file dep/Supero-PCE-GCC.o.d: No such file or directory
compilation terminated.
make: *** [Supero-PCE-GCC.o] Error 1
Build failed with 1 errors and 0 warnings...

also mein Laptop verabscheut anscheinend make.exe.

Grüße
Superhirn

SprinterSB
16.04.2006, 20:16
Ruf mal mem auf, was sagt es denn?
Kannst du ne sh direkt starten?

Superhirn
16.04.2006, 22:14
Hi,

du musst mir bitte erklären, wie ich mem aufrufe, wie ich die shell direkt starte...

Danke
Superhirn

SprinterSB
17.04.2006, 08:56
Du machst ne DOS-Box (Eingabeaufforderung) auf und gibst ein "mem <RETURN>" bzw "sh <RETURN>"

Die Eingabeaufforderung findest du irgendwo unter
Start->Programme->Zubehör (zumindest bei Win2000)
Oder direkt: Start->Ausführen...-> cmd

Superhirn
17.04.2006, 09:08
Hi,
das spuckt er aus. mem scheint zu funktionieren. sh hat anscheinend wirklich einen fehler.

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Dokumente und Einstellungen\Thomas Grübler>mem


655360 Bytes gesamter konventioneller Speicher
655360 Bytes für MS-DOS verfügbar
590976 maximale Größe für ausführbares Programm

1048576 Bytes gesamter fortlaufender Erweiterungsspeicher
0 Bytes fortlaufender Erweiterungsspeicher verfügbar
941056 Bytes XMS-Speicher verfügbar
MS-DOS ist resident im oberen Speicherbereich (HMA).

C:\DOKUME~1\THOMAS~1>sh
AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x470000, State 0x10000
C:\Programme\WinAVR\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's he
ap, Win32 error 6

C:\DOKUME~1\THOMAS~1>

Grüße
Thomas

PS: Den Fehler hatte ich mit der vorigen GCC/WinAVR installation auch. also ich hab schon einmalauf die neueste geupdatet, ohne erfolg, diesen fehler zu beheben.

SprinterSB
17.04.2006, 09:34
An deinem Speicher liegt's jedenfalls nicht. Bei mir kommt genau die gleiche Ausgabe bei mem.

Vielleicht hilf einer der Links?

http://www.google.de/search?hl=de&q=%22reserve+space+for+cygwin%22&btnG=Suche&meta=
http://kde-cygwin.sourceforge.net/faq/main.php#7

jonas
17.04.2006, 11:16
kann mal bitte einer von euch im ordner "C:\Dokumente und Einstellungen\(Benutzer)\Anwendungsdaten\Echo Software\PN2" nachschaun ob da ein ordner "Interface Settings" mit ner datei "default" drin is?

ich hab den nämlich irgendwie net und mir wurd gesagt ich soll doch mal die datei löschen, um mein problem zu beheben.

Nomi_S
17.04.2006, 11:59
Hi
also ich habe auch keine solche Datei und bei mir tut es einwandfrei. Das einzige was ich habe ist eine Datei die lautet: "default.cscheme" vielleicht ist ja die gemeint. Hast du es schon mal versucht mit löschen des gesammten Ordners!? und dann neuinstallieren. Was passiert dann? Tut es trotzdem nicht?
Ganz liebe Grüße
Simon

Superhirn
17.04.2006, 12:12
Hi,

bei mir die selbe situation wie bei Nomi_S. Deinstallieren und dann den ordner löschen. und neu installieren. vieleicht gehts dann.

versuch mal das gcc-plugin in avr-studio zu verwenden. vieleicht hast damit erfolg. ich habe einen freund, der hatte nur mit avrstudio erfolg.

maxf
18.04.2006, 17:52
Bei mir gehts auch nicht. selbe Fehlermeldung wie bein Nomi_S.

SprinterSB
18.04.2006, 18:45
Und ein rebase hat auch nix gebracht?

maxf
19.04.2006, 11:08
Nein, ich finde irgenwie das Tool nicht. Habe auch QT installiert, hat auch nichts gebracht.

SprinterSB
19.04.2006, 12:26
Auf der Seite ist ein Download-Link für diese Tool. Mit QT direkt hat's wohl nix zu tun.

EMpfehlenswert ist mal, ein paar der Threads zu verfolgen. Ihr seid ja nicht die einzigen, bei denen der Fehler kommt. Bevor ein rebase gemacht wird, auch Doku lesen was das macht und welche Konsequenzen es hat. Ich bin auch nur da drüber gestoplert und weiß net mehr als ihr darüber...

maxf
20.04.2006, 10:28
Auf der Seite ist ein Download-Link für diese Tool.

Ich finde dieses File im Download-Breich zwar immer noch nicht, aber der Tipp von http://www.dirkbaumann.de/html/software.html funktioniert.

Superhirn
20.04.2006, 19:20
hi,

tschuldigung dass ich mich so spät melde. aber ich hab sprintersb's links nicht vergessen. ich brobiers sobald ich zeit hab.