PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Library 2.70



NomiS
14.11.2007, 12:10
Frage an alle die mit der neuen Lib. arbeiten.
Wie habt ihr die zum laufen gebracht. Ich hab die anderen Foren schon durchgelesen und so einiges versucht, es klappt aber einafach nicht.


Ich arbeite mit dem WinAVR Programmers Notepad.
Im Forum steht damit würde es auch gehn.

Also erst habe ich die Installversion gezogen. Geht aber nicht da in der Registry aus irgend einem Grund nix von WinAVR steht und somit findet die Install WinAVR nicht.
Dann habe ich das ZIP-file gezogen.
Auf der Platte habe ich folgende Ordnerstrucktur
C:\Programmiertools->
\WinAVR
-> standard
\Asurosrc
->SelfTest
->FirstTry
-> darin befinden sich make clean und meine c dateien
->Download
-> hier ist die Neue Lib. drin
\AVR_Studio4

die Datei libasuro.a wurde im Verzeichniss C:\Programmiertools\WinAVR\avr\lib hinzugefügt

der Pfad im Makefile wurde auf
DIRAVR = C:/Programmiertools/WinAVR geändert

in der install.txt steht:
Danach genügt ein Aufruf des Makefiles im <INST_DIR>/lib Verzeichnis mit:
make install
um die libasuro.a in das AVR-GCC Verzeichnis zu kopieren.
ich haben kein make install!!!

Die make-lib.bat habe ich ausgeführt.

Wenn ich im Programmers Notepad auf make klicke kommt das:


C:\Programmiertools\ASURO_src\FirstTry\FirstTry>make all
-------- begin --------
avr-gcc --version
avr-gcc (GCC) 3.3.1
Copyright (C) 2003 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.

Size before:
test.elf :
section size addr
.text 1512 0
.data 0 8388704
.bss 1 8388704
.noinit 0 8388705
.eeprom 0 8454144
.stab 3120 0
.stabstr 1809 0
Total 6442


Size after:
test.elf :
section size addr
.text 1512 0
.data 0 8388704
.bss 1 8388704
.noinit 0 8388705
.eeprom 0 8454144
.stab 3120 0
.stabstr 1809 0
Total 6442


Errors: none
-------- end --------

> Process Exit Code: 0

es wird aber kein hex-file erzeugt.

Was habe ich alles falsch gemacht.
Und wen schon mal jemand dabei ist mir zu antworten. Wie richte ich das AVR Studio 4 auf der CD für C und die neue Lib. ein. Bisher habe ich nur mit dem PN gaarbeitet da ich nicht wusste wie ich make und clean ins Studio4 integriere da dort steht es können nur Assembler und kein C

Danke schon mal im Voraus

liggi
14.11.2007, 12:47
1. die Datei wird direkt kopiert
2. die Funktion make install ist in der datei makefile


mfg liggi

NomiS
14.11.2007, 12:57
ich hab noch ein bisschen rumkopiert. Jetzt geht´s das mit dem make install habe ich aber immer noch nicht verstanden. Ich denke das Makefile enthält angaben für den kompiler und linker. Wie soll ich dann seperat make install ausführen was übrigens nirgends im Makefile erwähnt wird?
Jetz gehen aber meine Programme alle samt nicht mehr. Bei mienem Asuro leuchtet nur noch die grüne LED. Die Programme haben aber mit der alten Lib funktioniert!!

NomiS
14.11.2007, 13:05
ok das mit der grünen LED liegt wohl nicht an der Lib. auch alte hex files führen zu diesem effekt. Es ist doch aber nicht möglich das ich durch die neue Lib was im SFR geändert habe ohne meine Programme abzuändern oder?

NomiS
14.11.2007, 13:37
so jetzt geht zwar mein Asuro wieder aber es wird kein hex file erzeugt.
Wenn ich den Code wandeln lasse kommt das:


