Merge tag 'for-master-20181206' of git://git.denx.de/u-boot-rockchip
[oweals/u-boot.git] / board / vamrs / rock960_rk3399 / README
1 Contents
2 ========
3
4 1. Introduction
5 2. Get the Source and prebuild binary
6 3. Compile the U-Boot
7 4. Compile the rkdeveloptool
8 5. Package the image
9    5.1. Package the image for U-Boot SPL(option 1)
10    5.2. Package the image for Rockchip miniloader(option 2)
11 6. Bootloader storage options
12 7. Flash the image to eMMC
13    7.1. Flash the image with U-Boot SPL(option 1)
14    7.2. Flash the image with Rockchip miniloader(option 2)
15 8. Create a bootable SD/MMC
16 9. And that is it
17
18 Introduction
19 ============
20
21 Rock960 board family consists of Rock960 (Consumer Edition) and
22 Ficus (Enterprise Edition) 96Boards featuring Rockchip RK3399 SoC.
23
24 Common features implemented on both boards:
25         * CPU: ARMv8 64bit Big-Little architecture,
26                 * Big: dual-core Cortex-A72
27                 * Little: quad-core Cortex-A53
28                 * IRAM: 200KB
29         * eMMC: 16/32GB eMMC 5.1
30         * PMU: RK808
31         * SD/MMC
32         * Display: HDMI/DP/MIPI
33         * Low Speed Expansion Connector
34         * High Speed Expansion Connector
35
36 Additional features of Rock960:
37         * DRAM: 2GB/4GB LPDDR3 @ 1866MHz
38         * 1x USB 3.0 type A, 1x USB 2.0 type A (host mode only),
39           1x USB 3.0 type C OTG
40
41 Additional features of Ficus:
42         * DRAM: 2GB/4GB DDR3 @ 1600MHz
43         * Ethernet
44         * 2x USB 3.0 type A, 2x USB 2.0 type A (host mode only),
45           1x USB 3.0 type C OTG
46
47 Here is the step-by-step to boot to U-Boot on Rock960 boards.
48
49 Get the Source and prebuild binary
50 ==================================
51
52   > git clone https://github.com/96rocks/rkbin.git
53   > git clone https://github.com/rockchip-linux/rkdeveloptool.git
54
55 Compile the U-Boot
56 ==================
57
58   > cd ../u-boot
59   > cp ../rkbin/rk33/rk3399_bl31_v1.00.elf ./bl31.elf
60   > export ARCH=arm64
61   > export CROSS_COMPILE=aarch64-linux-gnu-
62   > make rock960-rk3399_defconfig
63   > make
64   > make u-boot.itb
65
66 Compile the rkdeveloptool
67 =========================
68
69 Follow instructions in latest README
70   > cd ../rkdeveloptool
71   > autoreconf -i
72   > ./configure
73   > make
74   > sudo make install
75
76 Package the image
77 =================
78
79 Package the image for U-Boot SPL(option 1)
80 --------------------------------
81   > cd ..
82   > tools/mkimage -n rk3399 -T rksd -d spl/u-boot-spl.bin idbspl.img
83
84   Get idbspl.img in this step.
85
86 Package the image for Rockchip miniloader(option 2)
87 ------------------------------------------
88   > cd ../rkbin
89   > ./tools/loaderimage --pack --uboot u-boot/u-boot-dtb.bin uboot.img 0x200000
90
91   > ../u-boot/tools/mkimage -n rk3399 -T rksd -d rk3399_ddr_933MHz_v1.08.bin idbloader.img
92   > cat ./rk33/rk3399_miniloader_v1.06.bin >> idbloader.img
93
94   Get uboot.img and idbloader.img in this step.
95
96 Bootloader storage options
97 ==========================
98
99 There are a few different storage options for the bootloader.
100 This document explores two of these: eMMC and removable SD/MMC.
101
102 Flash the image to eMMC
103 =======================
104
105 Flash the image with U-Boot SPL(option 1)
106 -------------------------------
107 Power on(or reset with RESET KEY) with MASKROM KEY preesed, and then:
108   > rkdeveloptool db rkbin/rk33/rk3399_loader_v1.08.106.bin
109   > rkdeveloptool wl 64 u-boot/idbspl.img
110   > rkdeveloptool wl 0x4000 u-boot/u-boot.itb
111   > rkdeveloptool rd
112
113 Flash the image with Rockchip miniloader(option 2)
114 ----------------------------------------
115 Power on(or reset with RESET KEY) with MASKROM KEY preesed, and then:
116   > rkdeveloptool db rkbin/rk33/rk3399_loader_v1.08.106.bin
117   > rkdeveloptool wl 0x40 idbloader.img
118   > rkdeveloptool wl 0x4000 uboot.img
119   > rkdeveloptool wl 0x6000 ./img/rk3399/trust.img
120   > rkdeveloptool rd
121
122 Create a bootable SD/MMC
123 ========================
124
125 The idbspl.img contains the first stage, and the u-boot.img the second stage.
126 As explained in the Rockchip partition table reference [1], the first stage
127 (aka loader1) start sector is 64, and the second stage start sector is 16384.
128
129 Each sector is 512 bytes, which means the first stage offset is 32 KiB,
130 and the second stage offset is 8 MiB.
131
132 Note: the second stage location is actually not as per the spec,
133 but defined by the SPL. Mainline SPL defines an 8 MiB offset for the second
134 stage.
135
136 Assuming the SD card is exposed by device /dev/mmcblk0, the commands
137 to write the two stages are:
138
139   > dd if=idbspl.img of=/dev/mmcblk0 bs=1k seek=32
140   > dd if=u-boot.itb of=/dev/mmcblk0 bs=1k seek=8192
141
142 Setting up the kernel and rootfs is beyond the scope of this document.
143
144 And that is it
145 ==============
146
147 You should be able to get U-Boot log in console/UART2(baurdrate 1500000)
148
149 For more detail, please reference [2].
150
151 [1] http://opensource.rock-chips.com/wiki_Partitions
152 [2] http://opensource.rock-chips.com/wiki_Boot_option