- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 45

Thema: AVR Programmieren unter LINUX

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Hallo Schumi !

    Danke Dir für die Hinweise... für die Hinweise, aber so langsam wird es mir Leid AVR unter Linux zu programmieren... Ich denek ich werde in die "Sommerpause" gehen und dann im Spätherbst-Winter weitermachen.
    Es ist für mich wirklich "Irreführend" das ich gar nicht mehr weiss was ich alles an Paketen installiert habe. Diese libc6-dev habe ich schon installiert. Ich denke mal das da irgendwo ein grundlegender Fehler ist, aber da ich noch nicht mal weiss wie es funktioniert wenn alles richtig ist, kann ich auch nicht sagen was nun noch zu machen ist. Es würde mir auch leid werden hier alle Fehler im Forum zu posten..
    das wäre zuviel verlangt auch für die, die mir gerne helfen möchten...
    Ich bin zum Glück Rentner kannmich auch viel mit dem PC/Linux usw. befassen, aber einmal dreht es sich dann doch im Kopfe ...und summt wie im Bienenkorb... Ja gott sei dank hab ich den Humor noch nicht verloren dabei.
    Ich versuche gerade Xubuntu 14.04 downzuladen...was ich bei meiner schaumgebremsten Onlineverbindung 10km vor Polen hier so als runterladen bezeichnen kann....
    Vielleicht habe ich unter 14.04 mehr Glück.. na mal sehen.
    Auf jedem falle kann ich normale C Programme kompilieren...nur eben AVR ist widerspenstig und das "mannhaft"

    Vielleicht liegt es auch an der Hardware meines PC , aber solange Win7 noch läuft, was ich ja für eben bestimmte Anwendungen brauche, ist es ja noch nicht sooo schlimm...
    Wollen wir sehen was wird..ich kämpfe mal noch ein wenig weiter...

    Gruss und Dank Gerhard

    PS. Die MCU-Liste hab ich gefunden und ausgedruckt für mich(PDF und Papier) aber nicht wie Du vorgeschlagen hast:
    gerhard@w340-ubuntu:~$ avr-gcc -mcu=?
    avr-gcc: no input files
    Nachtrag: Habe noch was gefunden als Anleitung : für Toolchains und Eclipse, ich denke das ich damit weiterkommen werde...aber kommende Woche oder später..ich muss mal pausieren !
    Geändert von oderlachs (09.05.2014 um 13:51 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    37
    Beiträge
    1.225
    Hallo Gerhard,

    ich glaube du machst dir das ganze selbst (unnötig) schwer. Eigentlich ist der avr-gcc unter Linux/Ubuntu/Debian in Windeseile installiert:
    apt-get install gcc-avr avr-libc make avrdude

    Ich persönlich arbeite mit Eclipse, dazu wird die C/C++-"Geschmacksrichtung" (CDT) + die Erweiterung AVR-Eclipse benötigt. Damit läuft eigentlich alles automatisch ...

    Nachtrag: Du bekommst die Liste der unterstützten AVRs (zusammen mit einem Haufen weiterer Informationen) mit
    Code:
    avr-gcc --target-help -mlist-devices
    mfG
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Danke Markus...
    für heut ist mein Bedarf an Linux und AVR erst mal gedeckt... auf Ubuntu 14.04 geupdatet...nix alles runter und wieder xubuntu 12.04 drauf... und das bleibt erst mal so werde das nun langsam angehen...Bis 2017 werde ich zeit haben..solange soll Win7 gehen..nur hätt ich das in Linux doch schon gern früher kapiert und bewerkstelligt...

    Gruss und Dank Gerhard

    Nachtrag : Heute(13.05.14) habe ich es endlich geschafft, nach gut 8 Stunden probieren und Webrecherchen erst einmal unter Windows AVR mittels eclipse zu Programmieren, d.h. das Kompilieren ist mir erst mal gelungen..
    Ja man muss schon fast ein Hellseher sein um zu wissen was man machen muss , bzw. was man falsch macht...oder denkt das es richtig ist...aber nur denkt.

    In der nächsten Zeit werde ich das ganze mal auf Linux angehen, hoffe das dies dann auch klappt
    Geändert von oderlachs (13.05.2014 um 20:26 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    26.08.2014
    Beiträge
    10
    Moin zusammen,

    es ist ja jetzt ein paar Tage her seit dem letzten Post. Ich wollte mal Fragen ob das Problem AVR auf Linux zu programmieren gelöst wurde. Wenn ja kann mir einer ein How-To dafür geben wie ich das auch hin bekomme. Ich versuche mich seit ein paar Tagen durch Webrecherche das hinzubekommen und es klappt einfach nicht. Bin schon ein wenig am Verzweifeln...

    Besten Gruß zusammen

  5. #5
    Erfahrener Benutzer Roboter-Spezialist Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    48
    Beiträge
    456
    Ähm ... ich programmiere die AVRs immer unter Linux ....

    Ich installiere avr-gcc, make, meinen Editor (vim oder geany) und zum schubsen des Programmes auf den AVR den avrdude.

    Das wars ...

    Code:
    cat ../usbstepper/firmware/Makefile 
    CC=avr-g++
    RM=rm -f
    OBJCOPY=avr-objcopy
    AVRDUDE=sudo avrdude -p m168 -c avrispmkii -P USB
    AVRSIZE=avr-size
    
    OBJDUMP=avr-objdump
    
    MCU=atmega168p
    F_CPU=16000000
    
    CFLAGS=-g -DF_CPU=$(F_CPU) -Wall -Os --std=c++11 -mcall-prologues
    
    OBJ = main.o rs232.o parser.o timer1.o io.o
    
    BIN = usbstepper.bin
    HEX = usbstepper.hex
    MAP = usbstepper.map
    
    .phony: all
    
    all: $(OBJ)
            $(RM) $(HEX) $(BIN) $(MAP)
            $(CC) -mmcu=$(MCU) $(CFLAGS) -o $(BIN) -Wl,-Map,$(MAP) $(OBJ)
            $(OBJCOPY) -R .eeprom -O ihex $(BIN) $(HEX)
    
    %.o: %.cpp
            $(CC) -mmcu=$(MCU) $(CFLAGS) -c $<
    
    clean:
            $(RM) $(OBJ) $(BIN) $(HEX) $(MAP)
    
    flash: $(OBJ)
            $(AVRDUDE) -e -U flash:w:$(HEX)
    
    readfuse:
            $(AVRDUDE) lfuse:r:-:i -v
    
    writefuse:
            $(AVRDUDE) -U lfuse:w:0xde:m -U hfuse:w:0xdf:m -U efuse:w:0x01:m
    
    size:   $(BIN)
            $(AVRSIZE) -B $(BIN)
    
    dump:
            $(OBJDUMP) -d --demangle $(BIN)

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    26.08.2014
    Beiträge
    10
    Vielen Dank für die schnelle Antwort erstmal. Aber...

    Ich habe bis jetzt immer nur unter Windows mit AVR Studio programmiert. Da ich aber zu Hause auf Linux umgestiegen bin versuche ich mich jetzt im Moment daran das ganze unter Linux laufen zu lassen damit ich nicht immer mit VMs arbeiten muss. AVRDUDE und die Pakete habe ich auch schon alle installiert aber irgendwie fehlt mir noch der letzte Kniff und das Wissen es richtig zu machen... Zum Beispiel konnte ich unter AVRStudio ganz einfach eine externe Makefile nutzen die zum Beispiel wie folgt aussieht:

    Code:
    CONTIKI = /home/benutzerxy/contiki-2.7/
    
    all: Micaz
    
    PROJECT_SOURCEFILES += ordner1/datei1.c ordner2/datei2.c
    
    include $(CONTIKI)/Makefile.include
    Jetzt ist eine Frage wie muss ich das dann unter Linux machen. Du hast ja schon eben ein Code-Schnipsel gepostet. Kannst du mir den vielleicht noch erklären? Und wie bekomme ich mehrere Ordner mit in das Projekt, dass ich quasi wie bei der Makefile aus AVRStudio das machen kann. Kann mir da jemand helfen?
    Besten Dank und beste Grüße,

    Falte

  7. #7
    Erfahrener Benutzer Roboter-Spezialist Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    48
    Beiträge
    456
    Zitat Zitat von Falte Beitrag anzeigen
    Jetzt ist eine Frage wie muss ich das dann unter Linux machen. Du hast ja schon eben ein Code-Schnipsel gepostet. Kannst du mir den vielleicht noch erklären? Und wie bekomme ich mehrere Ordner mit in das Projekt, dass ich quasi wie bei der Makefile aus AVRStudio das machen kann. Kann mir da jemand helfen?
    Besten Dank und beste Grüße,

    Falte
    Das ist nicht nur ein Codeschnipsel .. das ist das komplette Makefile für mein Projekt usbstepper.



    Hier mal eine Erklärung:

    ----- Festlegung der Befehle. avrgcc und der flags
    CC=avr-g++
    RM=rm -f
    OBJCOPY=avr-objcopy
    AVRDUDE=sudo avrdude -p m168 -c avrispmkii -P USB
    AVRSIZE=avr-size

    OBJDUMP=avr-objdump

    ----- meine MCU
    MCU=atmega168p
    F_CPU=16000000

    --- die CFlags stellen die Compileroptionen dar, hier setze ich eben die Defines für F_CPU und Compileroptionen
    CFLAGS=-g -DF_CPU=$(F_CPU) -Wall -Os --std=c++11 -mcall-prologues

    --- Hier werden die Objekte welche übersetzt werden müssen angegeben. *.o anstatt *.cpp. Wenn du eine Datei in einem Ordner hast einfach "lib/dasding.o". Ganze Biblitheken kann man natürlich auch einbinden. Siehe Makefile Tutoriol unter Google.

    OBJ = main.o rs232.o parser.o timer1.o io.o

    ---- Hier lege ich die Zieldateien fest
    BIN = usbstepper.bin
    HEX = usbstepper.hex
    MAP = usbstepper.map

    --- Hier wird festgelegt dass bei nur "make" eben "make all" gemacht werden soll
    .phony: all

    -- Das hauptziel: Erstellen der firmware. all hängt von den OBJ (siehe oben) ab
    --- Ich lösche die Zieldateien
    --- Und Kompiliere das elf file das ich unter BIN angegeben habe
    --- und erzeuge das hex file für den avrdude

    all: $(OBJ)
    $(RM) $(HEX) $(BIN) $(MAP)
    $(CC) -mmcu=$(MCU) $(CFLAGS) -o $(BIN) -Wl,-Map,$(MAP) $(OBJ)
    $(OBJCOPY) -R .eeprom -O ihex $(BIN) $(HEX)

    --- diese Regel sagt, dass für alle *.o in OBJ eine passende *.cpp datei übersetzt werden soll
    %.o: %.cpp
    $(CC) -mmcu=$(MCU) $(CFLAGS) -c $<

    --- clean = alles löschen ws der Kompiler erzeugt hat
    clean:
    $(RM) $(OBJ) $(BIN) $(HEX) $(MAP)

    --- flash: hängt auch von den OBJ sachen ab und schubst anschliessend das Hex file auf den AVR
    flash: $(OBJ)
    $(AVRDUDE) -e -U flash:w:$(HEX)

    --- hier kann ich ich die Fuses auslesen zur Kontrolle
    readfuse:
    $(AVRDUDE) lfuse:r:-:i -v

    --- hier kann ich meine Fuses setzen. In diesem Fall lfuse= 0xde / hfuse = 0xdf / efuse = 0x01 für externen Quarz und > 8 MHz. Siehe fuse calculatur bei google
    writefuse:
    $(AVRDUDE) -U lfuse:w:0xde:m -U hfuse:w:0xdf:m -U efuse:w:0x01:m

    --- hier kann ich die Größe auf dem Ziel ausgeben lassen.
    size: $(BIN)
    $(AVRSIZE) -B $(BIN)

    --- hier kann ich das elf file dumpen lassen und sehen welche funktionen wieviel Speicher brauchen
    dump:
    $(OBJDUMP) -d --demangle $(BIN)




    Das ganze nutzt man dann so:

    Code:
    georg@machariel ~/Dokumente/Entwicklung/upstream/Elektro/Projekte/usbstepper/firmware $ ls
    Makefile  atmega168p.h  fifo.h  io.cpp  io.h  main.cpp  motion.h  parser.cpp  parser.h  rs232.cpp  rs232.h  stepper.h  timer1.cpp  timer1.h  units.h
    georg@machariel ~/Dokumente/Entwicklung/upstream/Elektro/Projekte/usbstepper/firmware $ make 
    avr-g++ -mmcu=atmega168p -g -DF_CPU=16000000 -Wall -Os --std=c++11 -mcall-prologues  -c main.cpp
    avr-g++ -mmcu=atmega168p -g -DF_CPU=16000000 -Wall -Os --std=c++11 -mcall-prologues  -c rs232.cpp
    avr-g++ -mmcu=atmega168p -g -DF_CPU=16000000 -Wall -Os --std=c++11 -mcall-prologues  -c parser.cpp
    avr-g++ -mmcu=atmega168p -g -DF_CPU=16000000 -Wall -Os --std=c++11 -mcall-prologues  -c timer1.cpp
    avr-g++ -mmcu=atmega168p -g -DF_CPU=16000000 -Wall -Os --std=c++11 -mcall-prologues  -c io.cpp
    rm -f usbstepper.hex usbstepper.bin usbstepper.map
    avr-g++ -mmcu=atmega168p -g -DF_CPU=16000000 -Wall -Os --std=c++11 -mcall-prologues -o usbstepper.bin -Wl,-Map,usbstepper.map main.o rs232.o parser.o timer1.o io.o
    avr-objcopy -R .eeprom -O ihex usbstepper.bin usbstepper.hex
    georg@machariel ~/Dokumente/Entwicklung/upstream/Elektro/Projekte/usbstepper/firmware $ ls
    Makefile      fifo.h  io.h  main.cpp  motion.h    parser.h  rs232.cpp  rs232.o    timer1.cpp  timer1.o  usbstepper.bin  usbstepper.map
    atmega168p.h  io.cpp  io.o  main.o    parser.cpp  parser.o  rs232.h    stepper.h  timer1.h    units.h   usbstepper.hex
    georg@machariel ~/Dokumente/Entwicklung/upstream/Elektro/Projekte/usbstepper/firmware $ make flash
    sudo avrdude -p m168 -c avrispmkii -P USB -e -U flash:w:usbstepper.hex
    Passwort: 
    
    avrdude: stk500v2_command(): command failed
    avrdude: stk500v2_program_enable(): bad AVRISPmkII connection status: Unknown status 0x00
    avrdude: initialization failed, rc=-1
             Double check connections and try again, or use -F to override
             this check.
    
    
    avrdude done.  Thank you.
    
    make: *** [flash] Fehler 1
    georg@machariel ~/Dokumente/Entwicklung/upstream/Elektro/Projekte/usbstepper/firmware $ make size
    avr-size -B usbstepper.bin
       text    data     bss     dec     hex filename
       7626     308     370    8304    2070 usbstepper.bin
    georg@machariel ~/Dokumente/Entwicklung/upstream/Elektro/Projekte/usbstepper/firmware $
    Hier habe ich nur am avrispmkii keinen atmega168 dran....

    Wie ich die Dateien erstelle mit welchem Editor ist doch völlig egal.... Ein Makefile funktioniert immer, unabhängig davon welche "IDE" oder Editor ich einsetze.

    Viel mehr als hier [1] beschrieben mache ich nicht ...

    Wichtig bei makefiles ist, dass nur die Ziele wie "all" ganz vorne stehen bzw die Variablenzuweisungen weiter oben.

    Code:
    dump:
    -->Tab zum einrücken"        "$(OBJDDUMP)....
    [1] http://www.ijon.de/comp/tutorials/makefile.html

    Gruß
    Georg

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    20.08.2008
    Ort
    Karlsruhe
    Alter
    37
    Beiträge
    1.225
    Zitat Zitat von Falte Beitrag anzeigen
    Ich wollte mal Fragen ob das Problem AVR auf Linux zu programmieren gelöst wurde.
    Es gab und gibt keine Probleme mit der AVR-Programmierung unter Linux. Und es gibt eigentlich gute Anleitungen, unter anderem bei den ubuntuusers. Die Einrichtung von avr-eclipse mag vielleicht nicht trivial sein, aber auch keine unüberwindbare Hürde. Und man braucht weder Eclipse noch avr-eclipse um AVRs unter Linux zu programmieren.

    mfG
    Markus
    Tiny ASURO Library: Thread und sf.net Seite

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    74
    Beiträge
    1.175
    Blog-Einträge
    1
    Hallo Falte !

    heute habe ich erst mal wieder einen "Schock" unter Linux hinter mir.. Na ja ich bin komplett auf Ubuntu 14.04 umgestiegen...aber viel Insiderwissen fehlt noch...es macht sich langsam...Auch konnte ich meine Anleitungen die ich immer kopiert hatte nicht alle Retten.. CodeBlocks habe ich installiert...verzweifle am AVR Teil ebenso bei Eclipse...aber jetzt noch nicht probiert, da neuer Rechner dafür ins Hauskam..
    Ich krame grad noch beim Thema Arduino umher, was ich auch nebenbei nutze.
    Ich muss auch noch rausbekommen kann wie ich mein STK500 unter Linux nutzen kann..

    Gruss
    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

Ähnliche Themen

  1. [AVR-gcc] Installation unter Linux
    Von Bääääär im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 13.05.2008, 10:16
  2. avr-gcc unter linux
    Von donni im Forum C - Programmierung (GCC u.a.)
    Antworten: 16
    Letzter Beitrag: 06.04.2006, 21:57
  3. AVR unter Linux programmieren?
    Von jagdfalke im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 12
    Letzter Beitrag: 20.03.2006, 20:48
  4. Bascom-AVR unter Linux?
    Von raptor_79 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 17.01.2006, 11:17
  5. gcc-avr unter Linux
    Von bluebrother im Forum C - Programmierung (GCC u.a.)
    Antworten: 2
    Letzter Beitrag: 03.01.2005, 21:54

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress