PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Lib Installation geht einfach nicht!



Vault Boy
02.02.2009, 13:33
Hallo erstmal.

Wenn ich mit der neuen Lib ein Programm im Programmers Notepad in eine .hex umwandeln will, kommt folgende Fehlermeldung:

http://img3.imagebanana.com/img/bxt2i3h/thumb/Unbenannt.bmp.png (http://img3.imagebanana.com/view/bxt2i3h/Unbenannt.bmp.png)



Dabei wurde dieses simple Programm verwendet:

/************************************************** *************************
* *
* 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. *
************************************************** *************************/

#include "asuro.h"

int main(void)
{
Init();
StatusLED(YELLOW);
while (1);
return 0;
}


Ich habe dann wohl irgendetwas bei der Installation der Lib falsch gemacht... 8-[


Jedoch habe ich mich genau an die Anleitung gehalten:

Als erstes habe ich die Lib (Ver. 2.80rc1) heruntergeladen, und entpackt. (Ich habe sie natürlich nicht in einen WinAVR-Ordner entpackt.)

Danach habe ich die neuste WinAVR Version installiert. (Ver. 20081205)

Dann habe ich alle Dateien aus LibHome/lib/inc nach WinAVR/avr/include kopiert, und die Datei libasuro.a aus LibHome/lib nach WinAVR/avr/lib kopiert.

Nachdem ich das gemacht habe, habe ich dann zwei Makefiles so geändert, wie in der Anleitung beschrieben, und zwar einmal die Makefile aus LibHome/lib und die Makefile aus LibHome/examples/FirstTry.

Schließlich habe ich die Lib dann noch mithilfe der Eingabeaufforderung übersetzt.

So müsste es doch eigentlich klappen...?

Doch wenn ich nun ein Programm mit der test.c aus dem FirstTry-Ordner schreibe und es übersetze, kommt diese Fehlermeldung.

Was mache ich falsch?

Mom0
04.02.2009, 14:02
Hallo Vault Boy,

Hasst du den Computer mal neu gestartet als du die Programme installiert hasst?
Ansonsten deinstalliere doch einfach alles noch mal und installiere alles noch mal neu. Ich hatte so eine Fehlermeldung noch nicht und bin auch ratlos!! Ich habe keine wirklich gute Idee :-(

Schöne grüße :-)

Vault Boy
04.02.2009, 14:09
Hallo Mom0,
erstmal vielen Dank für die Antwort. Das mit dem erneuten Installieren von WinAVR und der Lib habe ich auch schon probiert, das Neustarten des Computers bringt leider auch nichts. Ich bin auch ziemlich ratlos. :cheesy:

Naja ich hoffe ich bekomme das noch irgendwie hin. :o

malediction
04.02.2009, 20:45
hat das übersetzten der lib denn problemlos funktioniert?

würde jetzt darauf tippen, dass du vllt bei den makefiles etwas vergessen hast...
wichtig ist, dass LIBPATH genau richtig ist... sonst findet er die lib nicht.

allerdings bin ich auch kein experte... ;)

Valen
04.02.2009, 23:03
Genau, achte mahl auf die \ und / zeichen im path. In die makefile sollen / stehen sondern wirds nicht klappen. Aber Windows Explorer selbst versteht oder gibt nur paths mit \ zeichen. Irgendwo im make algorithmus wirds umgewandelt nach 'Windows-sprache'.

Vault Boy
05.02.2009, 14:21
Vielen Dank für die Hilfe!

Ihr habt Recht, mit der LIBPATH-Angabe stimmte etwas nicht. Es war eine völlig falsche Angabe!

Wäre es denn möglich, dass ich die LIBPATH Zeile korrigiere und die Lib dann nochmal neu übersetze, oder muss ich alles nochmal machen?

€dit: Ich habe mal in der Anleitung nachgelesen, da steht gar nichts von einer LIBPATH-Zeile, nur eine VPATH-Zeile wird erwähnt. :-s

Nun habe ich mal in der Makefile nachgesehen, da gibts einmal ein "LIBPATH" vor dem sich das "#"-Symbol befindet und einmal eins ohne das "#-Symbol. Welches muss geändert werden? :-k

http://img228.imageshack.us/img228/2020/unbenanntjw0.png (http://imageshack.us)
http://img228.imageshack.us/img228/unbenanntjw0.png/1/w397.png (http://g.imageshack.us/img228/unbenanntjw0.png/1/)

Valen
05.02.2009, 15:58
Die # ist ein kommentar zeichen. Also #LIBPATH= wirdt ignoriert. Deine rechner sucht fur die lib im "../../lib" verzeichnis. Das sollte du anderen.

malediction
05.02.2009, 16:14
der kommentar da drüber soll wahrscheinlich nur zeigen, wie es auszusehen hat.

ansich müsste es danach dann reichen, die lib neu zu übersetzen und dann sollte es gehen (wenn keine anderen fehler mehr im makefile sind).

Vault Boy
05.02.2009, 16:43
Argh!

Ich habe LIBPATH geändert, ich habe sogar die ganze Lb nochmal neu installiert, doch das Problem besteht weiterhin. :-s
Ich verstehe das nicht! :-k


Also die Makefile sieht jetzt so aus:

http://img6.imageshack.us/img6/8095/unbenanntpp6.th.png (http://img6.imageshack.us/my.php?image=unbenanntpp6.png)

Und was hat es eigentlich mit dieser "VPATH-Zeile" auf sich? In der Anleitung von Sternthaler wird ja auch gesagt, dass man da nochmal den Pfad der Lib reinschreiben muss. (Habe ich natürlich gemacht O:) )

malediction
05.02.2009, 16:56
seltsam... was hast du denn da für ein makefile?!

meins sieht ganz anders aus... und ich benutze auch die v2.8rc1, bei mir sieht das makefile (aus dem LIB-HOME/lib verzeichnis) so aus:


################################################## #############################
# Makefile for the project AsuroLib
################################################## #############################

## General Flags
MCU = atmega8
F_CPU = 8000000UL
TARGET = libasuro
CC = avr-gcc.exe
AR = avr-ar
OBJDUMP = avr-objdump

## 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 -I./inc
CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d

## Assembly specific flags
ASMFLAGS = $(COMMON)
ASMFLAGS += -x assembler-with-cpp -Wa,-gdwarf2

## Linker flags
LDFLAGS = $(COMMON)
LDFLAGS +=


## Intel Hex file production flags
HEX_FLASH_FLAGS = -R .eeprom

HEX_EEPROM_FLAGS = -j .eeprom
HEX_EEPROM_FLAGS += --set-section-flags=.eeprom="alloc,load"
HEX_EEPROM_FLAGS += --change-section-lma .eeprom=0


## Objects that must be built in order to link
OBJECTS = globals.o adc.o adc_low.o encoder.o encoder_low.o i2c.o leds.o lcd.o\
motor.o motor_low.o my_motor_low.o print.o printf.o rc5.o sound.o switches.o\
time.o uart.o ultrasonic.o version.o

## Objects explicitly added by the user
LINKONLYOBJECTS =

# Define directories, if needed.
DIRAVR = D:/ASURO/WinAVR
#DIRAVR = /usr/local/avr
DIRAVRBIN = $(DIRAVR)/bin
DIRAVRUTILS = $(DIRAVR)/utils/bin
DIRINC = $(DIRAVR)/avr/include
DIRLIB = $(DIRAVR)/avr/lib

LIB = asuro
LIBFILE = $(TARGET).a
HEADER = *.h

## Build
all: $(LIBFILE)
rm -rf *.o *~

%.o: %.c
$(CC) $(INCLUDES) $(CFLAGS) -c $<

$(LIBFILE): $(OBJECTS)
$(AR) cru $(LIBFILE) $(OBJECTS)

## Clean target
clean:
rm -rf *.o *~ $(LIBFILE)
rm -rf *.lst *.map $(EXTRA_CLEAN_FILES)
rm -rf dep/*.d

install:
cp $(LIBFILE) $(DIRLIB)/$(LIBFILE)
cp inc/$(HEADER) $(DIRINC)

lst: $(OBJECTS:%.o=%.lst)


%.lst: %.o
$(OBJDUMP) -h -S $< > $@

## Other dependencies
-include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)



?!

Vault Boy
05.02.2009, 17:16
Achsoooooo :shock:

Ich habe die ganze Zeit gedacht ihr meint "LIBPATH" in der Makefile aus dem First Try Ordner :oops:

Meine Makefile aus LIBHOME/lib sieht genauso aus, allerdings gibts da doch jetzt gar keine LIBPATH-Zeile. :?:

malediction
05.02.2009, 17:39
hm naja du musst sowohl das eine als auch das andere anpassen.

in diesem makefile musst du DIRAVR anpassen. dann noch LIBPATH, wie schon beschrieben und dann noch das makefile im entsprechenden ordner, wo dein projekt ist (also wahrscheinlich firsttry...) hier aknn es sein, dass du LIBPATH nicht mehr anpassen musst. da steht "../../lib" bereits drin. wenn du die test.c dateien direkt aus dem ordner nimmst und dort belässt musst du das hier nicht anpassen.

Vault Boy
10.02.2009, 15:11
Hallo malediction!

Entschuldigung, dass ich jetzt erst antworten kann, aber mein Internet macht probleme :(

Also ich bin zum Entschluss gekommen, dasss das ganze mit der Lib keinen Sinn macht. Ich werde wohl bei der alten bleiben müssen. :(

Nur ich habe versucht sie zu installieren, weil dort angeblich ein Befehl gespeichert sein soll, mit dem der Asuro mithilfe der Sensoren geradeaus fahren kann.

Hätte vielleicht jemand ein Programm (sollte natürlich mit der alten Lib kompitabel sein, also die, die auf der Asuro CD ist), welches genau das gleiche bewirkt, wie dieser Befehl aus der neuen Lib?
Ich wäre sehr dankbar, wenn hier jemand sowas posten würde. :)

malediction
10.02.2009, 18:39
hey vaultboy.

also du kannst das ganze (sehr einfach) lösen, indem du einfach diene asuro immer ein stück geradeaus fahren lässt und dabei sein verhalten beobachtest. dann gibst du einfach auf der siete, zu der er abdriftet ein bisschen mehr gas. wenns zuviel war, wieder etwas weniger usw. das ist zwar keine perfekte lösung, aber es reciht für den anfang.

und so kannst du dann die differenz ausrechnen, die du zw. beiden motoren brauchst und kannst dir selbst eine einfache funktion bauen, die den asuro weitgehend (zu 100% bekommt man das fast nie hin) geradeaus fahren lässt.

und wenn du dann besser in der materie bist, kannst du später auch die odometrie dafür einsetzen. anfangs reicht es aber wirklich so wie oben...