PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kompiliren funktioniert nicht



driver
17.08.2008, 15:40
Hallo, ich verzweifel fast!

Ich bin jetzt dabei zu versuchen das erste Beispielprogramm zu kompiliren (mit Programmers Notpad 2), aber es klappt einfach nicht!!!

Da kommt immer nur das:

> "make.exe" all

-------- begin --------
avr-gcc (WinAVR 20080610) 4.3.0
Copyright (C) 2008 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.


Linking: RP6Base_LEDs.elf
avr-gcc -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Base_LEDs.o -I../../RP6lib -I../../RP6lib/RP6base -I../../RP6lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Base_LEDs.elf.d RP6Base_LEDs.o ../../RP6lib/RP6base/RP6RobotBaseLib.o ../../RP6lib/RP6common/RP6uart.o --output RP6Base_LEDs.elf -Wl,-Map=RP6Base_LEDs.map,--cref -lm
RP6Base_LEDs.o: In function `main':
G:\Eigene Dateien\Jonas Müller\Roboter\RP6 Examples\RP6Examples\RP6BASE_EXAMPLES\Example_01_L EDs/RP6Base_LEDs.c:64: undefined reference to `setLEDs'
G:\Eigene Dateien\Jonas Müller\Roboter\RP6 Examples\RP6Examples\RP6BASE_EXAMPLES\Example_01_L EDs/RP6Base_LEDs.c:77: undefined reference to `setLEDs'
G:\Eigene Dateien\Jonas Müller\Roboter\RP6 Examples\RP6Examples\RP6BASE_EXAMPLES\Example_01_L EDs/RP6Base_LEDs.c:94: undefined reference to `setLEDs'
make.exe: *** [RP6Base_LEDs.elf] Error 1

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

Ich hab mich jetzt auch schon im Forum kundig gemacht, aber da steht immer nur was von Makefiles und son kram, aber ich weiß überhaupt nichts wies weiter gehen soll!!!

Könnt ihr mir denn nicht schritt für schritt sagen was ich machen muss???

Bitte helft mir!!!

Dirk
17.08.2008, 16:02
Hallo driver,

du hast ja deine Beispielprogramme in ...
G:\Eigene Dateien\Jonas Müller\Roboter\RP6\Examples

Im letzten Unterverzeichnis (Examples) muss auch das RP6Lib-Verzeichnis mit den Libs stehen. Ist das bei dir so?

Wenn nicht: RP6Lib-Unterverzeichnis dahin kopieren.

Gruß Dirk

driver
17.08.2008, 16:20
Hallo,

ja RP6Lib steht drinne.

SlyD
17.08.2008, 17:56
Hallo,

wie schon oft erwähnt funktionieren die alten Versionen der Beispielprogramme nicht mehr ganz korrekt mit NEUEN Versionen von WinAVR (eigentlich nur inline Funktionen wie eben setLEDs). Am Compiler hat sich da ein wenig was geändert...

Also neueste Version der Beispielprogramme hier herunterladen:
http://www.arexx.com/rp6/

dann wird es klappen.
(alternativ WinAVR-20071221 verwenden, damit klappts auch)

MfG,
SlyD

driver
17.08.2008, 21:32
Es klappt aber immer noch nicht ?!?!?!?

SlyD
17.08.2008, 21:44
Hallo,

und was für eine Fehlermeldung kommt?!
;)

Na OK - extrahiere die Beispielprogramme in den Order:
C:\RP6\Examples
oder ein anderes Laufwerk - aber keine Leerzeichen und keine Sonderzeichen wie öäü im Pfad - nur um das auszuschließen.

Dann die RP6BaseExamples.ppg im Windows Explorer doppelt anklicken (dann werden ALLE Projekte in PN2 geöffnet, ist komfortabler).
Dann das erste Beispielprogramm RP6Base_LEDs.c öffnen - oben Tools->Make All anklicken.

Falls es immer noch nicht klappt - deinstalliere mal WinAVR komplett und installier es nochmal neu.

Falls dann noch ein Fehler kommt - poste bitte die gesamte Ausgabe hier im Forum.

MfG,
SlyD

driver
18.08.2008, 08:50
Hallo,

ich hab jetzt alles probiert, aber es liegen immer noch zwei Fehler vor, hier mal die Outputliste:


> "C:\RP6\Exampels\RP6BASE_EXAMPLES\Example_01_LEDs\\ make_all.bat"

C:\RP6\Exampels\RP6BASE_EXAMPLES\Example_01_LEDs>set LANG=C

C:\RP6\Exampels\RP6BASE_EXAMPLES\Example_01_LEDs>make all

-------- begin --------
avr-gcc (WinAVR 20080610) 4.3.0
Copyright (C) 2008 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.


Compiling: RP6Base_LEDs.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Base_LEDs.lst -I../../RP6Lib -I../../RP6Lib/RP6base -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Base_LEDs.o.d RP6Base_LEDs.c -o RP6Base_LEDs.o
../../RP6Lib/RP6base/RP6RobotBaseLib.h:196: warning: inline function 'isMovementComplete' declared but never defined
../../RP6Lib/RP6base/RP6RobotBaseLib.h:75: warning: inline function 'setLEDs' declared but never defined
../../RP6Lib/RP6base/RP6RobotBaseLib.h:196: warning: inline function 'isMovementComplete' declared but never defined
../../RP6Lib/RP6base/RP6RobotBaseLib.h:75: warning: inline function 'setLEDs' declared but never defined

Compiling: ../../RP6Lib/RP6base/RP6RobotBaseLib.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=../../RP6Lib/RP6base/RP6RobotBaseLib.lst -I../../RP6Lib -I../../RP6Lib/RP6base -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6RobotBaseLib.o.d ../../RP6Lib/RP6base/RP6RobotBaseLib.c -o ../../RP6Lib/RP6base/RP6RobotBaseLib.o

Compiling: ../../RP6Lib/RP6common/RP6uart.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=../../RP6Lib/RP6common/RP6uart.lst -I../../RP6Lib -I../../RP6Lib/RP6base -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6uart.o.d ../../RP6Lib/RP6common/RP6uart.c -o ../../RP6Lib/RP6common/RP6uart.o

Linking: RP6Base_LEDs.elf
avr-gcc -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Base_LEDs.o -I../../RP6Lib -I../../RP6Lib/RP6base -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Base_LEDs.elf.d RP6Base_LEDs.o ../../RP6Lib/RP6base/RP6RobotBaseLib.o ../../RP6Lib/RP6common/RP6uart.o --output RP6Base_LEDs.elf -Wl,-Map=RP6Base_LEDs.map,--cref -lm
RP6Base_LEDs.o: In function `main':
C:\RP6\Exampels\RP6BASE_EXAMPLES\Example_01_LEDs/RP6Base_LEDs.c:64: undefined reference to `setLEDs'
C:\RP6\Exampels\RP6BASE_EXAMPLES\Example_01_LEDs/RP6Base_LEDs.c:77: undefined reference to `setLEDs'
C:\RP6\Exampels\RP6BASE_EXAMPLES\Example_01_LEDs/RP6Base_LEDs.c:94: undefined reference to `setLEDs'
make: *** [RP6Base_LEDs.elf] Error 1

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

Bin Dankbar für alle Antworten!!!

SlyD
18.08.2008, 10:05
Und Du hast Dir sicher die aktuellsten Beispielprogramme heruntergeladen?
Version 20080510 ?

Von der Seite hier:
http://www.arexx.com/rp6/html/de/software.htm

Direktlink:
http://www.arexx.com/rp6/downloads/RP6Examples_20080510.zip


Denn eigentlich passen die Zeilennummern die der Compiler da ausspuckt nicht zu den aktuellen Beispielprogrammen...

Wie schon gesagt - mit den ALTEN Beispielen muss man auch eine ALTE WinAVR Version verwenden.

Um ein NEUERES WinAVR zu verwenden muss man auch die NEUEN Beispielprogramme verwenden, da die daran angepasst worden sind.
(beim AVR-GCC ändert sich ständig irgendeine kleinigkeit ... )

MfG,
SlyD

driver
18.08.2008, 11:41
Vielen Dank für die Hilfe, die Beispielprogramme funktionieren jetzt. Aber jetzt habe ich ein Programm selbstgeschrieben und damit gibt es noch Probleme:




#include "RP6RobotBaseLib.h"

int main (void)

{

initRobtBase ();

powerOn ();

moveAtspeed (100;100);

mSleep (2500);

while (true)

{

task_motionControl ();

}

return 0;

}



> "G:\Eigene Dateien\Jonas Müller\Technik\Roboter\Robby RP6\Testprogramme\\make_all.bat"

G:\Eigene Dateien\Jonas Mller\Technik\Roboter\Robby RP6\Testprogramme>set LANG=C

G:\Eigene Dateien\Jonas Mller\Technik\Roboter\Robby RP6\Testprogramme>make all

-------- begin --------
avr-gcc (WinAVR 20080610) 4.3.0
Copyright (C) 2008 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.

