Manivannan Sadhasivam | 6f219a1 | 2018-09-28 00:32:59 +0530 | [diff] [blame] | 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 |