Archiv verlassen und diese Seite im Standarddesign anzeigen : Neuling benötigt Hilfe bei AVR Studio
Hallo zusammen,
ich weis nicht warum, aber ich hatte plötzlich das Bedürfnis, mich mit kleinen Robotern zu beschäftigen. Wahrscheinlich durch den Kontakt zu einem Kollegen. Also habe ich mir einen Asuro gekauft, und zusammengebaut. Ging auch ziemlich gut, im zweiten Versuch leuchtete die Status LED endlich grün. Soweit so gut. Nun kommt die Software, und hier liegt das Problem. Ich bekomme es einfach nicht geregelt, ein kleines Programm in ein *.hex – File zu überführen. Da ich die make-Files überhaupt nicht verstehe, bin ich schließlich zu AVR-Studio gekommen. Diese werden hier automatisch erstellt. Ich vermute, dass es mit Pfaden zu *.h und include-Dateien zusammenhängt. Folgende Fehlermeldung erscheint:
G:\......\EigeneProjekte\Lernen\ZweiterVersuch\def ault/../ZweiterVersuch.c:4: undefined reference to `Init'
Oder die „asuro.h“ wird nicht gefunden.
Ich habe in verschiedenen Beiträgen Antworten gefunden, die auch mit viel Geduld formuliert wurden. Ich bin aber nicht weiter gekommen.
Könnte mir bitte jemand der Einstein´s, Genie´s , Experten etc. weiterhelfen?
Wo kommen welche Dateien hin, und was muss ich mit denen machen, bevor sie das tuen, was sie tuen sollen?
Ich habe im Anhang einige Screenshots angehängt. Vielleicht hätte ich noch erwähnen sollen, dass ich mit 54 mit diesem Blödsinnhttps://www.roboternetz.de/phpBB2/images/smiles/eusa_angel.gif angefangen habe.
Dank im Voraus Kucky
Mit #include "asuro.h" wird die Datei im aktuellen Projektverzeichnis gesucht, mit #include <asuro.h> im Pfad, den du in den Optionen eingestellt hast. Versuch das mal.
Ansonsten häng mal das komplette Projekt als zip an.
Vielen Dank,
das hatte ich bereits in einem Beitrag gelesen, und auch versucht. Leider keinen Erfolg. Ich hatte auchmal versucht. Habe mir gerade auch die Anleitung von Sterntaler angesehen.
Hier mein Projekt.
VG Kucky
Am einfachsten ist es, die asuro.c und asuro.h direkt ins Projektverzeichnis zu kopieren, und zum Projekt hinzuzufügen. Die Include-Pfade in den Einstellungen können dann weg.
Außerdem hast du als µC den Mega168 und nicht den Mega8 eingestellt.
Habe ich direkt versucht, und auch die "" gesetzt.
#include "asuro.h"
int main () {
do {
Init ();
MotorDir (FWD,FWD);
MotorSpeed (255, 255);
} while (1);
return 0;
}
Dann kam die Fehlermeldung:
c:/program files/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: cannot find -lasuro
VGK
Habe gerade die "ld.exe" gesucht aber nicht gefunden. Kann es daran liegen? Und wenn ja, wo ist die geblieben? :-$
ld.exe ist der linker. Der müsste aber irgendwo sein.
Hast du in den Project Options auch unter Libraries -> Link with these objects alle Einträge entfernt?
Habe ich sofort gemacht. Ergebnis hier:
G:\...\default/../ZweiterVersuch.c:4: undefined reference to `Init'
G:\...\default/../ZweiterVersuch.c:5: undefined reference to `MotorDir'
G:\...\default/../ZweiterVersuch.c:6: undefined reference to `MotorSpeed'
Die ld.exe muss ich nochmal suchen. Ich installiere WinAVR einfach nochmal. Würde mich aber wundern.
VGK
auch nach erneuter Installation habe ich die ld.exe nicht gefunden. Oder heißt die Linker anders?
Dann kam die Fehlermeldung:
c:/program files/winavr/bin/../lib/gcc/avr/4.3.3/../../../../avr/bin/ld.exe: cannot find -lasuro
Also die ld.exe gibt es definitiv, schliesslich ist es ja sie, die sich über eine nicht gefundene asuro-lib beschwert.
Hallo michl78,
hast ja Recht, wer suchen kann ich echt im Vorteil. Aber mein Problem besteht weiterhin.
Was mir noch aufgefallen ist folgendes:
Das Verzeichnis, so wie es die setup vorgesehen hat;
G:\...\Asuro\ASURO_src\lib\ enthält Dateien wie *.c, *.a etc
Das Verzeichnis
G:\...\Asuro\ASURO_src\lib\inc\ enthält *.h Dateien, also Header bzw. Libraries
Ist das so richtig? Oder verdrehe ich etwas?
Asuro.c und asuro.h habe ich „vorsichtshalber“ im asuro-Verzeichnis als auch im Projektverzeichnis.
Im Anhang noch 2 verschiedene Optionseinstellungen
VG Willi
Mach mal nen neues Projekt auf, und kopiere asuro.h und asuro.c ins Projektverzeichnis (wo auch die Haupt-C-Datei liegt. Die Project Settings erst mal nicht verändern.
Guten Abend uwege.
hab ich, welchen Quellcode soll ich eingeben?
Blöde Frage, warum kann ich plötzlich eure Antworten im Forum nicht mehr sehen?
Hast du aus Versehen auf ignorieren geklickt? (Ups... wenn, dann kannst du das hier auch nicht sehen...)
Als Quellcode in die erzeugte C-Datei kommt dein kleines Testprogramm.
Hallo uwege,
keine Ahnung wieso ich das gemacht habe. Son Blödsinn, einfach Leute zu ignorieren [-X
Ich habe Deinen Vorschlag aber schon geahnt. Gleiche Fehlermeldung.
Willi
So, ich hab mal selbst nen neues Projekt angelegt. Probier das mal aus....
Schade, aber ich hoffe Du bleibst dran
G:\...\AsuroTest\default/../main.c:8: undefined reference to `MotorDir'
G:\...\AsuroTest\default/../main.c:9: undefined reference to `MotorSpeed'
Das hatte ich auch schon mal ausprobiert.
#include <avr/io.h>
So langsam habe ich den Verdacht, dass mit deine WinAVR-Installation was nicht stimmt. Installier mal neu.
Das versuche ich sofort. Ich hatte beim installieren den Ordner "WinAVR" genannt, ohne die Versionsnummer, die vorgeschalgen wurde. War das falsch? Doch wohl eher nicht. AVR Studio auch neu installieren?
Habe alles neu installiert und neu gebootet. Leider die gleichen Fehlermeldungen.
hi,
könntest du vielleicht mal das makefile posten, denn in deiner .zip-Datei von oben ist keines drinnen (außer dem Standardmäßigen)
LG
Hier das Make-File
################################################## #############################
# Makefile for the project AsuroTest
################################################## #############################
## General Flags
PROJECT = AsuroTest
MCU = atmega8
TARGET = AsuroTest.elf
CC = avr-gcc
CPP = avr-g++
## Options common to compile, link and assembly rules
COMMON = -mmcu=$(MCU)
## Compile options common for all C compilation units.
CFLAGS = $(COMMON)
CFLAGS += -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d
## Assembly specific flags
ASMFLAGS = $(COMMON)
ASMFLAGS += $(CFLAGS)
ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2
## Linker flags
LDFLAGS = $(COMMON)
LDFLAGS += -Wl,-Map=AsuroTest.map
## Intel Hex file production flags
HEX_FLASH_FLAGS = -R .eeprom -R .fuse -R .lock -R .signature
HEX_EEPROM_FLAGS = -j .eeprom
HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings
Ich denke nicht dass das alles ist... ;)
PS: falls du sie noch nicht kennst gibt es code-Tags ([ code] und [/code])
LG
sorry, hast ja recht.
################################################## #############################
# Makefile for the project AsuroTest
################################################## #############################
## General Flags
PROJECT = AsuroTest
MCU = atmega8
TARGET = AsuroTest.elf
CC = avr-gcc
CPP = avr-g++
## Options common to compile, link and assembly rules
COMMON = -mmcu=$(MCU)
## Compile options common for all C compilation units.
CFLAGS = $(COMMON)
CFLAGS += -Wall -gdwarf-2 -Os -std=gnu99 -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d
## Assembly specific flags
ASMFLAGS = $(COMMON)
ASMFLAGS += $(CFLAGS)
ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2
## Linker flags
LDFLAGS = $(COMMON)
LDFLAGS += -Wl,-Map=AsuroTest.map
## Intel Hex file production flags
HEX_FLASH_FLAGS = -R .eeprom -R .fuse -R .lock -R .signature
HEX_EEPROM_FLAGS = -j .eeprom
HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0 --no-change-warnings
## Objects that must be built in order to link
OBJECTS = main.o asuro.o
## Objects explicitly added by the user
LINKONLYOBJECTS =
## Build
all: $(TARGET) AsuroTest.hex AsuroTest.eep AsuroTest.lss size
## Compile
main.o: ../main.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<
asuro.o: ../asuro.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<
##Link
$(TARGET): $(OBJECTS)
$(CC) $(LDFLAGS) $(OBJECTS) $(LINKONLYOBJECTS) $(LIBDIRS) $(LIBS) -o $(TARGET)
%.hex: $(TARGET)
avr-objcopy -O ihex $(HEX_FLASH_FLAGS) $< $@
%.eep: $(TARGET)
-avr-objcopy $(HEX_EEPROM_FLAGS) -O ihex $< $@ || exit 0
%.lss: $(TARGET)
avr-objdump -h -S $< > $@
size: ${TARGET}
@echo
@avr-size -C --mcu=${MCU} ${TARGET}
## Clean target
.PHONY: clean
clean:
-rm -rf $(OBJECTS) AsuroTest.elf dep/* AsuroTest.hex AsuroTest.eep AsuroTest.lss AsuroTest.map
## Other dependencies
-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
Das mit den code-Tags habe ich nicht verstanden.
VGW
So, ich hab das ganze jetzt mal probiert.
Im Anhang ist mein Test, probier das mal.
Mit deiner WinAVR-Installation sollte ein Programm namens Programmers-Notepad mitgekommen sein.
Öffne in diesem mal nach dem entpacken der zip-Datei die test.c im Ordner testprog.
Dann klick oben in der Leiste auf "Tools->make" (so heißt es glaube ich). So müsste es funktionieren.
Wenn nicht, dann bin ich mit meinem Latein leider auch am Ende
LG
Hallo Nachtschwärmer :D
bin gerade im Büro. Werde es heute abend ausprobieren. Vorerst vielen Dank und einen schönen Tag.
Willi
Hatte keine Geduld bis heute Abend zu warten,
Dein Orginal, ohne asuro.h, ergab den Fehler "asuro.h nicht gefunden."
Asuro.h ins Projekt kopiert, alles roger.
Es wurde in beiden Fällen kein test.hex erstellt.
Bringt Dich das weiter?
VG Willi
Oh, tut mir leid das war mein Fehler (war vielleicht gestern doch schon zu spät O:))
Du musst im makefile "LIBPATH = ../../lib" durch "LIBPATH = ../lib" ersetzen. Dann sollte es ohne hinzufügen von irgendwas funktionieren.
LG
Sorry ist nicht nötig, bin froh über Deine Hilfe. Dies ist alles sehr lehrreich und spannend. Ich gehe davon aus, das "../lib" bedeutet, die lib wird irgendwo, außerhalb des Projektverzeichnises gesucht. Aber muß dann nicht so <asuro.h> inkludet werden? Das mach doch auch Sinn, dass diese lib nur an einer Stelle zu finden ist.
Nun hat es auch gefunzt. Alles da, inkl. test.hex.
Warum klappt das denn mit AVR-Studio nicht? Wie gesagt, das MakeFile ist für mich ein Buch mit 7 Siegeln. Soll ich alles nochmal installieren? WinAvr, AvrStudio, Asuro.lib mit Examples. Irgendwo hab ich was gelesen, ich glaub das war osser, da ging ein um ein Plugin. Der Thread was aber aus 2006.
VG Willi
Das mit den Anführungszeichen ist so ne Sache. Normalerweise verwendet man < und > wenn es sich in der Header in den Standardbibliotheken befindet.
Bei asuro.h ist es Ansichtssache ob man es als Standard-Header sieht oder nicht.
Mit Avr-Studio hab ich fast keine Erfahrung, da ich Linux benutze, aber ich kann mir vorstellen, dass die header-Datei sich nicht im include-pfad befindet.
Auf deinen Screenshots sehe ich das die richtige datei gelinkt wird, allerdings finde ich in deinem Makefile nicht wo "$(INCLUDES) " definiert wird, was darauf hindeutet das eben die asuro.h nicht eingebunden wird.
EDIT: Ich vermute, dass das AVR-studio die direkt über die kommandozeile hinzufügt.
hast du schon mal versucht die Asuro-Bibliotheken auf die gleiche Partition zu kopieren wie die WinAvr Installation?
LG
Nö, hab´ ich nicht. Aber Versuch macht klug. Ich verschiebe. Bis gleich.
Fehler:.c:5: undefined reference to `Init'
Auszug aus MakeFile:
## Library Directories
LIBDIRS = -L"C:\ASURO_src\lib"
## Libraries
LIBS = -lasuro
VGW
Ich hab das ganze jetzt auch mit Avr-studio probiert und es auf die schnelle mit dem Standard-Makefile nicht geschafft...
Wenn du aber bei den Projektoptionen das makefile das ich dir gegeben habe verwendest dann funktionierts ohne Probleme. du musst halt mit dem makefile entweder den lib ordner in jedes Asuro-Projekt kopieren oder im makefile das Verzeichnis anpassen.
LG
jetzt funktioniert es tatsächlich :D Vielen vielen Dank.
Heißt das aber im Klartext, dass ich jedes Projekt "test" nennen muß? Ich habe versucht das Projekt (Versuchx) anders zu benennen, im MakeFile das Target Versuchx eingetragen. Da wurde dann "not rule Target Versuchx" angemeckert.
Es ist egal wie du das Projekt nennst.
Es muss nur die Hauptdatei (das ist die wo "main()" drinnensteht ) gleich heißen wie TARGET im makefile.
Falls du bei größeren Projekten mehrere Dateien hast die benötigt werden dann mußt du das mit "SRC +=dateiname.c" im makefile tun (#include "dateiname.h" natürlich nicht vergessen ;)).
LG
das hat mir jetzt aber keine Ruhe gelassen. Nach allen was Du mir gepostet hast, habe ich mich gefragt, wieso gibt jemand eine Software heraus, die nur mit etlichen Tricks zu nutzen ist. Aber das ist wohl so. Nun habe ich mir mal die Makefiles angeschaut die von AVRStudio erstellt werden. Diese habe ich mit anderen verglichen. Dabei fiel mir plötzlich auf, dass in den Makefiles von AVRStudio der LIBPATH fehlt(oder ich erkenn ihn nicht) . Also habe ich Deinen Vorschlag:
## Library Directories
LIBDIRS = -L"C:\ASURO_src\lib"
## Libraries
LIBS = -lasuro
genommen, meinen Pfad eingetragen, das Makefile gesichert, bei Configurations Options eingesetzt, und es gab keine Fehler. Klingt wie von hinten durch die Brust ins Auge. Werde ich morgen mal genauer unter die Lupe nehmen.
VGW
Hubert.G
26.02.2010, 12:27
Kann ich mir nicht ganz vorstellen.
Die Datei von uwegw entpacken, dann auf AsuroTest.aps ein Doppelklick.
Das AVR-Studio geht auf mit allen Dateien.
Dann F7 oder das Icon Build Active Configuration und es müsst sich fehlerfrei kompilieren lassen.
Nach allen was Du mir gepostet hast, habe ich mich gefragt, wieso gibt jemand eine Software heraus, die nur mit etlichen Tricks zu nutzen ist. Aber das ist wohl so nööö ... es ist nur fakt dass AVRStudio für AVRs gemacht wurde und nicht für den Asuro!
die Asurolib einzupflegen ist im AVRStudio nicht schwerer als in JEDER anderen C Entwicklungsumgebung .. zumal du das mitgelieferte makefile von der CD ja ins AVRStudio reinladen kannst.
oberallgeier
26.02.2010, 13:59
... wieso gibt jemand eine Software heraus, die nur mit etlichen Tricks zu nutzen ist. Aber das ist wohl so ...Wolln mal so sagen: Software läuft mit know how und know where - sonst läufts nowhere.
Hallo zusammen,
jetzt habe ich einiges verstanden. Mir war nicht klar, dass AVRs und Asruo hier den Unterschied machen. Hab´ halt noch kein know how :wink: . Danke an Ceos für den Hinweis. Mir wird hier nun einiges klar. Bin eben ein Anfänger. Werde mich nun beschämt :D zurück ziehen, und meinen Asuro testen.
Vielen Dank an alle für eure Geduld
Grüße aus Leverkusen
Willi
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.