RaspberryPi

From flashrom
Revision as of 18:42, 13 January 2013 by Stefanct (talk | contribs) (use the gnd and vcc pins that are near the spi pins)
Jump to navigation Jump to search

This wiki is retired

Our website is https://www.flashrom.org, instructions on how to add or update documentation are here

All wiki content available in read-only mode at wiki.flashrom.org

RaspberryPi is a cheap single-board computer developed in the UK by the Raspberry Pi Foundation with the intention of stimulating the teaching of basic computer science in schools. It can run a fully-functional GNU/Linux distribution and exposes SPI, I2C and several GPIOs on its expansion header.

Prerequisites

Use latest Raspbian (or any other distribution with a recent kernel). Run the following commands:

modprobe spi_bcm2708
modprobe spidev

Compiling flashrom

If you want to compile it from the sources, use the following line:

make CONFIG_INTERNAL=no CONFIG_RAYER_SPI=no CONFIG_NIC3COM=no CONFIG_GFXNVIDIA=no CONFIG_SATASII=no \
 CONFIG_ATAHPT=no CONFIG_DRKAISER=no CONFIG_NICREALTEK=no CONFIG_NICNATSEMI=no \
 CONFIG_NICINTEL=no CONFIG_NICINTEL_SPI=no CONFIG_OGP_SPI=no CONFIG_SATAMV=no

Connecting the flash chip

To learn more about the RPi's expansion header refer to http://elinux.org/Rpi_Low-level_peripherals . Please do not try to draw more than 50mA from the 3.3V pin.

RPi header SPI flash
17 Vcc 3.3V
25 GND
19 DI
21 DO
23 SCK
24 /CS

In general all other pins (usually pin 3 is /WP and pin 7 is /HOLD) should be connected to Vcc unless they are required to be floating or connected to GND (both extremely uncommon for SPI flash chips) by the datasheet for the flash chip in question.

Example output

paul@raspberrypi:~/flashrom$ time ./flashrom -r wr741nd-flash.bin -V -p linux_spi:dev=/dev/spidev0.0
flashrom v0.9.5.2-r1547 on Linux 3.2.21-rpi1+ (armv6l)
flashrom is free software, get the source code at http://www.flashrom.org

flashrom was built with GCC 4.6.3, little endian
Command line (5 args): ./flashrom -r wr741nd-flash.bin -V -p linux_spi:dev=/dev/spidev0.0
Calibrating delay loop... OS timer resolution is 5 usecs, 210M loops per second, 10 myus = 11 us, 100 myus = 109 us, 1000 myus = 1237 us, 10000 myus = 10299 us, 20 myus = 37 us, OK.
Initializing linux_spi programmer
Using device /dev/spidev0.0
The following protocols are supported: SPI.
...
Chip status register is 00
Found Winbond flash chip "W25Q32" (4096 kB, SPI) on linux_spi.
...
Found Winbond flash chip "W25Q32" (4096 kB, SPI).
This chip may contain one-time programmable memory. flashrom cannot read
and may never be able to write it, hence it may not be able to completely
clone the contents of this chip (see man page for details).
Reading flash... done.

0.85user 0.66system 1:28.12elapsed 1%CPU (0avgtext+0avgdata 18976maxresident)k
0inputs+8192outputs (0major+1232minor)pagefaults 0swaps