AvrDude Problem

Hi, ich hab da mal ein sehr merkwürdiges Problem:
Ich hab mir ein Arduinokompatibles Board gebaut und kann mit der Arduino IDE problemlos Sketches hochladen ( soweit gut ).
Allerdings schreibe ich meinen Code schon etwas länger lieber in Eclipse und lade ihn dann manuell hoch.
Das hat bisher (Arduino Mega 1280 als pre-development-base) geklappt "wie's Brezelbacken". Mit dem neuen Board allerdings nicht mehr.
Auf dem Board ist ein Atmega2560, alle Einstellungen habe ich angepasst.

Um dem Problem Herr zu werden habe ich die Arduino IDE über die Konsole gestartet und mir das Logfile vom Upload ( im Verbose Modus )
angesehen, das sieht aus wie folgt:

Binary sketch size: 7400 bytes (of a 258048 byte maximum)
/home/kolja/arduino-0021/hardware/tools/avrdude -C/home/kolja/arduino-0021/hardware/tools/avrdude.conf -v -v -v -v -patmega2560 -cstk500v2 -P/dev/ttyUSB0 -b115200 -D -Uflash:w:/tmp/build3194618250555562284.tmp/toolbox.cpp.hex:i 

avrdude: Version 5.4-arduino, compiled on Oct 22 2007 at 13:15:12
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/

         System wide configuration file is "/home/kolja/arduino-0021/hardware/tools/avrdude.conf"
         User configuration file is "/home/kolja/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port            : /dev/ttyUSB0
         Using Programmer      : stk500v2
         Overriding Baud Rate  : 115200
avrdude: Send: . [1b] . [01] . [00] . [01] . [0e] . [01] . [14] 
avrdude: Recv: . [1b] 
avrdude: Recv: . [01] 
avrdude: Recv: . [00] 
avrdude: Recv: . [0b] 
avrdude: Recv: . [0e] 
avrdude: Recv: . [01] 
avrdude: Recv: . [00] 
avrdude: Recv: . [08] 
avrdude: Recv: A [41] 
avrdude: Recv: V [56] 
avrdude: Recv: R [52] 
avrdude: Recv: I [49] 
avrdude: Recv: S [53] 
avrdude: Recv: P [50] 
avrdude: Recv: _ [5f] 
avrdude: Recv: 2 [32] 
avrdude: Recv: t [74] 
avrdude: stk500v2_getsync(): found AVRISP programmer
         AVR Part              : ATMEGA2560
         Chip Erase delay      : 9000 us
         PAGEL                 : PD7
         BS2                   : PA0
         RESET disposition     : dedicated
         RETRY pulse           : SCK
         serial program mode   : yes
         parallel program mode : yes
         Timeout               : 200
         StabDelay             : 100
         CmdexeDelay           : 25
         SyncLoops             : 32
         ByteDelay             : 0
         PollIndex             : 3
         PollValue             : 0x53

.. gekürzt. Also dachte ich mir, ich kann ja mal direkt den avrdude aus der IDE aufrufen und habe folgendes gemacht:

/home/kolja/arduino-0021/hardware/tools/avrdude -C/home/kolja/arduino-0021/hardware/tools/avrdude.conf -v -v -v -v -patmega2560 -cstk500v2 -P/dev/ttyUSB0 -b115200 -D -Uflash:w:/tmp/build3194618250555562284.tmp/toolbox.cpp.hex:i 


avrdude: Version 5.4-arduino, compiled on Oct 22 2007 at 13:15:12
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/

         System wide configuration file is "/home/kolja/arduino-0021/hardware/tools/avrdude.conf"
         User configuration file is "/home/kolja/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port            : /dev/ttyUSB0
         Using Programmer      : stk500v2
         Overriding Baud Rate  : 115200
avrdude: Send: . [1b] . [01] . [00] . [01] . [0e] . [01] . [14] 
avrdude: Recv: ~ [7e] 
avrdude: Recv: 3 [33] 
avrdude: Recv: . [06] 
avrdude: Recv: < [3c] 
avrdude: Recv: ` [60] 
avrdude: Recv: ? [3f] 
avrdude: Recv: ` [60] 
avrdude: Recv: ? [3f] 
avrdude: Recv: . [fe] 
avrdude: Recv: . [98] 
avrdude: Recv: . [1e] 
avrdude: Recv: 0 [30] 
avrdude: Recv: 3 [33] 
avrdude: Recv: ` [60] 
avrdude: Recv: . [98] 
avrdude: Recv: . [06] 
avrdude: Recv: . [f3] 
avrdude: Recv: f [66] 
avrdude: Recv: . [c0] 
avrdude: Recv: . [06] 
avrdude: Recv: . [f3] 
avrdude: Recv: f [66] 
avrdude: Recv: . [c3] 
avrdude: Recv: . [86] 
avrdude: Recv: ~ [7e] 
avrdude: Recv: . [cc] 
avrdude: Recv: . [f0] 
avrdude: Recv: . [98] 
avrdude: Recv: . [1e] 
avrdude: Recv: 0 [30] 
avrdude: Recv: 3 [33] 
avrdude: Recv: ` [60] 
avrdude: Recv: . [fe] 
avrdude: Recv: . [98] 
avrdude: Recv: . [fe] 
avrdude: Recv: . [98]

