Main Page/2021 0313

From Terasic Wiki

Jump to: navigation, search

Contents


RISC-V处理器设计 第八讲 RISC-V on T-Core的开发流程


一、RISC-V on T-Core的框架

RISC-V on T-Core的功能框架如图1-1所示,RISC-V on T-Core开发的工程由 RISC-V core和应用程序组成。

图中左边所示的RISC-V core是使用Quartus Prime Lite v19.1软件基于Verilog HDL语言开发。Quartus软件编译RISC-V core的Quartus工程,生成.pof文件,并使用Programmer工具将.pof文件下载到T-Core开发板的MAX 10器件。

图中右边所示的是C语言应用程序,该应用程序的二进制文件通过Linux系统的GCC工具链交叉编译生成,然后下载到T-CORE开发板的QSPI器件,QSPI是T-CORE板载的一种非易失性存储芯片。程序下载到QSPI后能直接从QSPI flash 直接运行。

图 1-1 RISC-V on T-Core的框架

Quartus Programmer工具和OpenOCD调试软件分别控制.pof文件和应用程序的烧写。可以通过设置T-Core开发板背面的拨码开关SW2,选择JTAG或RISC-V链路(4.8 烧写.pof文件到MAX 105.2 应用程序烧写将介绍SW2对应的具体设置),然后通过T-Core开发板J2接口下载.pof文件和应用程序, 如图1-2所示。

图1-2 T-Core开发板JTAG或RISC-V链路选择


二、TRRV-E-SDK简介

您可以在T-Core官方产品网页:http://www.terasic.com.cn/cgi-bin/page/archive.pl?Language=China&CategoryNo=220&No=1241&PartNo=1的设计资源子页面上免费下载T-Core RISC-V SDK,如图2-1所示。

图2-1 下载T-Core RISC-V BSP

鼠标往下滑动找到对应的包点击下载:

TCORE-RISCV-E203.tar.gz 解压缩(解压缩步骤将在第三小节演示)后可以看到有两个文件夹,QuartusProject和TRRV-E-SDK两个文件夹,如图2-2所示。QuartusProject文件夹中是实现RISC-V core的Quartus工程源代码。TRRV-E-SDK(TRRV是Terasic RISC-V的缩写)是友晶在开源Freedom-E-SDK基础上修改创建的SDK。Freedom-E-SDK并不是软件,本质上是由一些makefile、板级支持包、脚本和软件示例组成的一套开发环境。Freedom-E-SDK的源代码都在https://github.com/sifive/freedom-e-sdk上,并且源码会不定期的更新。

图2-2 TCORE-RISCV-E203



TRRV-E-SDK是TCORE-RISCV-E203中的一个子目录,TRRV-E-SDK的目录结构如图2-3所示。关于文件夹内容的详细描述请参考对应课程视频第八讲。

图 2-3 TRRV-E-SDK目录结构


三、RISC-V on T-Core开发环境

在T-Core上进行RISC-V开发所需要的开发环境:

  • PC主机Linux操作系统:推荐使用Ubuntu 16.04。
  • GCC工具链版本7.2.0。
  • RISC-V Core设计工具:Intel Quartus Prime Lite v19.1。

3.1 Quartus 软件下载

Quartus Prime是Intel推出的强大设计软件,包括了从设计输入到综合直至优化、验证以及仿真等各个阶段所需的一切功能。

进入Intel 软件下载页面:https://fpgasoftware.intel.com/19.1/?edition=lite&platform=linux,如图3-1所示,选择适用于Linux操作系统的Quartus Prime Lite v19.1,下载Quartus Prime (includes Nios II EDS)以及MAX 10 FPGA device两个独立安装文件。

图3-1 下载Quartus软件及MAX 10 FPGA器件


3.2 Quartus 软件安装

下载完成后,按照以下步骤安装Quartus软件以及MAX 10 FPGA器件,并配置环境变量:

  1. 鼠标右键点击QuartusLiteSetup-19.1.0.670-linux.run图标,选择Properties。

    图3-2 选择Properties

  2. 在弹出的窗口中选择Permissions栏,勾选Allow Executing file as program后关闭该窗口,如下图3-3所示。

    图3-3 勾选Allow Executing file as program权限属性

  3. 双击QuartusLiteSetup-19.1.0.670-linux.run图标,开始安装Quartus软件,如以下系列图示,安装路径选用默认安装路径,直到最后点击Finish完成安装。

    图3-4 点击Next进入下一个安装界面

    图3-5 选择接受协议并点击Next进入下一个安装界面

    图3-6 选择默认安装路径,点击NEXT进入下一个安装界面

    图3-7 选择默认要安装的组件,点击NEXT进入下一个安装界面

    图3-8 点击NEXT进入下一个安装界面

    图3-9 等待安装结束

    图3-10 点击Finish完成安装

  4. 配置Quartus软件环境变量。

3.3 USB Blaster II驱动安装

Quartus软件安装完成后,还需要安装USB Blaster II驱动,这样PC能识别开发板。

  1. 首先用命令 cd /etc/udev/rules.d切换到/etc/udev/rules.d路径,然后用sudo touch 51-usbblaster.rules在这里创建51-usbblaster.rules空白文件, 如图3-16所示。

图3-16 创建51-usbblaster.rules文件

  1. 使用gedit命令打开51-usbblaster.rules文件,添加以下内容后保存:

    SUBSYSTEMS=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6010",MODE="0666"
    SUBSYSTEMS=="usb", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6810",MODE="0666"

图3-17 添加驱动内容并保存

注意:如果遇到51-usbblaster.rules文件不能保存,请先用命令 chmod 666 51-usbblaster.rules修改文件属性为Read and Write,然后再执行gedit 51-usbblaster.rules即可。

3.4 TCORE-RISCV-E203安装

用cd 命令切换到TCORE-RISCV-E203.tar.gz所保存的路径,然后用命令tar -zxvf TCORE-RISCV-E203.tar.gz 解压缩。

图3-18 解压缩安装TCORE-RISCV-E203

四、T-Core RISC-V核开发过程

4.1 创建TRRV Core工程

  1. 点击Quartus 的File菜单,选择New Project Wizard。
图4-1 选择New Project Wizard
  1. 在弹出的下图4-2所示窗口中点击Next按钮。

图4-2 点击Next到下一步

  1. 在弹出的下图所示窗口中选择工程保存路径, 并命名工程和顶层文件(注意工程名和顶层实体都是大小写敏感的,注意保持顶层实体与工程名一致),然后点击Next。
图4-3 工程和顶层文件命名
  1. 选择Empty project,继续点击Next按钮。
图4-4 选择Empty project
  1. 继续点击Next按钮。
图4-5 点击Next到下一步
  1. 选择MAX 10 器件系列,并在Name filter空白栏输入T-CORE的FPGA器件名:10M50DAF484C7G,然后选择该器件,继续点击Next按钮。
图4-6 选择T-Core的FPGA器件名
  1. 在弹出的窗口中,点击Next按钮。
图4-7 点击Next到下一步
  1. 最后在弹出的窗口中点击Finish按钮,完成工程的创建。
图4-8  点击Finish按钮完成工程创建

4.2 创建顶层.v文件

  1. 点击File菜单选择New---Verilog HDL File,然后点击OK。

图4-9 新建Verilog HDL文件

  1. 生成一个新的空白.v文件如下图4-10所示。

图4-10 新建的空白.v文件

  1. 复制\TCORE-RISCV-E203\QuartusProject\TCOREE203\T_CORE.v的内容到该空白文件中。

图4-11 添加T_CORE.v文件内容

  1. 然后点击保存按钮,并将文件命名为T_CORE.v。

图4-12 命名新建的.v文件

4.3 例化PLL

  1. 首先在图4-13所示的IP Catalog中输入pll,搜索ALTPLL。

图4-14 搜索ALTPLL

  1. 在弹出的对话框中将需要例化的pll命名为pll_8m388(需要先手动创建pll目录)。

图4-15 命名PLL

  1. 将inclk0 input设置50MHz。

