RISC-V MCU中文社区

SES的快速上手

修订历史

版本号 修订日期 修订的章节 修订的内容
1.0.0 2020/09/22 N/A 初始版本

1. SEGGER Embedded Studio简介与安装

SEGGER Embedded Studio(以下简称SES)是SEGGER公司推出的一款嵌入式开发的集成开发环境,具有开发与编译界面专业,调试功能强大(配备知名的J-Link仿真器),非商业使用免费,跨平台兼容和配置灵活等特点。

有关SES的详细安装步骤,以及如何为其设置Nuclei配套的工具链,请参阅芯来科技官网下载页面(http://www.nucleisys.com/download.php)下载《Nuclei_SES_IDE_Installation.pdf》。

注意:软件安装路径必须为全英文路径。

RV-STAR开发板是芯来科技使用RISC-V通用MCU芯片GD32VF103定制的嵌入式MCU学习开发板。有关RV-STAR开发板的更多信息,请参阅网站http://www.riscv-mcu.com/quickstart.html

本文将使用SES为IDE,介绍在RV-STAR开发板上进行嵌入式软件的开发。

2. 创建项目

2.1. 概述

在SES中新建项目有两种方式:

  • 从已有项目直接导入创建新项目:

    • 这是最常见的方式,譬如,用户A可以将已有项目的文件夹直接进行打包保存,然后进行分享传播,用户B可以在另外的电脑上直接导入该项目,从而以此为基础创建新的项目,在此基础上直接使用或者开发修改。
  • 无模板手动创建项目:

    • 这是最繁琐的方式,该方法除了创建项目之外,还需要手动设置各种选项和路径。由于该方式比较繁琐,所以在实际工作中较少使用,但是通过该方式的详细讲解,用户可以详细了解如何配置各中选项和路径。

下文将详细介绍如何从已有项目直接导入创建新项目,有关无模板方式请参考进阶部分第1章。

2.2. 从已有项目直接导入创建新项目

本节将介绍如何使用SES从已有项目直接导入创建新项目,本文以hello_world为例,项目包存放在Github(https://github.com/riscv-mcu/ses_nuclei_sdk_projects)以及码云(https://gitee.com/riscv-mcu/ses_nuclei_sdk_projects),下载工程压缩包如图 2‑1和图 2‑2。

图 2‑1位于Github上面的项目包

图 2‑2位于码云上面的项目包

将下载好的压缩包解压后,内容如图 2‑3所示。

图 2‑3项目包详细内容

打开rvstar_quick_start文件夹,如果正确安装了SES,只需要双击“rvstar_example.emProject”文件即可打开SES并导入项目,操作正确会出现图 2‑4界面,项目的文件结构如红框标注部分。各文件夹的内容说明请参考进阶教程第2章。注意:工程所在路径必须是全英文路径。

图 2‑4显示项目的文件结构

3. 编译项目

3.1. 编译选项设置

不管是使用已有项目或是手动创建项目,非必须情况请不要修改Code > External Build的内容。如果需要修改编译选项,请参考进阶教程第4章。

3.2. 在SES中编译helloworld项目

本节以2.2节导入的工程helloworld为例介绍如何在SES中如何编译项目,生成二进制文件(默认为elf格式)。

键盘直接按F7或者点击菜单栏选项的Build下第一个选项,如图 3‑1,即可编译当前工程,编译成功后输出如图 3‑2所示。

图 3‑1 通过菜单栏Build选项编译

图 3‑2 编译成功

4. 调试项目

SES既支持其原生的J-Link调试器进行调试,也支持通过OpenOCD使用板载蜂鸟调试器进行调试。

在下载程序之前,需要根据所使用的调试器,针对性的设置GDB
Server,下文将对这两种方式分别介绍。

4.1. 使用板载调试器调试

4.1.1. 安装驱动

开发板已经集成了调试器,可以直接通过TYPE-C接口和短接冒连接,如图 4‑1。

图 4‑1板载调试器

板载调试器是预先焊到开发板上的“蜂鸟调试器”电路,由于蜂鸟调试器是基于USB与主机PC连接,因此需要在PC上安装驱动。下文将分别在Linux环境下和Windows环境下介绍如何安装驱动。新版开发板已经带有eprom,如图
4‑1红框标注所示,所以不需要安装驱动,但是要修改cfg文件。在IDE中打开“nuclei-sdk-> SoC -> gd32vf103 -> Board -> gd32vf103v_rvstar ->openocd_gd32vf103.cfg”,修改第7行引号内的内容为“USB <->JTAG-DEBUGGER”即可,修改后如图 4‑2。

图 4‑2修改openocd的cfg文件

4.1.2.1在Linux环境下安装驱动

这里以虚拟机上的Ububtu 16.04版本的Linux操作系统来演示如何在Linux环境下安装驱动,其详细步骤如下:

  • 使用“JTAG调试器”将主机PC与FPGA开发板连接,注意使该USB接口被虚拟机的Linux系统识别(而非被Windows识别),如图 4‑3所示,若USB图标在虚拟机中显示为高亮,则表明USB被虚拟机中Linux系统正确识别,再将FPGA开发板通电。

图 4‑3虚拟机Linux系统识别USB 图标

  • 在控制台中使用lsusb指令查看信息,参考的打印信息如下:

Bus 001 Device 010: ID 0403:6010 Future Technology Devices International, Ltd FT2232xxxx

  • 将misc文件夹内99-openocd.rules文件复制到当前路径下,控制台中输入sudo cp 99-openocd.rules /etc/udev/rules.d/99-openocd.rules指令复制文件到指定路径下。

  • 断开调试器再重新连接到Linux系统中。

  • 使用ls /dev/ttyUSB*命令查看ttyUSB信息,参考输出如下:
    /dev/ttyUSB0
    /dev/ttyUSB1

  • 使用ls -l /dev/ttyUSB1命令查看分组信息,参考输出如下: crw-rw-r— 1 root
    plugdev 188, 1 Nov 28 12:53 /dev/ttyUSB1

可以看到ttyUSB1已经加入plugdev组,接下来我们要将自己添加到plugdev组。使用whoami命令查看当前用户名,我们将其记录为< your_user_name >。

  • 使用sudo usermod -a -G plugdev 命令将自己添加进plugdev组。

  • 再次确认当前用户名已属于plugdev组,使用groups命令,可以看到打印信息中有plugdev即成功将当前用户添加至plugdev组。

4.1.3.1 在Windows环境下安装驱动

在Windows环境下安装驱动步骤如下:

  • 连接蜂鸟调试器,确保蜂鸟调试器和PC相连。

  • 下载Windows环境下使用的蜂鸟调试器驱动软件,下载链接如下:http://www.nucleisys.com/developboard.php, 具体位置如图 4‑4。

tempsnip.png

图 4‑4下载Windows系统下蜂鸟调试器驱动

  • 下载完成后双击HBird-Driver.exe

  • 蜂鸟调试器具有USB转串口的功能,所以正确安装驱动后可以在设备管理器中看到USB的串口号(例如COM11)以及串行总线,如图 4‑5。

图 4‑5查看设备管理器

4.1.4. 设置GDB Server

驱动安装完成后不需要设置SES中GDB
Server的选项内容,使用默认选项即可,如果想详细了解这一部分内容,请参考进阶教程第5章。

4.1.5. 通过串口打印输出

嵌入式系统常用SoC的UART口连接主机PC的COM口(或者将UART转换为USB后连接主机PC的USB口)进行调试,这样可以将嵌入式系统中的printf函数重定向至主机的显示屏。

蜂鸟调试器具有串口功能,可以通过SES自带的串口工具读取显示打印内容。设置步骤如下:

  • 连接蜂鸟调试器后,如图 4‑6,在菜单栏选择“Tools—>Terminal Emulator—>Terminal Emulator”打开串口工具。

  • 蜂鸟调试器如果已经正确安装了驱动,则可以设置连接的COM口,如图 4‑7,在菜单栏选择“Tools—>Terminal Emulator—>Properties”可以打开串口设置弹窗,或者点击Terminal窗口中红框标注的小图标。

  • 如图 4‑8,设置Baud Rate为115200,在port选项位置双击,选择蜂鸟调试器对应的串口号,参考之前在设备管理器中的内容,其它选项与图中保持相同即可。

  • 如图 4‑9,点击电话图标连接串口。

经过上述设置,以helloworld工程为例,当程序被下载至开发板并按下Reset按键后,因为本例程运行过程中使用到了printf函数,所以可以在SES串口上看到如图 4‑10的参考输出。有关下载调试的内容请参考后续章节。

图 4‑6打开SES串口工具

图 4‑7打开串口设置弹窗

图 4‑8设置波特率和串口号

图 4‑9连接串口

图 4‑10 helloworld打印输出到串口

4.2.4. 调试程序

驱动安装完成并且串口助手已经打开就可以开始调试程序。如图 4‑11所示,点击绿色播放按钮即可进入调试模式。进入调试模式之前会先检查工程编译情况,编译完成后启动openocd和GDB并下载程序到开发版当中。下载完成后的调试界面如图 4‑12。

图 4‑11进入调试模式

图 4‑12调试模式界面

SES的调试功能很多,各功能的详细使用请参考如下页面:

SEGGER WIKI(https://wiki.segger.com/Embedded_Studio

SES用户手册(https://www.segger.com/downloads/embedded-studio/

运行时使用printf函数可以高效地帮助开发者确认程序运行情况,由于嵌入式系统往往没有配备显示屏,因此需要将嵌入式系统中的printf函数重定向打印至主机的显示屏。在本参考项目中,既支持其原生的J-Link调试器的RTT功能输出printf,也支持通过蜂鸟调试器的UART串口功能输出printf。如果使用蜂鸟调试器的串口,需要自行准备跳线连接至PC,这里不做介绍。

RV-STAR开发板也支持通过J-Link连接,请至少准备5根双母头杜邦线和一根公母头杜邦线。

J-Link连接需要用杜邦线连接串口,移除开发板短接串口自下而上的五个短接冒,移除后如图 4‑13,这五个接口自下而上分别是GND,JTCK,JTDI,JTDO,JTMS。

图 4‑13移除开发板短接冒

图 4‑14是J-Link的引脚图,红框标注为需要连接的引脚,连接对应名字即可,其中J-Link的1脚(VTref)先不连。

图 4‑14 J-Link引脚图

连接完成后用公母头将J-Link的1脚连接到开发板上VCC3V3的插孔中,最终J-Link硬件连接如图 4‑15所示。

图 4‑15 J-Link硬件连接图

4.2.2. 修改Debug设置

使用J-Link调试程序需要修改工程设置,其步骤如下:

  • 点击菜单栏的Project选项下的Options打开设置页面。

  • 在Debugger栏目下Target Connection选项切换为J-Link,如图 4‑16。

图 4‑16修改工程设置为使用J-Link

4.2.3. 通过RTT打印输出

如果使用J-Link,则J-Link具有的RTT功能也可以重定向printf的打印输出(不必占用SoC的UART输出),详细步骤请参考进阶教程第6章

4.2.4. 调试程序

驱动安装完成并且串口助手已经打开就可以开始调试程序。如图
4‑17所示,点击绿色播放按钮即可进入调试模式。进入调试模式之前会先检查工程编译情况,编译完成后启动openocd和GDB并下载程序到开发版当中。下载完成后的调试界面如图 4‑18。

图 4‑17进入调试模式

图 4‑18调试模式界面

SES的调试功能很多,各功能的详细使用请参考如下页面:

SEGGER WIKI(https://wiki.segger.com/Embedded_Studio

SES用户手册(https://www.segger.com/downloads/embedded-studio/

5. 运行项目

上述设置完成,调试无误后,可以不用进入调试模式,直接将程序下载至开发板中运行。不同于调试模式,下载运行需要手动连接GDB Server或者J-Link。使用板载调试器下载和使用J-Link下载有部分区别,下文将分别介绍其下载运行步骤。

5.1. 使用板载调试器通过GDB Server下载

  • 通过板载调试器连接开发板至主机。

  • 在SES中菜单栏选择Target项目下的Connect GDB Server选项,如图 5‑1所示。

  • 选择Target项目下的DownloadFile,选择elf文件,如图 5‑2,找到编译生成的elf文件(默认在Output文件夹中),双击即可下载到FPGA评估板中。

  • 点击“Target—>Reset GDB Server”可以刷新GDB,程序会自动开始运行。如果此时连接了串口调试助手并且程序中调用了printf,就可以在串口看到打印内容。

  • 下载后如果不需要继续调试或者不需要再次下载,则可以断开GDB Server。在菜单栏选择“Target—>Disconnect GDB Server”即可断开连接。

由于程序下载到flash当中并且在flash当中运行,所以不会掉电丢失,可以通过开发板上的reset按键实现复位。

图 5‑1连接GDB

图 5‑2下载elf文件

  • 通过J-Link连接开发板至主机。

  • 在SES中菜单栏选择Target项目下的Connect J-Link选项,如图 5‑3所示。

  • 这里以helloworld工程为例,选择Target项目下的Download helloworld,如图
    5‑4,即可将程序下载至FPGA评估板中。

  • 下载成功后IDE会自动断开J-Link。

由于程序下载到flash当中并且在flash当中运行,所以不会掉电丢失,可以通过开发板上的reset按键实现复位。

图 5‑3连接GDB

图 5‑4下载elf文件