- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 8 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 77

Thema: Asuro lib einbinden

  1. #11
    Neuer Benutzer Öfters hier
    Registriert seit
    28.07.2007
    Beiträge
    26
    Anzeige

    E-Bike
    also ich soll mit den studio mein programm schreiben und da auch compilieren??? geht das???

  2. #12
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    69
    Beiträge
    699
    ... nicht nur das Compilieren geht dort, sondern sogar das Linken!

  3. #13
    Neuer Benutzer Öfters hier
    Registriert seit
    28.07.2007
    Beiträge
    26
    woher bekommt man den die avrgccplugin.exe???

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    69
    Beiträge
    699
    Das ist im AVR Studio bereits integriert. Also einfach AVR Studio Version 4.13 kostenlos bei Atmel downloaden und installieren. Neues Projekt eröffnen, Pfade zu includes und libs einstellen, Compiler-/Linker-Flags setzen (z.B. -Os) und loslegen.

    Integration of avr-gcc and Make in AVR Studio

    Start the compiler, clean the project, set project options and debug the project from AVR Studio.
    Tools from the WinAVR distribution are detected by the plug-in.
    AvrPluginavrgccplugin.dll
    avrgccplugin.xml
    avrgccpluginhelp.chm
    im Pfad C:\Programme\Atmel\AVR Tools

  5. #15
    Neuer Benutzer Öfters hier
    Registriert seit
    28.07.2007
    Beiträge
    26
    also ich habe jetzt einfach mal unter den Projektoptionen unter include directories

    AsuroLib-v270rc3\lib

    hinzugefügt

    und dann die libraries libsauro.a... hinzugefügt.

    war es das schon, was man machen muss. wenn ich nämlich auf compilieren drücke, dann erstellt er mir einen hex file.

    er sagt zwar:

    Build succeeded with 7 Warnings...

    aber es wird keine hex datei erstellt

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    69
    Beiträge
    699
    also ich habe jetzt einfach mal unter den Projektoptionen unter include directories AsuroLib-v270rc3\lib hinzugefügt
    Na immerhin, Du kommst voran und siehst, dass man mit AVR Studio arbeiten kann. Jetzt musst Du noch die Pfade für Header und Bibliotheken korrekt einbinden.

    Bitte nicht include (inc) und library (lib) verwechseln. Im einen sind die Header, also z.B. asuro.h, und im anderen die (statischen) Bibliotheken, also z.B. libasuro.a.

    Bei mir (Pfade bei Dir anpassen):
    Header: C:\ASURO_SRC\AsuroLib\lib\inc bzw. C:\WinAVR\avr\include
    Bibliothek: C:\ASURO_SRC\AsuroLib\lib bzw. C:\WinAVR\avr\lib

    Ganz wichtig ist es noch, die asuro.c im AVR Studio unter AVR GCC bei den "Source Files" hinzuzufügen, da diese Datei in der libasuro.a nicht mit dabei ist, damit man in asuro.c im Projekt Änderungen durchführen kann.

    Du musst also immer genau zwischen drei Typen unterscheiden:
    1) Header-Dateien (Header)
    2) Bibliotheken (Libraries)
    3) Source Files (Implementations-Dateien, Sources)

    Bei mir werden z.B. im Zielverzeichnis C:\ASURO_SRC\Projekte\ASURO_001\default die beiden Objekt-Dateien asuro.o und asuro_001.o mit der (statischen) Bibliothek libasuro.a zu der im ATmega8L lauffähigen Binärdatei asuro_001.hex gelinkt (=zusammen gebunden).

    Das schaffst Du auch!

    Testprogramm:
    Code:
    #include "asuro.h"
    
    int main()
    {
      Init();
    
      int i=0;
      for (i=0;i<100;++i)
      {
        BackLED (OFF, ON);
        Msleep(200);
        BackLED (ON, OFF);
        Msleep(200);
      }
      BackLED (OFF, OFF);
     
      while (1); //ansonsten endlos
      return 0; //wird nicht erreicht
    }
    Output: asuro_001.hex mit 3965 Bytes.

    Jetzt musst Du nur noch auf die Compiler Flags achten, die muss man beim AVR Studio manuell hinzufügen.

    Vergleich zweier MakeFiles in diesem Bereich:

    Beispiel FirstTry:

    OPT = s
    CFLAGS = -g -O$(OPT) -I../../lib/inc\
    -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums \
    -Wall -Wstrict-prototypes \
    -Wa,-ahlms=$(<:.c=.lst)

    Beispiel ASURO_001:

    COMMON = -mmcu=$(MCU)
    ## Compile options common for all C compilation units.
    CFLAGS = $(COMMON)
    CFLAGS += -Wall -gdwarf-2 -DF_CPU=8000000UL -Os -fsigned-char
    CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d

    Besonders wichtig ist die Optimierung -Os

  7. #17
    Neuer Benutzer Öfters hier
    Registriert seit
    28.07.2007
    Beiträge
    26
    ich habe die libs und die incs hinnzugefügt. wo kann ich die source files hinzufügen???

    mein Programm sieht bis jetzt so aus:
    Code:
    #include "asuro.h" 
    
    
     void Sleep3ms(short b);
    int main(void)
    {
    	Init();
    	while(1){
    	 if(PollSwitch()!=0) { 
    		 SerPrint("Achtung\n");
    		 if(PollSwitch()>7){//links
    			SetMotorPower (0,0);
    			 Sleep3MS(50);
    			SetMotorPower (0,-100);
    			 Sleep3MS(200);
    			SetMotorPower (100,100);
    		}
    		else{//rechts 
    			SetMotorPower (0,0);
    			 Sleep3MS(50);
    			SetMotorPower (-100,0);
    			 Sleep3MS(200);
    			SetMotorPower (100,100);
    			
    		}
    	 }
    	 else{
    		 SetMotorPower (100,100);
    		 Sleep3MS(30);
    		 
    		 
    	 }
    	}
    }
    
     void Sleep3MS(short b){
     short t;
    	for(t=0;t<=b;t++){
    		Sleep(216);
    	}
    }
    wenn ich es compiliere bringt er mir einige fehler:

    Code:
    ../TestProjekt.c:10: warning: pointer targets in passing argument 1 of 'SerPrint' differ in signedness
    ../TestProjekt.c:13: warning: implicit declaration of function 'Sleep3MS'
    ../TestProjekt.c:36: warning: conflicting types for 'Sleep3MS'
    ../TestProjekt.c:13: warning: previous implicit declaration of 'Sleep3MS' was here
    am schluss wird aber ausgegeben, dass die compilierung erflogreich war:
    Build succeeded with 4 Warnings...

    aber ein hex-file wird nicht erstellt.

    in deinem beispielprogramm gibt er keine fehler aus, aber erstellt auch da keinen hex-file

  8. #18
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    69
    Beiträge
    699
    ich habe die libs und die incs hinzugefügt
    Na, super!
    wo kann ich die source files hinzufügen?
    OK, das geht an einer anderen Stelle, nämlich in der Projektübersicht, in der die beteiligten Files angezeigt werden.
    Das findest Du im Menü bei View - Toolbars - AVR GCC !
    Danach klickst Du auf den Stierkopf , dann Rechtsklick auf das Ordnersymbol "Source Files" und "Add Existing Source File(s)". Da gibst Du asuro.c und Deine sonstigen Source-Files (aber nicht die, die bereits in libasuro.a verarbeitet sind! Siehe unten.) hinzu, die Du benötigst. Probiere bitte alles aus, was dieses Menü "View - Toolbars" enthält, damit Du Dich da auskennst. Die hex-Datei landete dann im Projekt-Ordner unter default (Pfad kannst Du unter General bei Output File Directory ändern).

    Files in libasuro.a, Auszug aus entsprechendem MakeFile:
    Code:
    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
    Diese Source-Files (im MakeFile sind für den Linker die Object-Files aufgeführt, die der Compiler vor dem Linken aus den Sources xxx.c erzeugt hat) müssen nicht mehr in den Ordner "Source File(s)" hinzu, sonst füllt man den Flash-Speicher völlig sinnlos voll!

  9. #19
    Neuer Benutzer Öfters hier
    Registriert seit
    28.07.2007
    Beiträge
    26
    also ich denke mal, dass du mit dem asuro.c file den asuro file unter

    C:\...\Asuro lib\AsuroLib-v270rc3\lib

    meinst.

    den habe ich hinzugefügt, so dass unter "Source Files" nun
    001.c
    asuro.c
    und
    TestProjekt.c
    aufgelistet ist.

    unter External Dependencies ist zu finden:

    asuro.h
    interrupt.h
    inttypes.h
    io.h
    iom8.h
    libasuro.a
    libasuro.a
    libc.a
    libm.a
    libprintf_flt.a
    ...
    und noch ein paar andere h dateien mit unidentifizierbarem namen

    der outputFileName ist program.hex in directory default.

    auch ein häckchen ist bei Create Hex File gesetzt.



    im Makefile unter dafault dteht nun:

    Code:
    ###############################################################################
    # Makefile for the project TestProjekt
    ###############################################################################
    
    ## General Flags
    PROJECT = TestProjekt
    MCU = atmega8
    TARGET = program.hex
    CC = avr-gcc.exe
    
    ## 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 -fsigned-char
    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 += 
    
    
    ## 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 --no-change-warnings
    
    
    ## Include Directories
    INCLUDES = -I"C:\Users\michael\Asuro\Workspace\eigener test\TestProjekt\..\..\..\Asuro lib\AsuroLib-v270rc3\lib\inc" -I"C:\Users\michael\Asuro\Workspace\eigener test\TestProjekt\..\..\..\..\..\..\WinAVR\avr\include" 
    
    ## Library Directories
    LIBDIRS = -L"C:\Users\michael\Asuro\Asuro lib\AsuroLib-v270rc3\lib" -L"C:\WinAVR\avr\lib" 
    
    ## Libraries
    LIBS = -lasuro -lc -lm -lprintf_flt -lprintf_min -lscanf_flt -lscanf_min -lasuro -lc -lm -lprintf_flt -lprintf_min -lscanf_flt -lscanf_min -lasuro -lasuro -lc -lm -lprintf_flt -lprintf_min -lscanf_flt -lscanf_min 
    
    ## Objects that must be built in order to link
    OBJECTS = TestProjekt.o 001.o asuro.o 
    
    ## Objects explicitly added by the user
    LINKONLYOBJECTS = "crt86401.o" "crtc8534.o" "crts1200.o" "crts2313.o" "crts2323.o" "crts2333.o" "crts2343.o" "crts4414.o" "crts4433.o" "crts4434.o" "crts8515.o" "crts8535.o" "crttn11.o" "crttn12.o" "crttn13.o" "crttn15.o" "crttn22.o" "crttn2313.o" "crttn24.o" "crttn25.o" "crttn26.o" "crttn261.o" "crttn28.o" "crttn44.o" "crttn45.o" "crttn461.o" "crttn84.o" "crttn85.o" "crttn861.o" "crt86401.o" "crtc8534.o" "crts1200.o" "crts2313.o" "crts2323.o" "crts2333.o" "crts2343.o" "crts4414.o" "crts4433.o" "crts4434.o" "crts8515.o" "crts8535.o" "crttn11.o" "crttn12.o" "crttn13.o" "crttn15.o" "crttn22.o" "crttn2313.o" "crttn24.o" "crttn25.o" "crttn26.o" "crttn261.o" "crttn28.o" "crttn44.o" "crttn45.o" "crttn461.o" "crttn84.o" "crttn85.o" "crttn861.o" 
    
    ## Build
    all: $(TARGET) program.hex program.eep size
    
    ## Compile
    TestProjekt.o: ../TestProjekt.c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    001.o: ../001.c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    asuro.o: ../../../../Asuro lib/AsuroLib-v270rc3/lib/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) program.hex dep/* program.hex program.eep
    
    ## Other dependencies
    -include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)



    aber eine hex wird immer noch nicht erzeugt. auch die warnungen erscheinen bei meinem testprogramm immer noch.

    habe ich irgend etwas vergessen???

  10. #20
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    69
    Beiträge
    699
    Vergessen - das erscheint mir etwas überfüllt. Ich zeige Dir mal mein MakeFile des AVR Studio für das ASURO-Projekt:
    Code:
    ###############################################################################
    # Makefile for the project ASURO_001
    ###############################################################################
    
    ## General Flags
    PROJECT = ASURO_001
    MCU = atmega8
    TARGET = ASURO_001.elf
    CC = avr-gcc.exe
    
    ## 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       -DF_CPU=8000000UL -Os -fsigned-char
    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=ASURO_001.map
    
    
    ## 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 --no-change-warnings
    
    
    ## Include Directories
    INCLUDES = -I"C:\ASURO_SRC\Projekte\ASURO_001\..\..\AsuroLib\lib\inc" 
    
    ## Libraries
    LIBS = -lasuro 
    
    ## Objects that must be built in order to link
    OBJECTS = ASURO_001.o asuro.o 
    
    ## Objects explicitly added by the user
    LINKONLYOBJECTS = 
    
    ## Build
    all: $(TARGET) ASURO_001.hex ASURO_001.eep ASURO_001.lss size
    
    ## Compile
    ASURO_001.o: ../ASURO_001.c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    asuro.o: ../../../AsuroLib/lib/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) ASURO_001.elf dep/* ASURO_001.hex ASURO_001.eep ASURO_001.lss ASURO_001.map
    
    
    ## Other dependencies
    -include $(shell mkdir dep 2>/dev/null) $(wildcard dep/*)
    z.B.:
    ## Libraries
    LIBS = -lasuro

    ... und dann diese ganzen Objektdateien "crt86401.o" "crtc8534.o" ....

    Du linkst ja Deinen ganzen Computer in den winzigen ASURO.
    Das Programm ist wahrscheinlich so groß, dass es nicht in den ATmega8 passt. Abrüsten ist bei Dir angesagt!

    Sieh das ganze positiv! Du liest MakeFiles (können die wenigsten) und arbeitest bereits mit dem Atmel AVR Studio. Jetzt musst Du nur noch die Fehlermeldungen verstehen lernen. Wirf mal den ganzen Müll raus.

Seite 2 von 8 ErsteErste 1234 ... LetzteLetzte

Berechtigungen

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

12V Akku bauen