make: *** No rule to make target `RP6Base_Move_04.elf', needed by `elf'. Stop.

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

Es kann natürlich auch sein das mein Code fasch ist (ist imerhin mein erster)

Grüße aus dem Tühringer Wald
[/code]

SlyD
18.08.2008, 12:08
Hallo,

Du hast das Makefile nicht oder nicht richtig abgeändert.
--> Anleitung lesen!

Du musst in das Makefile eintragen welche Quellcode Dateien kompiliert werden sollen!

MfG,
SlyD

driver
18.08.2008, 19:39
Hallo,

hab ich jetzt gemacht (wie in der Anleitung stand) aber es kommt immer noch eine Fehlermeldung (siehe Oben) ?!?

Schöne Grüße!!!

radbruch
18.08.2008, 20:34
Es müßte initRobotBase(); heißen.

topgunfb
18.08.2008, 21:44
Hi,

ich hab ein ähnliches Problem...
Vllt bin ich auch nur zu blöd. Ich weiß, es hat schonmal bei mir funktioniert.
Hier meine Umgebung:

MS Vista SP1
WinAVR-20080610 (brandaktuell ...)
die akt. Beispiele hab ich auch runtergeladen, und dann erscheint beim kompilieren folgende Meldung:

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

-------- begin --------
avr-gcc (WinAVR 20080610) 4.3.0
Copyright (C) 2008 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 0x30590000, RegionSize 0x1F0000, State 0x10000
C:\WinAVR-20080610\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
make.exe: *** [sizebefore] Error 1

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

Dabei wollt ich nur ein Demoprogramm kompilieren. Hab nix geändert....
Son Mist...

MfG
topgunfb

SlyD
18.08.2008, 21:53
Das Problem gibts immer noch? Sollte doch eigentlich seit WinAVR20071221 behoben sein.

Probiers mal bitte mit WinAVR 20071221.
Das da oben deutet auf DLL Probleme hin - irgendwelche inkompatiblen Versionen o.ä. - da kann es sein das eine ältere Version dennoch funktioniert.
(älter heisst bei WinAVR nicht unbedingt schlechter!)

MfG,
SlyD

PS:
@Driver:
Da sind noch mehr Tippfehler in Deinem Programm da oben! Aber such mal bitte selbst danach, nur so lernt mans ;)

Wenn es mit dem Makefile partout nicht klappen will, probiers mal mit dem Template hier:
http://www.arexx.com/rp6/downloads/RP6_project_template.zip

driver
18.08.2008, 22:08
Hallo,

das programm habe ich auch erstmal verworfen, ich habe jetzt folgendes "Hallo Welt" Programm aus der Anleitung genommen:




// Ein kleines Hallo Welt Programm für den RP6!

#include "RP6RobotBaseLib.h"

int main (void)
{

initRobotBase();
writeString ("Hallo Welt!\n");
return 0;

}


aber es funktioniert einfach nich, Makefile habe ich auch nach der Anleitung geändert (schlecht beschrieben!!!).

Hier der Output:

> "G:\Eigene Dateien\Jonas Müller\Technik\Roboter\Robby RP6\Testprogramme\\make_all.bat"

G:\Eigene Dateien\Jonas Mller\Technik\Roboter\Robby RP6\Testprogramme>set LANG=C

G:\Eigene Dateien\Jonas Mller\Technik\Roboter\Robby RP6\Testprogramme>make all

-------- begin --------
avr-gcc (WinAVR 20080610) 4.3.0
Copyright (C) 2008 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.

/usr/bin/sh: test: too many arguments
make: *** No rule to make target `G:/Eigene', needed by `elf'. Stop.

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

Danke und Grüße, Driver

SlyD
18.08.2008, 22:28
> G:\Eigene Dateien\Jonas Mller\T

s. o.

KEINE Sonderzeichen im Pfad! (äöü sind Sonderzeichen!)
Das mag der Compiler (auf Windows Systemen) überhaupt nicht!

Also niemals nicht im Eigenen Dateien Ordner arbeiten!
(was man sowieso nicht machen sollte - Daten gehören bei Windows IMMER auf eine sichere extra Partition - ich sprech da aus Erfahrung ;) )

MfG,
SlyD

driver
18.08.2008, 22:35
Gut ich hab das jetzt geändert, das Problem ist immer noch da?!?

radbruch
18.08.2008, 22:41
....Testprogramme\\make_all.bat
Warum ist da ein doppelter \\ ? Ist das normal?

Ich verwende kamavr, das erzeugt seine make-Files selbstständig

driver
18.08.2008, 23:01
Ja ich glaube das ist Normal

radbruch
18.08.2008, 23:24
"Glauben" heißt: "nicht Wissen"

Wir sollten eine weitere Meinung abwarten.

topgunfb
18.08.2008, 23:25
Hi,

das mit dem WinAVR20071221 hat bisher nur dazu geführt, dass ich nun gar keine make.exe mehr finde.
Was mache ich falsch?
Ich kann doch nur die Project-File öffnen, dann die *.c File öffnen und auf "Tools" und "Make-All" klicken....
Warum klappt das nicht mehr?

Gibt es denn die Möglichkeit das auch mit nem anderen Compiler in .hex zu wandeln?

MfG
topgunfb

SlyD
19.08.2008, 14:26
Hallo,

@driver:
Poste mal bitte das KOMPLETTE projekt als zip Datei hier im Forum.
So ist das nur stochern im dunkeln woran es liegt.

@topgunfb:
Also wie gesagt - *eigentlich* sollte das seit WinAVR 20071221 behoben sein.
http://www.madwizard.org/electronics/articles/winavrvista

Theoretisch könnte es sein, dass Deine PATH Variable verpfuscht wurde von einem anderen Programm.
Aber zu Vista kann ich leider nicht soviel sagen - das läuft bei mir nur in einer VM und da funktionierts problemlos, ist aber auch nicht viel zusätzliches drin installiert.

Versuch nochmal WinAVR komplett zu deinstallieren! Dann neustarten und dann nochmal neu installieren.
Achso und probier vorher und nachher mal make und den avr-gcc direkt von der Kommandozeile (=Eingabeaufforderung) aufzurufen - was ist die Ausgabe?

( make --version und avr-gcc --version eingeben!)

MfG,
SlyD

topgunfb
19.08.2008, 14:34
Hi SlyD,

ich habe den AVR bereits mehrfach deinstalliert, das Verzeichnins gelöscht, die Registry gereinigt und das ganze nach einem Neustart nochmal!

Ich werd mir jetzt mein uralt IBM ThinkPad T20 ausm Keller holen und die Umgebung da nochmal im XP Pro installieren. Wenn das net fruchtet, dann probier ich es in ver VM mit Linux nochmal...
Wenn dann nicht geht, meld ich mich wieder...


DANKE!

MfG

topgunfb

SlyD
19.08.2008, 14:41
Hallo topgunfb,

ist aber schon recht merkwürdig - WinAVR nutzen ja nicht nur die RP6 Anwender sondern auch die meisten anderen die AVRs verwenden.
Sonst hab ich noch von keinen Problemen mit Vista gehört seit der 20071221er Version...

Hast Du denn irgendwas "unübliches" installiert - wie Delphi oder VisualStudio oder sonstige Entwicklungsumgebungen die in der PATH Variable rumpfuschen könnten?

MfG,
SlyD

driver
19.08.2008, 16:11
Hier ist das Programm:

Hoffe ihr könnt mir helfen!

Danke!

SlyD
19.08.2008, 16:38
@Driver:

Mmmm - ne das kann ja so nicht funktionieren.

1.
Der Eintrag im Makefile
TARGET = xxxxx
muss GENAU so heissen wie die Quelltextdatei (ohne .c hintendran).
Sonst findet der Compiler die Datei ja nicht - woher soll der Compiler wissen was in dem Ordner nun compiliert werden soll? (ein C Programm besteht im allgemeinen aus beliebig vielen Dateien und nicht nur aus einer einzigen)

Habe das mal korrigiert - aber schau Dir bitte an was ich genau geändert habe damit Du es verstehst! :)

Bitte in den Beispielordner entpacken - so wie im Screenshot gezeigt sollte das nachher aussehen!



2.
Oben hatte ich ja schon gesagt - Sonderzeichen.

Sonderzeichen in Dateinamen sind alles ausser A-Z, a-z, 0-9 und _ (Unterstrich)
ALLES andere gehört NICHT in Dateinamen und Pfadnamen rein.
Ganz besonders keine Leerzeichen!
äöü usw. geht normalerweise auch - aber Leerzeichen sind böse böse.
;)

Auch wenn das mit vielen Windows Programmen funktionieren mag, ist es für Entwicklungstools defintiv ein Problem - denn Leerzeichen werden in der Kommandozeile und in Makefiles als TRENNUNGSSYMBOL verwendet.

Also - Beispielprogramme entpacken - in einen Ordner OHNE LEERZEICHEN.
Wie der sonst heisst ist egal - anstatt eines Leerzeichens nimmt man halt nen Unterstrich - also c:\ich_bin_der_Ordnername_ohne_leerzeichen\



