When uploading via an STK500, it blows away the Ardiuno bootloader, which I expect to happen.
Quote from: KirAsh4 on May 19, 2013, 04:54 amWhen uploading via an STK500, it blows away the Ardiuno bootloader, which I expect to happen.I don't expect that to happen. In theory, a bootloader will always be capable of programming faster than an external programmer. Have you tried increasing the baud rate (that's the limiting factor)? From my tests, the saturation point is at 500K (I now use 1M exclusively).
Sounds very similar to René Bohne's work (without the reset button thing)...http://forum.arduino.cc/index.php?topic=8869.0
Right, that I know. But what I don't know how to do is send the running code (in flash memory) on the first node to the next node (using whatever method) when there's no bootloader present on the target node. I'm having a hard time trying to understand the method that George uses, all the byte codes ...
If you hold the reset line low you can write directly to an AVR chip's memory using the SPI interface. All the details are in the datasheet.
To program chips in a chain, each chip needs to control the RESET line of the next chip in the sequence and have the SPI bus connected.
Are you suggesting that the bootloader stays intact when uploading via ISP? That's not my experience ...
a) that's for a TINY which is too small for my project
b) that too requires a (custom) bootloaderc) when uploading via AS6 using an STK500, it gets rid of the bootloader
So I have to figure out a way to do this on AVRs that don't have a bootloader on them, which means I'm left with the SPI option only I think. Redesigning the nodes to have those pins interconnected isn't that big a deal and I'm willing to do that if that's what it will take.
However, I don't know how to do that: copy the current running node's flash memory and fire it down the ISP connection to the next one.
I suppose I can have each node check its neighbors periodically for a version number and if it's different they can automatically initiate communications to start a flash dump.
And perhaps this is something I should take over to AVRFreaks as it doesn't necessarily pertain to Arduino (either as the IDE nor bootloader) anymore ...
In your case, you would be stealing the relevant code and integrating it into your program.
Were I in your shoes I would start with a daisy-chain architecture. Each node would be a master to exactly one target. When the ultimate master is updated, it updates its target and on down the line.
The sequence might go something like this...• You upload a new version to the ultimate master• During startup, the ultimate master detects that it has restarted because of RESET• It clones its memory image to its target• The first target does exactly the same thing
Are you going to share? Is it an art project?