用户可以访问芯来科技公司官方网站的“文档与工具”页面(https://nucleisys.com/download.php),如下图中方框所标识,根据用户开发环境,下载对应Windows或Linux的Nuclei Studio压缩包。
注意:
- 芯来科技公司会对其提供的工具进行持续的更新与维护,建议选用最新版本
- 目前已在Win 10(64位)系统,Ubuntu 18.04/20.04和 Redhat7.6(64位)版本上验证测试,推荐在以上版本的系统中使用。
下载完成后,解压压缩包,随后运行NucleiStudio文件夹下面的可执行文件,即可启动Nuclei Studio IDE,如下图所示。
上图为Windows版本示意图,Linux版本类似,可执行文件名为“NucleiStudio”
第一次启动Nuclei Studio IDE后,将会弹出对话框要求设置Workspace目录路径,该目录将用于存放后续创建的项目工程文件,用户可自行选择存放地址,如下图所示。
设置好Workspace目录之后,单击“Launch”按钮,将会启动Nuclei Studio。第一次启动后的Nuclei Studio界面如下图所示。
在Nuclei Studio菜单栏选择“RV-Tools —> Nuclei Package Management”,弹出对话框如下图所示。
展开\”sdk-nuclei_sdk\”可见其状态为“Not Installed”。
勾选\”sdk-nuclei_sdk\”,点击“Download”,即可导入Nuclei SDK,完成后会显示其状态为“Installed”。
在Nuclei Studio菜单栏选择“File —> New —> New Nuclei RISC-V C/C++ Project”,如下图所示。
在弹出对话框中选择“Nuclei GD32VF103 RVSTAR Board”栏目下的“sdk-nuclei_sdk”,点击“Next”。
进入新建工程设置界面,如下图所示,在“Project Name”栏输入项目名“helloworld”,在“Project Example”下拉栏中选择“Helloworld @app-nsdk helloworld”,其他配置选项可保持不变,点击“Finish”即可完成HelloWorld例程的创建。
项目创建完成后,界面如下图所示,从图中左侧Project Explorer栏中可以看到,创建好的项目已经包含了Nuclei SDK的支持。
查看main函数可知,该项目主要功能为
注意:
- 对于Printf函数的实现,是通过底层Newlib C运行库中的桩函数write函数进行的字符逐个输出,write函数最终调用_write函数,而该函数被实现在nuclei_sdk/SoC/gd32vf103/Common/Source/Stubs/newlib/write.c文件中,其代码如下
从上述具体实现中可以看出,该函数通过调用UART模块的uart_write函数来实现输出字符重定向至UART将其输出,最终显示在主机PC的显示屏幕上(借助主机PC的串口调试助手软件)。- GD32VF103 MCU串口的使用需要先进行初始化设置,该过程已在MCU上电运行至main函数之前完成,因此print函数可通过串口进行输出。关于串口的初始化设置可查看nuclei_sdk/SoC/gd32vf103/Common/Source/system_gd32vf103.c文件,具体实现在_premain_init函数中。
新创建完成的工程已经设置好编译链接相关的配置选项,可单击Nuclei Studio IDE菜单上的“锤子”按钮直接进行编译。
若编译成功,则显示如下图所示,能够看到所生成可执行文件的代码大小,包括text段、data段和bss段,以及总大小的十进制和十六进制数值,编译生成的可执行文件存放在Debug目录下。
首先需要进行硬件的连接,通过一根USB Type-C电缆线将RV-STAR开发板与PC进行连接,线缆连接好后,板上的蓝色电源灯会点亮,如下图所示。
注意:
- 第一次使用RV-STAR开发板,对于Linux系统环境下需要为其设置驱动(Windows环境下免驱),具体操作如下(以Ubuntu 20.04系统环境为例)
使用如下命令查看USB设备的状态使用如下命令设置udev rules,使得该USB设备能够被plugdev group所访问lsusb // 运行该命令后会显示如下信息。 ... Bus 001 Device 004: ID 0403:6010 Future Technology Devices International, Ltd FT2232xxxx
使用如下命令查看该USB设备是否属于plugdev groupsudo vi /etc/udev/rules.d/99-openocd.rules // 用vi打开该文件,然后添加以下内容至该文件中,然后保存退出。 SUBSYSTEM==\"usb\", ATTR{idVendor}==\"0403\", ATTR{idProduct}==\"6010\", MODE=\"664\", GROUP=\"plugdev\" SUBSYSTEM==\"tty\", ATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"6010\", MODE=\"664\", GROUP=\"plugdev\"
将主机用户添加到plugdev group中ls /dev/ttyUSB* // 运行该命令后会显示类似如下信息。 /dev/ttyUSB0 /dev/ttyUSB1 ls -l /dev/ttyUSB1 // 运行该命令后会显示类似如下信息。 crw-rw-r-- 1 root plugdev 188, 1 Nov 28 12:53 /dev/ttyUSB1
确认主机用户是否属于plugdev groupwhoami // 运行该命令能显示主机用户名,假设主机用户名显示为your_user_name // 运行如下命令将your_user_name添加到plugdev group中 sudo usermod -a -G plugdev your_user_name
groups // 运行该命令后会显示类似如下信息。 ... plugdev ... // 只要从显示的groups中看到plugdev则意味着主机用户属于该组,表示设置成功
- 由于板载调试器还包含了“将MCU的UART转换成USB输出”功能,因此将RV-STAR开发板与PC连接后,将被主机识别成一个COM串口,可通过PC的设备管理器查看该串口端口号。
然后设置PC端串口调试工具。Nuclei Studio IDE中集成了串口工具,在其菜单栏中选择“Window—>Show View—>Terminal”,如下图所示,点击“Terminal”窗口中的“显示器”图标按钮,打开串口工具配置界面。
弹出窗口如下图 所示,对串口通信相关参数进行设置,具体为115200 baud, 8 bits data, no parity, 1 stop bit (115200-8-N-1)。其中的串口端口号,需要将RV-STAR开发板与PC主机进行正确连接后,可通过PC主机的设备管理器进行查看。
在Nuclei Studio IDE菜单栏下方的“Launch Bar”中设置模式为“Run”,配置为“helloworld_debug_openocd”,如下图所示。
设置完成后,点击绿色“运行”按钮即可开始下载程序至RV-STAR开发板,并运行示例工程,helloworld示例运行后打印结果如下图所示。
进行调试前,需要完成示例工程的编译,以及RV-STAR开发板与PC的正确连接。然后,在Nuclei Studio IDE菜单栏下方的“Launch Bar”中设置模式为“Debug”,配置为“helloworld_debug_openocd”,如下图所示。
设置完成后,点击“甲壳虫”按钮即可开始下载程序至RV-STAR开发板,并进入调试模式,界面如下图所示。