2.12. 常见问题
2.12.1. Nuclei Studio启动慢
Nuclei Studio是基于eclipse进行开发,继承了eclipse的可扩展性的特点的是同时,也存在着启动较慢的问题,第一次启动时,软件需要验证环境;生成常用的缓存文件;创建Workspace.在2021.09版的Nuclei Studio中,我们针对启动做了优化,在电脑性能足够的前提下,第一次启动Nuclei Studio能在一分钟内完成。
Nuclei Studio最佳运行环境:
Windows 10操作系统
4G以上内存(2G可以被Nuclei Studio分配使用)
2.12.2. Nuclei Studio编译程序很慢
在测试使用过程中,我们发现Nuclei Studio在编译项目时会出现很慢的现像,经过排查发现,当电脑安装360杀毒软件时,编译指令执行很慢,退出360杀毒软件时,编译指令可以按正常速度执行。为了保障Nuclei Studio的正常使用,建议在使用时退出360等杀毒软件。
2.12.3. 找不到New Nuclei Risc-V C/C++ Project菜单
New Nuclei Risc-V C/C++ Project是创建工程的快捷入口,有时候如果找到不到New Nuclei Risc-V C/C++ Project菜单。
可以在菜单 Window->Perspective->Reset Perspective
里进行视图重置, New Nuclei Risc-V C/C++ Project
就会重新出现。
或者将当前视图切换到C/C++视图。
2.12.4. 打开/关闭Launch Bar
Nuclei Studio2022.12及以后的版本中,默认是开户启了Launch Bar功能。打开菜单栏 Window -> Preferences
,搜索 bar
,取消勾选第一个选项即可关闭Launch Bar。同理,想要使用Launch
Bar功能,请勾选此选项。
2.12.5. 使用Launch Bar
Nuclei Studio的Launch Bar(下图中蓝色框内标注部分)是对后边下拉框中选中的调试配置对应的工程进行编译、调试和下载等操作,如需使用此部分请注意,图标是与下拉框中调试配置内容相绑定。下面详细介绍Launch Bar各部分功能:
图标1:编译选中的调试配置对应的工程。此处选中的工程为5号下拉框选中的调试配置对应工程,并非Project Explorer中选中的工程。
图标2:运行/调试选中的调试配置对应的工程。此处图标会根据下拉框4的内容变化。
图标3:退出下载/调试模式。
下拉框4:切换选择下载/调试模式。切换后会改变图标2的显示内容。
下拉框5:选中调试配置文件。此处的内容会影响图标1、2、3对应的工程。
齿轮图标6:打开当前选中的调试配置页面,可直接进行修改保存。
2.12.6. 不使用Launch Bar进行运行/调试
对于初次新建的工程,如果不使用Launch Bar功能,可以右键工程,选择 Debug As -> Debug Configurations
。在弹窗中选择工程对应的设置选项,这里以helloworld工程为例,选择 helloworld_debug_openocd
,之后选择 Debug
开始调试。
同理,初次运行需要右击工程,选择 Run As -> Run Configurations
。在弹窗中选择工程对应的设置选项,之后选择 Run
开始运行。
若当前工程已按以上方式进行过调试或运行操作,可在上方按键中选择的下拉选项,快速选择对应的工程设置进行调试。对于运行,可以在的下拉选项,快速选择对应的设置。
2.12.7. Debug页面查看寄存器
进入Debug模式后,可能有些页面并不能第一时间找到,这里以查看寄存器栏目为例。在菜单栏选择 Window -> Show View -> Registers
打开寄存器栏目,在Register页面可以通过 Ctrl–F
来查找寄存器。同样,如果想查看内存,可以选择 Window -> Show View -> Memory
,想打开调试控制台,可以选择 Window -> Show View -> Debugger Console
,其他页面此处不做过多介绍,请用户自行体验。
2.12.8. Debug页面结束进程
在Debug页面要退出调试,可点击退出调试。为防止打开多个进程导致报错,在Debug页面,右击Debug栏目中的进程,选择 Terminate / Disconnect All
关闭所有Debug进程。
2.12.9. Nuclei Studio工具栏中各按键功能
在Nuclei Studio中,常见的工具栏图标如下,本节将依次介绍各按键的功能。
新建按键,包括新建各种文件和工程。
保存当前文件和保存所有未保存文件。
切换编译设置,默认只有Debug和Release,用户可自行添加,这里不做介绍。
编译工程,可以在下拉选项中编译Project Explorer中选中的工程。
编译所有工程,一次性编译所有Project Explorer中的工程。
新建功能,包含工程创建,目录创建,文件创建和类创建。
调试,可根据下拉选项选择不同调试设置来调试不同的工程。
运行,可根据下拉选项选择不同的设置来选择不同的工程。
Profile ,使用Profile功能,暂不支持,此处不做介绍。
用户自定义工具,此处不做介绍,用户可自己深入研究。
搜索工具,可搜索任务,文本等。
文本阅读工具,可以展开或折叠文本等功能。
控制台工具,可选择打开各种控制台或串口等。
Debug用,前者跳过所有断点,后者实现Restart功能。
查看CMSIS ,eclipse自带功能,暂不支持。
Nuclei SDK工程设置工具,参见6.6.1。
文本阅读工具,可设置快速跳转,具体功能此处不作过多介绍。
2.12.10. 显示其他窗口
在IDE的右上角按键可以切换不同的显示模式,常用的是C/C++页面和Debug页面。其中,在进入Debug模式时,若不在Debug页面,会有弹窗提示,此时点击 Switch
选项可以切换至Debug页面。在菜单栏中选择 Window -> Perspective -> Open Perspective
可以快速切换显示窗口。
在不同的窗口下, Window -> Show View
显示的内容也不尽相同。在Debug窗口中可以选择显示如寄存器(Registers),内存(Memory)和调试控制台(Debugger
Console)。
2.12.11. 恢复默认窗口布局
在菜单栏中选择 Window -> Perspective -> Reset Perspective
,在弹窗中选择 Reset Perspective
可以恢复窗口默认布局。
2.12.12. 对比历史文件
右击要查看历史的文件,选择 Compare With -> Local History
打开历史记录。在打开的History栏目双击选择要对比的文件历史版本,可以查看文件变动历史。
2.12.13. 新建工程时可能出现报错
新建工程时IDE需要索引整个工程,根据主机性能其所用时间不同。如果主机性能较差,可能会看到索引时产生error,索引结束后error会消失。如出现以上现象,请以编译时是否报错为准。
2.12.14. 新增Include路径出现缓存
在include页面新增路径时,可能会出现缓存的路径内容,此时点击Workspace或File System选中后可覆盖其内容。
2.12.15. 设置页面栏目找不到
有时可能因为弹窗大小,部分设置栏目被隐藏起来,可点击红框中左右方向图标显示隐藏栏目。
2.12.16. 开发板下载速度很慢
如果遇到开发板下载速度很慢,甚至出现超时的报错,请切换至使用USB3.0接口,如果使用虚拟机开发,也请同时将USB接口设置为3.0。
2.12.17. Linux环境下多用户使用Nuclei Studio
如果需要多用户同时使用Nuclei Studio(不推荐),用户在运行Nuclei Studio时首先要打开菜单栏的 Window->Preferences
。在弹窗中需要修改三个地方:
打开 MCU->Global OpenOCD Path
, Executable
输入 openocd
, Folder
输入 ${eclipse_home}/toolchain/openocd/bin
。
打开 MCU->Global QEMU Path
, Executable
输入 qemu-system-riscv32
, Folder
输入 ${eclipse_home}/tools/qemu
。
打开 MCU->Global RISC-V Toolchains Paths
, Default toolchain
选中 RISC-V Nuclei GCC
, Toolchain folder
输入 ${eclipse_home}/toolchain/gcc/bin
。
修改后点击 Apply and Close
保存并关闭设置弹窗。
2.12.18. 设备管理器中识别出两个串口
可能连接设备后在任务管理器中识别出两个串口,其中COM编号较大的是串口打印使用,可以使用串口调试助手等工具连接查看打印信息,但是请不要占用COM编号较小的串口。
2.12.19. Linux下使用时报Could not determine GDB version after sending:riscv-nuclei-elf-gdb –version,response:的错误
第一次在linux下使用Nuclei Studio时,会报错 Could not determine GDB version after sending:riscv-nuclei-elf-gdb –version,response:
.
riscv-nulcei-elf-gdb在Nuclei studio 2023.10及之后的版本变更为riscv64-unknown-elf-gdb。
可以使用命令 ldd $(which riscv-nulcei-elf-gdb)
查看,依赖缺失
使用命令 sudo apt install libncursesw5 libtinfo5
安装相关依赖后,ide运行正常,具体可以参考https://github.com/riscv-mcu/riscv-gnu-toolchain/issues/9
2.12.20. 在linux下使用QEMU时报错
例如在Ubuntu 20.04上使用QEMU时,可能会报错:
error while loading shared libraries: libfdt.so.1: cannot open shared object file: No such file or directory,
这是因为缺少libfdt.so等依赖所致,只需要在对应版本的linux上安装对应的依赖。例如针对Ubuntu 20.04可以使用如下命令:
安装 libfdt等依赖: sudo apt install libfdt1 libpixman-1-0 libpng16-16 libasound2 libglib2.0-0
2.12.21. 工程编译链接C库找不到符号报错
这个问题在Nuclei Studio 2024.06可以得到解决,只需要在 Linker -> Libraries页面勾选 Group Libraries即可。
因为在对Libraries的处理中,没有能很好的处理链接之间的内部依赖关系,当使用的链接之前互相有依赖时,可能会导至编译不通过,详细参见https://github.com/eclipse-embed-cdt/eclipse-plugins/issues/592。解决这个问题,可以有两种办法。
通过调整Libraries的顺序或者添加多个链接来实现
打开 C/C++ Build -> Settings -> Tool Settings ->GUN RISC-V Cross C++ Linker
,并修改Command line paatern内容,将其修改为
${COMMAND}
${cross_toolchain_flags} ${FLAGS} ${OUTPUT_FLAG}
${OUTPUT_PREFIX}${OUTPUT} ${OBJS}${USER_OBJS} -Wl,--start-group
$(LIBS)
-Wl,--end-group,
IDE就会将Libraries内的内容以group的方式处理。
2.12.22. 编译工程报错fatal error: rvintrin.h: No such file or directory
在Nuclei Studio
2023.10中,如果使用旧的sdk所创建的工程,如果编译时报错 fatal error: rvintrin.h: No such file or directory
,是因为在GCC 10时,工程中 #include <rvintrin.h>
,而在GCC 13中,不需要再 #include <rvintrin.h>
,只需要删除此行,即可编译通过。
2.12.23. Debug时报错Error: Couldn’t find an available hardware trigger.
在Nuclei Studio环境中,当工程在没有硬件断点的CPU硬件上运行时,且选择程序下载到Flash中运行以Nuclei SDK/Nuclei N100 SDK为例就是(flash/flashxip DOWNLOAD模式),可能会遇到程序Debug无法停住的问题,并收到错误提示: Error: Couldn't find an available hardware trigger
。这是因为程序运行在Flash上,软件断点无法被成功写入,而CPU上又没有硬件断点可以被使用,从而导致报错。
这种情况下需要将程序编译到RAM上才可以支持IDE上进行调试(软件断点),如果需要调试则暂时只能通过命令行的方式进行调试。
2.13. 其他未注明或者遇到的版本问题
如本文档中有疏漏的地方,请关注 https://www.rvmcu.com/NucleiStudio-faq.html 这里将列出不同版本后续遇到的常见问题。