准备工作

  • Ubuntu 16.04
  • vivado 16.02
  • zedboard
  • 路由器和网线
  • SD卡和读卡器

总体架构

Rocket之环境搭建
Rocket之环境搭建

生成verilog代码

执行命令

git clone https://github.com/ucb-bar/fpga-zynq
cd ./fpga-zynq
make init-submodules
cd ./zedboard
make rocket

sbt bug

[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn] 	::          UNRESOLVED DEPENDENCIES         ::
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::
[warn] 	:: edu.berkeley.cs#chisel3_2.11;3.2-SNAPSHOT: not found
[warn] 	::::::::::::::::::::::::::::::::::::::::::::::

download,之后解压,执行以下操作

cp -r cache/* ~/.ivy2/cache

生成bit流

安装vivado 2016.02

安装时要选择SDK

执行命令

make project
vivado zedboard_rocketchip_ZynqFPGAConfig.xpr
# 之后进入GUI,点击Generate Bitstream

准备SD卡文件

SD卡文件

SD文件内容

  • boot.bin
    • FSBL.elf . The FSBL will hand-off to u-boot once the processing system is setup
    • rocketchip_wrapper.bit
    • u-boot.elf.
  • uImage(ARM Linux).
  • uramdisk.image.gz(ARM RAMDisk).
  • devicetree.dtb.

格式化SD卡

  • 使用ubuntu的Disks工具(GUI)
  • 一个FAT32分区

创建文件并拷贝到SD卡上(读卡器)

创建文件参考here

RISCV工具链

使用fpga-zynq/rocket-chip/下的工具链

执行命令

安装所需软件参考here

cd ./fpga-zynq/rocket-chip/riscv-tools
git submodule update --init --recursive
# 安装目录,会包含可执行文件,静态和动态链接库
export RISCV=/path/to/install/riscv/toolchain
export MAKEFLAGS="$MAKEFLAGS -j8"
./build.sh
# 测试工具链
./regression.sh

连接zedboad

硬件

  • zedborad连接电源
  • 主机和zedboad使用网线连接在一个路由器上
  • 使用USB-microUSB线将zedboard与PC相连,连接zedboard的USB-UART接口
  • 将SD卡插入zedboard上

软件

使用minicom

  • 配置minicom,如下:
    Rocket之环境搭建
  • 执行sudo minicom,输入reset,重置zedboard
  • 登录

测试

工具介绍

  • spike, the ISA simulator。
  • riscv-fesvr, 一种“前端”服务器,它在主机目标接口(HTIF)上为主机和目标处理器之间提供服务。
  • riscv-pk, 一个代理内核,一个支持RISC-V ELF二进制轻量级的执行环境。

C代码(qihao.c)

#include<stdio.h>

int main() {
    printf("Hello qihao\n");
    return 0;
}

编译

riscv64-unknown-elf-gcc qihao.c -o qihao

拷贝到zedboard

scp ./qihao [email protected]:/home/root/

执行

Rocket之环境搭建

参考

相关文章: