[volt-nuts] Backing up HP3458A NVRAM
Poul-Henning Kamp
phk at phk.freebsd.dk
Sat Aug 15 23:00:27 UTC 2009
Old NVRAM batteries are a common affliction for HP3458A units, and
various hardware fixes have been floated.
The trouble of course, is that if you loose the content of the
chip that contains your calibration constants, you will need
a new calibration of your meter, even though the error domain
is entirely within the outguard part.
However, I belive there also is a software workaround, and I'm
documenting it here, so that you can perform step 1, even if step
2 has not been found and tested yet.
The 3458A has a number of undocumented commands, amongst these:
XYZZY (try it :-)
MREAD
MWRITE
JSR
MREAD allows you to read one 16bit memory word, for instance:
MREAD 4
MREAD 6
will get you the two halfwords of the RESET vector.
The Calibration NVRAM is located in the top byte of the memory at
address 0x60000...0x60fff, so by issuing 2048 GPIB commands:
MREAD 393216
MREAD 393218
...
MREAD 397308
MREAD 397310
And recording the output, you can create a backup copy of the
entire calibration NVRAM on your computer.
Now, if the battery in your NVRAM finally dies, your system will
come up with some variant of a calibration error.
You can then either unsolder the NVRAM, program another suitable
device (FRAM ?) with the content of your backup file, and
mount that in the PCB(-socket) instead.
OR, and this is the interesting part:
It should then be possible to write this backup copy back using
MWRITE commands, RESET the 3458A and continue working, as long as
you do not unplug power from it.
I have not tried this yet, because I have not yet figured out the
magic sequence to writing-enable the NVRAM, there is a layer of
sw/hw protection to prevent just that.
So that awaits confirmation at some point.
But those of you with ancient NVRAMs, can at least make a
backup copy now, before you need it.
It is not my impression that the other two NVRAMs are as important,
they "only" contain stored functions and similar stuff, but if you
want a copy of those as well, I belive they are located in full words
from 0x120000...0x12ffff (1179648...1245182 decimal)
Enjoy,
Poul-Henning
--
Poul-Henning Kamp | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG | TCP/IP since RFC 956
FreeBSD committer | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.
More information about the volt-nuts
mailing list