C:\Programmiertools\ASURO_src\FirstTry>make all
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT globals.o -MF dep/globals.o.d -c globals.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT adc.o -MF dep/adc.o.d -c adc.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT encoder.o -MF dep/encoder.o.d -c encoder.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT encoder_low.o -MF dep/encoder_low.o.d -c encoder_low.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT i2c.o -MF dep/i2c.o.d -c i2c.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT leds.o -MF dep/leds.o.d -c leds.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT lcd.o -MF dep/lcd.o.d -c lcd.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT motor.o -MF dep/motor.o.d -c motor.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT motor_low.o -MF dep/motor_low.o.d -c motor_low.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT print.o -MF dep/print.o.d -c print.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT rc5.o -MF dep/rc5.o.d -c rc5.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT sound.o -MF dep/sound.o.d -c sound.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT switches.o -MF dep/switches.o.d -c switches.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT time.o -MF dep/time.o.d -c time.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT uart.o -MF dep/uart.o.d -c uart.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT version.o -MF dep/version.o.d -c version.c
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-ar cru libasuro.a globals.o adc.o encoder.o encoder_low.o i2c.o leds.o lcd.o motor.o motor_low.o print.o rc5.o sound.o switches.o time.o uart.o version.o
rm -rf *.o *~

> Process Exit Code: 0

NomiS
14.11.2007, 14:02
So nochmals die frage:
Was muss ich hierbei mache?

Danach genügt ein Aufruf des Makefiles im <INST_DIR>/lib Verzeichnis mit:
make install
um die libasuro.a in das AVR-GCC Verzeichnis zu kopieren.

NomiS
14.11.2007, 20:00
Eine Frage an Sterntaler:
Du hast geschrieben das, dass Setup der Lib. nach einem Registryeintrag sucht. Ich habe das ganze jetzt auf meinem Privatrechner mit Adminrechten versucht, auf dem ich die neuset WinAVR Version ohne rumkopieren oder so habe. Das setup sagt jedoch: kein AVR da! Warum? Ob das zip file hier geht test ich gleich noch !

NomiS
15.11.2007, 06:13
So also es geht weder auf meinem Privatlaptop noch auf dem FirmenPC (exe und zip-datei)
es kommt immer:
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
avr-ar cru libasuro.a globals.o adc.o encoder.o encoder_low.o i2c.o leds.o lcd.o motor.o motor_low.o print.o rc5.o sound.o switches.o time.o uart.o version.o
rm -rf *.o *~

> Process Exit Code: 0
Dabei wird aber kein hex file erzeugt.
Außerdem verstehe ich die Antwort mit:
2. die Funktion make install ist in der datei makefile
immer noch nicht. Im makefile steht nix von make install.
Was muss ich den jetzt machen. HIELFE

NomiS
15.11.2007, 06:34
So die make install ist also in der make library.OK die habe ich gefunden. Wenn ich nun aber auf make Library gehe und Pause drücke sehe ich das im gleichen Ordner daten erzeugt werden, diese verschwinden aber nach dem vortsetzen mit enter wieder. Wenn ich diese auf der Platte suchen lasse kommt nichts.
Liegt das an dieser Fehlermeldung?
cc1.exe: warning: `dwarf-2': unknown or unsupported -g option
und wie kann ich sie beheben.
Ich machen nun schon seit bald 2 Tagen daran rum. Langsam nervt es!!!

m.a.r.v.i.n
15.11.2007, 09:50
Hallo NomiS,

Die Fehlermeldung

`dwarf-2': unknown or unsupported -g option
liegt an einer veralteten WinAVR Version. Das dwarf-2-Format wird ab WinAVR 20040722 verwendet. Update deinen Compiler und deinstalliere vorher den alten Compiler.

radbruch
15.11.2007, 10:01
Hallo


Das setup sagt jedoch: kein AVR da! Warum?
Hast du den Path eingetragen? Unter Arbeitsplatz->Eigenschaften->Erweitert->Umgebungsvariablen->Path.

Gruß

mic

NomiS
15.11.2007, 15:53
OK jetz weiß ich wies geht.
Folgendes:
Wer eine alte WinAVR Version hat diese Deinstallieren
Pathvariable löschen (in der Registry und der Systemsteuerung)
-> bei mir waren die komischerweiße unterschiedlich
Neue AVR Version installieren (wegen neuem Compiler)
AVR Asuro Lib instaöllieren
Fehlermeldung ignorieren
Geht.


Jetzt kommt bei mir aber:
print.c:137: warning: pointer targets in passing argument 1 of 'SerPrint' differ in signedness
heißt das das eine Librury doppelt ist oder stimmt der Quellcode von SerPrint nocht?
Mein Programm sieht an der stelle so aus:
PrintInt(msright);
habs aber auch schon so versucht
PrintInt(msright [5]);
die PrintInt sieht so aus:




void PrintInt (
int wert)
{
char text [7]; // "-12345"

itoa (wert, text, 10);
SerPrint (text);
}