So - ich hoffe das hilft Dir :D

MfG,
SlyD

driver
19.08.2008, 17:55
Vieeeeeeeelen Dank für die Hilfe!!!!!
Es klappt jetzt!!!

Aber gibt es eine Möglichkeit die Hexa Dateien zu verschieben???

Grüße

SlyD
19.08.2008, 18:06
Kein Problem! :)


> Aber gibt es eine Möglichkeit die Hexa Dateien zu verschieben???

Wie jetzt?
Explorer--> Bla.hex Verschieben wohin du willst ;)

Du meinst vermutlich von mehreren Programmen direkt automatisch in einen Ordner reinkopieren?

Ja das geht - musst gaanz weit unten im makefile bei Zeile 498 was ändern.

So siehts orginal aus:


# Create final output files (.hex, .eep) from ELF output file.
%.hex: %.elf
@echo
@echo $(MSG_FLASH) $@
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< $@


Und so geändert damit er es in den Order out im OBERVerzeichnis kopiert - also in dem Verzeichnis out eine Ebene höher (dafür ist das ../ ).


# Create final output files (.hex, .eep) from ELF output file.
%.hex: %.elf
@echo
@echo $(MSG_FLASH) $@
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< ../out/$@


Die Zeile hier wurde geändert:
$(OBJCOPY) -O $(FORMAT) -R .eeprom $< ../out/$@

../out/
kannste mit irgendeinem anderen Ordner ersetzen - sollte aber
ein relativer Pfad sein und nicht irgendwas mit C:\ oder so.

MfG,
SlyD

topgunfb
07.10.2008, 18:44
Hi@all,

hab gerade mal wieder angefangen n bissle am RP6 rumzubasteln, da wollt ich mal den neuen AVR und die neuen Examples ausprobieren.
Und siehe da, der Fehler ist immer noch da!

PC: MSI GX610, MS Vista Home Premium, keine sonstige Programmierumgebung drauf!

SW: WinAVR-20080610, Examples20080915

Ich starte da Programmers Notepad und lade die erste Expamles-File (das Projekt natrülich) und will es kompilieren.

Dann kommt folgender Fehler:

> "make.exe" all
AllocationBase 0x0, BaseAddress 0x30590000, RegionSize 0x1F0000, State 0x10000
D:\WinAVR-20080610\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0

-------- begin --------
avr-gcc (WinAVR 20080610) 4.3.0
Copyright (C) 2008 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 0x30590000, RegionSize 0x1F0000, State 0x10000
D:\WinAVR-20080610\utils\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 error 0
make.exe: *** [sizebefore] Error 1

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

HILFE!!!!

MfG

topgunfb

SlyD
07.10.2008, 18:53
Moment - es hat schonmal funktioniert und jetzt plötzlich nicht mehr?
Naja auch mal was neues.

Hast Du in der Zwischenzeit *irgendwas* anderes installiert?

Vista... ja damit und vor allem in Verbindung mit diversen Virenscannern gibt es ab und zu Probleme:
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=51843&highlight=reserve+space+cygwin+heap

Schau auch mal hier:
http://www.madwizard.org/electronics/articles/winavrvista

Bzw. lad Dir mal diese Datei runter:
http://www.madwizard.org/download/electronics/msys-rebased.zip

und probier mal bitte diese im WinAVR Verzeichnis zu ersetzen.
(also im WinAVR-xxxx\utils\bin Verzeichnis die Datei msys-1.0.dll ersetzen)

Dann nochmal probieren. Teste auch mal *kurzzeitig* Deinen Virenscanner zu deaktivieren und schau ob es dann klappt.
(nur um zu testen ob es daran liegt, oder an was anderem)

MfG,
SlyD

topgunfb
08.10.2008, 12:31
Hi SlyD,

du musst das falsch verstanden haben.
Es hat leider auf dem Vista-PC noch nie funktioniert.
Die mysys.dll hab ich ausgestauscht, Kaspersky Internet Security deaktiviert, sogar das ATI-Tool hab ich deaktiviert.
Kein Erfolg!

Ich werd wohl doch mein altes T21 wiederbeleben müssen... Son Mist!
Na ja, dann hab ich die SW schon nicht auf dem Zock.-Rechner.

Mal schauen, obs da auf Anhieb geht...

Werds berichten.

Trotzdem DANKE!

MfG

topgunfb

topgunfb
09.10.2008, 07:14
Hi,

so nun fluppt das ganze wieder... Hab mein altes ThinkPad wieder in Dienst gestellt.
Etwas langsam und laut, aber immerhin funktioniert es.

Jetzt habe ich aber noch ne andere Frage:

Ich habe mir diverse Demo-Codes hier aus dem Forum geholt, die sich mit Servoprogrammierung beschäftigen.
Leider klappt das nicht so wie es soll.
Mir werden beim kompilieren fast alle, händisch erzeugten Variablen einfach als Fehler angekreidet. D.h. ich kann nix mehr kompilieren, an dem ich etwas verändert habe.
Ich habe es auch schonmal mit einem simplen counter probiert, sinngemäß eine For-Schleife mit i++ bis 100. Deklariert habe ich die Variable mit uint_8 i=0;
Da sagt mir der Compiler, ich hätte i nicht korrekt deklariert.

Hat das schonmal jemand gehabt?

MfG

topgunfb

fhs
09.10.2008, 07:35
Hi,

vielleicht liegt es an einem dieser zwei Punkte:
1. Für uint8_t muss "inttypes.h" eingebunden sein.
2. Für eine Variablendeklaration innerhalb einer Schleifenanweisung (z.B. for (uint8_t i=0; i<100; i++)) muss "-std=gnu99" als Compiler-Option angegeben werden.

Gruß

Fred

Dirk
09.10.2008, 09:11
Hallo topgunfb,

wenn du diese Typen:
int8_t int16_t int32_t int64_t uint8_t uint16_t uint32_t uint64_t
... nimmst, müßte es klappen.

Du brauchst sonst nichts weiter einzubinden.

Gruß Dirk

SlyD
09.10.2008, 12:17
Falls Du es nochmal mit Vista probieren willst, versuch mal die Datei im Anhang!
(wieder austauschen)

Hab mal grad selbst versucht die DLL zu rebasen. Ob das aber was bringt kann ich nicht testen, da es bei mir sowieso auf allen Rechnern funktioniert (auch auf der Vista Krücke).
Kann sein das wir da ein paar Versuche brauchen...

Siedler_03
25.12.2008, 19:22
Hallo
ich hab gestern einen rp6 bekommen und hab auch die ganzen Beispielprogramme ausprobiert.
jetzt hab ich selbst mal eins geschrieben und will es kompilieren, aber der spuckt da nur so was aus

> "D:\Florian\Roboter\RP6BASE_EXAMPLES\\make_all.bat"

> Failed to create process: Das System kann die angegebene Datei nicht finden.

> Process Exit Code: 0
> Time Taken: 00:00

was hab ich falsch gemacht?
hier noch das Programm:

/************************************************** **********/
/***********************Bumper+LEDs**************** **********/
/************************************************** **********/
#include "RP6RobotBaseLib.h"
int main(void)
initRobotBase()
{
while(true)
{
if (getBumperLeft()) setLEDs(0b000001);
mSleep(500);
setLEDs(0b000010);
mSleep(500);
setLEDs(0b000100);
mSleep(500);
if (getBumperRight()) setLEDs(0b001000);
mSleep(500);
setLEDs(0b010000);
mSleep(500);
setLEDs(0b100000);
mSleep(500)
mSleep(50)
}
return 0;
}

Dirk
25.12.2008, 19:43
Der Name deines Programms (ohne .c) muss im Makefile bei TARGET =
eingetragen sein.

Gruß Dirk

Siedler_03
25.12.2008, 20:02
hä wo im makefile?
bzw. wo finde ich das?

Dirk
25.12.2008, 20:38
Das makefile ist ja nur eine Textdatei, in der man suchen kann. Wenn man den Editor nutzt, dann unter Bearbeiten -> Suchen ...

Gruß Dirk

Siedler_03
25.12.2008, 20:52
der zeigt an dass makefile nicht gefunden werden kann.
wenn ich die beispielprogramme zu kompilieren versuche,zeigt der immer das an:

> "D:\Florian\Roboter\RP6BASE_EXAMPLES\Example_01_LED s\\make_all.bat"

D:\Florian\Roboter\RP6BASE_EXAMPLES\Example_01_LED s>set LANG=C

D:\Florian\Roboter\RP6BASE_EXAMPLES\Example_01_LED s>make all

-------- begin --------
avr-gcc (GCC) 4.1.2 (WinAVR 20070525)
Copyright (C) 2006 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.


