BigDumbDinosaur wrote:
.... That's why I rearranged the board to make room for a ZIF socket.
I'm curious why you can't send the whole image over the UART?
My 6809 is updated using the following workflow:
Change code
"make"
Hit reset button on SBC, or enter "q" command at monitor prompt
"make upload"
6809 resets into new monitor
"make upload" is a program I wrote for my dev system which sends the image, a 64byte EEPROM page at a time, to the SBC. The SBC in turn is running code which:
Copies the entire EEPROM 16KByte image into RAM
A jump point into the relocated flash routine is calculated
Flash routine is entered. At this point nothing is reading the EEPROM which would very much cause problems
64byte pages are received and written into EEPROM
Between each page the necessary timing constraints are honoured using a trivial delay loop
After each page a "#" is sent back on the serial port when the delay has completed, so the sender knows to send the next page
At the end of the write operation, the entire new content of EEPROM is echoed back so the sender can check the content
Nothing can be done if the transfer failed. It very rarely does, and when it does I pry out the IC and program it using my AVR programmer
In any case, the new reset vector is jumped through
My processing is not perfect. With bank switching, I could write the new image to a bank and check it there, before writing it to the EEPROM. Or I could use retry logic to resend the 64byte pages. But hey ho. I'm very pleased with this and it took minimal effort.
BTW, I'm using Atmlel 28C256 EEPROMs.
So is there any reason why your SBC couldn't implement something like this, and save you from using the ZIF socket? The big advantage of EEPROMs vs other ROMs is they can be programmed with ordinary voltages which means they have the potential to be in-situ reprogrammed.