I am about ready to kick off a kick starter campaign (1 week or so), and was wondering if I could get comments from the community on my write-up.
Obviously, no pictures. But let me know where the weaknesses are, and your thoughts in general on the project.
I have the prototype working and am waiting on PCB arrival to take some photos before Kickstarter launch.
Non-Volatile 4MB F-RAMDisk for the Raspberry Pi + extras
Save your SDHC!
Read/write up to 100 Trillion Times! F-RAM is non-volatile, and requires no battery. It's FASTER than Flash or EEPROM.
Reboot your Pi often?
Use virtual 'swap' space that is written to your SDHC?
Run a small database on your Pi?
Do any kind of data logging, reading sensors, or serial or network capture? Do you save this data to the SDHC at fairly frequent intervals?
Have a customized Pi with web servers, email servers or other servers that constantly write configuration or temporary files?
If so, please read on....your SDHC may be at risk.
There are 3 types of Ironman boards.
Entry level (Ironman-1),
Mid-range that is expandable (Ironman-2), and
High End (Ironman-2 plus Ironman-D Daughtercard).
All boards offer the the same base functionality, with additional features added as they progress.
See the bottom of this page for technical details of each.
The short story?
There are 2 million SDHC cards running in Raspberry Pi's all over the world. Each SDHC is at risk of early failure because the Pi is constantly writing data to the Linux root partition stored on the SDHC. 10,000 writes and your Pi fails to boot, and your data and configuration is lost.
This project will develop an add-on card that will add a 1 to 4 Megabyte non-volatile disk using Ferroelectric RAM that will allow your SDHC to boot read-only, while still allowing Linux to write small databases, log-files, caches, configuration files, temporary files and many others that are changed during normal usage of the Pi; all without using precious kernel and application memory from the built in RAM disk or tmpfs (Plus, the files survive a reboot!).
The longer story.
Ferroelectric RAM (F-RAM) is almost the perfect RAM for embedded systems. It is as fast as SRAM with no erase/write cycles; it is completely non-volatile, requiring NO power or battery backup to retain data for up to 10 years; It has almost limitless read/write cycles unlike Flash and/or EEPROM which limits writes to 100,000 or 10,000 writes before device failure. The only 2 downsides of F-RAM is density/size and cost.
F-RAM can be read and written (a read is also a write) up to 100 trillion times. Big number? Think of it this way. You could write the same byte address to a F-RAM chip 10,000 times per SECOND every second, and the device would not fail for over 317 years. Doing the same thing to Flash memory (with 100,000 lifetime write limit), the device would fail in 10 seconds. (this is certainly not completely accurate due to wear-leveling algorithms that balance the writes to different addresses in Flash, but you can see that writes quickly add up) See: Raspberry Pi - Read/Write cycles of an SD Card
The Ironman board started life to add basic functionality and F-RAM to my Raspberry Pi with what I felt was essential to any embedded system that was lacking in the Pi. A real-time clock, some configuration EEPROM, data communications using both RS-232 and RS-485 with advanced UART features, and the ability to have on-board non-volatile storage that would allow the root partition to run as read-only without ever modifying the partition. I also needed a mechanism to identify data that was generated by the Pi so the electronic ID was also added. It was also important that I not lose any of the current GPIO functionality so a full 26 pin GPIO pass-through was added so that I could add additonal modules as necessary.
After successfully working with the original prototype, some additional features have been added that include a full featured I2C UART that supports a very respectable amount of features, including auto-transmitter enable/disable for half-duplex RS485 communications, a configuration DIP switch, an input and some output LEDs to show activity.
Ironman-2 PCBIronman-2 PCB
While waiting for the next generation Ironman-2 PCBs to arrive, I was still frustrated by the amount of F-RAM that I could include on the board, and the cost. I then came across the Fujitsu MBR85 series of 256Kbyte F-RAM chips using the SPI interface. With some thought, I found that I could easily add 16 of these chips to a 'daughter card' that would work with the existing Ironman-2 base, and allow the user to add as little or much F-RAM (up to 4MB) that his needs or budget would allow.
What still needs to be done:
• Redesign entry level ‘Ironman-1’ board to use surface mount components for low cost and easy manufacturing.
• Finish first build of Ironman-2 expandable mid-level board test UART and RS485. Respin if required.
• Finish prototype Ironman-D expandable daughtercard using SPI for high speed F-RAM access. Respin PCB if required.
• Complete Linux/Pi kernel driver for all Ironman functionality (F-RAM block driver, RTC,EEPROM,UART, MAC/EID)
• Develop sample programs/documentation using the F-RAM, RTC,EEPROM,UART,MAC/EID, LEDs and configuration switches.
• Acquire parts and PCB assembly services.
• Do first production run of all 3 boards.
• Create a custom read-only SD card image (based on Raspbian) that can pre-loaded ready to safely run the Pi with the Ironman installed.
• Ship KickStarter rewards to all happy new Ironman owners.
12/21/13 - 1/07/14 - arrival of Ironman-2 PCBs. Build several boards and test all functionality with software.
1/07/14 - 1/10/14 - re-layout low-cost Ironman-1 board using all SMT parts to make assembly the most efficient and inexpensive. Remove RS485, 2 connectors, and jumpers. Make battery smaller.
1/10/14- Submit Ironman-D daughter boards to have first PCBs fabricated. Order any additional parts needed so they are here when the PCBs arrive.
1/11/14 - 1/31/14 - finish development on hardware drivers. Get source code posted on GitHub.
2/1/14 - 2/7/14 -Should have Ironman-D boards back, assemble and test.
2/7/14 - 2/14/14 - Any respins of any boards should be completed by this date.
2/15/14 - 2/28/14 - Have first run assembly of all boards done. Work with vendors to work out trouble spots and/or questions about build. (they have 10 day lead time on 20 boards).
3/1/14 - 3/7/14 - test all assembled boards for proper functionality. Calculate assembly failure rate, find common assembly mistakes and work with assembly house to correct.
3/8/14- 3/15/14 - based on KickStarter demand place initial order for 1st production. Assume 2 weeks lead time.
4/1/14 - begin shipment of first production to first backers as rewards.
Technical Details/Final Product:
All products will contain the following functionality:
1) A real time clock with battery backup. (includes 56 bytes RAM)
2) built in Pi UART TTL to RS-232 conversion
3) 256 bytes configuration EEPROM
4) 128 bit unique electronic identifier
5) True 64 bit EUI-64 MAC address for IPv6
4) All Pi GPIO ports brought out to additional connector so you don't lose any Pi functionality and can add additional boards.
5) Single software driver/kernel module that creates /dev devices for all functionality on the boards. Driver is open-source.
Entry Level Board: Ironman-1
1) Small size, utilizing only half of the Pi footprint. No GPIO signals are lost.
2) 32KByte F-RAMDisk. upgradeable to 64K.
3) Please be aware that the Ironman-1 does not support the Ironman-D daughter card, and 2 cards will not work on the same RPi together.
Mid Level Board: Ironman-2. All 'essential' features, and all features of the Ironman-1, plus:
1) Adds a Maxim 3107 I2C full featured UART driving half duplex RS-485 communication. The UART has automatic control of transmitter enable/disable so no special software is required. MAX3845 transceiver and screw terminals for connecting wiring.
2) Adds 3 LEDs (red, yellow, green) attached to UART GPIO lines.
3) Adds 4 position DIP switch for configuration. a) enable RS-485 terminating resistor, b) disables RTC (you might want a different one) c) change addresses of I2C devices so you can add another Ironman board to double functionality. d) enable/disable UART's interrupt signal on GPIO 11 (in case you need that GPIO for something else).
4) Breakout pins for I2C signals for various common I2C modules.
5) Adds the ability to add another Ironman-2 board for additional functionality. (2 UARTs, 2 RS485 channels, etc)
6) Can be upgraded by adding Ironman-D daughter card.
High Level Board: Ironman-2 board plus Ironman-D daughter card. All features listed so far (Ironman 1 and 2), plus:
1) holds 256K to 4M byte additional F-RAMDisk using SPI bus. F-RAM banks are bare sockets and you can add chips as required.
2) F-RAMDisk uses SPI serial protocol instead of I2C which increases the read/write speed from 1MHz (I2C) to approximately 16MHz(SPI)
Last edited by marketideas
on Tue Dec 17, 2013 4:55 am, edited 1 time in total.