Compiling: RP6Base_LEDs.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Base_LEDs.lst -I../../RP6Lib -I../../RP6Lib/RP6base -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Base_LEDs.o.d RP6Base_LEDs.c -o RP6Base_LEDs.o
RP6Base_LEDs.c:33:61: error: RP6RobotBaseLib.h: No such file or directory
RP6Base_LEDs.c: In function 'main':
RP6Base_LEDs.c:41: warning: implicit declaration of function 'initRobotBase'
RP6Base_LEDs.c:47: warning: implicit declaration of function 'writeString_P'
RP6Base_LEDs.c:64: warning: implicit declaration of function 'setLEDs'
RP6Base_LEDs.c:76: warning: implicit declaration of function 'mSleep'
RP6Base_LEDs.c:83: error: 'uint8_t' undeclared (first use in this function)
RP6Base_LEDs.c:83: error: (Each undeclared identifier is reported only once
RP6Base_LEDs.c:83: error: for each function it appears in.)
RP6Base_LEDs.c:83: error: expected ';' before 'runningLight'
RP6Base_LEDs.c:90: error: 'true' undeclared (first use in this function)
RP6Base_LEDs.c:94: error: 'runningLight' undeclared (first use in this function)
make: *** [RP6Base_LEDs.o] Error 1

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

gruß flo

Dirk
25.12.2008, 21:00
Hast du die kompletten Beispiele kopiert, also auch insbesondere das Verzeichnis RP6Lib?

Gruß Dirk

Siedler_03
25.12.2008, 21:03
von der cd aufn pc oder vom pc ins pn2?

Dirk
25.12.2008, 21:07
von der cd aufn pc
Ja, genau.

Siedler_03
25.12.2008, 21:15
ja hab ich gemacht

Siedler_03
25.12.2008, 21:16
ja hab ich gemacht.

Dirk
25.12.2008, 21:36
ja hab ich gemacht
Laut Fehlermeldung wird die RP6RobotBaseLib nicht gefunden.
Das spricht dafür, dass du den Verzeichnisbaum der Beispiele und Libraries evtl. doch nicht komplett bzw. an die richtige Stelle kopiert hast ...

Gruß Dirk

Siedler_03
26.12.2008, 12:48
Also
ich hab winavr und pn2 nochmal komplett runtergeschmissen und die versionen von der cd installiert.
mit dem compilen der beispielprogramme klappts jetzt nur bei meinem eigenen Programm gibt der immer noch die gleiche meldung wie vorher aus
ich hab das makefile jetzt gefunden aber wenn ich da jetzt den namen des programmes eingebe,macht der trotzdem nichts anderes

Dirk
26.12.2008, 15:52
Hallo Siedler_03,

wenn du für JEDES eigene Programm ein eigenes Verzeichnis (rot markiert) anlegst, müßte das klappen. Also:
\Examples\
...RP6BASE_EXAMPLES\
......Example_01_LEDs\
......Example_02_UART_02\
......usw. usw., dann dein NEUES Verzeichnis:
......[highlight=red:49d5a5acae]RP6Base_MyFirstProgram\[/highlight:49d5a5acae]

In das neue Verzeichnis kopierst du dann:
make_all.bat
make_clean.bat
makefile
MyFirstProgram.c (<- Das ist dein neues Programm!)

... und änderst im makefile bei TARGET = die Zeile in:
TARGET = MyFirstProgram

Genau so machst du das für jedes eigene Programm. Am einfachsten ist es am Anfang, ein ganzes vorhandenes Example-Verzeichnis zu kopieren und unter anderem Namen in RP6BASE_EXAMPLES einzufügen. Dann kannst du darin ein Beispiel ändern oder ganz neu entwickeln. Danach müßte alles klappen.

Gruß Dirk

Siedler_03
27.12.2008, 10:31
soll ich dann das makefile von winavr da reinkopieren oder wie?

Siedler_03
27.12.2008, 11:46
hab ich jetzt einfach gemacht aber dann spuckt der mir sowas aus

> "D:\Florian\Roboter\RP6BASE_EXAMPLES\eigeneprogs\\m ake_all.bat"

D:\Florian\Roboter\RP6BASE_EXAMPLES\eigeneprogs>set LANG=C

D:\Florian\Roboter\RP6BASE_EXAMPLES\eigeneprogs>make all
make: *** No rule to make target `all'. Stop.

> Process Exit Code: 2

gruß flo

Dirk
27.12.2008, 13:25
soll ich dann das makefile von winavr da reinkopieren oder wie?
Am besten, du nimmst ein makefile von einem der Beispielprograme des RP6.
Normalerweise fängt man ja so an, dass man ein Beispiel (z.B. Example_01_LEDs) hernimmt und das dann ändern will oder auf der Basis dieses Programms weiter machen will. Dann kopiert man einfach das ganze Verzeichnis Example_01_LEDs und fügt es unter neuem Namen (meinetwegen Example_09_LEDsNew) im Verzeichnis RP6BASE_EXAMPLES wieder ein. Dann hat man auch gleich ein passendes makefile.
Die Meldung *** No rule to make target `all' gibt es meist, wenn im Eintrag TARGET = im makefile kein passendes Programm (z.B. MyProg.c) eingetragen ist: TARGET = MyProg

