25MHz 1.8-5V SPI EEPROM/Flash Emulator

Similar projects worth following
The EEEmu SPI emulates any Serial Peripheral Interface Bus EEPROM or Flash memory chipsets up to an interface speed of 25MHz. It also supports any supply and interface voltage between 1.8 to 5 Volts and can be configured to support even the largest of memory sizes.

The world's landfills are littered with old PC motherboards that have failed due to bad flashing, malware or rm /sys/firmware/efi/efivars/*. What if you could recover these boards easily or prevent it from happening all together?

The EEEmu SPI will allow you to do all of this and more. EEEmu SPI can:

  • Create a truly crash-free BIOS solution for your PC motherboard.
  • Recover bricked PC motherboards.
  • Secure your BIOS from accidental or malicious modification while still allowing easy BIOS updates.
  • Check if changes are made to your BIOS by storing EEPROM writes in a diff file (if write enabled) and also write protect sections of ROM.
  • Swap out different EEPROM and Flash ROM files quickly and easily via a USB mass storage interface.
  • Retrofit worn out, end-of-life chipsets on older hardware.
  • Provide an easy development and deployment environment for custom PC BIOS modification.
  • Develop and debug embedded projects, without worrying about exhausting write cycles.
  • Also emulate Flash/FeRAM/MRAM SPI hardware.
  • Allow small embedded platforms to perform easy datalogging functions.
  • Be used as an SPI sniffing and logging device.
  • Create custom SPI slave hardware.
  • Anything else you can imagine that requires a versatile high speed serial memory interface.

EEEmu SPI is easy to use as a simple drop in replacement for existing SPI EEPROM. It allows you to quickly and easily configure and load new EEPROM image files using a USB mass storage interface, to an onboard SD card. Deep configuration options allow you to tweak the operation easily to support any brand or sized EEPROM.

EEEmu SPI also provides additional GPIO/I2C pins to allow you to hack the device to your heart's content. EEEmu's software is also completely open source. It supports reprogramming via USB, so you can easily tweak the code to suit your application.

Level conversion supports open drain (pull-up) or active modes. Dual power supplies allow you to power it from the USB or SPI interface (even at the same time).

All EEEmu code, documentation and design on these project pages are licensed under the GNU General Public License (GPL) unless otherwise stated.

  • 1 × ATSAM4S2B
  • 1 × MicroSD Socket
  • 1 × TPS63031DSK Power Management ICs / Switching Regulators and Controllers
  • 1 × TPS73233DBVT Power Management ICs / Linear Voltage Regulators and LDOs
  • 5 × SN74LV1T34DCKR Logic ICs / Buffers, Drivers, Transceivers
  • 1 × Micro USB Receptacle
  • 1 × Lots-o-Misc Passives
  • 1 × Class 10 or Greater SD Card Required for 25MHz operation.

  • The EEEmu Lives

    Blecky4 days ago 0 comments

    As a first post, I just wanted to give an update on where the EEEmu SPI development currently is.

    I started designing this project around the end of February this year after I became frustrated with having to manually re-flash 20 out of warranty server BIOSes. These machines needed updating to work with some specific PCI-e hardware, and unfortunately they would brick after a software based flash. Pulling the ROM, manually flashing, then re-inserting worked, so it wasn't a firmware issue. Since the manufacturer was less than helpful, other than to suggest to RMA them, I wondered how I could provide a quick, easy and software-less update method to prevent this issue from ever occurring.

    Development of the first prototype board then started in March. Things have progressed rapidly since then and I hope to have everything on the prototype fully operational by mid May. From there, a new revision of the hardware should be finished and I will start producing the first batches of boards after testing.

    This project has been designed to be produced easily on a smaller scale. I now also have the capability to build small batches myself (about 100/day). The plan is to have these boards available on Tindie as soon as they are ready.

    So onto the current status. All the code for the USB mass storage, SD card, configuration files and SPI is currently operational. The emulation code is still being worked on as I want it to be as flexible and easy to use as possible. Code will be made available once this and the firmware bootloader is finalised.

    The hardware on the prototype is also fully working. The dual power supplies work under all conditions without fault. The level conversion works as expected with different voltages (1.8-5V) and the SPI works well at 25MHz:

    Testing SPI reads from a ROM file stored on the SD card with a Teensy 3.2 @ 25MHz

    Connecting to the Teensy is easy:

    Everything is coming together quite nicely without too many issues. I did have a minor one which "bricks" the ATSAM4S2B MCU. When entering a certain sleep state, the system controller switches off the internal 1.2V regulator, which then powers off the ARM core and prevents it from being programmed afterwards. There is a flash erase pin that you can bring high on startup for 10 seconds to erase the flash, but this is a frustrating design decision made by Atmel/Microchip.

    That's it for the moment. Stay tuned for more updates!

View project log

Enjoy this project?



oshpark wrote 04/19/2017 at 17:26 point

Is the source code for the ARM firmware available?  It looks like the repo is empty:

  Are you sure? yes | no

Blecky wrote 04/19/2017 at 23:34 point

It will be once I finish up the emulation code. I was mostly just getting everything in place a day ago for the hackaday prize conditions, so it's a little pre-emptive.

  Are you sure? yes | no

Yann Guidon / YGDES wrote 04/19/2017 at 08:56 point

I should get one and see how it behaves with #SPI Flasher :-D

  Are you sure? yes | no

Blecky wrote 04/19/2017 at 09:09 point

I hope to have this available for purchase on tindie in the not too distant future (hopefully end of May). I'm still working out a few things with the emulation code (USB/SD/configuration all currently work) as well as the end user flashing to make it reliable for people to make code changes. I will be looking for a few people to test it out first too if you are interested.

  Are you sure? yes | no

Yann Guidon / YGDES wrote 04/19/2017 at 09:28 point

interesting :-)

i trust you on the HW side but what about the user SW side ?

  Are you sure? yes | no

Blecky wrote 04/19/2017 at 09:39 point

There isn't too much from the user side as I tried to design it as a standalone device (once configured). All configuration is done through a config file that is placed on the SD card. The only thing I really need to do is make a generator that creates configs for different EEPROM devices. I plan to support everything that is on the flashrom site first as it's an easy go-to list, then there'll be more to come later. I'll have a way for users to submit working configs too. As for debugging/sniffing, there's two options, the first is to just dump SPI transactions to SD storage, the second will allow you to see these as debug statements over USB. As to how this is visualised, I'll look into this down the track as it can be a massive amount of data for the eyes to ingest.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates