ESWIN EIC7700 EVB

Tags: chip:eic7700x arch:risc-v vendor:eswin experimental

The ESWIN EIC7700 EVB, a development board carrying the EIC7700X SoC

ESWIN EIC7700 EVB

The EIC7700 EVB is ESWIN’s own evaluation board for the EIC7700X SoC. Where the PINE64 StarPro64 is a single board computer built around the chip, the EVB brings out most of the SoC’s interfaces, so it is the board to develop drivers on.

Features

  • ESWIN EIC7700X, 4 x RV64GC 1.4 GHz RISC-V cores

  • 16 GB LPDDR5

  • eMMC, microSD and SPI NOR flash, the last holding the boot firmware

  • 2 x Ethernet (GMAC, RGMII)

  • 2 x USB 3.0, host and device capable

  • HDMI output, with CEC

  • PCIe 3.0 slot, and two M.2 slots, for SATA and for a WiFi and Bluetooth module

  • USB serial console, RS232 on a DB9, and further UARTs on the headers

  • Expansion headers carrying GPIO, I2C, SPI and PWM

  • PWM fan header

Warning

This port is under development and drives a subset of the board. Peripheral Support below records what it drives.

Serial Console

The console is UART0 at 115200 8N1. It is wired to the on-board FT4232 USB bridge, so a single USB cable carries it and no separate USB serial adapter is needed. The bridge presents four ports, of which UART0 is the third; on Linux that is usually /dev/ttyUSB2, the first of the four being the JTAG interface:

$ screen /dev/ttyUSB2 115200

Buttons and LEDs

The board has four LEDs on GPIO lines 107 to 110 and one push button, OK, on GPIO line 6. NuttX does not drive any of them yet.

Power Supply

The board is powered through its barrel jack. The core rails, including the NPU rail, are set by regulators on I2C bus 1, which NuttX leaves alone: the firmware has already configured them by the time NuttX starts, and writing to them changes a core voltage.

RISC-V Toolchain

Install xPack GNU RISC-V Embedded GCC (riscv-none-elf) and add its bin directory to PATH, as described for the PINE64 StarPro64.

Building NuttX

Configure and build:

$ cd nuttx
$ tools/configure.sh eic7700-evb:nsh
$ make

Then build the applications filesystem and package it with the kernel:

$ make export
$ pushd ../apps
$ tools/mkimport.sh -z -x ../nuttx/nuttx-export-*.tar.gz
$ make import
$ popd
$ boards/risc-v/eic7700x/common/tools/mkimage.sh

The image is the kernel, then padding, then a RAM disk holding the applications. Use the script rather than padding by hand: the RAM disk is found at run time by searching memory for its header, and that search runs after BSS has been cleared, so the disk has to start above _ebss or it is zeroed before anything looks for it. The script reads _ebss from the kernel and pads to suit.

The result is Image-eic7700-evb.

Booting NuttX

The board boots over TFTP from U-Boot, as the PINE64 StarPro64 does. Copy Image-eic7700-evb and the device tree to the TFTP server:

$ wget https://github.com/lupyuen/nuttx-starpro64/raw/refs/heads/main/eic7700-evb.dtb
$ scp Image-eic7700-evb eic7700-evb.dtb tftpserver:/tftpfolder/

Interrupt U-Boot with Ctrl-C at power on and boot the image:

# Change to your TFTP Server
$ setenv tftp_server 192.168.x.x
$ saveenv
$ dhcp ${kernel_addr_r} ${tftp_server}:Image-eic7700-evb
$ tftpboot ${fdt_addr_r} ${tftp_server}:eic7700-evb.dtb
$ fdt addr ${fdt_addr_r}
$ booti ${kernel_addr_r} - ${fdt_addr_r}

NuttShell appears on the console.

Configurations

$ tools/configure.sh eic7700-evb:<config-name>

nsh

NuttShell on UART0 at 115200 8N1, with the RAM disk mounted and /proc available. Built-in applications are supported; none are enabled.

Peripheral Support

NuttX for the EIC7700 EVB supports these peripherals:

Peripheral

Support

NOTES

UART

Yes