目录
准备工作
- Ubuntu 16.04
- vivado 16.02
- zedboard
- 路由器和网线
- SD卡和读卡器
- java 1.8
- 了解scala和chisel,优势:
- 面向对象
- 函数式编程
- 类型参数化
- 类型推断
总体架构
生成verilog代码
执行命令
// 安装所需依赖
sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev libusb-1.0-0-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev device-tree-compiler pkg-config libexpat-dev
git clone https://github.com/ucb-bar/fpga-zynq
cd ./fpga-zynq/zedboard
make init-submodules
make rocket # sbt的bug的解决办法如下
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,使用vivado建议用root账户
执行命令
make project
source /opt/Xilinx/Vivado/2016.2/settings64.sh
vivado zedboard_rocketchip_ZynqFPGAConfig.xpr
# 之后进入GUI,点击Generate Bitstream
准备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
执行make boot.bin之前需要source /opt/Xilinx/SDK/2016.2/settings64.sh
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 RISCV=/home/qihao/Desktop/lab/riscv
export PATH=$PATH:$RISCV/bin
export MAKEFLAGS="$MAKEFLAGS -j8"
./build.sh
# 测试工具链
./regression.sh
连接zedboad
硬件
- zedborad连接电源
- 主机和zedboad使用网线连接在一个路由器上
- 使用USB-microUSB线将zedboard与PC相连,连接zedboard的USB-UART接口
- 将SD卡插入zedboard上
软件
使用minicom
- 配置minicom,如下:
- 执行
sudo minicom
,输入reset
,重置zedboard - 登录
- minicom,用户名和密码都是root
- ssh,
ssh root@192.168.1.5
,密码是root
测试
工具介绍
- spike, the ISA simulator。
- riscv-fesvr, 一种“前端”服务器,它在主机目标接口(HTIF)上为主机和目标处理器之间提供服务。
- riscv-pk, 一个代理内核,一个支持RISC-V ELF二进制轻量级的执行环境。
riscv-fesvr和pk
cd zedboard
make fesvr-zynq
scp ../common/build/fesvr-zynq root@192.168.1.5:/home/root/
scp ../common/build/libfesvr.so root@192.168.1.5:/usr/local/lib
scp $RISCV/riscv64-unknown-elf/bin/pk root@192.168.1.5:/home/root/
可执行文件
#include<stdio.h>
int main() {
printf("Hello qihao\n");
return 0;
}
riscv64-unknown-elf-gcc qihao.c -o qihao
scp ./qihao root@192.168.1.5:/home/root/
执行