Hi,
I am (finally) patching my Arduino-derived project up to 1.0 and ran into an oddity; it seems 1.0 (or the version of avrdude that comes with it?) no longer recognizes the Arduino serial (Duemilanove and earlier) bootloader's protocol (stk500), or at least has altered its implementation in such a way that it no longer recognizes the chip. The Mosquino (Sanguino-based) board uses an ATmega644pa with the Sanguino's 'adaboot' bootloader. Its boards.txt file specifies the upload protocol as follows:
mosquino.upload.protocol=stk500
Randomly changing this from 'stk500' to 'arduino' (as mentioned in this thread) gets it working again, but for a published project, I'm wary of relying on what seems to be a 'voodoo' fix without understanding how or why it works, or what the problem was in the first place. Does anyone know more about this - e.g. is the underlying problem/solution/change documented anywhere, and is this a 'stable' fix that I can safely push out? What actually changed?
Thanks in advance!
More info:
With Arduino IDE versions up through 0022, uploading a sketch proceeds normally. Abridged verbose output:
avrdude: Version 5.4-arduino, compiled on Oct 11 2007 at 19:12:32
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
System wide configuration file is "J:\arduino-0022\hardware/tools/avr/etc/avrdude.conf"
Using Port : \\.\COM18
Using Programmer : stk500v1
Overriding Baud Rate : 19200
...
avrdude: AVR device initialized and ready to accept instructions
Reading | avrdude: Send: u [75] [20]
avrdude: Recv:
################################################## | 100% 0.02s
avrdude: Device signature = 0x1e960a
...
But with 1.0, upload produces:
avrdude: Version 5.11, compiled on Sep 2 2011 at 19:38:36
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "J:\arduino-1.0\hardware/tools/avr/etc/avrdude.conf"
Using Port : \\.\COM18
Using Programmer : stk500v1
Overriding Baud Rate : 19200
...
avrdude: AVR device initialized and ready to accept instructions
Reading | avrdude: Send: V [56] 0 [30] . [00] . [00] . [00] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
avrdude: Send: V [56] 0 [30] . [00] . [01] . [00] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
################avrdude: Send: V [56] 0 [30] . [00] . [02] . [00] [20]
avrdude: Recv: . [14]
avrdude: Recv: . [00]
avrdude: Recv: . [10]
################################## | 100% 0.05s
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
It seems to use a different method to read the signature(?).