RADXA / OKDO Rock 5B - a high-performance single-board computer
Advances in user-interface demands, easily seen in slot machines, show apparent demand for higher video performance. The OKDO Rock 5B can support up to three displays, making for a comfortable base for arcade projects. Furthermore, its high computing power makes it an attractive Raspberry Pi alternative.
A large board with high connectivity potential
Placing the OKDO Rock 5B next to the Raspberry Pi 4 leads to the results shown in the figure - obviously, the single-board computer is larger than its colleague. This, however, also has benefits - a careful look shows that the Rock 5B has two full-size HDMI outputs, whereas the Raspberry Pi 4 requires (often flimsy) HDMI adapters.
Furthermore, external storage can be added via multiple interfaces. In addition to the PCIe interface on the top, there is an eMMC module at the bottom. These two are interesting not only because of the potential for memory expansion but also due to their high vibrational robustness.
Figure. 1
Figure. 2
Another exciting aspect involves the presence of an RTC connector, as shown in the figure.
Figure. 3
In a fashion similar to the BIOS battery found on motherboards, this connector adds a standby power source. It can keep the real-time clock chip running, ensuring that valid wall clock time is available after start-up in a non-internet-connected state.
Similarly, the fan connector permits the addition of a PWM-controlled active fan and heatsink assembly - this can be useful if the board works in high compute-load scenarios.
Figure 4
Bring-up for experimentation
The most comfortable way to take possession of a newly purchased OKDO Rock 5B is the image rock-5b_debian_bullseye_kde_b39.img.xz - deploy it to a microSD card and start the process computer.
RADXA's development team is highly developer-focused, which is why SSH access is possible after the image has started - use the SSH client as shown below, substituting your IP address using the password rock:
tamhan@TAMHAN18:~$ ssh rock@192.168.1.102
rock@192.168.1.102's password:
After that, familiarisation can be achieved by performing a quick benchmark run using sysbench. The program can be downloaded from the public repositories using the command sudo apt-get install sysbench.
After that, the table shows the results achieved.
Command
Result
rock@rock-5b:~$ sysbench cpu run
CPU speed:
events per second: 2698.24
rock@rock-5b:~$ sysbench cpu run --num-threads=4
CPU speed:
events per second: 10847.04
rock@rock-5b:~$ sysbench cpu run --num-threads=8
CPU speed:
events per second: 14434.26
The RK3588 system-on-a-chip used in this process computer implements the big/little design pattern. This means that it has four Cortex-A76 and four Cortex-A55 cores - due to scheduling, performance-intensive tasks are first run on the high-performance cores, with the low-performance standby cores being spun up in case of need.
This explains why the jump from 4 to 8 cores does not scale linearly - normally, CPU benchmarks, by and large, scale linearly. Performing an iperf run yields results in the range of 940 Mb per second - the gigabit ethernet port is not constrained by the interface between the processor and ethernet controller.
ROCK 5B GPIO access
Interacting with external hardware is accomplished via the 40-pin-GPIO extension header. The GPIO transceivers are fully exposed using the SysFS interface to enable simple GPIO access.
In practice, the main issue is translating between the logical GPIO groups and the numeric IDs of the memory locations. For this, the company provides the process outlined in the figure.
Figure. 5
In the following steps, we will use pin GPIO4_B3, which is said to have a GPIO number of 139, according to the GPIO table found at https://wiki.radxa.com/Rock5/hardware/5b/gpio.
In the next step, a shell script is required. As in all other cases of SysFS use, the actual initialization happens by writing parameters to "magic" files:
#!/bin/bash
cd /sys/class/gpio
echo 139 > export
cd gpio139
echo out > direction
The actual writing process takes place in an endless loop:
while true
do
echo 1 > value # output high
echo 0 > value # output low
echo 1 > value # output high
echo 0 > value # output low
done
Emitting two waveforms makes practical sense, as the waveform can then be analyzed to determine the amount of time spent on the loop. In the case of our Rock 5B, the results are as shown in the two figures.
Figure. 6