RK3399 boot sequence
Rockchip RK3399 boot sequence
This is for the Pine64 ROCKPro64 single board computer, and the Pinebook Pro laptop boot sequence details. While some of this may also apply to other RK3399 computers, that is up to the reader to make any appropriate changes.
There are 3 sections for the boot loader. They are in order, without gap, though their is no need to use all the space in each section.
Here are the details:
|64||16320||IDBLoader||SoC initialization code|
|16384||8192||OS loader||Generally U-Boot|
If a new U-Boot is supplied, it is generally installed similar to this;
# dd if=/boot/idbloader.img conv=notrunc seek=64 of=/dev/mmcblkX # dd if=/boot/u-boot.itb conv=notrunc seek=16384 of=/dev/mmcblkX
The RK3399 boots to multiple devices. Boot device selection is done in the following order, it can not be changed.
If a device is blank / un-used, the SoC code moves on to the next device in the list.
- SD card
However, whence the user boot code runs, it can then give priority to other devices, if available. The following devices are not directly bootable;
- USB 3
They can be made bootable by using one of the other devices as an initial boot loader. For example, several people have gotten their NVMe drives to be bootable, with "/boot" and "/" on the NMVe. This either entails using the SPI or eMMC has the initial boot loader, with code to support PCIe NVMe devices.
Boot loader development
There are several projects that have their own versions of U-Boot, with different features. Here are some of the more common ones at present, 2020/06/14;
- The original default Debian
- U-Boot mainline
Grub as the target of the boot loader
It is possible to use Grub as the target of U-Boot. This would allow;
- Selecting a different boot device
- Choosing a partition on a boot device for booting
- Different kernels
- Changes in kernel command line options
However, at present, Grub does not support the video & keyboard of the Pinebook Pro. So, any selection is done through the serial console.