- 3D-Druck Einstieg und Tipps         
Seite 4 von 4 ErsteErste ... 234
Ergebnis 31 bis 37 von 37

Thema: myasuro.h ohne Wirkung

  1. #31
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    Anzeige

    E-Bike
    hi m.a.r.v.i.n,

    das sind die einzigen zeilen im makefile die mit CFLAGS anfangen:

    CFLAGS = $(COMMON)
    CFLAGS += -Wall -gdwarf-2 -Os -I./inc
    CFLAGS += -MD -MP -MT $(*F).o -MF dep/$(@F).d
    gruß inka

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

    nicht im Makefile der AsuroLib, sondern im Makefile des Projekts muß man die Änderungen machen.

  3. #33
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    hi marvin,

    so sieht das makefile für das letzte projekt das ich compiliert habe aus:
    Code:
    ###############################################################################
    # Makefile for the project test_lib_2_7
    ###############################################################################
    
    ## General Flags
    PROJECT = test_lib_2_7
    MCU = atmega8
    TARGET = test_lib_2_7.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 += -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
    
    
    ## Include Directories
    INCLUDES = -I"Y:\georg\hobby\roboter\asuro\_asuro_lib\2_7_rc3\AsuroLib\lib\inc" 
    
    ## Objects that must be built in order to link
    OBJECTS = test_lib_2_7.o asuro.o switches.o time.o inka.o leds.o encoder.o globals.o motor_low.o motor.o encoder_low.o print.o uart.o 
    
    ## Objects explicitly added by the user
    LINKONLYOBJECTS = 
    
    ## Build
    all: $(TARGET) test_lib_2_7.hex test_lib_2_7.eep size
    
    ## Compile
    test_lib_2_7.o: ../test_lib_2_7.c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    asuro.o: ../../../_asuro_lib/2_7_rc3/AsuroLib/lib/asuro.c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    switches.o: ../../../_asuro_lib/2_7_rc3/AsuroLib/lib/switches.c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    time.o: ../../../_asuro_lib/2_7_rc3/AsuroLib/lib/time.c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    inka.o: ../../../_asuro_lib/2_7_rc3/AsuroLib/lib/inka.c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    leds.o: ../../../_asuro_lib/2_7_rc3/AsuroLib/lib/leds.c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    encoder.o: ../../../_asuro_lib/2_7_rc3/AsuroLib/lib/encoder.c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    globals.o: ../../../_asuro_lib/2_7_rc3/AsuroLib/lib/globals.c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    motor_low.o: ../../../_asuro_lib/2_7_rc3/AsuroLib/lib/motor_low.c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    motor.o: ../../../_asuro_lib/2_7_rc3/AsuroLib/lib/motor.c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    encoder_low.o: ../../../_asuro_lib/2_7_rc3/AsuroLib/lib/encoder_low.c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    print.o: ../../../_asuro_lib/2_7_rc3/AsuroLib/lib/print.c
    	$(CC) $(INCLUDES) $(CFLAGS) -c  $<
    
    uart.o: ../../../_asuro_lib/2_7_rc3/AsuroLib/lib/uart.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 $< $@
    
    %.lss: $(TARGET)
    	avr-objdump -h -S $< > $@
    
    size: ${TARGET}
    	@echo
    	@avr-size -C --mcu=${MCU} ${TARGET}
    
    ## Clean target
    .PHONY: clean
    clean:
    	-rm -rf $(OBJECTS) test_lib_2_7.elf dep/* test_lib_2_7.hex test_lib_2_7.eep
    
    ## Other dependencies
    -include $(shell mkdir dep 2>/dev/null) $(wildcard dep*)
    /

    da weiss ich aber auch nicht wo ich die änderungen machen sollte
    gruß inka

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

    ok, verstehe. Du hast dir das Makefile vom AVR Studio zusammen basteln lassen. Das wäre eine weitere Möglichkeit. Allerdings wird dann nicht die libasuro.a mit eingebunden, sondern alle Quellfiles einzeln, aber egal.

    Das einzige was mir daran auffällt, sind die Backslashes bei
    Code:
    ## Include Directories
    INCLUDES = -I"Y:\georg\hobby\roboter\asuro\_asuro_lib\2_7_rc3\AsuroLib\lib\inc"
    Vielleicht stolpert der AVR-GCC darüber. Probiers mal mit Slashes.

    Code:
    ## Include Directories
    INCLUDES = -I"Y:/georg/hobby/roboter/asuro/_asuro_lib/2_7_rc3/AsuroLib/lib/inc"
    oder mit relativen Pfadangaben, wie bei den Sourcefiles.
    Code:
    ## Include Directories
    INCLUDES = -I"../../../_asuro_lib/2_7_rc3/AsuroLib/lib/inc"

  5. #35
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    ok, danke erstmal m.a.r.v.i.n,
    werde ich heute abend ausprobieren.
    Aus der o.a. makefile und dem geschriebenem ergeben sich noch folgende fragen:
    - das makefile wird beim anlegen eines jeden neuen projektes von AVR neu erzeugt?
    - wonach? habe ich eine chance dass die änderungen die ich hier machen muss automatisch bei neuen projekten übernommen werden?
    - wie wird da eigentlich die myasuro.h eingebunden? Die asuro.h steht ja in der asuro.c, so kommt die ja wohl rein, aber was passiert bei der myasuro? wird das mit dem includen der verzeichnisse gemacht? Für alle *.h dateien die in dem verzeichnis sind?
    Es ist noch ein ziemlich dichter dschungel für mich
    gruß inka

  6. #36
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    das kompileieren der datei verlief nach dem ändern der backslashes in slashes problemlos, keine fehlermeldungen. Ob nun die myasuro.h berücksichtigt wurde weiss ich nicht. Der ablauf des programmes änderte sich m.e. nach nicht...
    Wie kann ich das überprüfen?
    btw: aus den slashes wurden nach der kompilierung wieder backslashes...
    gruß inka

  7. #37
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    14.04.2007
    Ort
    Einhausen
    Alter
    68
    Beiträge
    699
    Header-Dateien sind das Deklarations-Futter für xxx.c (Sourcecode) oder xxx.lib (statische Bibliotheken). Schau mal in die xxx.c, die myasuro.h benötigen, z.B. asuro.c, encoder.c oder switches.c. Dort wirst Du myasuro.h finden.

    Zunächst sollte man verstehen, wie eine ausführbare binäre Datei aus Sourcecode entsteht. Hierzu verwendet man wahrscheinlich unbewusst drei Werkzeuge:

    Precompiler / Präprozessor
    Compiler
    Linker

    Der Precompiler / Präprozessor durchforstet den Sourcecode, um spezielle Anweisungen auszuführen. Diese Anweisungen beginnen mit #.
    In unserem Beispiel erkennt der Precompiler z.B. #include "asuro.h" und setzt an dieser Stelle den entsprechenden Sourcecode des Headers ein. Auf diese Weise wird der gesamte Sourcecode bearbeitet, also auch alle #define ... ... ersetzt.

    Der resultierende Sourcecode wird dem Compiler übergeben. Dieser erzeugt dann Objektdateien (xxx.o).

    Diese werden vom Linker zusammen mit statischen Bibliotheken in eine lauffähige Programmdatei überführt.

    Bei MS Windows gibt es noch dynamische Bibliotheken (dll), die erst während der Ausführung des Programms - also dynamisch - gebunden werden ( http://www.henkessoft.de/C++/WinAPI/...s%206/api6.htm ).

Seite 4 von 4 ErsteErste ... 234

Berechtigungen

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

Solar Speicher und Akkus Tests