BigEd wrote:
I've been wondering about using an EEPROM that's too big, so one half can be known-working code while the other half is the new code-under-test. With suitable decoding logic and a switch (or button) one could choose whether to boot from known-working or code-under-test, and that would reduce the risk of any update or experiment.
I've been looking at the same... my thoughts are to use a port line (in my case, from the SC28L92) and connect that to an upper address line on the EEPROM. The code to switch the line should be copied from EEPROM to RAM first, then executed and have a know entry point back into the remapped EEPROM.
Adding a hardware jumper to the design would make it an easy cold start switch. Then again, you could also add a 4-position DIP switch and gain access to a larger device.
One small detail I fell into.... when I built up a 3.3V prototype, I switched to the AT28BV256 EEPROM. By default, this device requires an unlock code for insitu programming, where the AT28C256 device does not. I had to modify my EEPROM write routine to include those device writes to unlock it. Otherwise, there are no errors on compares... but when completed, nothing was actually written and the original contents remain.