Actions

HacDC Spaceblimp 6/Projects/Science Payload: Radiation & FLASH memory

From HacDC Wiki

Revision as of 03:50, 14 October 2016 by Summakor (talk | contribs) (size)

Science Payload: Radiation & Flash Memory

Introduction:

This is an experiment to detect and determine the vulnerability of contemporary consumer Flash memory media (eg SD cards, USB thumbdrives, SSDs, etc) to cosmic rays. This is useful to know whether we can rely on such media for future Spaceblimp payloads and in general whether this media is suitable and reliable for high altitude applications (weather balloon payloads, aircraft, low-earth orbit spacecraft, etc). Cosmic rays are high-energy particles, largely protons with energies 200MeV to 500MeV that bombard the Earth from all directions. 99.99% of the cosmic rays that reach the stratosphere (30km) are absorbed by air before reaching the ground (sea level). The ones that do reach the earth's surface are energetic enough to penetrate electronics, people and buildings largely unnoticed except by the occasional memory glitch or bad pixel in a photo. High-reliability servers use error-correcting memory to deal with errors caused by cosmic rays that might cause errors on cheaper consumer-grade computer systems. Electronics for critical applications like aircraft, spacecraft and even some medical devices must be either specially made as radiation-resistant chips or the systems designed to cope with occasional errors from cosmic rays.

Although the susceptibility of computer memory to cosmic rays has been tested before, technology changes quickly so there is value in repeating these experiments with contemporary technology. The nature, energy and density of cosmic rays is constant but as the components of computer systems are scaled ever further down (following Moore's Law), the smaller components are more likely to have their function disrupted by a cosmic ray hit. At the same time, the larger density of components means an ever smaller fraction of those components will hit by cosmic rays in any given time.

Flash memory stores data as charge in a floating gate. Charge can be added or removed from the floating gate by quantum tunneling when a large voltage is applied. The charge stored on the gate affects the conductance of the transistor channel below it. The value zero (0) is the high voltage state and one (1) is the low-voltage state. Modern flash uses multi-level cells with various possible voltage values to store several bits per transistor. There is a great description of Flash memory here:

http://www.anandtech.com/show/5067/understanding-tlc-nand/2 http://www.eetimes.com/author.asp?doc_id=1327904

Flash memory also has error-correction mechanisms in place to compensate for manufacturing flaws and wear. This experiment will test the media with all the normal error correction mechanisms in place, so is not a raw measure of bit errors. It also tests only the susceptibility of data stored statically on the media and does not test the CMOS readout circuitry in which cosmic rays could also produce errors during active data read.


Method We've acquired four different reasonably contemporary microSD cards and wrote as many zeroes (0) as would fit, placing as many floating gates at their maximum voltage values. We read out the values to verify all the zeroes were written correctly at ground level.

Plans The four cards will be placed in the Spaceblimp6 payload capsule and lifted to the stratosphere over a period of one or two hours. The flight profile for Spaceblimp6 is approximately a two hour flight with a peak altitude of 100,000ft (about 30km). The payload will then be recovered (hopefully). The cards will be read again using the same method and any non-zero values noted and counted.


1. 32GB SanDisk Ultra PLUS HC I, 6362CRAC40XD 2. 32GB Samsung EVO HC I, MB-MP32D, MBMPBGVEQDFW-F, KNATHNNRH628 3. 32GB PNY Elite HC I, E532G1637, TWLN003044812 4. 16GB MicroCenter Class 10 HC, E516GG1612, TWLKA63410A38

The cards were filled with zeros so the floating gates should all be set to their highest voltage.

  dd if=/dev/zeroes of=/dev/mmcblk0
  hexdump -C /dev/mmcblk0

Card 1 (31914983424 bytes) 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|

76e480000

Card 2 (32010928128 bytes) 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|

774000000

Card 3 (31104958464 bytes) 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|

73e000000

Card 4 (15523119104 bytes) 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|

39d400000