-         

+ Antworten
Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 38

Thema: Linux-AVR Programmierung

  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1

    Linux-AVR Programmierung

    Anzeige

    Wer kann mir ein gutes, einfaches Programm für AVR Programmierung unter Linux empfehlen ?. Ich arbeite mit Ubuntu, habe Eclipse mit AVR Plugin, aber damit komme ich nicht zurecht, vieleicht ist es auch noch nicht richtig konfiguriert, oder unvollständig, weiss nicht.
    Auch sollten üblich Programmer oder gar das STK 500 unterstützt werden.
    Ich habe ein Handbuch für Eclipse, aber da ist nix dergleichen drinnen beschrieben. Im Web ist alles fast ausschliesslich in englisch dafür gehalten, aber mein bis'l "Fachenglisch" reicht dazu nicht aus..

    Danke schon mal

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

  2. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    23
    Beiträge
    449
    Ich arbeite am liebsten mit einem Makefile und einem Editor. Habe auch an einem Wiki-Artikel mitgewirkt, in dem das genau erklärt wird: http://wiki.ubuntuusers.de/avr

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    Danke Schumi, werds mir duchlesen...nur habe ich das mit dem Makefile noch nicht so recht kapiert ..

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

  4. #4
    Erfahrener Benutzer Begeisterter Techniker Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    41
    Beiträge
    398
    Hallo Gerhard,

    ich mach das eigentlich nur unter Linux mit dem folgenden Makefile:

    Code:
    CC=avr-gcc
    RM=rm -f
    OBJCOPY=avr-objcopy
    AVRDUDE=sudo avrdude -p m168 -c avrispmkii -P USB -e -U flash:w:
    AVRSIZE=avr-size
    
    MCU=atmega168p
    F_CPU=16000000
    
    CFLAGS=-g -DF_CPU=$(F_CPU) -Wall -Os -mcall-prologues
    
    OBJ = main.o rc5.o
    
    BIN = ir.bin
    HEX = ir.hex
    MAP = ir.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: %.c
    	$(CC) -mmcu=$(MCU) $(CFLAGS) -c $<
     
    clean:
    	$(RM) $(OBJ) $(BIN) $(HEX) $(MAP)
    
    flash: $(OBJ)
    	$(AVRDUDE)$(HEX)	
    
    size:	$(BIN)
    	$(AVRSIZE) -C --mcu=$(MCU) $(BIN)
    In dem Fall handelt es sich eben um einen Atmega168p/16MHz welcher mit avrdude und einem AvrISPmkII programmiert wird. Die Quelldateien sind main.c und rc5.c

    ir.hex/ir.map/ir.bin sind die Übersetzten Dateien. Das Hexfile wird aus der bin Datei extrahiert.

    Oben ist die Konfiguration, welche relativ einfach angepasst werden kann.

    mit
    Code:
    make clean all flash
    wird alles bereinigt, übersetzt und anschliessend auf den Zielprozessor geflasht.

    Mit
    Code:
    make size
    kannst du dir den SPeicherverbrauch auf dem Ziel anzeigen lassen. Flash und Ram.

    Bei Fragen, einfach fragen

    Gruß
    Georg
    Geändert von schorsch_76 (17.09.2013 um 15:09 Uhr)

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    Hallo Georg !
    ich möchte Dir herzlichst danken für die Mühen, die Du Dir für meine Frage gemacht hast. Mir ist das Arbeiten auf Konsolenebene nicht unangenehm, nur das ich darin in Sachen AVR-Programmierung überhaupt keine Erfahrungen habe. ich gebe zu meine grössten Schwäche ist die Unkenntnis der englischen Sprache, aber in meinem Alter und nur für s Hobby möchte ich nicht noch eine Abendschule besuchen...
    Ich werde mich mal mit der Materie befassen und wenn Fragen sind , wie Du schon erwähnt hast frage ich nochmals nach.

    Danke + Gruss
    Gerhard

    Das wird mein Problem werden, weil ich den Programmer nicht besitze:
    AVRDUDE=sudo avrdude -p m168 -c avrispmkii -P USB -e -U flash:w:
    Geändert von oderlachs (17.09.2013 um 15:24 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  6. #6
    Erfahrener Benutzer Begeisterter Techniker Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    41
    Beiträge
    398
    Welchen Programmer hast du denn? Avrdude kann praktisch alle ansprechen.

  7. #7
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    Nun hast Du mir aber in die Enge getrieben Ich habe ne ganze Menge, weil ich (anfangs) zu dumm war(bin) den Richtigen gleich zu kaufen

    Die Nummer 1 ist eigendlich das STK500 Board, dann habe ich noch den "USB ASP", den USB ISP 500 von Olimex, den USBTinyISP, einen für den Parallelport(STK200kompatible) und einen Äquivalent zum Atmel ISP Programmer...aber besten komme ich mit dem STK500 aus, den die anderen werden nicht von jeder Software (AVR-Studio, Bascom, Arduino-IDE) unterstützt.

    Der "AVR-ISP" hier zu sehen hier der von Olimex
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  8. #8
    Erfahrener Benutzer Begeisterter Techniker Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    41
    Beiträge
    398
    Für deinen STK500 lautet dann die Zeile:

    Code:
    AVRDUDE=sudo avrdude -p m168 -c stk500 -P /dev/ttyS0 -e -U flash:w:
    Eventuell muss noch der /dev/ttyS0 Part angepasst werden. Jenachdem was für eine serielle Schnittstelle du hast. FTDI basierte Adapter haben oft /dev/ttyUSBS0 Das siehst du aber wenn du den Adapter einsteckts und direkt danach auf der Konsole
    Code:
    dmesg | tail
    eingibst.

    Gruß
    Georg

    Edit: Soweit ich weis ist der von Olimex zum AvrispmkII kompatibel ... bin mir aber nicht sicher. Der Attiny basierte Programmer geht auch. Mit
    Code:
    man avrdude
    kannst du die alle Kommandozeilen Optioen erklären lassen. Gibt auch eine Option welche alle unterstützen Programmer anzeigt.

  9. #9
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    67
    Beiträge
    1.118
    Blog-Einträge
    1
    Ja danke vielmals Georg !!!
    Ich werde mal probieren. Gibt es zwingend ein VZ wo ich die Quellcode ablegen muss oder kann ich da in meinem HOME VZ einfach einen Ordner für die Quellcode anlegen ?
    Na ja ich muss ja nicht gleich heute und morgen alles verstanden haben, bzw. auch vollbracht haben. Durch Fehler und probieren lernt man ja noch dabei was..

    Gruss Gerhard
    wenn ich den USB-ISP anstecke sagt mir dmesg | tail :
    gerhard@ubuntu12:~$ dmesg | tail
    [ 816.754627] type=1400 audit(1379425330.586:26): apparmor="DENIED" operation="capable" parent=1 profile="/usr/sbin/cupsd" pid=535 comm="cupsd" pid=535 comm="cupsd" capability=36 capname="block_suspend"
    [ 3061.168030] USB 8-1: new full-speed USB device number 2 using uhci_hcd
    [ 3061.347067] USB 8-1: New USB device found, idVendor=16c0, idProduct=2a9b
    [ 3061.347074] USB 8-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    [ 3061.347079] USB 8-1: Product: AVR-ISP
    [ 3061.347083] USB 8-1: Manufacturer: ERFOS
    [ 3061.952051] cdc_acm 8-1:1.0: This device cannot do calls on its own. It is not a modem.
    [ 3061.952152] cdc_acm 8-1:1.0: ttyACM0: USB ACM device
    [ 3061.955256] usbcore: registered new interface driver cdc_acm
    [ 3061.955262] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
    und das beim USB ASP:
    gerhard@ubuntu12:~$ dmesg | tail
    [ 3061.952051] cdc_acm 8-1:1.0: This device cannot do calls on its own. It is not a modem.
    [ 3061.952152] cdc_acm 8-1:1.0: ttyACM0: USB ACM device
    [ 3061.955256] usbcore: registered new interface driver cdc_acm
    [ 3061.955262] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
    [ 3247.976078] USB 8-1: USB disconnect, device number 2
    [ 3258.520033] USB 8-1: new low-speed USB device number 3 using uhci_hcd
    [ 3258.691075] USB 8-1: New USB device found, idVendor=16c0, idProduct=05dc
    [ 3258.691081] USB 8-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    [ 3258.691086] USB 8-1: Product: USBasp
    [ 3258.691090] USB 8-1: Manufacturer: www.fischl.de
    gerhard@ubuntu12:~$
    Geändert von oderlachs (17.09.2013 um 16:23 Uhr)
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  10. #10
    Erfahrener Benutzer Begeisterter Techniker Avatar von schorsch_76
    Registriert seit
    25.03.2012
    Ort
    Kurz vor Neuschwanstein
    Alter
    41
    Beiträge
    398
    Hallo Gerhard,

    mein es gibt kein zwingendes Verzeichnis wo du deinen Quellcode ablegen musst. Ich habe Das bei mir so organisiert

    Dokumente/Entwicklung/Embedded/ProjektXYZ

    Unterordner firmware (hier liegt das Makefile und die Quelldateien)
    Unterordner pcb (hier liegt der Schaltplan und das Layout der Platine)
    Unterordner doc (hier liegen PDFs, etc pp)

    Wie du siehst sagt dir Linux hier eine ganze Menge:
    Beispiel:
    Code:
    1: [ 3061.168030] USB 8-1: new full-speed USB device number 2 using uhci_hcd   
    2: [ 3061.347067] USB 8-1: New USB device found, idVendor=16c0, idProduct=2a9b
    3: [ 3061.347074] USB 8-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    4: [ 3061.347079] USB 8-1: Product: AVR-ISP
    5: [ 3061.347083] USB 8-1: Manufacturer: ERFOS
    6. [ 3061.952051] cdc_acm 8-1:1.0: This device cannot do calls on its own. It is not a modem.
    7. [ 3061.952152] cdc_acm 8-1:1.0: ttyACM0: USB ACM device
    1. Fullspeed USB. aka USB 1.1
    2. vendor(hersteller) Id: 16c0 Product ID: 2a9b. Eindeutige Identifikation des Gerätes
    3. Seriennummer etc
    4. Produktname
    5. Herstellername
    6. Jaja, ich weis, das ist kein Modem
    7. Der sog. device node. /dev/ttyACM0 WICHTIG!!!

    Das zeigt die Daten des Chips welcher mit dem Rechner kommuniziert.
    Für den USB ISP lautet also die avrdude Zeile

    Ist das dieser hier?
    http://www.reichelt.de/Programmer-En...DIAMEX+ALL+AVR
    Code:
    AVRDUDE=sudo avrdude -p m168 -c avrispmkii -P USB -e -U flash:w:



    Denke dass der Untere dieser hier ist:
    http://www.fischl.de/usbasp/

    Für den USB ASP lautet also die avrdude Zeile
    Code:
    AVRDUDE=sudo avrdude -p m168 -c usbasp -e -U flash:w:


    Der STK500 ist ja ein serieller Programmer. Einfach den USB Adapter einstecken und die dmesg Ausgabe betrachten. -P /dev/ttyxyz anpassen
    Es gibt auch noch einen stk500/stk500v1/stk500v2. Einfach probieren. Wenn du
    Code:
    sudo avrdude -p m168 -c stk500 -P /dev/ttyACM0 -v
    einfach in der Konsole eingibst, kannst du sehen was avrdude so erkennt. mit -vv siehst du noch mehr. -vvv geht auch

    [Auschweifmodus]
    Bei den USB Ids ist das 16c0 oft verwendet, das sind IDs von VOTI, welche oft frei verwendet werden können. Leider nicht so eindeutig, aber absolut die Ausnahme! Hier wird oft die vusb [1] Bibliothek eingesetzt wie bei dem usbasp. Diese IDs kann man in der vusb Bibliothek aber konfigurieren. Normalerweise, bezahlen Firmen für so einen Block Ids einiges an Geld. Deshalb wird bei Eigenbauprojekten oft das 16c0 verwendet
    [/Auschweifmodus]

    Gruß
    Georg

    [1] http://www.obdev.at/products/vusb/

+ Antworten
Seite 1 von 4 123 ... LetzteLetzte

Ähnliche Themen

  1. Welches Linux für AVR , Asuro.....Linux überhaupt?
    Von oderlachs im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 10
    Letzter Beitrag: 09.01.2012, 13:23
  2. AVR STK600 + Kubuntu Linux + AVR Dude
    Von Nitromechanik im Forum AVR Hardwarethemen
    Antworten: 11
    Letzter Beitrag: 25.11.2010, 10:06
  3. AVR-Programmierung mit ISP Dongle unter AVR Studio 4
    Von Earnie im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 23.09.2008, 19:57
  4. [solved] AVR Programmierung utner Linux
    Von epic im Forum C - Programmierung (GCC u.a.)
    Antworten: 5
    Letzter Beitrag: 29.06.2008, 22:29
  5. ATMega32 programmierung unter Linux
    Von stormracer im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 13.11.2006, 15:53

Berechtigungen

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