... auch gekürtzt ...

Ich habe das ganze Mehrfach wiederholt mit immer dem gleichen Ergebnis. Mein Oszi verrät mir das bei "meinem" Aufruf von AVRdude
KEIN Reset ausgeführt wird. Kann mir das jemand erklären? Macht die IDE noch irgendwas außer dem starten von AVRdude ?

Vielen Dank für eure Hilfe,
Gruß JKW

Lade dir eine aktuelle Version von AvrDude und benutze statt "-cstk500v2" "-carduino".

Die Arduinos werden über die steigende Flanke von DTR und RTS resetet. Worüber dein Nachbau das macht, weiß du am besten! Die IDE toggelt beide Leitungen, das STK500V2 nur eine (ich meine DTR). Der neue Dude toggelt mit Arduino-Protokoll auch beide!

Gruß,
Lupus

Top Antwort.
Habs ca 2 min vor lesen deiner Antwort auch gelöst. Mein Nachbau wird auch über die DTR Leitung resettet, die allerdings nicht durch avrdude mit der stk500v2 Einstellung bespaßt wurde. - Ist ja jetzt auch logisch -
Da stellt sich mir ja die Frage warum die IDE dann das DTR seperat macht und dann den stk500 benutzt wenn es doch gleich den arduino als option nehmen könnte. oder liegts daran das ich hier version 018 habe ?

Ich schreibe hier noch kurz einige Infos, damit jemand der googlet vielleicht auch mit meiner Lösung etwas anfangen kann:
Anfangs habe ich mit der Arduino IDE den ATmega2560 Bootloader gebrannt, dann dort meine Sketches hochgeladen. Kleine Programme liefen damit sofort per IDE. Größere sind immer bei 97% des Uploads abgestürzt.
Ich habe dann nach viel Suchen auf dieser Seite ( Bootloader for Arduino Mega2560 ) einen anderen Bootloader gefunden.

Mit diesem konnte ich die Programme mit beliebiger Größe erfolgreich hochladen. Den Bootloader habe ich noch etwas umgeschrieben und nutze ihn nun sehr erfolgreich auf meinem m2560. Da der Autoreset nicht geklappt hat und ich den stk500v2 nicht mehr nutzen konnte ( der Bootloader spielt scheinbar nur mit dem stk500 ) habe ich die Datei unter /usr/bin/avrdude nach /usr/bin/avrdude.orig verschoben, eine Datei namens /usr/bin/avrdude.reset anlegegt in der nun folgendes steht:

#!/usr/bin/perl -w
use Device::SerialPort;
use FindBin qw($Bin);
foreach (@ARGV)
{
    if ($_ =~ /-P(\/dev\/.+USB.+)/)
    {
        print (STDERR "Resetting DTR on " . $1 . "\n");
        Device::SerialPort->new($1)->pulse_dtr_on(100);
        last;
    }
}
select(undef, undef, undef, 0.1);

dann eine Datei unter /usr/bin/avrdude mit dem inhalt

avrdude.reset $1 $2 $3 $4
avrdude.orig $1 $2 $3 $4

erstellt.

damit ich als user den Usb port bespaßen konnte noch ein sudo usermod -aG dialout <myuser>

und "schon" kann ich meinen ArduinoMega2560 verschnitt aus Eclipse bedienen.

Vielleicht noch also kleine Frage am Rande:
Kennt jemand das Problem mit dem Bootloader ? Also das Sketches die schon etwas größer sind ~90kB nicht hochgeladen werden können?
Der verlinkte Bootloader kann zur zeit auch nur 128K, da werde ich mich jetzt mal dransetzten, das auch die anderen 128K benutzt werden können, aber warum gehts mit dem Arduino Bootloader nicht ... merkwürdig ..
Es wäre schon cool den Originalen zu nutzen, da der immerhin doppelt so schnell läuft, allerdings könnte auch genau dies Quell allen Übels sein und timingprobleme verursachen ..

jkw:
Da stellt sich mir ja die Frage warum die IDE dann das DTR seperat macht und dann den stk500 benutzt wenn es doch gleich den arduino als option nehmen könnte. oder liegts daran das ich hier version 018 habe ?

Machen die aktuellen IDE`s glaube ich immernoch. An der stelle gab es einfach ein Henne/Ei Problem: Arduino wurde entwickelt und nutzt AvrDude und resettet selber, AvdDude Entwickler halten das Prinzip für gut und implementieren das als eigenes Protokoll. Aus diesem neuen Ei (AvrDude) könnte jetzt eine neue Henne (IDE die nicht mehr selbst resettet) schlüpfen.

Zum Rest kann ich nichts sagen!

Gruß,
Lupus