File:Pine64 board booted over SPI.jpg

This picture is showing the Pine64 board, which is booting over SPI (the SPI0 pins on the Pi-2 Connector) with the help of Olimex A13-OLinuXino-Micro. The A13-OLinuXino-Micro board is emulating the SPI NOR Flash behaviour and uploading the boot0 bootloader.

See the following U-Boot branch for the demo code to run on the A13-OLinuXino-Micro. Serial console output on A13-OLinuXino-Micro: U-Boot 2016.03-dirty (Jan 01 1970 - 00:00:00 +0000) Allwinner Technology

CPU:  Allwinner A13 (SUN5I) I2C:  ready DRAM: 256 MiB

Emulating SPI NOR flash on SPI2...  All 32768 bytes of the emulated NOR flash data have been sent. The average transfer speed: 702 KB/s.

Serial console output on Pine64 after power on: HELLO! BOOT0 is starting! boot0 commit : 045061a8bb2580cb3fa02e301f52a015040c158f

boot0 version : 4.0.0 set pll start set pll end rtc[0] value = 0x00000000 rtc[1] value = 0x00000000 rtc[2] value = 0x00000000 rtc[3] value = 0x00000000 rtc[4] value = 0x00000000 rtc[5] value = 0x00000000 DRAM driver version: V1.1 rsb_send_initseq: rsb clk 400Khz -> 3Mhz PMU: AXP81X ddr voltage = 1500 mv  DRAM Type = 3 (2:DDR2,3:DDR3,6:LPDDR2,7:LPDDR3) DRAM clk = 672 MHz DRAM zq value: 003b3bbb DRAM single rank full DQ OK  DRAM size = 1024 MB   DRAM init ok   dram size =1024 card boot number = 3, boot0 copy = 0 card no is 3 sdcard 3 line count 0 [mmc]: mmc driver ver 2015-05-08 20:06 [mmc]: mmc_get_timing_cfg: input para error! [mmc]: mmc_get_timing_cfg: input para error! [mmc]: Wrong mmc NO.: 3 [mmc]: mmc 3 resource init failed Fail in Init sdmmc. Ready to disable icache.

The latest commits in this branch allow to host the SPI flash emulation on any A10/A13/A20 board and also boot a generic device independent helloworld payload instead of the Pine64-specific boot0. An example of the serial console output: Hello from Allwinner A64! Booted from SPI0, entering an infinite loop.