u-boot/board/theobroma-systems/puma_rk3399
Quentin Schulz 6a89465f3f rockchip: puma-rk3399: enforce ENV_IS_NOWHERE with Kconfig select
Instead of letting the compiler error out if CONFIG_ENV_IS_NOWHERE is
not selected by the user, let's just enforce it when the user builds for
Puma RK3399 so that no check needs to be performed by the compiler and
the configuration is always valid.

Suggested-by: Tom Rini <trini@konsulko.com>
Cc: Quentin Schulz <foss+uboot@0leil.net>
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
2023-04-21 15:16:00 +08:00
..
Kconfig rockchip: puma-rk3399: enforce ENV_IS_NOWHERE with Kconfig select 2023-04-21 15:16:00 +08:00
MAINTAINERS rockchip: puma/lion: update MAINTAINERS file 2022-01-07 09:30:44 -05:00
Makefile rockchip: ARM64: split RK3399-Q7 board off the RK3399-EVB board 2017-04-15 10:13:17 -06:00
puma-rk3399.c rockchip: puma-rk3399: enforce ENV_IS_NOWHERE with Kconfig select 2023-04-21 15:16:00 +08:00
README rockchip: puma-rk3399: migrate to u-boot-rockchip-spi.bin 2022-10-19 19:30:49 +08:00

Introduction
============

The RK3399-Q7 (Puma) is a system-on-module featuring the Rockchip
RK3399 in a Qseven-compatible form-factor.

RK3399-Q7 features:
	* CPU: ARMv8 64bit Big-Little architecture,
		* Big: dual-core Cortex-A72
		* Little: quad-core Cortex-A53
		* IRAM: 200KB
	* DRAM: 4GB-128MB dual-channel
	* eMMC: onboard eMMC
	* SD/MMC
	* GbE (onboard Micrel KSZ9031) Gigabit ethernet PHY
	* USB:
		* USB3.0 dual role port
		* 2x USB3.0 host, 1x USB2.0 host via onboard USB3.0 hub
	* Display: HDMI/eDP/MIPI
	* Camera: 2x CSI (one on the edge connector, one on the Q7 specified CSI ZIF)
	* NOR Flash: onboard SPI NOR
	* Companion Controller: onboard additional Cortex-M0 microcontroller
		* RTC
		* fan controller
		* CAN

Here is the step-by-step to boot to U-Boot on rk3399.

Get the Source and build ATF binary
===================================

  > git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git

Compile the ATF
===============

  > cd trusted-firmware-a
  > make CROSS_COMPILE=aarch64-linux-gnu- PLAT=rk3399 bl31
  > cp build/rk3399/release/bl31/bl31.elf ../u-boot/bl31.elf

Compile the U-Boot
==================

  > cd ../u-boot
  > make CROSS_COMPILE=aarch64-linux-gnu- puma-rk3399_defconfig all

Flash the image
===============

Copy u-boot-rockchip.bin to offset 32k for SD/eMMC.
Copy u-boot-rockchip-spi.bin to offset 0 for NOR-flash.

SD-Card
-------

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

eMMC
----

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

  > git clone https://github.com/rockchip-linux/rkdeveloptool
  > cd rkdeveloptool
  > autoreconf -i && ./configure && make
  > git clone https://github.com/rockchip-linux/rkbin.git
  > cd rkbin
  > ./tools/boot_merger RKBOOT/RK3399MINIALL.ini
  > cd ..
  > ./rkdeveloptool db rkbin/rk3399_loader_v1.25.126.bin
  > ./rkdeveloptool wl 64 ../u-boot-rockchip.bin

NOR-Flash
---------

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

  > git clone https://github.com/rockchip-linux/rkdeveloptool
  > cd rkdeveloptool
  > autoreconf -i && ./configure && make
  > git clone https://github.com/rockchip-linux/rkbin.git
  > cd rkbin
  > ./tools/boot_merger RKBOOT/RK3399MINIALL_SPINOR.ini
  > cd ..
  > ./rkdeveloptool db rkbin/rk3399_loader_spinor_v1.25.114.bin
  > ./rkdeveloptool ef
  > ./rkdeveloptool wl 0 ../u-boot-rockchip-spi.bin