FlashStick Memory

Motivation

When I was fed up with opening the box just to switch to a different application ROM, I started thinking about a cartridge concept. You know, putting an EPROM on a small board that plugs into the main board. The problem was the limited amount of space. The small box I use just does not have a convenient location for a cartridge connector. I also wanted to stick with a single sided layout that I could make myself, and I didn't want to redesign the whole board. Plus, many users just want to install their application and live with it. No need for multiple programs.

So I came up with this idea: the latest FlexScan incarnation supports both EPROM and alternatively RAM in the socket. The pinouts of a 27C256 32K EPROM and a 62256 32K RAM are virtually identical, except for two signals. Because of this, FlexScan now has two jumpers that can easily be configured for RAM or EPROM. If an EPROM is installed, everything is the way it used to be: ScanOS finds the program in EPROM and executes it. But if RAM is installed, ScanOS loads the application into RAM and starts if from there. An added benefit is that programmers can utilize the 32K RAM for many purposes (but thereby sacrificing compatibility with the RAM-less FlexScan). The extra circuitry to access the FlashStick is minimal (see schematics below).

Booting from FlashSticks

One problem remains: how does the program get into RAM in the first place? The solution is a small memory cartridge with a serial I2C EEPROM. I called these small cartridges "FlashSticks". The serial I2C EEPROMs are pretty cheap, and commonly available. If no EPROM is found in the mainboard socket, ScanOS looks for the presence of an I2C EEPROM, copies its contents into RAM, and executes them. If no I2C EEPROM is found either, a HEX file can be downloaded into the unit for execution, which is very useful for debugging. And how does a program get into the FlashStick in the first place? Well, after downloading the HEX file, the user has the choice of either executing the file in RAM, or copying it to a FlashStick. Once it's on the FlashStick, it will load automatically on the next power up.

The physical dimensions of the FlashStick are not critical, but all components must be surface mounted, so the underside of the board is flush. In other words: even through hole components must be mounted on the top side (as you can see on the picture). This is necessary so that the FlashStick can slide on the board into the connector. The connector is four pins at a 90 degree angle, spaced at 0.1". The two outmost pins are longer, to ensure the FlashStick gets power first before the clock and data pins get power. Except for pullups, there is nothing else on a FlashStick board. Cheap and small is the motto. Speaking of small: even there is no real size limit, the width should be no more than 1/2", the length should be less than 1.5", and the height should also be kept under 1/2". Just to make sure all our FlexScans are mechanically compatible.

One more note: basically, all I2C EEPROMs are pretty much pin- and software compatible (although I can't guarantee that). But some use the "unused" pins for special functions like write protection or adressing. If that is the case, make sure you connect these pins properly to GND or Vcc to ensure a compatible behavior. For instance, set the device to respond to address bits 000 (I2C commands address the device with command byte $A0 or $A1), and all unused address bits are addressed as zero by ScanOS. Sizes of 1,2,4,8,16 and 32K are supported, with respective page sizes of 16,16,16,32,64 and 64 bytes. Whatever EEPROM you select, make sure it supports at least these page sizes for block writes. Also, please note that ScanOS accesses all memories starting at their internal address 0, up to the total memory size.

Tested devices

I have personally used the following devices and found them to work without problems:

There have been visitors to this site since May 31, 2000.