Recently I had the opportunity to fix a design I did way back in 2005. It turned out to be a bit more trouble than I anticipated. In the past I have talked about the need for good record-keeping and how that gets harder and harder to do as the technology in question gets older and older. Fortunately for me we had been conscientious enough to retain enough of our old-technology to allow me to fix the problem . . . . barely.
While I can’t get into the specifics of the design, I can give the broad brush-strokes. The design itself interfaced to standard Windows-based computer through one of its ports. The original design worked just fine, but with newer computers and updated operating systems, the design would fail sometimes during a cold-boot. The fix itself was a fairly simple firmware update; however, getting there was a series of ever more ridiculous exertions. Here is a partial list of the issues I had to overcome.
- Old Microcontroller – The microcontroller that the system was based on was a Microchip PIC16C65B. This venerable chip was a workhorse for Microchip and Solutions Cubed from the late ‘90s through the mid-2000s (before their product line exploded into 1000s of products). Unfortunately this IC does not support ICSP and the chip itself is not electrically erasable.
- Old Development System – As mentioned above the micro needed to be emulated via an in-circuit emulator. In this case we have the MPLAB ICE 2000. A decade ago, we spent thousands of dollars to outfit our lab with the ability to emulate various Microchip microcontrollers. Most of this technology is now obsolete, with the advent of the various ICSP technologies, but we at least had an emulator around to help modify the firmware.
- No Parallel Port – Unfortunately the MPLAB ICE 2000 is controlled via a computer parallel port and most new computers do not support such an antiquated port. Microchip makes a special USB to parallel convertor, and we have one, but I could not find it, so I reverted to digging out an old computer that had a parallel port. Unfortunately, when I powered up the computer in it needed to go through a myriad of updates for the computer to be able to run properly.
- No MPLAB X Support – The old firmware was written in MPASM assembly language (argh!), and MPLAB X does not really import .ASM files correctly. All of the tabs are misaligned and the keywords are all in the wrong color. So I had to load an archived version of MPLAB 8.x onto the old computer so I could parse the firmware.
- Need to Erase the Old Chip – As mentioned earlier, the ‘65B micro needs a UV eraser to erase the part so it can be used again. I had to dig that up and ensure that it worked.
Luckily after spending a couple of hours getting all of the issues above resolved the actual fix only took about a half an hour. Then a couple of hours of testing and then fix was done. So we now have a satisfied client. But the lesson I am taking from this is that even with our fairly straight-forward designs Solutions Cubed can be bit by the obsolescence bug. We do a good job archiving software and firmware, along with the appropriate revision documents; however, the hardware archiving could use a little work, otherwise if this client comes back in another eight years, we might have bigger problems to overcome to fix the system.