und die SerPrint so




void SerPrint (
unsigned char *data)
{
unsigned char i = 0;

while (data [i] != 0x00)
UartPutc (data [i++]);
}

Sternthaler
15.11.2007, 19:13
Hallo NomiS,
diesen warning kannst du ausnahmsweise mal vergessen.

Die SerPrint()-Funktion erwartet einen String, der mit "unsigned char"-Variablen definiert ist.
Da z.B. ein Aufruf der Funktion mit "SerPrint ("Hallo");" gemacht wird, wird hier leider ein "signed char" in die Funktion gegeben.
Diese Version vom Compiler liefert dir hierfür nun ein warning.

Dieses warning kannst du beheben, indem du in der Funktion PrintInt() die Variable text auf "unsigned char" umbaust. Dann allerdings kann es sein, das die Funktion itoa() rummeckert.


Aber Achtung, nicht bei jedem warning kommst du so ungeschoren davon.

Gruß Sternthaler

NomiS
15.11.2007, 21:39
@ Sterntaler
Hi danke das du dich hier auch mal einmischst!!!
Ich habe mit der neuen Lib leider immer noch Probleme.
Ich Arbeite mit der neuen AVR Version 20070525.
Diese hat schon eine eigenes make. Ich habe trotzdem noch mal ein make und ein clean ersetllt. Wenn ich nun mein Programm mit dem orginal make ausführe kommt:


> "make.exe" all
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT globals.o -MF dep/globals.o.d -c globals.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT adc.o -MF dep/adc.o.d -c adc.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT encoder.o -MF dep/encoder.o.d -c encoder.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT encoder_low.o -MF dep/encoder_low.o.d -c encoder_low.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT i2c.o -MF dep/i2c.o.d -c i2c.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT leds.o -MF dep/leds.o.d -c leds.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT lcd.o -MF dep/lcd.o.d -c lcd.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT motor.o -MF dep/motor.o.d -c motor.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT motor_low.o -MF dep/motor_low.o.d -c motor_low.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT print.o -MF dep/print.o.d -c print.c
print.c: In function 'PrintInt':
print.c:98: warning: pointer targets in passing argument 1 of 'SerPrint' differ in signedness
print.c: In function 'PrintLong':
print.c:137: warning: pointer targets in passing argument 1 of 'SerPrint' differ in signedness
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT rc5.o -MF dep/rc5.o.d -c rc5.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT sound.o -MF dep/sound.o.d -c sound.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT switches.o -MF dep/switches.o.d -c switches.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT time.o -MF dep/time.o.d -c time.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT uart.o -MF dep/uart.o.d -c uart.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT version.o -MF dep/version.o.d -c version.c
avr-ar cru libasuro.a globals.o adc.o encoder.o encoder_low.o i2c.o leds.o lcd.o motor.o motor_low.o print.o rc5.o sound.o switches.o time.o uart.o version.o
rm -rf *.o *~

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

mit der selbsterstellten kommt:


> "D:\ASURO\ASURO_src\FirstTry\Test-all.bat"

D:\ASURO\ASURO_src\FirstTry>make all
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT globals.o -MF dep/globals.o.d -c globals.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT adc.o -MF dep/adc.o.d -c adc.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT encoder.o -MF dep/encoder.o.d -c encoder.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT encoder_low.o -MF dep/encoder_low.o.d -c encoder_low.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT i2c.o -MF dep/i2c.o.d -c i2c.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT leds.o -MF dep/leds.o.d -c leds.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT lcd.o -MF dep/lcd.o.d -c lcd.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT motor.o -MF dep/motor.o.d -c motor.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT motor_low.o -MF dep/motor_low.o.d -c motor_low.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT print.o -MF dep/print.o.d -c print.c
print.c: In function 'PrintInt':
print.c:98: warning: pointer targets in passing argument 1 of 'SerPrint' differ in signedness
print.c: In function 'PrintLong':
print.c:137: warning: pointer targets in passing argument 1 of 'SerPrint' differ in signedness
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT rc5.o -MF dep/rc5.o.d -c rc5.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT sound.o -MF dep/sound.o.d -c sound.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT switches.o -MF dep/switches.o.d -c switches.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT time.o -MF dep/time.o.d -c time.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT uart.o -MF dep/uart.o.d -c uart.c
avr-gcc.exe -mmcu=atmega8 -Wall -gdwarf-2 -Os -I./inc -MD -MP -MT version.o -MF dep/version.o.d -c version.c
avr-ar cru libasuro.a globals.o adc.o encoder.o encoder_low.o i2c.o leds.o lcd.o motor.o motor_low.o print.o rc5.o sound.o switches.o time.o uart.o version.o
rm -rf *.o *~

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


