U-Boot for Anbernic RGxx3 Devices

This allows U-Boot to boot the following Anbernic devices:

  • Anbernic RG-ARC-D

  • Anbernic RG-ARC-S

  • Anbernic RG353M

  • Anbernic RG353P

  • Anbernic RG353PS

  • Anbernic RG353V

  • Anbernic RG353VS

  • Anbernic RG503

Additionally, the following very similar non-Anbernic devices are also supported:

  • Powkiddy RGB10MAX3

  • Powkiddy RGB30

  • Powkiddy RK2023

The correct device is detected automatically by comparing ADC values from ADC channel 1. In the event of an RG353V or RG353P, an attempt is then made to probe for an eMMC and if it fails the device is assumed to be an RG353VS or RG353PS. Based on the detected device, the environment variables “board”, “board_name”, and “fdtfile” are set to the correct values corresponding to the board which can be read by a boot script to boot with the correct device tree. If a board is defined as requiring panel detection, a panel detect is then performed by probing a “dummy” display on the DSI bus and then querying the display ID. The display ID is then compared to a table to get the known compatible string for use in Linux, and this string is saved as an environment variable of “panel”.

FDT fixups are performed in the event of an RG353M to change the device name, or in the event the panel detected does not match the devicetree. This allows Linux to load the correct panel driver without having to know exactly which panel is used (as there is no user distingushable way to tell).

Building U-Boot

$ export CROSS_COMPILE=aarch64-linux-gnu-
$ export BL31=../rkbin/bin/rk35/rk3568_bl31_v1.34.elf
$ export ROCKCHIP_TPL=../rkbin/bin/rk35/rk3568_ddr_1056MHz_v1.13.bin
$ make anbernic-rgxx3_defconfig
$ make

This will build u-boot-rockchip.bin which can be written to an SD card.

Image installation

Write the u-boot-rockchip.bin to an SD card offset 32kb from the start. Please note that eMMC booting has not been tested at this time.

$ dd if=u-boot-rockchip.bin of=/dev/mmcblk0 bs=512 seek=64