图4-16 设置inclk0 input

  1. 将clk c0的输出设置8.38860800MHz。

图4-17 设置clk c0

  1. 最后点击Finish,完成pll8m388的设置。然后用同样的方法例化pll16m。

图4-18 例化pll_16m

图4-19 例化pll_16m

4.4 添加蜂鸟RISC-V Core的源文件

蜂鸟E203核的源码来自:https://github.com/SI-RISCV/e200_opensource

将TCORE-RISCV-E203\QuartusProject\TCOREE203路径下的clkdivider.v、e203soc.v 两个文件和rtl文件夹拷贝到当前的TCORE工程目录。

  1. 点击Quartus菜单的Assignments----File----Add File, 将clkdivider.v 和e203soc.v二个文件添加到TCORE工程。

    图4-20 添加clkdivider.v和e203_soc.v

  2. 将TCORE-RISCV-E203\QuartusProject\TCOREE203\rtl文件夹下的所有.v文件都添加到T_CORE工程。

    图4-21 添加rtl文件夹下的所有.v文件

  3. 最后点击Apply和OK:

图4-22 点击Apply和OK

4.5 引脚分配

点击Quartus菜单栏的Assignments---Pin Planner,进入引脚分配窗口,请按照TCORE.qsf文件分配对应的引脚(TCORE所有引脚信息也可以参考开发板电路图)。

图4-23 引脚分配

另外一种比较快捷的办法是直接拷贝\TCORE-RISCV-E203\QuartusProject\TCOREE203\TCORE.qsf文件到您创建的TCOREE203工程路径下即可。

4.6 编译T_CORE工程生成.pof文件

  1. 点击如下图4-24所示的编译按钮编译工程。

图4-24 编译TCORE_E203工程

  1. 编译完成会生成如下图4-25所示的T_CORE.pof文件。

图4-25 编译生成.pof文件

4.7 烧写.pof文件到MAX10

  1. 设置T-Core开发板的SW2开关:SW2.1=0,SW2.2=1。

    图4-26 设置SW2开关

  2. 用Mini USB线连接T-Core开发板的J2接口与主机。

    图4-27 连接开发板和PC

  3. 打开Quartus的Programmer工具, 点击Hardware Setup...,选择DECore,然后点击Auto Detect。

图4-28 选择T-Core

  1. 选择当前T-Core开发板的MAX 10 FPGA器件。

图4-29 选择FPGA器件

  1. 鼠标先选中下图所示的FPGA器件,再点击Change File...按钮。

    图4-30 点击Change File...按钮

  2. 浏览到当前TCOREE203工程生成的TCORE.pof文件,选择该文件并点击Open按钮。

图4-31 选择.pof文件

  1. 如下图4-32所示,勾选Program/Configure,然后点击Start按钮开始烧录。

图4-32 勾选Program/Configure,点击Start开始编译

图4-33 烧录进度

烧录完成后可以看到Progress进度条显示100%(Sucessful)。

图4-34 烧录成功

除按照上述步骤手动烧录.pof文件外,还可以使用demo batch工具在Linux Terminal中用命令快速烧写.pof文件。

用cd命令切换到TCORE-RISCV-E203\QuartusProject\TCOREE203\demobatch文件夹路径,执行命令sh programmingpof.sh配置FPGA。

图4-35 执行命令sh programming_pof.sh烧录FPGA

五、 T-Core RISC-V应用程序开发过程

本章主要介绍如何用 GNUMCUEclipse 软件对 T-CORE RISC-V 的应用程序进行开发和调试。您可以在 Terasic 官网下载 GNUMCUEclipse 软件,并将下载下来的 GNUMCUEclipse.tar.gz 文件直接解压到 ubuntu 系统桌面;解压出来的 GNUMCUEclipse 文件夹包括 eclipse 和 xPacks 两个子文件夹。

5.1 GNU MCU Eclipse安装

Eclipse 是基于 Java 平台运行的软件,为了能够使用 Eclipse,必须先安装 JDK。

  1. 打开terminal,输入命令:sudo apt-get install openjdk-8-jdk开始安装JDK。