in meinem Ordner erscheint nach dem Compilieren aber kein Hex file und wenn ich nach test.hex suche kommen nur die schon fertigen vom Hersteller.
Was kann ich noch alles falsch gemacht haben. Funktioniert die Lib wenn da Process Exit Code: 0 steht?

damaltor
15.11.2007, 22:41
aktualisiere das fenster mal, ich hatte mit nem windoof pc mal das probllem dass die hexfiles zwar sa waren, aber erst nach dem druck auf F5 sichtbar wurden...

Sternthaler
16.11.2007, 00:22
Hallo NomiS,
ich glaube, dass du aktuell den Wald vor lauter Bäumen nicht siehst. (Ist nicht böse gemeint, sondern liegt in der Natur/Verständnis der Dinge wenn es um eine Lib geht.)

Dein geposteter Screenshot sagt mir folgendes:

- Du rufst im Verzeichnis D:\ASURO\ASURO_src\FirstTry\ die BAT-Datei Test-all.bat auf.
- Dein Makefile übersetzt schön brav alle angegeben Dateien:
--- globals.c
--- adc.c
--- encoder.c
--- encoder_low.c
--- i2c.c
--- leds.c
--- lcd.c
--- motor.c
--- motor_low.c
--- print.c --- mit den 2 warnings zur Funktion SerPrint() wegen signedness
--- rc5.c
--- sound.c
--- switches.c
--- time.c
--- uart.c
--- version.c

Diese Dateien stammen alle aus der Asuro-Lib. Sie haben eigendlich nichts im Verzeichnis D:\...\FirstTry\ verloren. In diesem Verzeichnis wird ja von der ASURO-CD nur das Originalprogramm zum 'ersten Versuch' abgespeichert. Und die Entwickler vom ASURO wusten ja noch nichts davon, dass wir im Forum eine Lib basteln.


Jetzt kommt aber noch aus deinem geposteter Screenshot folgende Zeile:
"avr-ar cru libasuro.a globals.o adc.o encoder.o encoder_low.o i2c.o leds.o lcd.o motor.o motor_low.o print.o rc5.o sound.o switches.o time.o uart.o version.o"

Auch dieses Kommando wird fehlerfrei ausgeführt.
Aber was wird damit gemacht?
--- Das Programm avr-ar wird aufgerufen.
--- Steuernde Parameter dafür sind "cru"
Als Ergebnis wird dir die dann angegeben Datei libasuro.a gebaut. Die muss nun im Verzeichnis D:\ASURO\ASURO_src\FirstTry\ 'rumliegen'.
Alle weiteren Angaben mit dem .o am Ende sind die Übersetzten C-Dateien.
Was macht cru? Es sammelt Object-Dateien (*.o) zu/in einer Lib-Datei (*.a)
- c: create (ohne warung, wenn *.a angelegt werden muss)
- r: replace (ersetzen oder neu hinzufügen von *.o Dateien)
- u: update (nur ersetzen, wenn die *.o-Datei neuer ist als der Inhalt in *.a)
(Ruf mal zum Spaß avr-ar in einem DOS-Fenster auf. Nicht erschrecken, es kommen nur die 'paar' Parameter, die man da mitgeben kann.)

Du hast nicht eine HEX-Datei, sondern eine LIB-Datei fehlerfrei erzeugt.

Ich bin mir relativ sicher, das dies aber nicht dein Wunsch ist.
Gibt es in deinem Verzeichnis D:\ASURO\ASURO_src\FirstTry\ noch irgendeine C-Datei, in der du eigenen Programmcode reingeschrieben hast? Meistens wird hier im Forum die Datei test.c benutzt. (Mann/Frau ist ja so faul das Makefile anzupassen.)

Du solltest mal kurz sagen ob du nur die LIB erstellen willst, oder ob du ein eigenes Programm in D:\...\FirstTry\ übersetzen möchtest.

Gruß Sternthaler

NomiS
16.11.2007, 06:08
Hi Sterntaler,

erst mal zu deiner Frage. Ich möchte mein Programm mit den Funktionen aus der Lib übersetzen.

Also in das ASURO_src habe ich die Lib kopiert da es anfangs nicht funktioniert hat. Das Asuro.h/.c file sind aber die neuen. Es gibt aber die Lib auch noch mal in einem anderen Ordner. Mein c-file liegt in ASURO_src.
Wenn ich aber nur das makefile make.bat clean.bat und mein test.c in dem ordner lasse kommt das:


> "C:\Programmiertools\ASURO_src\FirstTry\Test-all.bat"

C:\Programmiertools\ASURO_src\FirstTry>make all
make: *** No rule to make target `globals.o', needed by `libasuro.a'. Stop.

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

Ich habe libasuro.a aber in C:\Programmiertools\Winavr\avr\lib
Das makefile wurde auf C:\Programmiertools\Winavr\ angepasst.

NomiS
16.11.2007, 06:43
So ich habe das ganze jetzt noch mal anderst versucht.
Ich habe in ASURO_src zwei Ordner.
Den Orginal First try mit:
test.c -> meins
makefile -> verändet auf avr pfad
test-all.bat -> wird von avr als make verwendet
clean.bat -> wird von avr als clean verwendet
dann gibt es den Ordner lib. Das ist der Lib-Ordner aus dem ZipFile.
Dort bin ich auf makelib gegangen und habe das auurolib a file in avr/lib
1.) kopiert -> dann mekert avr
2.) ausgeschnitten dann kommt


> "C:\Programmiertools\ASURO_src\FirstTry\Test-all.bat"

C:\Programmiertools\ASURO_src\FirstTry>make all
make: *** No rule to make target `globals.o', needed by `libasuro.a'. Stop.

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

ich habe das make auch schon in die lib kopiert und und und. Im moment fallen mir keine Lösungsmöglichkeiten mehr ein.

Becci
16.11.2007, 06:47
Also bei mir funktioniert das Ganze mit der neuen lib auch nicht. Immerhin findet er inzwischen alle lib-Teile, jedoch erstellt er mir keine hex-Datei.
An was kann das liegen??




C:\ASURO_SRC\AsuroLib\lib>make all
-------- begin --------
avr-gcc --version
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.

make: *** No rule to make target `test.hex', needed by `all'. Stop.

> Process Exit Code: 2

m.a.r.v.i.n
16.11.2007, 10:19
Hallo,

was treibt ihr beiden (becci und NomiS) eigentlich da? :Haue
NomiS kopiert alle Files aus dem Lib Ordner in den FirstTry Ordner und becci kopiert das Makefile aus dem FirstTry Ordner in den lib Ordner.

So kann das nichts werden.

Also nochmal ganz von Anfang.

Im lib Ordner stehen die Quellfiles der Asuro Lib. Dort gibt es auch ein spezielles Makefile zum Erstellen der Lib, d.h. es wird ein File libasuro.a erzeugt, kein test.hex File. Die erzeugt Lib wird zudem noch in das WinAVR-Lib Verzeichnis kopiert, damit es beim Erzeugen eines Projektes auch gefunden wird. Das alles wird durch Aufruf der Datei make-lib.bat gemacht. Evtl muß man vorher noch im Makefile den Pfad zum WinAVR Lib Verzeichnis anpassen, damit in das richtige Verzeichnis kopiert wird.

im examples\FirstTry Ordner befindet sich ein Beispielprojekt mit einem Makefile zum Erstellen des Beispielsprojektes (das erzeugt eine test.hex).
Zum Erstellen des test.hex Files wird aber die vorher erstellte Asuro Lib benötigt.

Ich hoffe bis zum Wochenende iene neue Asuro Lib veröffentlichen zu können. Dann wird die Installation und das ganze drumherum viel einfacher.

Bis dann.

NomiS
16.11.2007, 10:51
Hallo m.a.r.v.i.n,
also Becci und ich sitzen ca. 50 cm voneinander weg.
Das rumkopieren war meine letzte Idee/Hoffnung/Rettungsversuch
also am Anfang habe ich es so gemacht wie du geschrieben hast.
1.) ASURO_src nicht angetastet
2.) lib kopiert
3.) makefile angepasst
4.) asurolib.a in Winavr\avr\lib kopiert
5.) make-lib.bat
dann sollte es doch gehen, aber es kommt


> "C:\Programmiertools\ASURO_src\FirstTry\Test-all.bat"

C:\Programmiertools\ASURO_src\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
-------- begin --------
avr-gcc --version
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.

avr-gcc -c -mmcu=atmega8 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=test.lst test.c -o test.o
In file included from asuro.h:34,
from asuro.c:29,
from test.c:1:
c:/programmiertools/winavr/bin/../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."
test.c: In function 'PrintInt':
test.c:14: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c: In function 'main':
test.c:72: warning: implicit declaration of function 'Gettime'
test.c:89: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:90: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:92: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:96: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:97: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:99: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:133: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:134: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:136: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:140: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:141: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:143: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:169: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:170: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:172: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:176: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:177: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:179: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:211: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:212: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:214: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:218: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:219: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:221: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness
test.c:233:15: warning: no newline at end of file
test.c:233: error: expected declaration or statement at end of input
make: *** [test.o] Error 1

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

wobei ich denke das
test.c:72: warning: implicit declaration of function 'Gettime'
darauf hindeutet das er die lib nicht findet.
Dann habe ich irgendwo gelesen das man die orginal asuro.c/h überschreiben muss -> geht auch nicht
dann habe ich mit der rumkopiererrei angefangen -> tut auch nicht
was jetzt? ach installieren geht nicht da er avr nicht findet
mir ist klar das es an mir und nicht an der lib liegt, sonst würde es ja bei den anderen auch nicht gehen, aber was ich falsch mache blick ich nicht.

m.a.r.v.i.n
16.11.2007, 12:13
Hallo NomiS,

das sieht doch gar nicht so schlecht aus.



c:/programmiertools/winavr/bin/../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete. Use <avr/interrupt.h>."

Ich denke irgendwo liegt da noch eine alt 'asuro.h' datei herum, über die der Compiler stolpert. Im deinem Projektordner FirstTry darf es keine asuro.h und auch keine asuro.c geben (löschen oder umbenennen). Die korrekte asuro.h steht im Verzeichnis ASURO_SRC\AsuroLib\lib\inc.
Die asuro.c steht im Verzeichnis ASURO_SRC\AsuroLib\lib.
Damit Compiler und Linker diese Dateien auch findet, wird dies ebenfalls über das Projekt Makefile gesteuert. Der Pfad für die Header-Datei steht hinter -I, der Pfad für die Asuro.c hinter VPATH =. Das sollte in Ordnung sein, solange die Verzeichnis Struktur dieselbe ist, wie bei der Installation angelegt.


# Optional compiler flags.
# -g: generate debugging information (for GDB, or for COFF conversion)
# -O*: optimization level
# -f...: tuning, see gcc manual and avr-libc documentation
# -Wall...: warning level
# -Wa,...: tell GCC to pass this to the assembler.
# -ahlms: create assembler listing
CFLAGS = -g -O$(OPT) -I../../lib/inc\
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \
-Wall -Wstrict-prototypes \
-Wa,-ahlms=$(<:.c=.lst)

VPATH=../../lib




test.c:89: warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness

Diese Warnings sind ein Fehler in der Lib, können aber erst mal ignoriert werden.



test.c:233: error: expected declaration or statement at end of input


Hier liegt noch ein Fehler in deinem Programm vor. Was das ist, kann ich dir nur sagen, wenn du deinen Programmcode hier postest.



was jetzt? ach installieren geht nicht da er avr nicht findet

Das hast du ja schon unter Punkt 3-4 manuell erledigt. Damit ist die Installation korrekt.

NomiS
16.11.2007, 15:11
Also ich hatte in der ASURO_src noch das Orginal asuro.c/h. Nach dem löschen mekert der Compiler abetr das ihm diese nun fehlen.

liggi
16.11.2007, 15:40
wenn du die Anführungszeichen bei den include's benutzt hast, sind die spitzen Klammern besser, da bei den spitzen Klammern, die Dateien im allgemeinen Include-Pfad gesucht werden. Genau dort hast du sie hin kopiert.

mfg liggi

Sternthaler
16.11.2007, 18:01
Hallo m.a.r.v.i.n
danke für die Rettung.

Hallo NimiS und Becci,
vielleicht hattet ihr es ja schon gefunden, aber ich möchte euch den Thread So wird die Asuro-LIB installiert und in Betrieb genommen /2 (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=33149) hier nochmal empfehlen. Dort hatte ich mal versucht die Zusammenhänge und erforderlichen Anpassungen aufzuführen.

Gruß Sternthaler

NomiS
17.11.2007, 12:07
Hi Sternthaler,
ja die haben wir schon gefunden. Das Problem ist das wir aus der Anleitung nicht schlauer werden.
Welches makefile ist wofür.
Was muss in den ASURO_src (makefile make all clean all ...)
Was muss man mit dem Orginal asuro.c/h, makefile machen
Wie sollte die Ordnerstrucktur sein
Wo kommt die Lib nach dem erstellen hin (zum schauen ob sie da auch angekommen ist)

Zur Zeit habe ich den Asuro_src Orginalordner in dem ich die Orginal asuro.c/h gelöscht habe und das Orginal makefile noch enthalten ist. (Ich habe es aber auch schon mit allen anderen kombinationen versucht) Die includes werden mit <> gemacht. Die Lib wurde wie schon vorher beschrieben eingebunden. Jetzt kommt:


> "D:\ASURO\ASURO_src\FirstTry\Test-all.bat"

D:\ASURO\ASURO_src\FirstTry>make all
-------- begin --------
avr-gcc --version
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.

make: *** No rule to make target `test.hex', needed by `all'. Stop.

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

mein test.c ist das Orginal, außer das ich "" gegen <> ersetzt habe:


#include <asuro.h>
https://www.roboternetz.de/phpBB2/posting.php?mode=reply&t=35564
int main(void)
{
Init();

while(1);
return 0;
}

Demnächst lernt der Laptop fliegen. Ich verzweifel an der Lib noch.
Vor allem brauchen wir sie Funktionsfähig im Geschäft, da wir mit dem ASURO programmieren üben sollen und da einige neue Lib Teile ganz genial für sind. So lange sie nicht geht na ja ... seit drei Tagen versuchen wir diese Lib einzubinden, selbst unser Admin hat sich schon etliche Std. damit rumgeschlagen. Na ja vlt. klappts am Mo. oder die neue Lib ist bis dahin da und lässt sich einfacher implementieren. Also so einfach das wir es auch mal schaffen
;-)
:-(
](*,)

m.a.r.v.i.n
17.11.2007, 13:54
Hallo NomiS,

so lange verstehe ich, wo das Problem bei euch liegt. Ihr habt die ganze Zeit mit den Original Quellen und Makefiles von der Asuro CD rumprobiert.

Ich bin davon ausgegangen, ihr verwendet die Ordner Struktur wie sie in der AsuroLib vorgegeben ist. Dann sollten sich auch alle Beispielprojekte einwandfrei übersetzen lassen. Nur für diese Ordnerstruktur funktionieren auch die Makefiles.

Mit der neuen AsuroLib wird das etwas einfacher. Es gibt nur noch eine Stelle im Makefile, in die der Pfad zur AsuroLib eingetragen werden muß, das war es dann schon. Die Lib oder die Header Files müssen auch nicht mehr umkopiert werden. Dann funktionieren auch Projekte, dei anderswo auf der Festplatte herumliegen. Allerdings darf sich in den Projekt Ordnern keine Überreste (asuro.c und asuro.h) von vorherigen Versionen befinden.

Eine Vorab Version der AsuroLib 2.71 gibt es schon mal hier (http://www.asurowiki.de/pmwiki/uploads/Main/asuro_libv271.zip)

M1.R
17.11.2007, 16:32
Hallo m.a.r.v.i.n,

Eine Vorab Version der AsuroLib 2.71 gibt es schon mal
die Funktion PrintFloat braucht die Funktion SerPrint aus der print.c.
Daher denke ich, dass entweder SerPrint auch in printf.c rein sollte, oder PrintFloat in print.c.

Gruss
M.

m.a.r.v.i.n
17.11.2007, 20:33
Hallo M1.R,



die Funktion PrintFloat braucht die Funktion SerPrint aus der print.c.
Daher denke ich, dass entweder SerPrint auch in printf.c rein sollte, oder PrintFloat in print.c.


Darum muß ich mich doch gar nicht kümmern, das erledigt der Linker doch von selbst. Es wäre im Gegenteil sehr unklug die PrintFloat Funktion mit in die Print.c Datei zu packen. Die Funktion benötigt ca. 1700 Bytes. Und diese 1700 Bytes wären dann bei jedem Programm mit drin, egal ob sie aufgerufen wird oder nicht. Wenn nur irgendeine andere Funktion aus der print.c Datei vom Programm verwendet werden wird.

Das ist ja gerade der Clou an der Objekt Library. Möglichst viele Funktionen in eigene Dateien packen (ideal wäre sogar jede Funktion in eine eigene Datei). Nur dann wird beim Linken der minimalste Programmcode erzeugt. Der Linker ist so strohdoof, das er alle Funktionen einer Datei zum Projekt dazulinkt, auch wenn nur eine einzige Funktion aus der Datei vom Programm aufgerufen wird.

M1.R
17.11.2007, 21:29
Darum muß ich mich doch gar nicht kümmern, das erledigt der Linker doch von selbst.na dann werde ich mich auch mal bemühen, die lib richtig zu installieren. Bisher füge ich alle benötigten lib-Dateien "von Hand" ins AVR-Studio ein.
Gruss
M.

NomiS
17.11.2007, 21:52
Boa geil es geht endlich JUHUU DANKE an alle die sich so lang Zeit dafür genommen haben.
Na ja mein Prog. hat zwar noch nen fehler aber ich versuchs erst mal selbst.
Es soll mir die Geschwindigkeit des ASURO in m/s an das Hyperterminal senden. Dazu soll der Asuro Beschleunigen und wieder langsamer werden. Einmal vorwärts und ein mal rückwärts.
Im Hyperterminal soll es dann so aussehen:
Vorwärts

Linkes Rad +xx.xxm/s Rechtes Rad +xx.xx m/s
Linkes Rad +xx.xxm/s Rechtes Rad +xx.xx m/s
.....
Rückwärts

Linkes Rad -xx.xxm/s Rechtes Rad -xx.xx m/s
Linkes Rad -xx.xxm/s Rechtes Rad -xx.xx m/s

Wenn´s geht wird´s gepostet.
Die Vorzeichen sind nur um zu sehen ob Vorwärts oder Rückwärts. Es gibt ja keine neg. Geschwindigkeiten.
Diese Lib ist einfach genial.
Nur zwei fragen dazu.
1.) Man muss string.h noch immer selbst includen Why!!!
2.) Es kommt immer noch dieses Warning:
warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness -> was bedeutet das so genau

Und dann noch was zu meinem Prog.
Hatte schon mal jemand diesen error?
error: expected declaration or statement at end of input
Was habt ihr dann gemacht oder er was bedeutet dieser error so genau?
Erklärung oder Aussage am Ende des Einganges erwartete ??? Hää

Nochmals DANKE an alle

NomiS

m.a.r.v.i.n
17.11.2007, 23:37
1.) Man muss string.h noch immer selbst includen Why!!!

Ohne deinen Programmcode zu kennen, kann ich dir da nicht weiterhelfen.



2.) Es kommt immer noch dieses Warning:
warning: pointer targets in passing argument 1 of 'SerWrite' differ in signedness -> was bedeutet das so genau


Wenn du Strings ausgeben willst wie z.B. "Hello World" ist die Funktion SerPrint die bessere Wahl. Du sparst dir das Zählen der Zeichen, und es gibt keine warnings mehr :wink:
SerWrite erwartet "unsigned char *" als Parameter (ein Zeiger auf vorzeichenlose Zeichen) das sind die Zahlen 0..255.
SerPrint erwartet "char *" als Parameter (ein Zeiger auf vorzeichenbehaftete Zeichen), das sind die Zahlen -128..+127. Strings sind z.B. per C-Definition vorzeichenbehaftete Zeichen.
in früheren Versionen des AVR Compilers gab es keine Warnung wenn man signed und unsigned mischte. Solange die Werte zwischen 0..127 bleiben, spielt es auch keine Rolle.


Ein Beispiel:


SerPrint("Hello Asuro");


SerWrite sollte nur zum Senden von Rohdaten (keine ASCII Daten) verwendet werden. Ja ich weis, auch in der Lib zur Doku wird das in manchen Beispielen auch so gemacht.

Auch hierzu ein Beispiel:



SerWrite(0x55aa, 2);


error: expected declaration or statement at end of input
Was habt ihr dann gemacht oder er was bedeutet dieser error so genau?

Wahrscheinlich fehlt nur irgendwo eine Klammer, oder eine falsche Klammer.
Wenn ich folgenden Code übersetze kriege ich auch so einen Fehler:



int main(void)
{
Init();

while(1);
return 0;
{



Rate mal warum :wink:

@M1.R in der Lib 2.71 sind auch Projektfiles für AVR Studio mit dabei, die die Objekt Library verwenden.
Wie das gemacht wird, steht im AsuroWiki (http://www.asurowiki.de/pmwiki/pmwiki.php/Main/AVRStudio)