On Tue, Jul 14, 2009 at 21:51:51 +0200, Carl-Daniel Hailfinger wrote:
I think it might be possible without any changes by marking the part of the ROM containing xcshell as cacheable, and then using pokes to rewrite the rest of the chip. It would be slow, but a small flash upgrade program could be uploaded that would do the rest of the work more quickly.
If you have a generic "write X to loation y" interface, flashrom can deal with that, even remotely.
That interface exists. I guess you'd need to execute xcshell from RAM, or use the --estart and --eend options to exclude the portion of the ROM it's executing from.
My original idea was that one would set up CAR, upload code, and jump to it; this would allow the system to be extended without having to include much code. It doesn't work, at least on my Pentium 3, but the same thing could be done with RAM once it's initialised (or with flash for occasional use).
As long as RAM works, we could even upload a complete flashrom binary over zmodem.
I don't have zmodem support currently. It would be easy to add a command that writes both 32-bit operands to RAM, using the accumulator as the pointer (auto-incremented afterwards). Then only 3 of 11 bytes would be protocol overhead, which should be fine if the binary isn't too large. Adding an automatic increment to peekl and pokel might be useful as well.
-- Michael