Nutshell的介绍以及启动过程

  • Nutshell处理器的介绍

NutShell是使用Chisel语言模块化设计的,基于RISC-V RV64开放指令集的顺序单发射处理器实现,隶属于国科大与计算所“一生一芯”项目。这款处理器的很多设计受到了NOOP(南京大学教学用五级流水线处理器)的影响.

Nutshell相关代码及设计参考:https://github.com/OSCPU/NutShell-doc

  • Nutshell的板卡启动过程

针对FPGA的PL(Programmable Logic)部分,我们在PYNQ-Z2板卡上采用SD卡分区烧录的方法启动系统。

  1. 编译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内核镜像文件

  2. 编译riscv-pk

    下载riscv-pk,切换到zynq-standalone分支 https://github.com/OSCPU/riscv-pk.git,编译后在build目录下生成bbl.bin文件

  3. 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登录