summaryrefslogtreecommitdiffstats
path: root/Documentation/boards/rockchip.rst
blob: d52d979cbf2a10ed466462307bebd5a94620ec01 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Rockchip RK3188
===============

Radxa Rock
----------

Radxa Rock is a small SBC based on Rockchip RK3188 SoC.
See http://radxa.com/Rock for additional information.

Building
^^^^^^^^

.. code-block:: sh

  make ARCH=arm radxa_rock_defconfig
  make ARCH=arm

Creating bootable SD card
^^^^^^^^^^^^^^^^^^^^^^^^^

This will require a DRAM setup blob and additional utilities, see above.

Card layout (block == 0x200 bytes).

============   ==========================================
Block Number   Name
============   ==========================================
0x0000         DOS partition table
0x0040         RK bootinfo (BootROM check sector)
0x0044         DRAM setup routine
0x005C         Bootloader (barebox)
0x0400         Barebox environment
0x0800         Free space start
============   ==========================================

Instructions.

* Make 2 partitions on SD for boot and root filesystems.
* Checkout and compile https://github.com/apxii/rkboottools
* Get some RK3188 bootloader from https://github.com/neo-technologies/rockchip-bootloader
* Run "rk-splitboot RK3188Loader(L)_V2.13.bin" command. (for example).
  You will get FlashData file with others. It's a DRAM setup blob.
* Otherwise it can be borrowed from RK U-boot sources from
  https://github.com/linux-rockchip/u-boot-rockchip/blob/u-boot-rk3188/tools/rk_tools/3188_LPDDR2_300MHz_DDR3_300MHz_20130830.bin
* Run "rk-makebootable FlashData barebox-radxa-rock.bin rrboot.bin"
* Insert SD card and run "dd if=rrboot.bin of=</dev/sdcard> bs=$((0x200)) seek=$((0x40))"
* SD card is ready

Rockchip RK3568
===============

RK3568 EVB
----------

Building
^^^^^^^^

The build process needs three binary files which have to be copied from the
`rkbin https://github.com/rockchip-linux/rkbin` repository to the barebox source tree:

.. code-block:: sh
  cp $RKBIN/bin/rk35/rk3568_bl31_v1.24.elf firmware/rk3568-bl31.bin
  cp $RKBIN/bin/rk35/rk3568_bl32_v1.05.bin firmware/rk3568-op-tee.bin
  cp $RKBIN/bin/rk35/rk3568_ddr_1560MHz_v1.08.bin arch/arm/boards/rockchip-rk3568-evb/sdram-init.bin

With these barebox can be compiled as:

.. code-block:: sh

  make ARCH=arm rockchip_v8_defconfig
  make ARCH=arm

**NOTE** I found the bl32 firmware non working for me as of 7d631e0d5b2d373b54d4533580d08fb9bd2eaad4 in the rkbin repository.

Creating a bootable SD card
^^^^^^^^^^^^^^^^^^^^^^^^^^^

A bootable SD card can be created with:

.. code-block:: sh

  dd if=images/barebox-rk3568-evb.img of=/dev/sdx bs=1024 seek=32

The barebox image is written to the raw device, so make sure the partitioning
doesn't conflict with the are barebox is written to. Starting the first
partition at offset 8MiB is a safe bet.

USB bootstrapping
^^^^^^^^^^^^^^^^^

The RK3568 can be bootstrapped via USB for which the rk-usb-loader tool in the barebox
repository can be used. The tool takes the same images as written on SD cards:

.. code-block:: sh

  ./scripts/rk-usb-loader images/barebox-rk3568-evb.img

Note that the boot order of the RK3568 is not configurable. The SoC will only enter USB
MaskROM mode when no other bootsource contains a valid bootloader. This means to use USB
you have to make all other bootsources invalid by removing SD cards and shortcircuiting
eMMCs. The RK3568 EVB has a pushbutton to disable the eMMC.