RISC-V MCU中文社区

CM32M433R-START快速上手

1. Nuclei Studio的下载及运行

用户可以访问芯来科技公司官方网站的“文档与工具”页面(https://www.nucleisys.com/download.php),如下图中方框所标识,根据用户开发环境,下载对应Windows或Linux的Nuclei Studio压缩包。

注意:

  • 芯来科技公司会对其提供的工具进行持续的更新与维护,建议选用最新版本
  • 目前已在Win 10(64位)系统,Ubuntu 18.04/20.04和 Redhat7.6(64位)版本上验证测试,推荐在以上版本的系统中使用。

60b9ff398449db2dcfef9197e2187ae6.jpg
下载完成后,解压压缩包,随后运行NucleiStudio文件夹下面的可执行文件,即可启动Nuclei Studio IDE,如下图所示。

e0eb29cd-e812-4e3e-b48f-801fb036e129.jpg

上图为Windows版本示意图,Linux版本类似,可执行文件名为“NucleiStudio”

第一次启动Nuclei Studio IDE后,将会弹出对话框要求设置Workspace目录路径,该目录将用于存放后续创建的项目工程文件,用户可自行选择存放地址,如下图所示。
bb2c925e-a9a9-4a37-b680-a352c59ffbae.png

设置好Workspace目录之后,单击“Launch”按钮,将会启动Nuclei Studio。第一次启动后的Nuclei Studio界面如下图所示。

37913670-d516-4804-b6c7-6e475d71b4af.jpg

2. 导入CM32M4xxR SDK

在Nuclei Studio菜单栏选择“RV-Tools —> Nuclei Package Management”,弹出对话框如下图所示。
c514bf30-57ba-4b98-82fd-e2f894d1c85d.png

展开”sdk-cm32m4xxr”可见其状态为“Not Installed”。
fcda0391-04ae-4f6e-867d-e893302dbccb.png

勾选”sdk-cm32m4xxr”,点击“Download”,即可导入CM32M4xxR SDK,完成后会显示其状态为“Installed”。
bf9bc126-aaeb-451d-b94a-8ede04538db9.png

3. 新建HelloWorld工程

在Nuclei Studio菜单栏选择“File —> New —> New Nuclei RISC-V C/C++ Project”,如下图所示。
976de00c-f2b3-469a-92ec-cba097645ece.jpg

在弹出对话框中选择“CM32M433R_START”栏目下的“sdk-cm32m4xxr”,点击“Next”。

fa60b081-aef4-4942-bed5-6f1223b020fb.jpg

进入新建工程设置界面,如下图所示,在“Project Name”栏输入项目名“printf”,在“Project Example”下拉栏中选择“Printf @app-START Printf”,其他配置选项可保持不变,点击“Finish”即可完成Printf例程的创建。

d409fb62-815f-46f4-bb81-068889781569.jpg

项目创建完成后,界面如下图所示,从图中左侧Project Explorer栏中可以看到,创建好的项目已经包含了CM32M4xxR SDK的支持。
13db37b1-f39a-4aa0-af42-9ade7f52e380.png

4. 工程介绍

查看main函数可知,该项目主要功能为

  • 串口初始化设置
  • 打印“USART Printf Example: retarget the C library printf function to the USART”

注意:
对于Printf函数的实现,是通过底层Newlib C运行库中的桩函数write函数进行的字符逐个输出,write函数最终调用_write函数,而该函数被实现在CMIOT.CM32M4xxR_Library/SoC/CM32M4xxR/Common/Env/Stubs/write.c文件中,其代码如下
3f4dd0bf-d2fd-4f1d-bc50-43ddb4c7aef5.png
_put_char函数在main.c中进行了重实现,其代码如下。
68eb78a1-1580-4ae7-9787-c46cb19fab4e.png
从上述具体实现中可以看出,该函数通过调用USART模块的USART_SendData函数来实现输出字符重定向至串口将其输出,最终显示在主机PC的显示屏幕上(借助主机PC的串口调试助手软件)。

5. 工程编译

新创建完成的工程已经设置好编译链接相关的配置选项,可单击Nuclei Studio IDE菜单上的“锤子”按钮直接进行编译。
若编译成功,则显示如下图所示,能够看到所生成可执行文件的代码大小,包括text段、data段和bss段,以及总大小的十进制和十六进制数值,编译生成的可执行文件存放在Debug目录下。
07abd004-d97a-43f5-8398-9a9ec2a8a0ca.jpg

6. 工程运行

首先需要进行硬件的连接,通过一根Micro USB电缆线将CM32M433R-START开发板与PC进行连接,线缆连接好后,板上的红色电源灯会点亮,如下图所示。
e370edb2-7f40-4243-8d53-e8ec6f31fa63.jpg

第一次使用CM32M433R-START开发板,需要为其安装驱动。对于Windows系统环境,驱动点击此处下载,双击即可安装,如下图所示。

7620eab5-8d9d-4beb-8cdc-62aaccde8574.jpg

注意:

  • 此处无需勾选JLink支持包的安装。
  • 板载调试器还包含了“将MCU的UART转换成USB输出”功能,因此将CM32M433R-START开发板与PC连接后,将被主机识别成一个COM串口,可通过PC的设备管理器查看该串口端口号。
    0141a871-43fa-463f-9f18-9b997c95c2c6.jpg

对于Linux系统环境,具体操作如下(以Ubuntu 20.04系统环境为例)

  • 使用如下命令查看USB设备的状态
           lsusb     // 运行该命令后会显示如下信息。
           ...
           Bus 001 Device 003: ID 7777:5740 CMIOT CM-LINK
    
  • 使用如下命令找到调试接口对应的tty设备
         ls -al /dev/serial/by-id | grep usb-CMIOT.*    // 运行该命令后会显示如下信息。
           ...
           ... usb-CMIOT_CM-LINK_36021150334136353314415E-if00 -> ../../ttyACM0
           ... usb-CMIOT_CM-LINK_36021150334136353314415E-if02 -> ../../ttyACM1
    
  • 将主机用户添加到dailout group中
             whoami     // 运行该命令能显示主机用户名,假设主机用户名显示为your_user_name
                              // 运行如下命令将your_user_name添加到dailout group中
             sudo usermod -a -G dailout your_user_name
    
  • 确认主机用户是否属于dailout group
             groups     // 运行该命令后会显示类似如下信息。 
             ... dailout ...
             // 只要从显示的groups中看到dailout 则意味着主机用户属于该组,表示设置成功
    
  • 完成上述配置需重启后生效

然后设置PC端串口调试工具。Nuclei Studio IDE中集成了串口工具,在其菜单栏中选择“Window—>Show View—>Terminal”,如下图所示,点击“Terminal”窗口中的“显示器”图标按钮,打开串口工具配置界面。
196ea04f-787e-43f2-9a3e-36ce5d29a78e.jpg

弹出窗口如下图 所示,对串口通信相关参数进行设置,具体为115200 baud, 8 bits data, no parity, 1 stop bit (115200-8-N-1)。其中的串口端口号,需要将CM32M433R-START开发板与PC主机进行正确连接后,可通过PC主机的设备管理器进行查看。
c9913ccc-f6a7-4bd3-841a-f9cca14b530c.png

在Nuclei Studio IDE菜单栏下方的“Launch Bar”中设置模式为“Run”,配置为“printf_cmlink_openocd”,如下图所示。
4dd7090d-2abc-41c4-950a-2c148992ee4f.jpg

设置完成后,点击绿色“运行”按钮即可开始下载程序至CM32M433R-START开发板,并运行示例工程,printf示例运行后打印结果如下图所示。
f5bdef94-1c47-4070-a5ee-03a68676dec4.jpg

7. 工程调试

进行调试前,需要完成示例工程的编译,以及CM32M433R-START开发板与PC的正确连接。然后,在Nuclei Studio IDE菜单栏下方的“Launch Bar”中设置模式为“Debug”,配置为“printf_cmlink_openocd”,如下图所示。
b6f29d55-73ff-4a2e-9c88-6bd7c7aa5475.jpg

设置完成后,点击“甲壳虫”按钮即可开始下载程序至CM32M433R-START开发板,并进入调试模式,界面如下图所示。

932548f8-cee2-4eed-97d4-34892bb3cfed.jpg

更多参考文档