图5-1 安装JDK(1)


输入字母Y继续安装。

图5-2 安装JDK(2)


安装完成以后如下图所示:

图5-3 安装JDK(3)


  1. OpenOCD工具用于应用程序调试和下载。 OpenOCD 提供了一个 UDEV 规则文件 GNUMCUEclipse/xPacks/openocd/0.10.0-13/contrib/60-openocd.rules,该文件定义了所有支持的 ID。其安装步骤非常简单,在Terminal窗口键入如下命令

    sudo cp ~/Desktop/GNUMCUEclipse/xPacks/openocd/0.10.0-13/contrib/60-openocd.rules /etc/udev/rules.d/

    将该文件复制到 /etc/udev/rules.d 路径即可完成其安装。然后键入sudo udevadm control --reload-rules 命令进行更新。

    图5-4 安装OpenOCD(1)

    图5-5 安装OpenOCD(2)

  2. Eclipse 软件本身无需安装,直接点击 GNUMCUEclipse 文件夹中的 eclipse 文件夹下面的可执行文件即可启动 Eclipse软件。

5.2 启动 GNU MCU Eclipse创建 Hello World 工程

  1. 直接点击 GNUMCUEclipse 文件夹中的 eclipse 文件夹下面的可执行文件,即可启动 Eclipse,如图5-6所示;

图5-6 启动eclipse


  1. 启动 Eclipse 后,弹出设置 Workspace 的对话框,如图5-7所示,默认为 home 下的 eclipse-workspace,可根据需要自行设置。

图5-7 设置Workspace


  1. 设置好 Workspace 目录后,单击 Launch,将会启动 Eclipse,进入 Welcome 界面,如图5-8所示。

图5-8 进入eclipse界面(1)


  1. 点击 Welcome 处的叉号,关闭 Welcome 界面,出现 Eclipse 主界面,如图5-9所示。

图5-9 进入eclipse界面(2)


  1. 在菜单栏中依次点击 File -> New -> C/C++ Project,如图5-10所示。

图5-10 创建C工程(1)


  1. 在弹出的 New C/C++ Project 对话框中,选择 C Managed Build,点击 Next,如图5-11所示;

图5-11 创建C工程(2)


  1. 在弹出的 C Project 窗口中设置如下选项,如图5-12所示;

a. Project name:设置工程名称,本例设置为 blinking_LED1;

b. Project type:选择工程类型,选择 Hello World RISC-V C Project;

c. 设置完成后,点击 Next;

图5-12 创建C工程(3)


8. 在弹出的 Basic Settings 窗口中设置工程信息,如图5-13所示,使用默认设置,点击 Next。

图5-13 创建C工程(4)


  1. 在弹出的 Select Configuration 窗口中设置工程的 Debug 和 Release,如图5-14所示,可使用默认设置,点击 Next;

图5-14 创建C工程(5)


  1. 在弹出的 GNU RISC-V Cross Toolchain 窗口中设置该工程使用的 RISC-V 工具链,如图5-15所示。

a. 点击 Browse,弹出文件夹选择对话框;

b. 在文件夹选择对话框中选择 GNUMCUEclipse/xPacks/riscv-none-embed-gcc/8.3.0-1.1/bin,作为 RISC-V 工具链的路径;

c. 点击 OK 完成 RISC-V 工具链的选择;


图5-15 设置RISC-V工具链(1)


  1. 设置完 RISC-V 工具链的界面如图5-16所示,点击 Finish 完成 blinking_LED1的 工程创建。

图5-16 设置RISC-V工具链(2)


  1. 创建完的 blinking_LED1工程如图5-17所示。

图5-17 blinking_LED1工程创建完成



将TCORE-RISCV-E203\TRRV-E-SDK\software\demo_gpio\main.c文件里面的代码替换掉当前main.c的代码并保存。

图5-18 复制blinking_LED1工程代码


5.3 设置 blinking_LED1 工程

设置 Hello World 工程包含设置 Hello World 工程 BSP、设置工具链、设置编译和链接选项、设置工程的包含路径和文件四部分,将在以下内容分别介绍。


5.3.1 设置 blinking_LED1工程 BSP

注:T-Core开发板的板级支持包BSP位于 TCORE-RISCV-E203\TRRV-E-SDK目录下。

  1. 在 Project Explorer 中选中 blinking_LED1 工程,鼠标右键,选择 Properties,如图5-19所示。

图5-19 设置 blinking_LED1工程 BSP(1)


  1. 在弹出的 Properties for blinking_LED1 窗口中选择 Resource,然后选择 Location 最右侧的图标,如图5-20所示。

    图5-20 设置 blinking_LED1工程 BSP(2)

  2. 此时会弹出文件夹窗口,该窗口位于 blinkingLED1工程的文件夹,将 bsp 文件夹复制至 blinkingLED1工程的 src 的目录下,如图5-21所示。

图5-21 设置 blinking_LED1工程 BSP(3)


  1. 设置完成后回到 Properties for blinking_LED1窗口,点击 Apply,如图5-22所示。

    图5-22 设置 blinking_LED1工程 BSP(4)

  1. 然后点击 Apply and Close回到 Eclipse 主界面,如图所示。

图5-23 设置 blinking_LED1工程 BSP(5)


  1. 回到 Eclipse 主界面后选中 blinking_LED1工程,鼠标右键,选择 Refresh,如图5-24所示。

图5-24 设置 blinking_LED1工程 BSP(5)

此时便可以在 blinking_LED1工程的 src 下看到 bsp 文件夹,如图5-25所示。

图5-25 设置 blinking_LED1工程 BSP(6)

至此恭喜您已经完成了 BSP 的设置!

5.3.2 设置工具链

接下来便是工具链的设置,只有正确设置工具链,工程才能被正确编译,具体设置步骤如下所示。

  1. 在 Project Explorer 中选中 blinking_LED1工程,鼠标右键,选择 Properties。

  2. 在弹出的 Properties for blinking_LED1窗口中点击 MCU,展开 MCU 菜单,首先设置 OpenOCD Path,如图5-26所示。

图5-26 OpenOCD Path的设置(1)


a. 点击左侧的 OpenOCD Path,右侧出现 OpenOCD Path 设置界面。
b. 若 Executable 中空白,则输入 openocd。
c. 点击 Browse…。
d. 在弹出的对话框中选择 Desktop/TCORE-RISCV-E203/TRRV-E-SDK/work/build/openocd/prefix/bin 作为 OpenOCD 的路径。
e. 点击 OK。

图5-27 OpenOCD Path的设置(2)


f. 设置完成的 OpenOCD Path 如图5-28所示,点击 Apply and Close。

图5-28 OpenOCD Path的设置(3)


  1. 接下来是 RISC-V Toolchains Paths 的设置,如图5-29所示。

    a. 点击左侧的 RISC-V Toolchains Paths,右侧出现 RISC-V Toolchains Paths 设置界面。

    b. 点击 Browse…。

    c. 在弹出的对话框中选择 Desktop/TCORE-RISCV-E203/TRRV-E-SDK/work/build/riscv-gnu-tpplchain/riscv32-unknown-elf/prefix/bin 作为 RISC-V 工具链的路径。

    d. 点击 OK。

图5-29 RISC-V Toolchains Paths的设置(1)


e. 设置完成的 RISC-V Toolchains Paths 如图5-30所示,点击Apply and Close。

图5-30 RISC-V Toolchains Paths的设置(2)


至此恭喜您已经完成了 BSP 的设置!

5.3.3 设置编译和链接选项

  1. 在 Project Explorer 中选中 blinking_LED1工程,鼠标右键,选择 Properties。

  2. 在弹出的 Properties for blinking_LED1 窗口中点击 C/C++ Build,展开 C/C++ Build,点击 Settings,进入 Tool Settings。

  3. 首先设置 Target Processor,如图5-31所示。

    a. Architecture:设置为 RV32I。

    b. 勾选 Multiply extension (RVM)。

    c. 勾选 Atomic extension (RVA)。

    d. 勾选 Compressed extension (RVC)。

    e. Integer ABI:设置为 ILP32。

    f. Code Model:设置为 Medium Low。

    g. 设置完成后,点击 Apply。

