Contents
========

1. Introduction
2. Get the Source and prebuild binary
3. Compile the U-Boot
4. Compile the rkdeveloptool
5. Package the image
   5.1. Package the image for U-Boot SPL(option 1)
   5.2. Package the image for Rockchip miniloader(option 2)
6. Bootloader storage options
7. Flash the image to eMMC
   7.1. Flash the image with U-Boot SPL(option 1)
   7.2. Flash the image with Rockchip miniloader(option 2)
8. Create a bootable SD/MMC
9. And that is it

Introduction
============

Rock960 board family consists of Rock960 (Consumer Edition) and
Ficus (Enterprise Edition) 96Boards featuring Rockchip RK3399 SoC.

Common features implemented on both boards:
	* CPU: ARMv8 64bit Big-Little architecture,
		* Big: dual-core Cortex-A72
		* Little: quad-core Cortex-A53
		* IRAM: 200KB
	* eMMC: 16/32GB eMMC 5.1
	* PMU: RK808
	* SD/MMC
	* Display: HDMI/DP/MIPI
	* Low Speed Expansion Connector
	* High Speed Expansion Connector

Additional features of Rock960:
	* DRAM: 2GB/4GB LPDDR3 @ 1866MHz
	* 1x USB 3.0 type A, 1x USB 2.0 type A (host mode only),
	  1x USB 3.0 type C OTG

Additional features of Ficus:
	* DRAM: 2GB/4GB DDR3 @ 1600MHz
	* Ethernet
	* 2x USB 3.0 type A, 2x USB 2.0 type A (host mode only),
	  1x USB 3.0 type C OTG

Here is the step-by-step to boot to U-Boot on Rock960 boards.

Get the Source and prebuild binary
==================================

  > git clone https://github.com/96rocks/rkbin.git
  > git clone https://github.com/rockchip-linux/rkdeveloptool.git

Compile the U-Boot
==================

  > cd ../u-boot
  > cp ../rkbin/rk33/rk3399_bl31_v1.00.elf ./bl31.elf
  > export ARCH=arm64
  > export CROSS_COMPILE=aarch64-linux-gnu-
  > make rock960-rk3399_defconfig
  > make

Compile the rkdeveloptool
=========================

Follow instructions in latest README
  > cd ../rkdeveloptool
  > autoreconf -i
  > ./configure
  > make
  > sudo make install

Package the image
=================

Package the image for U-Boot SPL(option 1)
--------------------------------
  > cd ..
  > tools/mkimage -n rk3399 -T rksd -d spl/u-boot-spl.bin idbspl.img

  Get idbspl.img in this step.

Package the image for Rockchip miniloader(option 2)
------------------------------------------
  > cd ../rkbin
  > ./tools/loaderimage --pack --uboot u-boot/u-boot-dtb.bin uboot.img 0x200000

  > ../u-boot/tools/mkimage -n rk3399 -T rksd -d rk3399_ddr_933MHz_v1.08.bin idbloader.img
  > cat ./rk33/rk3399_miniloader_v1.06.bin >> idbloader.img

  Get uboot.img and idbloader.img in this step.

Bootloader storage options
==========================

There are a few different storage options for the bootloader.
This document explores two of these: eMMC and removable SD/MMC.

Flash the image to eMMC
=======================

Flash the image with U-Boot SPL(option 1)
-------------------------------
Power on(or reset with RESET KEY) with MASKROM KEY preesed, and then:
  > rkdeveloptool db rkbin/rk33/rk3399_loader_v1.08.106.bin
  > rkdeveloptool wl 64 u-boot/idbspl.img
  > rkdeveloptool wl 0x4000 u-boot/u-boot.itb
  > rkdeveloptool rd

Flash the image with Rockchip miniloader(option 2)
----------------------------------------
Power on(or reset with RESET KEY) with MASKROM KEY preesed, and then:
  > rkdeveloptool db rkbin/rk33/rk3399_loader_v1.08.106.bin
  > rkdeveloptool wl 0x40 idbloader.img
  > rkdeveloptool wl 0x4000 uboot.img
  > rkdeveloptool wl 0x6000 ./img/rk3399/trust.img
  > rkdeveloptool rd

Create a bootable SD/MMC
========================

The idbspl.img contains the first stage, and the u-boot.img the second stage.
As explained in the Rockchip partition table reference [1], the first stage
(aka loader1) start sector is 64, and the second stage start sector is 16384.

Each sector is 512 bytes, which means the first stage offset is 32 KiB,
and the second stage offset is 8 MiB.

Note: the second stage location is actually not as per the spec,
but defined by the SPL. Mainline SPL defines an 8 MiB offset for the second
stage.

Assuming the SD card is exposed by device /dev/mmcblk0, the commands
to write the two stages are:

  > dd if=idbspl.img of=/dev/mmcblk0 bs=1k seek=32
  > dd if=u-boot.itb of=/dev/mmcblk0 bs=1k seek=8192

Setting up the kernel and rootfs is beyond the scope of this document.

And that is it
==============

You should be able to get U-Boot log in console/UART2(baurdrate 1500000)

For more detail, please reference [2].

[1] http://opensource.rock-chips.com/wiki_Partitions
[2] http://opensource.rock-chips.com/wiki_Boot_option
