- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 21

Thema: Neue Asurolib 2.70

  1. #11
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.05.2007
    Alter
    33
    Beiträge
    183
    Anzeige

    Praxistest und DIY Projekte
    Die WINAVR Directory habe ich im Makefile geändert (also in dem Makefile in dem Verzeichnis, das ich bei den Tools des Programmers Notepads eingegeben habe). Das gesammt Makefile sieht nun so aus:

    Code:
    ###############################################################################
    # Makefile for the project AsuroLib
    ###############################################################################
    
    ## General Flags
    PROJECT = AsuroLib
    MCU = atmega8
    TARGET = AsuroLib.elf
    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 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 
    
    ## Objects explicitly added by the user
    LINKONLYOBJECTS = 
    
    # Define directories, if needed.
    DIRAVR = C:/Programme/WinAVR
    #DIRAVR = /usr/local/avr
    DIRAVRBIN = $(DIRAVR)/bin
    DIRAVRUTILS = $(DIRAVR)/utils/bin
    DIRINC = .
    DIRLIB = $(DIRAVR)/avr/lib
    
    LIB = asuro
    LIBFILE = lib$(LIB).a
    HEADER = asuro.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)/$(HEADER)
    
    lst: $(OBJECTS:%.o=%.lst)
    
    
    %.lst: %.o
    	$(OBJDUMP) -h -S $< > $@
    
    ## Other dependencies
    -include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
    und die asuro.h ist auch in C:\Programme\Asuro\AsuroLib\lib\inc.

    Ich blick einfach nicht durch. Also: im Makefile (bei mir in C:\Programme\Asuro) steht, wo das WinAVR-Verzeichnis ist. Darin sucht er dann nach der libasuro.a - wie es im Makefile zu erkennen ist. und in dieser libasuro.a sind alle anderen dinge, die er zum compillieren braucht. Aber was macht jetzt die asuro.h? Sorry, dass ich so doof frage, aber ich verstehe das system noch nicht so ganz und bin deswegen auch nicht in der Lage den Fehler zu finden.

  2. #12
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.05.2007
    Alter
    33
    Beiträge
    183
    Zitat Zitat von ehenkes
    asuro.h sollte dort im Verzeichnis stehen, wo asuro.c ist., denn es heisst:
    #include "asuro.h" in asuro.c
    Moment mal: ich denke, die Asuro.c ist in der libasuro.a drin. dann muss die asuro.h also nach C:\Programme\WinAVR\avr\lib. Hm. das geht auch noch nicht...

  3. #13
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    68
    Beiträge
    699
    Mach mal Folgendes:
    1) Alles löschen
    2) WinAVR installieren in Standardverzeichnis C:\WinAVR
    3) ASURO-Bibliothek installieren

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    68
    Beiträge
    699
    dann muss die asuro.h also nach C:\Programme\WinAVR\avr\lib
    Nein.

  5. #15
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.05.2007
    Alter
    33
    Beiträge
    183
    Hm. OK. Ich hatte schonmal die Libs komplett entfernt und neu gemacht, aber ohne Erfolg. also deinstalliere ich erstmal WinAVR.

    - So. WINAVR (das von der Asuro-CD) ist neu installiert.
    - Jetzt die Libs... Zip-file runtergeladen und nach C:\ASURO_SRC\AsuroLib entpackt.
    - Batch-datei erstellt mit dem Inhalt: "make install" => asurolib.a kopiert.
    - asuro.h nach C:\WinAVR\avr\include kopiert.

    Ich hoffe, das stimmt jetzt soweit. Nun stehzt für mich noch die Frage, wie müssen die Tool Einstellungen im PN nun sein und wo müssen meine Projekte rein?

    Vielen Dank für eure Hilfe, für mich ist das alles ein Dsungel, den ich noch nicht durchblicken kann... Kommt hoffentlich auch noch...

    Bääääär

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    68
    Beiträge
    699
    Das soll gehen? Kann ich nicht glauben. Ich würde Folgendes empfehlen:
    0) Du benötigst nichts von der CD, alles im Internet
    1) WinAVR: http://sourceforge.net/project/showf...group_id=68108 WinAVR-20070525-install.exe (auf CD: 4 Jahre älter!)
    2) Lib: http://sourceforge.net/project/showf...roup_id=155217 AsuroLib 2.7.0 (April 10, 2007) (Wir nehmen nur das Beste!)
    3) Wieso musst Du eine Batch-Datei erstellen?
    Das steht bei mir in C:\ASURO_SRC\AsuroLib\lib\make-lib.bat:
    make clean
    make all
    make install
    4) Du musst asuro.h nicht nach WinAVR kopieren
    5) Verwende Programmer's Notepad (C:\WinAVR\pn\pn.exe)
    6) Siehe ASURO Anleitung (deutsch) ab S. 39 http://www2.produktinfo.conrad.com/d...er_Roboter.pdf
    7) In C:\ASURO_SRC\AsuroLib\examples\FirstTry\Test-all.bat steht:
    make all
    8 ) Als "Projekt" nimmst Du immer test.c in FirstTry (am einfachsten für den Anfang)

  7. #17
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.05.2007
    Alter
    33
    Beiträge
    183
    Sorry, dass ich hier nur Mist baue, ich habe aber das System jetzt glaube ich verstanden. Ich lege im examples ordner in C:\ASURO_SRC\AsuroLib für jedes Projekt einen neuen Ordner an. Darein kommt dann das makefile und die make all und clean Batch dateien. Zum compillieren starte ich diese Batch dateien, da jedes projekt eh einen anderen Ordner hat, lohnt sich das Erstellen von diesen Tools nicht. Jetzt geht es endlich...

    Ich habe die make-lib.bat nicht genommen, weil die libasuro.a doch schon fertig ist. ich muss sie doch nur noch ins winavr verzeichniss bringen. Zugegeben, es ist etwas aufwändig...

    Ich habe jetzt so viel gelesen und in meinem Hirn war ein gewaltiger Knoten aus diesen gelesenen Dingen. Da ich sowas noch nie in der Art gemacht habe (bin borland Delphi gewohnt), ist das alles etwas schwierig zu kapieren. Ich hab diesen Knoten jetzt einigermaßen entfizt und compillieren geht jetzt ohne probleme.

    Danke für deine Geduld, ehenkes.

  8. #18
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    68
    Beiträge
    699
    Stark! Jetzt geht's erst richtig los ...

    Ich habe die make-lib.bat nicht genommen, weil die libasuro.a doch schon fertig ist. ich muss sie doch nur noch ins winavr verzeichniss bringen. Zugegeben, es ist etwas aufwändig...
    lösche mal die libasuro.a in WinAVR und lasse mal make-lib.bat neu ablaufen. Wird das bei dir dann nach WinAVR zu den Libs kopiert und der Header von inc nach lib (ein Verzeichnis zurück)?

    Schau mal in das Makefile. Da sind die entsprechenden Kopieranweisungen:
    Code:
    install:
    	cp $(LIBFILE) $(DIRLIB)/$(LIBFILE)
    	cp inc/$(HEADER) $(DIRINC)/$(HEADER)
    Zur Orientierung:
    Code:
    LIB = asuro
    LIBFILE = lib$(LIB).a
    HEADER = asuro.h
    DIRAVR = C:/WinAVR
    DIRAVRBIN = $(DIRAVR)/bin
    DIRAVRUTILS = $(DIRAVR)/utils/bin
    DIRINC = .
    DIRLIB = $(DIRAVR)/avr/lib
    Also nix manuell machen! Lass das Makefile schaufeln.
    make install führt nur diese beiden Kopieranweisungen durch.
    Zum Verständnis siehe z.B.: http://www.linux-web.de/thread.php?threadid=11065
    http://www.informatik.uni-leipzig.de...ng.dir/V08.pdf

  9. #19
    Erfahrener Benutzer Roboter Genie Avatar von m.a.r.v.i.n
    Registriert seit
    24.07.2005
    Ort
    Berlin
    Beiträge
    1.247
    Hi,

    für die nächste AsuroLib Release dibt es jetzt auch Programmers Notepad Projekte. Damit dürfte für diejenigen, die diesen Editor verwenden, einiges leichter werden. Vorab sind hier schon mal die PN Projektdateien beigefügt. Das ZipFile einfach in das Verzeichnis AsuroLib kopieren, und dort entpacken.
    Es gibt auch eine Programgruppe im Ordner Examples, die alle Beispielprojekte enthält. Die Projekte lassen sich dann einfach mit PN2 öffnen. Wie man eigene Projekte mit PN2 erzeugt, wird im AsuroWiki erklärt.

    @ehenkes: Das kopieren der asuro.h ist in der AsuroLib V2.70RC3 fehlerhaft. Eigentlich sollte die asuro.h ins C:\WinAVR\avr\include Verzeichnis kopiert werden. Im Makefile wird aber ins AsuroLib\lib Verzeichnis kopiert. Der eigentliche Grund für das Kopieren war folgende Überlegung:
    wenn man eine Lib ins AVR/Lib Verzeichnis kopiert, sollte auch die zugehörige Header-Datei dort stehen. Statt
    Code:
    #include "asuro.h"
    kann man dann auch schreiben
    Code:
    #include <asuro.h>
    dieselbe Syntax wie beim verwenden anderer Bibliotheksfunktionen.
    Wie man es macht, ist aber eher eine Geschmacksache.
    Wenn man die Zeile DIRINC im Makefile so ändert, wird auch richtig kopiert.
    Code:
    DIRINC = $(DIRAVR)/avr/include
    Angehängte Dateien Angehängte Dateien

  10. #20
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    13.05.2007
    Alter
    33
    Beiträge
    183
    Zitat Zitat von ehenkes
    Also nix manuell machen! Lass das Makefile schaufeln.
    make install führt nur diese beiden Kopieranweisungen durch.
    Naja, aber ich brauche doch nicht nochmal make clean und make all durchführen. Die libasuro.a muss doch nur noch kopiert werden. Und da reicht es, wenn ich nur Make install durchführe. Und das habe ich doch gemacht, oder? Ich habe nur nochmal eine neue batchdatei angelegt, in der nur make install steht.

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress