Please enable javascript, or click here to visit my ecommerce web site powered by Shopify.
Jump to: navigation, search


< Rockpi4‎ | dev
    ROCK Pi 4 >  Development >  U-Boot

Build U-Boot and run it on ROCK Pi 4

This guide describes how to build U-Boot and run it on ROCK Pi 4. U-Boot images could be installed into eMMC module, Micro SD Card and SPI Flash, etc.

Hardware required

  • ROCK Pi 4 mainboard
  • An eMMC module or a MicroSD Card or SPI Flash soldered on board
  • Power adapter
  • USB Male A to Male A cable(important).
  • A PC/laptop running Linux

Build U-Boot

Step 1: Get the source code

You need Git to get multiple git repositories to build the image.

Install Git if you don't have it.

   sudo apt-get update && sudo apt-get install -y git

Clone the source code

   git clone --recursive

You will get

   build  kernel  rkbin  rootfs  u-boot

Directories usage introductions:

  • build:
    • Some script files and configuration files for building u-boot, kernel and rootfs.
  • kernel:
    • kernel source code, current version is 4.4
  • rkbin:
    • Prebuilt Rockchip binaries, include first stage loader and ATF(Arm Trustzone Firmware).
  • rootfs:
    • Bootstrap a Debian based rootfs, support architechture armhf and arm64, support Debian Jessie and Stretch.
  • u-boot:
    • u-boot as the second stage bootloader

There are two branches for ROCK Pi 4 U-Boot. One is stable-4.4-rockpi4 and the other is rk3399-pie-gms-express-baseline.
Specially the branch rk3399-pie-gms-express-baseline supports SPI-NVME-Boot.

Step 2: Install build tools
 sudo apt-get install -y gcc-aarch64-linux-gnu device-tree-compiler libncurses5 libncurses5-dev
 sudo apt-get install -y bc python dosfstools flex build-essential libssl-dev mtools
Step 3: Build U-boot
  • If you use the ROCK Pi 4A
 ./build/ rockpi4a
  • If you use the ROCK Pi 4B
 ./build/ rockpi4b
  • If you use the ROCK Pi 4C
 ./build/ rockpi4c

And then you can get the directory, out, of all the generated images.

Flash U-Boot

The prepared tools are dd provided by coreutils and rkdeveloptool.
dd is used for Micro SD Card and eMMC module while rkdeveloptool is used for eMMC moduel and SPI Flash.

Method 1: Flash U-Boot to eMMC module

Insert an empty eMMC module on your ROCK Pi 4

Use the USB Male A to Male A cable to connected your PC and ROCK Pi4 and then type

 rkdeveloptool ld

You can see the output just like this

 DevNo=1	Vid=0x2207,Pid=0x330c,LocationID=302	Maskrom

You can using this command to flash U-boot

 cd ./out/u-boot
 sudo rkdeveloptool db ../../rkbin/bin/rk33/rk3399_loader_v1.12.112.bin
 sudo rkdeveloptool wl 0x40 idbloader.img
 sudo rkdeveloptool wl 0x4000 uboot.img
 sudo rkdeveloptool wl 0x6000 trust.img
 sudo rkdeveloptool rd
Method 2: Flash U-Boot to SPI Flash

The u-boot SPI image are generated at out/u-boot/spi

├── idbloader-spi.img                     # first stage loader
├── rk3399_loader_spinor_v1.15.114.bin    # USB downloader helper for SPI flash
├── uboot-trust-spi.img                   # Packed SPI image with idbloader, u-boot.img and trust.img
└── uboot-trust-spi.img.md5               # md5 checksum for the packed SPI image

The method of flashing U-Boot to SPI Flash is quite similar to eMMC module. See this guide.

Method 3: Update U-Boot on Micro SD Card/eMMC module

For Micro SD Card, need Micro SD Card Reader.

For eMMC module, both USB 3.0 eMMC Reader and eMMC to Micro SD Card Converter Board are available. Just choose one kind.

On Host Linux, the device is shown as /dev/sdx (x: a, b, c....)

 cd ./out/u-boot
 sudo dd if=./idbloader.img of=/dev/sdx bs=512 seek=64
 sudo dd if=./uboot.img of=/dev/sdx bs=512 seek=16384
 sudo dd if=./trust.img of=/dev/sdx bs=512 seek=24576

U-boot Usage


1. See discussion about OTG Flashing not working. .