PINE64 Star64
Star64 is a 64-bit RISC-V based Single Board Computer powered by StarFive JH7110 Quad-Core SiFive U74 64-Bit CPU, Imagination Technology BX-4-32 GPU and supports up to 8GB 1866MHz LPDDR4 memory.
It provides an eMMC module socket, MicroSD Card slot, PCI-e, Pi-2 Bus, USB 3.0 and many other peripheral interfaces for makers to integrate with sensors and other devices.
Features
- System on Chip: StarFive JH7110
CPU: SiFive RISC-V U74 Application Cores (4 cores, RV64GCB) and SiFive RISC-V S7 Monitor Core (single core, RV64IMACB)
GPU: Imagination Technology BXE-4-32
RAM: LPDDR4 2GB / 4GB / 8GB
Video: Digital Video Output up to 4K @ 30 Hz, 4K HDR @ 60 fps
Audio: 3.5mm Audio Jack
Ethernet: Single or Dual 10 / 100 / 1000Mbps
Wireless: 2.4 GHz / 5 Ghz MIMO WiFi 802.11 b/g/n/ac with Bluetooth 5.2 (Realtek RTL8852BU)
Storage: 128 Mbit (16 MByte) XSPI NOR flash Memory, Bootable microSD (SDHC and SDXC up to 256 GB), Bootable eMMC
USB: 1 x USB 3.0 Dedicated Host Port, 3 x USB 2.0 Host Ports
Expansion Ports: PCIe 2.0 x 1 lane, 2 x 20 pins “Pi2” GPIO Header
MIPI DSI Port: 4-lane MIPI DSI port for LCD Panel
MIPI CSI Port: 4-lane MIPI CSI port for Camera Module
Serial Console
A USB Serial Adapter (like CH340G Serial Adapter) is required to run NuttX on Star64.
Connect the USB Serial Adapter to Star64’s GPIO Header at:
USB Serial |
GPIO Header |
---|---|
GND |
Pin 6 (GND) |
RX |
Pin 8 (UART0 TX) |
TX |
Pin 10 (UART0 RX) |
On the USB Serial Adapter, set the Voltage Level to 3V3.
Connect Star64 to our computer with the USB Serial Adapter. On our computer, start a Serial Terminal and connect to the USB Serial Port at 115.2 kbps.
NuttX will appear in the Serial Console when it boots on Star64.
RISC-V Toolchain
Before building NuttX for Star64, download the RISC-V Toolchain riscv64-unknown-elf from SiFive RISC-V Tools.
Add the downloaded toolchain riscv64-unknown-elf-toolchain-.../bin
to the PATH
Environment Variable.
Check the RISC-V Toolchain:
$ riscv64-unknown-elf-gcc -v
Building
To build NuttX for Star64, install the prerequisites and
clone the git repositories for nuttx
and apps
.
Configure the NuttX project and build the project:
$ cd nuttx
$ tools/configure.sh star64:nsh
$ make
$ riscv64-unknown-elf-objcopy -O binary nuttx nuttx.bin
This produces the NuttX Kernel nuttx.bin
. Next, build the NuttX Apps Filesystem:
$ make export
$ pushd ../apps
$ tools/mkimport.sh -z -x ../nuttx/nuttx-export-*.tar.gz
$ make import
$ popd
$ genromfs -f initrd -d ../apps/bin -V "NuttXBootVol"
This generates the Initial RAM Disk initrd
.
Download the Device Tree jh7110-visionfive-v2.dtb
from StarFive VisionFive2 Software Releases
into the nuttx
folder.
Inside the nuttx
folder, create a Text File named nuttx.its
with the following content:
/dts-v1/;
/ {
description = "NuttX FIT image";
#address-cells = <2>;
images {
vmlinux {
description = "vmlinux";
data = /incbin/("./nuttx.bin");
type = "kernel";
arch = "riscv";
os = "linux";
load = <0x0 0x40200000>;
entry = <0x0 0x40200000>;
compression = "none";
};
ramdisk {
description = "buildroot initramfs";
data = /incbin/("./initrd");
type = "ramdisk";
arch = "riscv";
os = "linux";
load = <0x0 0x46100000>;
compression = "none";
hash-1 {
algo = "sha256";
};
};
fdt {
data = /incbin/("./jh7110-visionfive-v2.dtb");
type = "flat_dt";
arch = "riscv";
load = <0x0 0x46000000>;
compression = "none";
hash-1 {
algo = "sha256";
};
};
};
configurations {
default = "nuttx";
nuttx {
description = "NuttX";
kernel = "vmlinux";
fdt = "fdt";
loadables = "ramdisk";
};
};
};
Package the NuttX Kernel, Initial RAM Disk and Device Tree into a Flat Image Tree:
$ sudo apt install u-boot-tools
$ mkimage -f nuttx.its -A riscv -O linux -T flat_dt starfiveu.fit
The Flat Image Tree starfiveu.fit
will be copied to a microSD Card
in the next step.
Booting
NuttX boots on Star64 via a microSD Card. To prepare the microSD Card, download the microSD Image sdcard.img from StarFive VisionFive2 Software Releases.
Write the downloaded image to a microSD Card with Balena Etcher or GNOME Disks.
Copy the file starfiveu.fit
from the previous section
and overwrite the file on the microSD Card.
Check that Star64 is connected to our computer via a USB Serial Adapter.
Insert the microSD Card into Star64 and power up Star64. NuttX boots on Star64 and NuttShell (nsh) appears in the Serial Console.
To see the available commands in NuttShell:
$ help
Booting NuttX over TFTP is also supported on Star64.
Configurations
nsh
Basic configuration that runs NuttShell (nsh). This configuration is focused on low level, command-line driver testing. Built-in applications are supported, but none are enabled. Serial Console is enabled on UART0 at 115.2 kbps.
Peripheral Support
NuttX for Star64 supports these peripherals:
Peripheral |
Support |
NOTES |
---|---|---|
UART |
Yes |