Gruß Dirk

Siedler_03
27.12.2008, 13:27
jo ich versuchs mal

Siedler_03
28.12.2008, 10:46
also das compilen geht jetzt aber der spuckt jetzt immer so etwas aus und ich kann den fehler im code nicht finden
Die fehlermeldung:

> "D:\Florian\Roboter\RP6BASE_EXAMPLES\Example_09_LED sNEW\\make_all.bat"

D:\Florian\Roboter\RP6BASE_EXAMPLES\Example_09_LED sNEW>set LANG=C

D:\Florian\Roboter\RP6BASE_EXAMPLES\Example_09_LED sNEW>make all

-------- begin --------
avr-gcc (GCC) 4.1.1 (WinAVR 20070122)
Copyright (C) 2006 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.


Compiling: RP6Base_LEDs.c
avr-gcc -c -mmcu=atmega32 -I. -gdwarf-2 -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=RP6Base_LEDs.lst -I../../RP6Lib -I../../RP6Lib/RP6base -I../../RP6Lib/RP6common -std=gnu99 -MD -MP -MF .dep/RP6Base_LEDs.o.d RP6Base_LEDs.c -o RP6Base_LEDs.o
RP6Base_LEDs.c: In function 'main':
RP6Base_LEDs.c:8: error: expected declaration specifiers before 'initRobotBase'
RP6Base_LEDs.c:22: error: expected declaration specifiers before 'return'
make: *** [RP6Base_LEDs.o] Error 1

> Process Exit Code: 2

und der code:

/************************************************** *******************/
/***********************Bumper Testprogramm***************************/
/************************************************** *******************/

#include "RP6RobotBaseLib.h"

int main(void)
initRobotBase()
PowerON()
while(true)
{
if(getBumperRight)
{
setLEDs(0b000001);
mSleep(500);
setLEDs(0b000010);
mSleep(500);
setLEDs(0b000100);
mSleep(500)
}
}
return 0

radbruch
28.12.2008, 11:01
Vielleicht so:

/************************************************** *******************/
/***********************Bumper Testprogramm***************************/
/************************************************** *******************/

#include "RP6RobotBaseLib.h"

int main(void)
{
initRobotBase();
powerON();
while(true)
{
if(getBumperRight())
{
setLEDs(0b000001);
mSleep(500);
setLEDs(0b000010);
mSleep(500);
setLEDs(0b000100);
mSleep(500);
}
}
return(0);
}

(nicht getestet)

Siedler_03
28.12.2008, 11:18
ah danke
das programm tut zwar nicht,was es tun sollte aber ich konnte es compilen und auf den rp6 laden
danke
gruß flo

Dirk
28.12.2008, 13:23
das programm tut zwar nicht,was es tun sollte ...
Was sollte es denn tun?

Gruß Dirk

Siedler_03
28.12.2008, 17:15
es sollte ein lauflicht geben wenn man auf den Bumper drückt aber das hab ich in einem anderen programm besser hinbekommen aber da sind auch einige probleme aufgetreten:

/************************************************** **********/
/***********************ERSTES PROGRAMM**********************/
/************************************************** **********/
#include "RP6RobotBaseLib.h"
int main(void)
{
powerON();
initRobotBase();
{
while(true)
{
task_motionControl();
task_ADC();
if (getBumperLeft())
{
move(50,FWD,300,1);
mSleep(250);
setLEDs(0b010000);
mSleep(250);
setLEDs(0b001000);
mSleep(250);
setLEDs(0b000000);
}
if (getBumperRight())
{
move(50,FWD,300,1);
mSleep(250);
setLEDs(0b000010);
mSleep(250);
setLEDs(0b000001);
mSleep(250);
setLEDs(0b000000);
}
}
return 0;
}
}


und zwar beschleunigt der rp6 wenn ich einen Bumper drücke bis der überlastungsschutz anschlägt er soll aber mit einer konstanten geschwindigkeit fahren.

Dirk
29.12.2008, 19:53
Wenn du den move Befehl einsetzt, brauchst du task_motionControl() nicht.

Gruß Dirk