图5-31 设置Target Processor


  1. 接下来设置 Optimization,如图5-32所示。

    a. Optimization Level:设置为 Optimization more(-O2)。

    b. 勾选 Message length。

    c. 勾选 char is signed。

    d. 勾选 Function sections。

    e. 勾选 Data sections。

    f. 勾选 No common unitialized。

    g. 设置完成后,点击 Apply。

图5-32 设置Optimization


  1. 接下来设置 Debugging,如图5-33所示。

    a. Debug level:设置为 Default(-g)。

    b. 设置完成后,点击 Apply。

图5-33 设置Debugging


  1. 接下来设置 GNU RISC-V Cross C Linker 的 General,如图5-34所示。

    a. 点击 Script files 右侧的加号。

    b. 在弹出的 Add file path 对话框中选择 Workspce…。

    c. 在弹出的 File selection 对话框中依次展开 blinkingLED1 并选择 bsp/tcore-e203/env 下的 linkflash.lds。

    d. 点击 OK。

图5-34 设置GNU RISC-V Cross C Linker 的 General(1)


f. 继续点击Add file path窗口的OK按钮。
g. 勾选 Do not use standard start files。
h. 勾选 Remove unused sections。
i. 设置完成后,点击 Apply。

图5-35 设置GNU RISC-V Cross C Linker 的 General(2)


  1. 接下来设置 GNU RISC-V Cross C Linker 的 Miscellaneous,如图5-36所示。

    a. 勾选 Use newlib-nano。

    b. 设置完成后,点击 Apply,然后点击 Apply and Close 。

图5-36 设置GNU RISC-V Cross C Linker 的 Miscellaneous


至此恭喜您已经完成了编译和链接的设置!

5.3.4 设置工程的包含路径和文件

  1. 在 Project Explorer 中选中 blinking_LED1工程,鼠标右键,选择 Properties。

  2. 在弹出的 Properties for blinking_LED1窗口中点击 C/C++ Build,展开 C/C++ Build,点击 Settings,进入 Tool Settings。

  3. 首先是 GNU RISC-V Cross Assembler 的 Includes的设置,如图5-37所示。

    a. 点击 include paths 右侧的加号。

    b. 在弹出的 Add directory path 对话框中点击 Workspace…。

    c. 在弹出的 Folder selection 对话框中依次展开 blinking_LED1 并选择 src/bsp/tcore-e203 下的 driver 文件夹。

    d. 点击 OK,然后再点击 Add directory path 对话框的 OK。

图5-37 设置GNU RISC-V Cross Assembler 的 Includes(1)


e. 重复步骤 a ~ d,将 src/bsp/tcore-e203 下的 env 和 include 文件夹添加到路径中。设置完成的 GNU RISC-V Cross Assembler 的 Includes 如图5-38所示,点击 Apply 。

图5-38 设置GNU RISC-V Cross Assembler 的 Includes(2)


  1. 接下来是 GNU RISC-V Cross C Compiler 的 Includes的设置,如图5-39所示。

    a. 依照步骤 3 的方法,将 src/bsp/tcore-e203 下的 drivers、env 和 include 文件夹添加到Include paths(-I)中。

    b. 设置完成后,点击 Apply。

图5-39 设置GNU RISC-V Cross C Compiler 的 Includes(1)


c. 点击右下侧 Include files 右侧的加号。
d. 在弹出的 Add file path 对话框中输入 sys/cdefs.h。
e. 点击 OK。

图5-40 设置GNU RISC-V Cross C Compiler 的 Includes(2)


  1. 设置完成的 GNU RISC-V Cross C Compiler 的 Includes 界面如图5-41所示,点击 Apply and Close。

图5-41 设置GNU RISC-V Cross C Compiler 的 Includes(3)


5.4 编译并运行 blinking_LED1 工程

  1. 在 Eclipse 主界面中,选中 blinking_LED1工程,鼠标右键,点击 Clean Project,如图5-42所示。

图5-42 Clean Project


  1. 仍旧选中 blinking_LED1工程,鼠标右键,点击 Build Project,如图5-43所示。

图5-43 Build Project


  1. 若 blinkingLED1工程参照之前的步骤设置正确,则在这一步会编译成功,如图所示;若编译失败,产生错误,请检查**5.3.1 设置 blinkingLED1工程 BSP章节和5.3.4 设置工程的包含路径和文件**章节的设置。

图5-44 blinking_LED1 编译成功


  1. 使用 USB Cable 将 T-Core 开发板与 PC 电脑进行连接来烧录应用程序(注:请确保T-Core开发板已经烧录了TRRV RISC-V Core文件)。具体操作如下:

    a. T-Core开发板断电后,设置SW2:SW2.1=1,SW2.2=0 将链路切换到RISC-V JTAG。

    图5-45 设置SW2开关

    b. 用Mini USB线连接T-Core开发板的J2接口与主机。

    图5-46 连接开发板和PC

  2. 在 Eclipse 主菜单中点击 Run -> Run Configuration,如图5-47所示;

图5-47 下载elf文件(1)

  1. 在弹出的 Run Configurations 窗口中点击 GDB OpenOCD Debugging,然后鼠标右键,点击选择 New Configuration,如图5-48所示。

图5-48 下载elf文件(2)

  1. 此时会出现blinking_LED1 Debug 界面,如图5-49所示。

图5-49 下载elf文件(3)

  1. 选择 blinking_LED1 Debug 中的 Debugger,并对其进行设置,如图5-50所示。

  2. OpenOCD Setup 选项中的 Config options:输入 -f /home/terasic/Desktop/TCORE-RISCV-E203/TRRV-E-SDK/bsp/tcore-e203/env/openocd_tcore.cfg 和 -s /home/terasic/Desktop/TCORE-RISCV-E203/TRRV-E-SDK/bsp/tcore-e203/env。

  3. Commands:默认命令为 set mem inaccessible-by-default off,在此基础上输入 set arch riscv:rv32。

  4. 设置完成后,点击 Apply,然后点击 Run。

图5-50 下载elf文件(4)

  1. 若程序下载成功,如图5-52所示。这时可以看到LED0 ~ LED3 出现流水灯现象。点击图中的按钮可断开 Eclipse 与 T-Core 开发板的连接。

图5-52 下载elf文件(6)

断开USB 线缆,然后对 T-Core 开发板重新上电,会看到 LED0 ~ LED3 继续出现流水灯现象。

5.5 调试 blinking_LED1工程

  1. 在 Eclipse 主菜单中依次点击 Run -> Debug Configuration,如图5-53所示。

图5-53

  1. 若此前未进行过 Debug 或 Run,则需要新建 GDB OpenOCD Debugging,即在弹出的 Run Configurations 窗口中点击 GDB OpenOCD Debugging,然后鼠标右键,点击选择 New Configuration,如图5-54所示。若此前进行过 Debug 或 Run,则选择 GDB OpenOCD Debugging 下的 blinking_LED1Debug。

图5-54

  1. 选择 blinking_LED1Debug Debug 中的 Debugger,并对其进行设置,如图5-55所示。

  2. OpenOCD Setup 选项中的 Config options:输入 -f /home/terasic/Desktop/TCORE-RISCV-E203/TRRV-E-SDK/bsp/tcore-e203/env/openocd_tcore.cfg 和 -s /home/terasic/Desktop/TCORE-RISCV-E203/TRRV-E-SDK/bsp/tcore-e203/env。

  3. Commands:默认命令为 set mem inaccessible-by-default off,在此基础上输入 set arch riscv:rv32。

  4. 设置完成后,点击 Debug。

    图5-55

  5. 在弹出的 Confirm Perspective Switch 对话框中点击 Switch,如图5-56所示。

    图5-56

  6. 此时将会启动调试界面,如图5-57所示。

