Note that the optiboot hex file for 1284 will NOT work in a 644 (or at least is not expected to work), because the bootloader is located at the end of flash memory, and that's in a different place on the two chips. AVR code usually contains at least some absolute address references...
No, because it needs to know the internal address of the "Read While Write Flash" area in the source code as well (but the source already knows about 644p, so at least in theory if you can compile/link from source you shouldn't have any problems building a 644 version ("make sanguino")However, the 644 version predates my involvement and hasn't been tested, so i don't know whether it works.
However, the 644 version predates my involvement and hasn't been tested, so i don't know whether it works.
the 644 version predates my involvement and hasn't been tested
Quotethe 644 version predates my involvement and hasn't been testedWell, now it's been tested.It doesn't work.It has the wrong signature for an ATmega644p (it makes it look like an ATmega644.)You can tell boards.txt that you have a 644 and upload will work, but then the pins_arduino.c doesn't get correct values.(and why does it have an incorrect signature byte? Because avr-libc is actually wrong in the version that ships with Arduino. It's not even an optiboot bug. Sigh. https://savannah.nongnu.org/bugs/?26188It also has an incorrect efuse value in the Makefile (should be 0xFD, with the "unused" bits set to 1, but the makefile has 0x05)http://code.google.com/p/optiboot/issues/detail?id=61
The source at http://code.google.com/p/optiboot/ has been fixed, and I've added a .hex file for 644p to the download area.It's still tagged as v4.5, since this didn't change any object code of previously supported platforms. And like the 1284p support, the 644p is not an official Arduino team platform, so this won't be committed to the Arduino repository until it's time for some sort of big "upgrade."
(the bootloader currently only supports uart 0, on devices with more than one uart.)No, not changed yet. Working on it...If you were having trouble at the sketch or C level, that might have been due to the differences between 644 (which apparently only has one uart) and 644A/644P (which have two. Even thought 644A has the same signature as 644. "Bad Atmel!")
do I choose Optiboot v4.4?
How is this different from the optiboot_atmega328.hex file that comes with Arduino 1.0?