You can use MacOS, Linux or Windows and here are the tutorial videos: MacOS, Linux and Windows. MacOS users can follow the same tutorial no matter you have an Apple chip or Intel CPU. You can run egos-2000 on the QEMU emulator or RISC-V boards. Running on QEMU is easier but if you wish to run it on the boards for fun, you need to purchase the following hardware:
- Arty A7-35T or A7-100T board
- a microUSB cable (e.g., microUSB-to-USB-C)
- a microSD Pmod, a microSD reader and a microSD card
Setup your working directory and name it as $EGOS
.
> export EGOS=/home/yunhao/egos
> cd $EGOS
> git clone https://github.com/yhzhang0128/egos-2000.git
Download the GNU toolchain from SiFive to $EGOS
and compile egos-2000.
> cd $EGOS
> tar -zxvf riscv64-unknown-elf-gcc-8.3.0-2020.04.1-x86_64-xxx-xxx.tar.gz
> export PATH=$PATH:$EGOS/riscv64-unknown...../bin
> cd $EGOS/egos-2000
> make
......
After this step, build/release
holds the ELF format executables and build/debug
holds the human readable assembly files.
Download the pre-built binaries of QEMU from xPack.
> cd $EGOS
> tar -zxvf xpack-qemu-riscv-8.2.2-1-xxxxxx.tar.gz
> export PATH=$PATH:$EGOS/xpack-qemu-riscv-8.2.2-1-xxxxxx/bin
> cd $EGOS/egos-2000
> make qemu
-------- Simulate on QEMU-RISCV --------
qemu-system-riscv32 -nographic -readconfig tools/qemu/config.toml
[CRITICAL] --- Booting on QEMU with core #4 ---
[INFO] Set the CS pin to HIGH and toggle clock.
[INFO] Set the CS pin to LOW and send cmd0 to SD card.
[INFO] Check SD card type and voltage with cmd8
[INFO] SD card replies cmd8 with status 0x01 and payload 0x000001aa
[SUCCESS] Finished initializing the tty and disk devices
[CRITICAL] Choose a memory translation mechanism:
Enter 0: page tables
Enter 1: software TLB
Instead, you can compile and install the latest QEMU from its official repository, which takes a few minutes.
> cd $EGOS
> git clone https://github.com/qemu/qemu.git
> mkdir qemu/build
> cd qemu/build
> ../configure --target-list=riscv32-softmmu
> make
...
> export PATH=$EGOS/qemu/build:$PATH
> cd $EGOS/egos-2000
> make qemu
You can use the Arty A7-35t or A7-100t board
and make sure to set the BOARD
variable in Makefile
correctly.
To use a microSD card on the board, you can program the microSD card with disk.img
using tools like balena Etcher.
Download OpenOCD v0.11.0-1 to $EGOS
and program bootROM.bin
to the on-board ROM.
> cd $EGOS
> tar -zxvf xpack-openocd-0.11.0-1-xxx-xxx.tar.gz
> export PATH=$PATH:$EGOS/xpack-openocd-0.11.0-1-xxx-xxx/bin
> cd $EGOS/egos-2000
> make program
-------- Program the on-board ROM --------
cd tools/openocd; time openocd -f 7series.txt
......
Info : sector 190 took 229 ms
Info : sector 191 took 243 ms # It will pause at this point for a while
Info : Found flash device 'micron n25q128' (ID 0x0018ba20)
real 1m37.926s
user 0m7.109s
sys 0m20.089s
To connect with the egos-2000 TTY:
- Press the
PROG
red button on the left-top corner of the Arty board - To restart, press the
RESET
red button on the right-top corner - For Linux users, type in your shell
> sudo chmod 666 /dev/ttyUSB1
> screen /dev/ttyUSB1 115200
......
[INFO] LiteX + VexRiscv (vendorid: 666)
[INFO] Press 'b' to enter BIOS instead of EGOS
[INFO] Loading EGOS binary from 0x2040_0000 to 0x8000_0000
[CRITICAL] --- Booting on Arty with core #0 ---
......
- For MacOS users, check your
/dev
directory for the TTY device name (e.g.,/dev/tty.usbserial-xxxxxx
)
Install Vivado Lab Edition which can be downloaded here. You may need to register a Xilinx account, but the software is free.
- Open Vivado Lab Edition and click "Open Hardware Manager"
- Click "Open target" and "Auto Connect"; the Arty board should appear in the "Hardware" window
- In the "Hardware" window, right click
xc7a35t
and click "Add Configuration Memory Device" - Choose memory device "mt25ql128-spi-x1_x2_x4" and click "Program Configuration Memory Device"
- In the "Configuration file" field, choose the
bootROM.bin
file created in step 2; Note that the tutorial video has shown how to generate thisbootROM.bin
file using Docker in Windows - Click "OK" and wait for the program to finish
In 2, if the Arty board doesn't appear, try to install Digilent Adept or reinstall the USB cable drivers following this post.
In 4, some Arty boards may use "s25fl128sxxxxxx0" or other memory device. If you choose the wrong one, 6 will tell you.
Lastly, to connect with the egos-2000 TTY, find your board in the "Device Manager" (e.g., COM6) and use PuTTY
to connect: