如需更多信息,请访问www.riscv-mcu.com
Nuclei Studio IDE快速上手手册
本文将介绍如何使用基于Nuclei Studio的Windows开发调试环境对GigaDevice GD32MCU系列产品(本文所采用的具体硬件工具是GD32V103V-EVAL-V1.0开发板)进行开发和调试。
1.Nuclei Studio IDE简介、下载与安装
1.1.Nuclei Studio IDE简介
Nuclei Studio IDE是基于 MCU Eclipse IDE开发的一款针对芯来公司处理器核产品的集成开发环境工具,继承了Eclipse IDE 平台的各种优势。商业IDE软件Keil在中国大陆非常深入人心,很多嵌入式软件工程师均对其非常熟悉,但是商业IDE软件(譬如Keil)存在着授权以及收费的问题,各大MCU厂商也会推出自己的免费IDE供用户使用,譬如瑞萨的e2studio和NXP的LPCXpresso等,这些IDE均是基于开源的Eclipse框架,Eclipse几乎成了开源免费MCU IDE的主流选择。
Eclipse平台采用开放式源代码模式运作,并提供公共许可证(提供免费源代码)以及全球发布权利。Eclipse本身只是一个框架平台,除了Eclipse平台的运行时内核之外,其所有功能均位于不同的插件中。开发人员既可通过Eclipse项目的不同插件来扩展平台功能,也可利用其他开发人员提供的插件。一个插件可以插入另一个插件,从而实现最大程度的集成。Eclipse IDE平台具有以下几方面的优势:
- 社区规模大: Eclipse自2001年推出以来,已形成大规模社区,这为设计人员提供了许多资源,包括图书、教程和网站等,以帮助他们利用Eclipse平台与工具提高工作效率。Eclipse平台和相关项目、插件等都能直接从eclipse.org网站下载获得。
- 持续改进:Eclipse的开放式源代码平台帮助开发人员持续充分发挥大规模资源的优势。Eclipse在以下多个项目上不断改进。
- ① 平台项目——侧重于Eclipse本身;
- ②CDT项目——侧重于C/C++开发工具;
- ③PDE项目——侧重于插件开发环境。
- 源码开源: 设计人员始终能获得源代码,总能修正工具的错误,它能帮助设计人员节省时间,自主控制开发工作。
- 兼容性: Eclipse平台采用Java语言编写,可在Windows与Linux等多种开发工作站上使用。开放式源代码工具支持多种语言、多种平台以及多种厂商环境。
- 可扩展性: Eclipse采用开放式、可扩展架构,它能够与ClearCase、SlickEdit、Rational Rose以及其他统一建模语言(UML)套件等第三方扩展协同工作。此外,它还能与各种图形用户接口(GUI)编辑器协同工作,并支持各种插件。
1.2.Nuclei Studio IDE下载
本文推荐使用预先整理好的Nuclei Studio IDE软件开发包,芯来科技已经将IDE软件压缩包上传至官网,下载链接为www.nucleisys.com/download.php,如下图1-1所示。
用户单击“Nuclei Studio:芯来集成开发环境(Nuclei Studio IDE)”即可进入下载页面。
1.3.Nuclei Studio IDE安装
在上一节下载下来的芯来集成开发环境(IDE)Nuclei Studio压缩包解压后包含若干个文件。如图1-2所示,分别介绍如下:
- Nuclei Studio软件包:该软件包中包含了Nuclei Studio IDE的软件。注意:具体版本以及文件名可能会不断更新;
- HBird_Driver.exe:此文件为芯来蜂鸟调试器的USB驱动安装文件,调试时需要安装此驱动使得其USB能够被识别;
- Java安装文件:jdk-8u512-windows-x64.exe;
- SerialDebugging_Tool:串口调试助手。
Nuclei Studio的安装步骤如下:
- Eclipse是基于Java平运行的环境,为了能够使用Nuclei Studio,必须安装JDK,如果用户Windows平台上尚未配置java安装环境,需要双击安装解压文件包中的jdk-8u152-windows-x64.exe,根据安装向导的提示完成JDK的安装过程;
- Nuclei Studio软件本身为绿色软件无需安装,安装好Java平台运行环境后,直接单击Nuclei Studio文件夹中eclipsec.exe即可启动Nuclei Studio。见第2章,了解如何运行Nuclei Studio。
图1-3 安装Nuclei Studio_IDE_201909中之前需要配置JDK
2. 启动Nuclei Studio
启动Nuclei Studio的要点如下:
- 直接单击NucleiStudio_IDE文件包中NucleiStudio文件夹下面的可执行文件,即可启动Nuclei Studio,如图2-1所示;
- 第一次启动Nuclei Studio后,将会弹出对话框要求设置Workspace目录,该目录将用于放置后续创建项目的文件夹,如图2-2所示;
- 设置好Workspace目录之后,确保Workspace的路径中没有中文,单击“Launch”按钮,将会启动Nuclei Studio。第一次启动后的Nuclei Studio界面如图2-3所示。
3.创建工程项目(以Runnning_LED为例)
使用Nuclei Studio创建工程有两种常用的方法:①基于模板自动创建项目,②导入打包的项目。对于第②种方法,可以参考文档《使用Nuclei Studio快速开发GD32VF103》,本文不做介绍。下面内容将以创建一个简单的Running_LED项目为例,介绍如何是使用模板自动创建项目,使用模板自动创建项目步骤如下:
在“Welcome”界面中,选择“Create a new C project”。如图3-1所示。如果用户不希望,每次启动时都显示“Welcome”界面,可以取消页面右下角“Always show Welcome at start up”的选择。
注意:也可以Nuclei Studio在“Welcome”界面的菜单栏中,选择“File->New->C Project”,弹出图3-2界面
如图3-3所示,在弹出的窗口中选择项目类型。
- 如图3-4所示,在弹出的窗口设定如下参数。
- Project name项目命名处,填入工程名称“Running_LED”。
- Use default location:如果勾选了此选项,则会使用图2-2中设定默认的Workspace文件夹存放此项目。
- Project type:选择“GigaDevice RISC-V C Project”。
- Toolchain选择“RISC-V CROSS GCC”
点击“Next”进入下一步。
- 如图3-5所示,选择需要创建项目包的MCU型号:GD32VF103。然后点击“Next”进入下一步。
- 如图3-6所示,选择程序模板及相关设置项。然后点击“Next”进入下一步。
- 如图3-7所示,选择程序模板配置项。然后点击“Next”进入下一步。
- 如图3-9所示,使用模板自动创建“Running_Led”项目已经完成。
4.配置项目工具链
NucleiStudio_IDE_201909版本已经内嵌了相关的工具链,在GD32VF103的工程文件建立之后,IDE已经自动为工程配置好工具链,用户不需要在进行配置。注意,用户不要根据以前的方法修改工具链的路径,默认即可。
5 编译项目
在第4章中,生成的工程中已经配置好了工具链,下面就可以编译项目。在Nuclei Studio中编译的步骤如下:
为了保险起见,建议先将项目清理一下。在Project Explorer栏中选中hello_world项目,单击鼠标右键,选择“Clean Project”;
如图3-6所示,单击菜单上的锤子按钮,开始对项目进行编译,编译过程如图3-6所示。如果编译成功,则显示如图3-7所示,能够看到生成可执行文件的代码体积大小,包括text段、data段和bss段,以及总大小的十进制和十六进制数值。
6.硬件连接
上面的软件软件部分已经准备完成,到此必须要进行硬件连接操作,将两条USB电缆分别接入到板载的USBmini接口,本例程中未使用到串口,所以不用单独连接串口。如图所示,线缆连接好后,将“供电模式”开关拨向“USB”一侧,即使用USB口给开发板供电,开发板上电后,板载的带“LEDPWR”标识的LED灯会点亮。此时硬件连接完成,如图6-1所示,可进入下一章节的步骤。
7.运行Running_LED项目
运行Running_LED项目,需要将编译好的可以执行文件下载到开发板中,在下载程序之前,需要根据芯片信号选择连接脚本,在运行模板创建Running_LED工程项目时,默认使用“GD32VF103xB.lds”。如果对应不同的芯片型号,请手动进行修改即可。
7.1.根据芯片型号修改LDS文件
修改LDS文件的步骤如下:
首先进入到IDE界面,在“Project Explorer”栏中选中“Running_LED“项目;
单击鼠标右键,选择“Properties”。在“C/C+ Build”菜单下,点击“Setting”,在“Tool Setting"中,选择“GNU RISC-V Cross C++ Linker”栏目下的“General”,点击图标
,如图7-1所示;
点击“Workspace”选择工程内的”RISCV“目录下的连接对应的脚本。
注意:修改完成后,一定要进行保存操作。
7.2.通过Nuclei Studio下载程序至MCU开发板
通过Nuclei Studio下载程序至MCU开发板的步骤如下:
- 在菜单栏中,点击“Run->Run Configurations”;
- 进入Run配置界面,可以看到该工程对应的Run 配置文件已经自动生成,如果没有生成,右键“GDB Openocd Debuging”选择“new”,可以新建一个配置文件,如图7-3所示;
- 点击框选的“Run",可以看到IDE的”Console”区域开始输出的信息,如果没有报错信息,稍等几秒后,如图7-4所示,表示程序程序已经正确的下载到了开发板,并且程序自动运行起来;
- 下载完成后单击IDE红色“停止”按键将PC与开发板断开,如图7-5所示;
- 此时可以去观察的开发板上的LED1,LED2,LED3和LED4,依次点亮和熄灭,至此程序已经成功下载到开发板,并且运行起来。
注意:如果用户是参考《使用Nuclei Studio快速开发GD32VF103》的方法,工程中没有生成GD_Link的配置文件,需要增加此步骤的操作,https://github.com/riscvmcu/GD32VF103_Demo_Suites 下载“openocd_gdlink.cfg”文件到本地,按照如图7-4 的方法进行操作。(仅针对参考《使用Nuclei Studio快速开发GD32VF103》的用户,参考本文的用户可以忽略)
8.Debug Runing_LED程序
如果程序员希望能够调试运行于MCU开发板中程序,可以使用Nuclei Studio IDE进行调试。由于IDE运行于主机PC端,而程序运行于MCU开发板上,因此这种调试也称为“在线调试”或者“远程调试”。
使用Nuclei Studio IDE对GD32VF103开发板进行在线调试的步骤如下:
在菜单栏中,点击Run->Debug Configurations,进入Debug配置界面,可以看到该工程对应的Debug配置文件已经自动生成,如图8-1所示,如果没有生成Debug配置文件,需要右键“GDB OpenOCD Debugging”,然后“New”一个新的配置;
完成上面的操作步骤后,点击图8-2中的“debug”按钮,IDE进入debug界面。IDE的界面的主要功能区域如图8-3所示;
如图8-3中的中间Console区域,没有报出错误的信息,则表示下载成功;
- 如图8-3中的右上角区域所示,调试界面的标志为右上角的甲虫标志
,用户可以随时单击此标志进入调试界面;
- 如图8-3中的右上角区域所示,代码开发界面的标志为右上角的C标志
,用户可以随时按击此标志进入代码开发界面。
进入Debug界面后,程序会在main下面的第一条代码处停住,如图8-4所示。
添加SVD文件, SVD文件中定义了GDVF103芯片的详细的信息,包含了片内外设,每一个外设的硬件寄存器,每一个寄存器中每一个数据位的值,以及详细的说明信息等。GDVF103存放在Nuclei Studio IDE软件包下 NucleiStudio\svd目录下,名为“GD32VF103.svd"。添加步骤如图7-5所示。
注意:如果用户是参考《使用Nuclei Studio快速开发GD32VF103》的方法,工程中没有生成GD_Link的配置文件,需要增加此步骤的操作,https://github.com/riscvmcu/GD32VF103_Demo_Suites 下载“openocd_gdlink.cfg”文件到本地,按照如图7-4 的方法进行操作。(仅针对参考《使用Nuclei Studio快速开发GD32VF103》的用户,参考本文的用户可以忽略)**
9 调试基本操作
9.1 基本调试功能
如图9-1红框中的功能按钮从左到右依次为:“skip all brakpoint”,“resume”,“suspend” ,“stop”, “step into”,“step ove”,其功能分别为:
- skip all brakpoint:跳过全部断点;
- resume:继续;
- suspend:暂停;
- stop:停止;
- step into:单步执行,遇到函数就进入函数并且继续单步执行;
step over:在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行 完再停止,也就是把子函数整个作为一步。如果没有子函数效果和step into是一样的;
step return:当单步执行到子函数内时,用step return就可以执行完子函数余下部分,并返回到上一层函数。
9.2 增加断点
用户为程序增加断点有如下两种方式:
- 双击代码对应行数的左边区域,增加成功会出现一个蓝色的点,如图9-2所示;
- 在如图9-2的红色区域右键选择”Add BreakPoint“,使用默认设置,点击”Apply and Close“即可,如图9-3所示。