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‑3所示。
打开rvstar_quick_start文件夹,如果正确安装了SES,只需要双击“rvstar_example.emProject”文件即可打开SES并导入项目,操作正确会出现图 2‑4界面,项目的文件结构如红框标注部分。各文件夹的内容说明请参考进阶教程第2章。注意:工程所在路径必须是全英文路径。
3. 编译项目
3.1. 编译选项设置
不管是使用已有项目或是手动创建项目,非必须情况请不要修改Code > External Build的内容。如果需要修改编译选项,请参考进阶教程第4章。
3.2. 在SES中编译helloworld项目
本节以2.2节导入的工程helloworld为例介绍如何在SES中如何编译项目,生成二进制文件(默认为elf格式)。
键盘直接按F7或者点击菜单栏选项的Build下第一个选项,如图 3‑1,即可编译当前工程,编译成功后输出如图 3‑2所示。
4. 调试项目
SES既支持其原生的J-Link调试器进行调试,也支持通过OpenOCD使用板载蜂鸟调试器进行调试。
在下载程序之前,需要根据所使用的调试器,针对性的设置GDB Server,下文将对这两种方式分别介绍。
4.1. 使用板载调试器调试
4.1.1. 安装驱动
开发板已经集成了调试器,可以直接通过TYPE-C接口和短接冒连接,如图 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.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 \<your_user_name>命令将自己添加进plugdev组。
-
再次确认当前用户名已属于plugdev组,使用groups命令,可以看到打印信息中有plugdev即成功将当前用户添加至plugdev组。
4.1.3.1 在Windows环境下安装驱动
在Windows环境下安装驱动步骤如下:
-
连接蜂鸟调试器,确保蜂鸟调试器和PC相连。
-
下载Windows环境下使用的蜂鸟调试器驱动软件,下载链接如下:http://www.nucleisys.com/developboard.php,具体位置如图 4‑4。
-
下载完成后双击HBird-Driver.exe
-
蜂鸟调试器具有USB转串口的功能,所以正确安装驱动后可以在设备管理器中看到USB的串口号(例如COM11)以及串行总线,如图 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.2.4. 调试程序
驱动安装完成并且串口助手已经打开就可以开始调试程序。如图 4‑11所示,点击绿色播放按钮即可进入调试模式。进入调试模式之前会先检查工程编译情况,编译完成后启动openocd和GDB并下载程序到开发版当中。下载完成后的调试界面如图 4‑12。
SES的调试功能很多,各功能的详细使用请参考如下页面:
SEGGER WIKI(https://wiki.segger.com/Embedded_Studio)
SES用户手册(https://www.segger.com/downloads/embedded-studio/)
4.2. 使用J-Link调试
运行时使用printf函数可以高效地帮助开发者确认程序运行情况,由于嵌入式系统往往没有配备显示屏,因此需要将嵌入式系统中的printf函数重定向打印至主机的显示屏。在本参考项目中,既支持其原生的J-Link调试器的RTT功能输出printf,也支持通过蜂鸟调试器的UART串口功能输出printf。如果使用蜂鸟调试器的串口,需要自行准备跳线连接至PC,这里不做介绍。
4.2.1. 连接J-Link至开发板
RV-STAR开发板也支持通过J-Link连接,请至少准备5根双母头杜邦线和一根公母头杜邦线。
J-Link连接需要用杜邦线连接串口,移除开发板短接串口自下而上的五个短接冒,移除后如图 4‑13,这五个接口自下而上分别是GND,JTCK,JTDI,JTDO,JTMS。
图 4‑14是J-Link的引脚图,红框标注为需要连接的引脚,连接对应名字即可,其中J-Link的1脚(VTref)先不连。
连接完成后用公母头将J-Link的1脚连接到开发板上VCC3V3的插孔中,最终J-Link硬件连接如图 4‑15所示。
4.2.2. 修改Debug设置
使用J-Link调试程序需要修改工程设置,其步骤如下:
-
点击菜单栏的Project选项下的Options打开设置页面。
-
在Debugger栏目下Target Connection选项切换为J-Link,如图 4‑16。
4.2.3. 通过RTT打印输出
如果使用J-Link,则J-Link具有的RTT功能也可以重定向printf的打印输出(不必占用SoC的UART输出),详细步骤请参考进阶教程第6章
4.2.4. 调试程序
驱动安装完成并且串口助手已经打开就可以开始调试程序。如图 4‑17所示,点击绿色播放按钮即可进入调试模式。进入调试模式之前会先检查工程编译情况,编译完成后启动openocd和GDB并下载程序到开发版当中。下载完成后的调试界面如图 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.2. 使用J-Link下载
-
通过J-Link连接开发板至主机。
-
在SES中菜单栏选择Target项目下的Connect J-Link选项,如图 5‑3所示。
-
这里以helloworld工程为例,选择Target项目下的Download helloworld,如图 5‑4,即可将程序下载至FPGA评估板中。
-
下载成功后IDE会自动断开J-Link。
由于程序下载到flash当中并且在flash当中运行,所以不会掉电丢失,可以通过开发板上的reset按键实现复位。