图5-57

  1. 在 Debug 的 Thread 处鼠标右键,点击 Suspend 暂时挂起此线程,如图5-58所示。

    图5-58

  2. 此时可进行单步运行、查看变量值、查看寄存器值、查看反汇编等操作,如下图所示。

    图5-59

图5-60

图5-61

图5-62

  1. 调试完成后,可在 Debug 的 Thread 处鼠标右键,点击 Terminate 暂停调试,如图5-63所示。

图5-63

  1. 此时可点击右上角的的两个按钮切换调试视图和 C 代码开发视图,如图5-64所示。

图5-64

5.6 用Makefile编译和下载应用程序

作为一种开放免费的架构,RISC-V的软件工具链由开源社区维护,所有的工具链源代码均公开在github:https://github.com/riscv。由于源码体积非常大,工具链编译耗时耗力,我们直接将编译好的工具链放在SDK包中搭建使用。TCORE-RISCV-E203\TRRV-E-SDK\work\build路径下分别有两个文件夹:openocd 和 riscv-gnu-toolchain。openocd 和 riscv-gnu-toolchain是基于源码在Ubuntu 16.04 系统中重新编译的。具体编译命令可以参考github对应链接的说明。

riscv-gnu-toolchain包括gcc,主要是用来在Linux系统中编译C程序代码,openocd用来下载二进制文件到QSPI。

图5-65 工具链介绍

本节演示的应用程序在目录TCORE-RISCV-E203\TRRV-E-SDK\software\demo_gpio中。

图5-66 demo_gpio应用程序

烧录完TRRV RISC-V Core到FPGA后,接着就可以烧录应用程序。

  1. T-Core开发板断电后,设置SW2:SW2.1=1,SW2.2=0 链路切换到RISC-V JTAG。然后使用Mini-B USB线连接开发板与主机。

    图5-67 设置SW2开关

  2. 使用cd命令转换到\TRRV-E-SDK/software路径,执行命令“make software ”编译应用程序。

图5-68 编译应用程序

编译完成以后会看到如下图所示的demo_gpio二进制文件,

图5-69 编译生成二进制文件

  1. 用命令make upload将demogpio二进制文件下载到T-CORE开发板的QSPI器件中,该过程会用到前面讲过的blaster6810.hex文件。

    图5-70 下载二进制文件

  2. 观察现象:T-Core开发板上的绿色LED[3:0]呈流水灯似闪烁。

  3. 重启开发板(拔、插连接J2接口的USB线),可以看到绿色LED[3:0]保持闪烁,这是因为QSPI掉电保存,重启开发板后,示例程序从QSPI器件加载。也可以用SDK工具将新的应用程序烧录到QSPI器件,但是FPGA镜像(之前烧录到FPGA的RISC-V Core的.pof文件)不会被修改。


附录:

1. 修订历史

       版本
       时间
       修改记录
   
   
       V1.0
       2020.08.04
       初始版本
   
   
       V1.1
       2020.08.11
       修改 5.3.2 小节的工具链路径修改 5.4 节 Run Configurations : OpenOCD Setup 选项中的 Config options修改 5.5 节 Debug Configurations : OpenOCD Setup 选项中的 Config options
   



2. 常见问题

  1. import SDK里面已有的工程时出现错误提示:

    Program "risc-v-none-embed-g++" not found in PATH

    Program "risc-v-none-embed-gcc" not found in PATH

这是因为SDK里面的工程的工具链路径中的用户名是terasic, 要把工具链路径指定到您当前PC机工具链的真实路径即可(点击Browse将路径指定到您自己的PC路径)。

同时可以把openOCD的路径一并改了:

  1. 在make upload的时候,一般会遇到错误,提示找不到libftdi1.so.2文件,如下图所示。这是因为相关文件没有安装。

解决办法:可以用apt-get install libftdi1-dev安装这个文件,一般这个操作需要用到root权限才能操作,所以命令前需要添加sudo,然后按提示操作完成即可,如下图所示。


电话:027-87745390

地址:武汉市东湖新技术开发区金融港四路18号光谷汇金中心7C

网址:www.terasic.com.cn

邮箱:support@terasic.com.cn

微信公众号:

订阅号 服务号
Personal tools