User:Brendlefly62/Rockchip RK3288 Asus Tinker Board S
Construction of this page began 5 November 2023
This is an inexpensive armv7 SBC made by a very popular motherboard manufacturer (Asus). See details below. This system runs Gentoo Linux, with further objectives, as described below.
Overall status
This will eventually be a complete built-from-scratch system. Currently, the board has a Gentoo rootfs system, a custom amd64-cross-compiled kernel built using lernel.org upstream sources The board is currently still using the bootloader installed on the boot device by a distributed Debian image. The author's intent is to create a custom amd64-cross-compiled u-boot bootloader to replace the last remaining component "built by others."
Hardware
Make/model | Notes | |
---|---|---|
Board |
Asus Tinkerboard S | dtb: rk3288-tinker-s.dtb |
SoC |
Rockchip RK3399-T | datasheet |
RAM |
4GB | Dual-CH LPDDR3 2GB |
Firmware |
** Currently as provided by distributed Debian Image | To do: Custom-cross compile u-boot by on gentoo amd64 desktop PC |
Boot media |
eMMC*, SD Card
|
System will boot from either eMMC or SD Card, depending on position of "maskrom" jumper header. Note that author has replace the jumper with a SPDT switch, to facilitate easy selection of boot device. PXE not tested but should be available once custom u-boot is developed (supported by u-boot standard). USB boot option also exists in u-boot documentation, but it was not tested (and there may be issues with that).[1][2] |
SoC
Rockchip RK3288
- kernel: Author's custom amd64-cross-compiled 6.5.4 (Linux tinker04 6.5.4 #1 SMP Tue Sep 19 15:28:12 EDT 2023 armv7l ARMv7 Processor rev 1 (v7l) Rockchip (Device Tree) GNU/Linux)
Device | Make/model*
|
Status | kernel drivers | Notes |
---|---|---|---|---|
CPU | Rockchip RK3288 Cortex-A17 Quad-core SoC* | Works | The CPU will operate at full capacity, but requires heat
dissipation and AC adapter stability | |
GPU | ARM MaliTM-T760 MP4 GPU
1 x HDMI* supports up to 4K 1 x 15-pin MIPI DSI supports up to HD |
Works | midgard | HDMI supports a maximum resolution of up to 4K, and the iGPU
only supports H.264/H.265 4K hardware decoders |
Memory | Dual-CH LPDDR3 2GB | Works | ||
Storage | 16GB eMMC
μSD card |
Works | ||
Audio | RTL ALC4040 Codec with 1 x 3.5mm audio jack (192k/24bit HD Audio) | Not tested | ||
Camera | MIPI CSI 2 lanes via FPC connector, support up to 800 MP camera (0.3mm pitch connector). | Works | Works - but tested with distributed Android OS only | |
Wireless | AW-NB177NF 802.11 b/g/n wireless
BT 4.0 + EDR |
Not tested | r8723bs | |
USB | 4 x USB 2.0 ports | Works | usbhid,
usb-storage, dwc2_hsotg |
|
Ethernet | RTL8211E-VB-CG GB LAN | Works | st_gmac | |
IO | 1 x 40-pin header includes: up to 28 x GPIO pins; up to 2 x SPI bus; up to 2 x I2C bus; up to 2 x PWM; up to 1 x PCM/I2S; 2 x 5V power pins; 2 x 3.3V power pins; 8 x ground pins
1 x 4-pin header for Power On and eMMC Recovery (author employs with spdt boot dev select switch) 1 x 2-pin contact point includes 1 x PWM signal; 1 x S/PDIF signal |
Works | ||
Others | RTC | Not tested | ||
Power | MicroUSB | Works | Recommneded to use with 5V/3A PSU |
Accessories
- Standard (shipped in kit): heat sinks
- Added my author - case, fan, and power supply.
- (optional) Keyboard, mouse, HDMI cable, and FTDIboard-with-miniUSB cable
Peripherals
Component | Make/model | Status | Kernel driver(s) | Notes |
---|---|---|---|---|
PMIC | Rockchip RK808 | Works | rk808 | Power Management Integrated Circuit (Regulators, Clocking)[3][4] |
Ethernet PHY | RTL8211E-VB-CG | Works | realtek_phy | via RGMII |
Analog Audio | ? |
Board Layout
Mask ROM, eMMC Recovery jumpers
The TinkerBoard and TinkerBoard S come with a four-pin header for setting jumper(s) to enable recovery of the contents of the eMMC. When set to "Mask ROM" and connected via USB to a PC, the board's boot process will bypass the bootloader on the eMMC and the board will appear as a USB-attached flash storage device. This enables the user to easily (re)flash write an OS image to the eMMC.
Jumper configurations
board "default disable" "eMMC Recovery" edge aka "Park" aka "Mask ROM" | jumper position jumper position | | + + + + | | | | | +------+ + +
Alternatively, with the jumper in this position while a bootable SD card is inserted in the SD card reader, then the board will boot from the SD card. Thus, the author has replaced the normal jumper with a SPDT switch, to enable easy selection of one of two bootable storage devices.
Boot device select switch
"eMMC board Recovery" edge (boot SD card) | | | | | + + | \ | \ | + + ---- COM | | | | | default | disable | (boot eMMC)
There is also a "Power ON" jumper setting that documentation indicates can be used when the DC power supply is not switchable, to power down the board. The author has not tested this.
board "Power On" edge (untested) | jumper position | | + + | | | | | + +
Serial Console Setup
To use for troubleshooting and viewing bootloader console output, connect UART3 RX/TX to a serial/USB converter as described in the TinkerBoard Developer Guide.
The TInkerBoard defconfig sets up the bootloader to use UART3 on physical pins 36, 37 of the 40 pin GPIO header (unlike some other boards which default-setup UART serial I/O on pins 8, 10.
GCC optimization[5]
COMMON_FLAGS="-march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=hard -O2"
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
For a hardened system consider appending
-fstack-protector-all
hardfloat flags will result in complied code that will not run on (or integrate well with code that was compiled for) softfloat cpus. If error messages about vfp differences are observed, this could be the cause.
Gentoo Installation Options and Procedures
Getting to Know the Board
The purpose of this guide is to document "from scratch" procedures for installing a pure gentoo system on this SBC. However the quicker way to get Gentoo up and running is to install another distribution, and replace the root file system contents. Start by consulting User:Brendlefly62/Rockchip_RK3288_Asus_Tinker_Board_S/Getting to Know the Board
Bootloader Build and Installation
To build a U-Boot bootloader from sources, see User:Brendlefly62/Rockchip_RK3288_Asus_Tinker_Board_S/Build-Install-U-Boot
Assemble a Working Gentoo System
To assemble a working Gentoo system with minimal effort, using resources developed above, consult User:Brendlefly62/Rockchip_RK3288_Asus_Tinker_Board_S/Assemble a Gentoo System
Kernel Build and Installation
To build a gentoo linux kernel (including modules, device tree blobs, etc) from sources, see User:Brendlefly62/Rockchip_RK3288_Asus_Tinker_Board_S/build_install_kernel
Install a Gentoo System "From Scratch"
By Hand
To "manually" build a linux system from scratch, see linkname_tbd
With some automation...
To build a gentoo linux system with tools that automate many of the steps entailed in procedures described above, see linkname_tbd
Binary Kernel/Firmware packages
To use pre-built binary packages for linux kernel, molules, dtbs, and bootloader, see linkname_tbd/Pre-built-binary-packages
Bootable gentoo system images
To use pre-built bootable system images files, see linkname_tbd/Bootable-System-Images
Issue 1
When X happens, Y is how you fix it.
See also
(Optional section.)
External resources
- https://www.asus.com/us/networking-iot-servers/aiot-industrial-solutions/all-series/tinker-board/
- https://github.com/TinkerBoard/TinkerBoard/wiki/Developer-Guidecaution: tinkerboard vs tinkerboard2
- https://github.com/TinkerBoard/TinkerBoard/wiki/Developer-Guide#how-to-use-serial-console-debug
- RK3288 Tinkerboard S datasheet, retrieved 27 September 2023
- How to Compile Armbian: Step-by-Step Tutorial for Beginners , first visit circa 23 September 2023
- Debug output in "somewhat successful build" First accessed 28 September 2023 (useful lsmod list and dmesg hardware/driver recognition information)
- https://opensource.rock-chips.com/wiki_U-Boot#Build_U-Boot
- https://github.com/u-boot/u-boot/blob/master/doc/README.rockchip
- https://u-boot.readthedocs.io/en/latest/build/source.html
- Old Gentoo Forums discussion of Gentoo on TinkerBoard
- Debian Kernel releases for TinkerBoard
- https://github.com/TinkerBoard/TinkerBoard/wiki/Developer-Guide
- https://github.com/TinkerBoard/TinkerBoard/wiki/Developer-Guide#how-to-use-serial-console-debug
References (Footnotes in the text above)
- ↑ PINE64 ROCKPro64#Issues
- ↑ https://gitlab.manjaro.org/manjaro-arm/packages/core/uboot-rockpro64/-/issues/4
- ↑ https://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1903318.html
- ↑ Fuzhou Rockchip Electronics Co., Ltd., RK808 Datasheet V0.8 (PDF), PINE64. Retrieved on January 25th, 2021
- ↑ PINE64 ROCKPro64#GCC optimization