SOM-RK3588-Q7 Tiger

The RK3588-Q7 SoM is a Qseven-compatible (70mm x 70mm, MXM-230 connector) system-on-module from Theobroma Systems, featuring the Rockchip RK3588.

It provides the following feature set:

  • up to 16GB LPDDR4x

  • on-module eMMC

  • SD card (on a baseboard) via edge connector

  • Gigabit Ethernet with on-module GbE PHY

  • HDMI/eDP

  • MIPI-DSI

  • 4x MIPI-CSI (3x on FPC connectors, 1x over Q7)

  • HDMI input over FPC connector

  • CAN

  • USB

    • 1x USB 3.0 dual-role (direct connection)

    • 2x USB 3.0 host + 1x USB 2.0 host

  • PCIe

    • 1x PCIe 2.1 Gen3, 4 lanes

    • 2xSATA / 2x PCIe 2.1 Gen1, 2 lanes

  • on-module ATtiny816 companion controller, implementing:

    • low-power RTC functionality (ISL1208 emulation)

    • fan controller (AMC6821 emulation)

  • on-module Secure Element with Global Platform 2.2.1 compliant JavaCard environment

Here is the step-by-step to boot to U-Boot on SOM-RK3588-Q7 Tiger from Theobroma Systems.

Get DDR init (TPL) binary

git clone https://github.com/rockchip-linux/rkbin
cd rkbin
export ROCKCHIP_TPL=$(readlink -f bin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v*.bin | head -1)
sed -i 's/^uart baudrate=.*$/uart baudrate=115200/' tools/ddrbin_param.txt
sed -i 's/^uart iomux=.*$/uart iomux=2/' tools/ddrbin_param.txt
python3 ./tools/ddrbin_tool.py rk3588 tools/ddrbin_param.txt "$ROCKCHIP_TPL"
./tools/boot_merger RKBOOT/RK3588MINIALL.ini
export RKDB=$(readlink -f rk3588_spl_loader_v*.bin | head -1)

This will setup all required external dependencies for compiling U-Boot. This will be updated in the future once U-Boot gains support for open-source DRAM initialization in TPL.

Get TF-A

There are two possible options, pick one or the other. Note that the instructions need to be run from the rkbin directory.

Prebuilt binary from Rockchip

export BL31=$(readlink -f bin/rk35/rk3588_bl31_v*.elf | head -1)

Upstream

cd ../
git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git
cd trusted-firmware-a
make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3588 bl31
export BL31=$PWD/build/rk3588/release/bl31/bl31.elf

Build U-Boot

cd ../u-boot
make CROSS_COMPILE=aarch64-linux-gnu- tiger-rk3588_defconfig all

Note

If using upstream TF-A, one should disable SPL_ATF_NO_PLATFORM_PARAM symbol in U-Boot config (via e.g. make CROSS_COMPILE=aarch64-linux-gnu- menuconfig) which will, among other things, enable console output in TF-A.

This will build u-boot-rockchip.bin which can be written to an MMC device (eMMC or SD card).

Flash the image

Copy u-boot-rockchip.bin to offset 32k for SD/eMMC.

SD-Card

dd if=u-boot-rockchip.bin of=/dev/sdX seek=64

Note

Replace /dev/sdX to match your SD card kernel device.

eMMC

rkdeveloptool allows to flash the on-board eMMC via the USB OTG interface with help of the Rockchip loader binary.

To enter the USB flashing mode on Haikou baseboard, remove any SD card, insert a micro-USB cable in the Q7 USB P1 connector (P8), move SW5 switch into BIOS Disable mode, power cycle or reset the board and move SW5 switch back to Normal Boot mode. A new USB device should have appeared on your PC (check with lsusb -d 2207:350b).

To flash U-Boot on the eMMC with rkdeveloptool:

git clone https://github.com/rockchip-linux/rkdeveloptool
cd rkdeveloptool
autoreconf -i && CPPFLAGS=-Wno-format-truncation ./configure && make
./rkdeveloptool db "$RKDB"
./rkdeveloptool wl 64 ../u-boot-rockchip.bin