SPI Boot

Updated 2019.12.09

partition start size requirement
sector bytes sector bytes
mbr 0 0 1 512 bytes rk3326_header_miniloader_spiboot.img
primary gpt 1 512 bytes 33 16.5 kB
reserved 30 15 kB
env 64 32 kB 64 32 kB
miniloader 128 64 kB 1920 960 kB
uboot 2048 1 MB 2048 1 MB uboot_spi.img
trust 4096 2 MB 4096 2 MB trust_spi.img
dtb 8192 4 MB 200 100 kB odroidgo2-kernel.dtb
logo1 8392 4196 kB 400 200 kB logo_hardkernel.bmp.gz
logo2 8792 4396 kB 400 200 kB low_battery.bmp.gz
logo3 9192 4596 kB 400 200 kB recovery.bmp.gz
logo4 9592 4796 kB 400 200 kB system_error.bmp.gz
logo5 9992 4996 kB 400 200 kB no_sdcard.bmp.gz
reserved 2 10392 5196 kB - -

Use the option, odroidgo2-spi to build boot loaders for SPI Boot.

$ git clone https://github.com/hardkernel/u-boot.git -b odroidgoA-v2017.09
$ cd u-boot
$ ./make.sh odroidgo2-spi

Then, under the folder u-boot/sd_fuse, two new files will be generated.
And you can find one pre-built image, rk3326_header_miniloader_spiboot.img in same path.

  • rk3326_header_miniloader_spiboot.img
  • uboot_spi.img
  • trust_spi.img

1. Build uboot for SD boot.

$ git clone https://github.com/hardkernel/u-boot.git -b odroidgoA-v2017.09
$ cd u-boot
$ make disticlean
$ ./make.sh odroidgo2

2. Build uboot for SPI boot.

$ git clone https://github.com/hardkernel/u-boot.git -b odroidgoA-v2017.09
$ cd u-boot
$ make disticlean
$ ./make.sh odroidgo2-spi

3. Prepare a recovery image by running this script.

$ cd u-boot
$ ./build_recovery.sh

Then, sdcard_recovery.img will be generated in sd_fuse folder.

4. Write sdcard_recovery.img to a blank sd card. Check the device path of your USB card reader and write sdcard_recovery.img to your blank sd card using dd.

$ sudo dd if=sd_fuse/sdcard_recovery.img of=<device/path/of/your/card> conv=fsync
$ sync

5. Boot from SD card.
6. Now recovery will run automatically.
And you can see display logo and error messages on LCD.

TBD

  • 2019.11.15 version

After booting from SPI flash, u-boot will find kernel and dtb files in vfat of sd card, then jump to its kernel stage automatically.

Normal boot flow

Recovery flow

Auto-test flow