使用make配置编译RISC-V应用程序

以下操作步骤是在windows系统下进行,Linux系统大同小异。

准备工作

  • 小脚丫FPGA开发板 STEP-CYC10
  • Intel Quantus Prime Lite18.1版本以上
  • 安装RISC-V工具链
  • 安装Git
  • 安装Python3及pyserial包

准备1:小脚丫FPGA开发板 STEP-CYC10
小脚丫STEP-CYC10 是一款基于Intel Cyclone10设计的FPGA开发板。板卡尺寸只有72mm×40mm。核心FPGA芯片选用了Intel公司Cyclone 10 LP系列的10CL016YU256C8G,相比于前一代的Cyclone IV系列的FPGA,它的性能更强,功耗更低,板上的FPGA芯片资源达16000逻辑单元(LEs),同时该板卡最高支持10CL025YU256芯片。另外,板卡上集成了USB Blaster编程器、SDRAM、FLASH等多种外设。板上预留了PCIE子卡插座,你可以方便的进行扩展。 STEP-CYC10板卡上集成的编程器能够完美支持开发工具Quartus Prime,你只需要一根MicroUSB连接线就能够完成FPGA的编程仿真和下载,使用更加方便。

准备2:Intel Quantus Prime软件
Quartus Prime是Altera被Intel收购之后推出的免费、强大的设计软件,包括了从设计输入到综合直至优化、验证以及仿真等各个阶段所需的一切功能。Quartus Prime Lite是大批量器件系列的理想设计工具,可以免费下载使用。Quartus Prime下载安装、使用Quartus Prime下载安装、使用

准备3:RISC-V工具链
我们使用高级编程语言比如C/C++编写的程序最终要编译成机器代码(二进制文件),才可以运行在CPU上运行,因此用于编译处理程序的软件工具链是必不可少的,嵌入式软件工具链中主要包括交叉编译器和链接器,此外还包含了许多的辅助工具。RISC-V工具链是开源的,源代码分享在github 上riscv-tools,这里我们使用GNU MCU Eclipse 中的RISC-V工具链The RISC-V Embedded GCC

  1. 下载安装,下载链接v7.2.0-1-20171109 release
  2. 增加环境变量:安装完成后需要在系统环境变量中增加$PATH:C:\Program Files\GNU MCU Eclipse\RISC-V Embedded GCC\7.2.0-1-20171109-1926\bin

准备4:Git
Git是目前世界上最先进的分布式版本控制系统(没有之一),是使用最多的版本管理工具,关于Git的下载、安装和使用,推荐学习廖雪峰的教程Git教程

准备5:Python3
编写软件并编译出.elf的镜像文件之后,需要使用一个名为reindeerconfig.py的Python脚本将数据下载到ReindeerStep运行。因此我们需要在电脑上安装Python3。

  1. 安装pyserial包,脚本程序reindeer_config.py中使用了串口模块pyserial,因此需要安装:打开命令行终端输入:pip3 install pyserial。

操作步骤

  • 获取PulseRain Reindeer_Step MCU软核
  • 配置软核到STEP-CYC10 FPGA开发板
  • Arduino IDE安装板卡支持包
  • 在Arduino IDE中开发应用程序
  • 下载程序到开发板并运行

步骤1:获取PulseRain Reindeer_Step MCU软核

本次移植的是在PulseRain Reindeer处理器内核基础上,改进的Reindeer_Step软核,该软核根据STEP CYC10开发板的特点做了如下改进:

  • 增加了SDRAM控制器,以利用板上的8M动态内存作为代码和数据内存。
  • 增加了对板上硬件资源的支持,如目前增加了UART外设和GPIO外设,并持续更新中。
  • 开发了相关的Arduino Support Package,使得用户可以通过Arduino开发环境来直接对软核处理器编程。 Reindeer_Step的源代码已经开源在Github上,你可用如下的命令得到代码 :
git clone https://github.com/PulseRain/Reindeer_Step.git

这个操作会在本地目录建立一个stepfpga 目录 也可以直接点击链接Reindeer_Step,在网页的Clone or download选项中Download ZIP文件。

cd Reindeer_Step

进入该目录

git submodule update --init --recursive 

注意init和recursive前面是两个 - ,更新所有的submodules
(注意该软件遵循GNU通用公共许可证协议)

步骤2:配置软核到STEP-CYC10 FPGA开发板

直接从GitHub上clone的项目已默认编译出sof文件,编译后资源占用情况如下图所示: 使用Micro USB数据线连接PC和开发板后,使用Quartus Prime软件可以直接下载到FPGA。但是sof文件是下载到FPGA的SRAM,掉电会丢失,在CYC10上板载了一块SPI Flash,我们可以将sof文件转换为jic文件,通过JTAG下载到Flash中,每次上电时FPGA会将配置数据读取到SRAM中运行。 如果不熟悉Quartus prime的使用可以先学习这里的上手教程quartus_prime的使用。
如果不熟悉FPGA的开发可以先学习我们的FPGA入门教程。