Sandbox SPI/SPI Flash Implementation 
 | 
==================================== 
 | 
  
 | 
U-Boot supports SPI and SPI flash emulation in sandbox. This must be enabled 
 | 
using the --spi_sf paramter when starting U-Boot. 
 | 
  
 | 
For example: 
 | 
  
 | 
$ make O=sandbox sandbox_config 
 | 
$ make O=sandbox 
 | 
$ ./sandbox/u-boot --spi_sf 0:0:W25Q128:b/chromeos_peach/out/image.bin 
 | 
  
 | 
The four parameters to spi_sf are: 
 | 
  
 | 
   SPI bus number (typically 0) 
 | 
   SPI chip select number (typically 0) 
 | 
   SPI chip to emulate 
 | 
   File containing emulated data 
 | 
  
 | 
Supported chips are W25Q16 (2MB), W25Q32 (4MB) and W25Q128 (16MB). Once 
 | 
U-Boot it started you can use 'sf' commands as normal. For example: 
 | 
  
 | 
$ ./b/sandbox/u-boot --spi_sf 0:0:W25Q128:b/chromeos_peach/out/image.bin \ 
 | 
    -c "sf probe; sf test 0 100000; sf read 0 1000 1000; \ 
 | 
        sf erase 1000 1000; sf write 0 1000 1000" 
 | 
  
 | 
  
 | 
U-Boot 2013.10-00237-gd4e0fdb (Nov 07 2013 - 20:08:15) 
 | 
  
 | 
DRAM:  128 MiB 
 | 
Using default environment 
 | 
  
 | 
In:    serial 
 | 
Out:   serial 
 | 
Err:   serial 
 | 
SF: Detected W25Q128BV with page size 256 Bytes, erase size 4 KiB, total 16 MiB 
 | 
SPI flash test: 
 | 
0 erase: 1 ticks, 1024000 KiB/s 8192.000 Mbps 
 | 
1 check: 2 ticks, 512000 KiB/s 4096.000 Mbps 
 | 
2 write: 6 ticks, 170666 KiB/s 1365.328 Mbps 
 | 
3 read: 0 ticks, 1048576000 KiB/s -201326.-592 Mbps 
 | 
Test passed 
 | 
0 erase: 1 ticks, 1024000 KiB/s 8192.000 Mbps 
 | 
1 check: 2 ticks, 512000 KiB/s 4096.000 Mbps 
 | 
2 write: 6 ticks, 170666 KiB/s 1365.328 Mbps 
 | 
3 read: 0 ticks, 1048576000 KiB/s -201326.-592 Mbps 
 | 
SF: 4096 bytes @ 0x1000 Read: OK 
 | 
SF: 4096 bytes @ 0x1000 Erased: OK 
 | 
SF: 4096 bytes @ 0x1000 Written: OK 
 | 
  
 | 
  
 | 
Since the SPI bus is fully implemented as well as the SPI flash connected to 
 | 
it, you can also use low-level SPI commands to access the flash. For example 
 | 
this reads the device ID from the emulated chip: 
 | 
  
 | 
=> sspi 0 32 9f 
 | 
FFEF4018 
 | 
  
 | 
  
 | 
Simon Glass 
 | 
sjg@chromium.org 
 | 
7/11/2013 
 | 
Note that the sandbox SPI implementation was written by Mike Frysinger 
 | 
<vapier@gentoo.org>. 
 |