用户可以访问芯来科技公司官方网站的“文档与工具”页面(https://www.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-cm32m4xxr”可见其状态为“Not Installed”。
勾选”sdk-cm32m4xxr”,点击“Download”,即可导入CM32M4xxR SDK,完成后会显示其状态为“Installed”。
在Nuclei Studio菜单栏选择“File —> New —> New Nuclei RISC-V C/C++ Project”,如下图所示。
在弹出对话框中选择“CM32M433R_START”栏目下的“sdk-cm32m4xxr”,点击“Next”。
进入新建工程设置界面,如下图所示,在“Project Name”栏输入项目名“printf”,在“Project Example”下拉栏中选择“Printf @app-START Printf”,其他配置选项可保持不变,点击“Finish”即可完成Printf例程的创建。
项目创建完成后,界面如下图所示,从图中左侧Project Explorer栏中可以看到,创建好的项目已经包含了CM32M4xxR SDK的支持。
查看main函数可知,该项目主要功能为
注意:
对于Printf函数的实现,是通过底层Newlib C运行库中的桩函数write函数进行的字符逐个输出,write函数最终调用_write函数,而该函数被实现在CMIOT.CM32M4xxR_Library/SoC/CM32M4xxR/Common/Env/Stubs/write.c文件中,其代码如下
_put_char函数在main.c中进行了重实现,其代码如下。
从上述具体实现中可以看出,该函数通过调用USART模块的USART_SendData函数来实现输出字符重定向至串口将其输出,最终显示在主机PC的显示屏幕上(借助主机PC的串口调试助手软件)。
新创建完成的工程已经设置好编译链接相关的配置选项,可单击Nuclei Studio IDE菜单上的“锤子”按钮直接进行编译。
若编译成功,则显示如下图所示,能够看到所生成可执行文件的代码大小,包括text段、data段和bss段,以及总大小的十进制和十六进制数值,编译生成的可执行文件存放在Debug目录下。
首先需要进行硬件的连接,通过一根Micro USB电缆线将CM32M433R-START开发板与PC进行连接,线缆连接好后,板上的红色电源灯会点亮,如下图所示。
第一次使用CM32M433R-START开发板,需要为其安装驱动。对于Windows系统环境,驱动点击此处下载,双击即可安装,如下图所示。
注意:
- 此处无需勾选JLink支持包的安装。
- 板载调试器还包含了“将MCU的UART转换成USB输出”功能,因此将CM32M433R-START开发板与PC连接后,将被主机识别成一个COM串口,可通过PC的设备管理器查看该串口端口号。
对于Linux系统环境,具体操作如下(以Ubuntu 20.04系统环境为例)
lsusb // 运行该命令后会显示如下信息。
...
Bus 001 Device 003: ID 7777:5740 CMIOT CM-LINK
ls -al /dev/serial/by-id | grep usb-CMIOT.* // 运行该命令后会显示如下信息。
...
... usb-CMIOT_CM-LINK_36021150334136353314415E-if00 -> ../../ttyACM0
... usb-CMIOT_CM-LINK_36021150334136353314415E-if02 -> ../../ttyACM1
whoami // 运行该命令能显示主机用户名,假设主机用户名显示为your_user_name
// 运行如下命令将your_user_name添加到dailout group中
sudo usermod -a -G dailout your_user_name
groups // 运行该命令后会显示类似如下信息。
... dailout ...
// 只要从显示的groups中看到dailout 则意味着主机用户属于该组,表示设置成功
然后设置PC端串口调试工具。Nuclei Studio IDE中集成了串口工具,在其菜单栏中选择“Window—>Show View—>Terminal”,如下图所示,点击“Terminal”窗口中的“显示器”图标按钮,打开串口工具配置界面。
弹出窗口如下图 所示,对串口通信相关参数进行设置,具体为115200 baud, 8 bits data, no parity, 1 stop bit (115200-8-N-1)。其中的串口端口号,需要将CM32M433R-START开发板与PC主机进行正确连接后,可通过PC主机的设备管理器进行查看。
在Nuclei Studio IDE菜单栏下方的“Launch Bar”中设置模式为“Run”,配置为“printf_cmlink_openocd”,如下图所示。
设置完成后,点击绿色“运行”按钮即可开始下载程序至CM32M433R-START开发板,并运行示例工程,printf示例运行后打印结果如下图所示。
进行调试前,需要完成示例工程的编译,以及CM32M433R-START开发板与PC的正确连接。然后,在Nuclei Studio IDE菜单栏下方的“Launch Bar”中设置模式为“Debug”,配置为“printf_cmlink_openocd”,如下图所示。
设置完成后,点击“甲壳虫”按钮即可开始下载程序至CM32M433R-START开发板,并进入调试模式,界面如下图所示。