Nutshell的介绍以及启动过程¶
Nutshell处理器的介绍
NutShell是使用Chisel语言模块化设计的,基于RISC-V RV64开放指令集的顺序单发射处理器实现,隶属于国科大与计算所“一生一芯”项目。这款处理器的很多设计受到了NOOP(南京大学教学用五级流水线处理器)的影响.
Nutshell相关代码及设计参考:https://github.com/OSCPU/NutShell-doc
Nutshell的板卡启动过程
针对FPGA的PL(Programmable Logic)部分,我们在PYNQ-Z2板卡上采用SD卡分区烧录的方法启动系统。
编译riscv-linux内核
1.1 下载安装GNU-RISCV工具链riscv-toolchain
. Ubuntu 18.04或者Debian 10以上:sudo apt-get install g++-riscv64-linux-gnu
. 可以使用OSCPU提供的编译工具:https://github.com/LvNA-system/labeled-RISC-V/releases/download/v0.1.0/riscv-toolchain-2018.05.24.tar.gz
1.2 使用交叉编译工具链编译riscv-linux内核
1.2.1 设置环境变量
将riscv-toolchainn-2018.05.24变量添加到路径中,便于使用riscv64-unknown-linux-gnu-gcc,riscv64-unknown-elf-gcc等编译工具链
1.2.2 下载内核源,分支切换到zynq-standalone
源码:https://github.com/OSCPU/riscv-linux.git
1.2.3 编译内核
make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu- zynq_standalone_defconfig
make ARCH=riscv CROSS_COMPILE=riscv64-unknown-linux-gnu-
编译成功后,在riscv-linux目录下生成vmlinux内核镜像文件
编译riscv-pk
下载riscv-pk,切换到zynq-standalone分支 https://github.com/OSCPU/riscv-pk.git,编译后在build目录下生成bbl.bin文件
SD卡烧录镜像
3.1 下载NutShell硬件二进制文件BOOT.BIN
https://github.com/OSCPU/NutShell/tree/master/fpga/boot/pynq
3.2 SD分区
/dev/sdb1 : BOOT.BIN, RV_BOOT.bin(即bbl.bin) /dev/sdb2 : debian操作系统/rootfs.tar.gz
3.3 pynq-z2开发板启动
跳线帽选择SD模式启动,USB供电模式,上电后下拉SW0开关,putty选择serial串口调试,波特率为115200
3.4 登录操作系统
root登录