Library 2.70

Thema: Library 2.70

  1. NomiS:
    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
    Code: [Ansicht]
    > "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.
     
  2. Avatar von m.a.r.v.i.n

    m.a.r.v.i.n:
    Hallo NomiS,

    das sieht doch gar nicht so schlecht aus.

    Code: [Ansicht]
    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.
    Code: [Ansicht]
    # 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
    Code: [Ansicht]
    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.

    Code: [Ansicht]
    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.
     
  3. NomiS:
    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.
     
  4. liggi:
    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
    Lieber am Asuro rumschrauben als alles andere.
    Meine Homepage
     
  5. Sternthaler:
    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 hier nochmal empfehlen. Dort hatte ich mal versucht die Zusammenhänge und erforderlichen Anpassungen aufzuführen.

    Gruß Sternthaler
    Lieber Asuro programieren als arbeiten gehen.
     
  6. NomiS:

    VERZWEIFELT !!!!!!!!!!!!!!!!!!!!

    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:
    Code: [Ansicht]
    > "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:
    Code: [Ansicht]
    #include <asuro.h>
    https://www.roboternetz.de/phpBB2/po...=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


     
  7. Avatar von m.a.r.v.i.n

    m.a.r.v.i.n:
    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
     
  8. Avatar von M1.R

    M1.R:
    Hallo m.a.r.v.i.n,
    Zitat Zitat von 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.
     
  9. Avatar von m.a.r.v.i.n

    m.a.r.v.i.n:
    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.
     
  10. Avatar von M1.R

    M1.R:
    Zitat Zitat von m.a.r.v.i.n
    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.