u-boot/board/theobroma-systems/ringneck_px30
Quentin Schulz 6acdd63e87 rockchip: ringneck-px30: always reset STM32 companion controller on boot
It's happened that glitches on the STM32_RST and STM32_BOOT lines have
put the STM32 companion microcontroller into DFU mode making it not boot
its FW, rendering it useless for the user.

Considering that the STM32 companion microcontroller is always reset on
a reboot or power cycle, resetting it once again in U-Boot SPL isn't
going to hurt it any more.

For ATtiny companion microcontroller, the situation is a bit different
because a reboot or power cycle doesn't reset it. Additionally, since it
can only be reset with a UPDI reset on the STM32_RST line, and that is
virtually impossible to mistakenly trigger, the ATtiny is unlikely to be
in unwanted reset or enter reset because U-Boot toggles STM32_RST line.

Cc: Quentin Schulz <foss+uboot@0leil.net>
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>
2023-11-10 10:58:56 -05:00
..
Kconfig rockchip: ringneck-px30: enforce ENV_IS_NOWHERE with Kconfig select 2023-04-21 15:16:00 +08:00
MAINTAINERS rockchip: add support for PX30 Ringneck SoM on Haikou Devkit 2023-01-16 18:01:11 +08:00
Makefile rockchip: add support for PX30 Ringneck SoM on Haikou Devkit 2023-01-16 18:01:11 +08:00
README rockchip: add support for PX30 Ringneck SoM on Haikou Devkit 2023-01-16 18:01:11 +08:00
ringneck-px30.c rockchip: ringneck-px30: always reset STM32 companion controller on boot 2023-11-10 10:58:56 -05:00

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

The PX30-uQ7 (Ringneck) SoM is a µQseven-compatible (40mmx70mm, MXM-230
connector) system-on-module from Theobroma Systems[1], featuring the
Rockchip PX30.

It provides the following feature set:
  * up to 4GB DDR4
  * up to 128GB on-module eMMC (with 8-bit 1.8V interface)
  * SD card (on a baseboard) via edge connector
  * Fast Ethernet with on-module TI DP83825I PHY
  * MIPI-DSI/LVDS
  * MIPI-CSI
  * USB
    - 1x USB 2.0 dual-role
    - 3x USB 2.0 host
  * on-module companion controller (STM32 Cortex-M0 or ATtiny), implementing:
    - low-power RTC functionality (ISL1208 emulation)
    - fan controller (AMC6821 emulation)
    - USB<->CAN bridge controller (STM32 only)
  * on-module Espressif ESP32 for Bluetooth + 2.4GHz WiFi
  * on-module NXP SE05x Secure Element

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

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=px30 bl31
  > cp build/px30/release/bl31/bl31.elf ../u-boot/bl31.elf

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

  > cd ../u-boot
  > make CROSS_COMPILE=aarch64-linux-gnu- ringneck-px30_defconfig all

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

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

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/PX30MINIALL.ini
  > cd ..
  > ./rkdeveloptool db rkbin/px30_loader_v1.16.131.bin
  > ./rkdeveloptool wl 64 ../u-boot-rockchip.bin