Warning: This site is under construction, most links will be broken.

Electronics -> Memorybrick SRAM/NVRAM/FLASH/EEPROM programmer

Last modified on Sat, 4th Oct 2008 at 13:55 UTC by zipplet

bbcode image
Click to enlarge

Note this picture is of the very early R1 before I added the DIP switches to swap the signals necessary for flash programming to work!
A second revision will remove the need for the DIP switches.

What is it?


Memorybrick is a general-purpose memory chip programmer and tester that connects to the USB port. It is bus powered, and the PIC18F2550 microcontroller is at the heart of the device.

When it is finished (I'm still working on the firmware) it will be capable of reading/writing/erasing/testing at least the following devices:

These operations are supported:

The following limitations exist which cannot be solved by firmware enhancements:

Why?


Memorybrick was born out of my desire to own a decent 5V DIP flash programmer. I didn't want to spend a rediculous sum on a commercial programmer or try my luck with an RS232 driven cheap programmer from overseas.

I can add any device I want (within the limitations of the hardware) as I need support for them. If I need to support something that the hardware wont allow for, I'll design a newer programmer. Due to the design, there are many potential 8-pin devices that could be programmed including microcontrollers if I desire - due to the fact that the bottom 8 pins in the socket are bi-di data lines and a ground pin.

During prototyping I decided it would be nice if the device could also test SRAM chips for me, as I bought a load of used SRAM chips via ebay and wanted to make sure they are OK (due to the price it wouldn't be terrible if a couple were damaged, but I wanted to make sure I didn't use a damaged one in a device). This is a handy feature to have in general when troubleshooting!

Version 1


Version 1 of memorybrick works but is very cumbersome. Jumpers had to be set to select FLASH or RAM chips, it didn't work properly with chips requiring a VCC above 4.7V and it was very slow. These limitations exist due to the small board space, lack of I/O pins, bugs in the microchip CDC USB stack and the fact that the device is bus powered.

I am retiring the first version design as unworkable.

Version 2


I am currently designing a new version of memorybrick. I am using an FTDI FT232R USB UART for USB connectivity in D2XX mode (no virtual com port exposed to the OS) talking to a PIC18F4550 via a fast serial link. This design is self powered which should allow a wider variety of devices to be programmed.

How does it work?


Within the range of the device sizes supported by memorybrick, there are 3 possible places for the chip to draw VDD in the socket (if chips are inserted aligned against the bottom). Because one of these is shared with an address line in smaller chips a couple of transistors are used to switch that pin between an address line and a power supply source.

Serial EEPROMs are supplied power from one of the bi-directional data lines. If that turns out to be a problem I'll need to cram another couple of transistors onto the PCB somewhere.

The address lines are driven by 3 serial-in parallel-out shift registers, which are clocked at high speed by the PIC. This was the most economical way to expand the I/O of the PIC without resorting to an expensive large PIC microcontroller. As the PIC is running at 48mhz (using the PLL) this is not a problem at all.

Most of the work is handled by the firmware in the PIC - the PC just sends basic configuration commands and sends/receives packets of data containing data read from/written to the device in the ZIF socket.

The 6 pin header on the bottom left of the board is for connecting to the PICkit 2 programmer to upload new firmware to the PIC without having to remove it from the socket.

Software


bbcode image

This is a very early screenshot of the software. It is currently undergoing a rewrite.