diff --git a/source/asserts/nucleistudio/advanceusage/image72.png b/source/asserts/nucleistudio/advanceusage/image72.png index 7a3fcd6..2ae7a9a 100644 Binary files a/source/asserts/nucleistudio/advanceusage/image72.png and b/source/asserts/nucleistudio/advanceusage/image72.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image73.png b/source/asserts/nucleistudio/advanceusage/image73.png index 9df5885..3afd724 100644 Binary files a/source/asserts/nucleistudio/advanceusage/image73.png and b/source/asserts/nucleistudio/advanceusage/image73.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image74.png b/source/asserts/nucleistudio/advanceusage/image74.png index 19850a8..30114d1 100644 Binary files a/source/asserts/nucleistudio/advanceusage/image74.png and b/source/asserts/nucleistudio/advanceusage/image74.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image75.png b/source/asserts/nucleistudio/advanceusage/image75.png index d81a5a6..362e85a 100644 Binary files a/source/asserts/nucleistudio/advanceusage/image75.png and b/source/asserts/nucleistudio/advanceusage/image75.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image76.png b/source/asserts/nucleistudio/advanceusage/image76.png index 3028d39..e6ff531 100644 Binary files a/source/asserts/nucleistudio/advanceusage/image76.png and b/source/asserts/nucleistudio/advanceusage/image76.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image81.png b/source/asserts/nucleistudio/advanceusage/image81.png index b425a38..db19a12 100644 Binary files a/source/asserts/nucleistudio/advanceusage/image81.png and b/source/asserts/nucleistudio/advanceusage/image81.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image82.png b/source/asserts/nucleistudio/advanceusage/image82.png new file mode 100644 index 0000000..d584250 Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image82.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image83.png b/source/asserts/nucleistudio/advanceusage/image83.png new file mode 100644 index 0000000..fe63ed8 Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image83.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image84.png b/source/asserts/nucleistudio/advanceusage/image84.png new file mode 100644 index 0000000..b4ca6cc Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image84.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image85.png b/source/asserts/nucleistudio/advanceusage/image85.png new file mode 100644 index 0000000..be4dde1 Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image85.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image86.png b/source/asserts/nucleistudio/advanceusage/image86.png new file mode 100644 index 0000000..315183e Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image86.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image87.png b/source/asserts/nucleistudio/advanceusage/image87.png new file mode 100644 index 0000000..5376177 Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image87.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image88.png b/source/asserts/nucleistudio/advanceusage/image88.png new file mode 100644 index 0000000..4b67a2c Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image88.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image89.png b/source/asserts/nucleistudio/advanceusage/image89.png new file mode 100644 index 0000000..450690e Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image89.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image90.png b/source/asserts/nucleistudio/advanceusage/image90.png new file mode 100644 index 0000000..b32a08c Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image90.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image91.png b/source/asserts/nucleistudio/advanceusage/image91.png new file mode 100644 index 0000000..b7ec04f Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image91.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image92.png b/source/asserts/nucleistudio/advanceusage/image92.png new file mode 100644 index 0000000..3d133db Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image92.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image93.png b/source/asserts/nucleistudio/advanceusage/image93.png new file mode 100644 index 0000000..133a34d Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image93.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image94.png b/source/asserts/nucleistudio/advanceusage/image94.png new file mode 100644 index 0000000..b8406d8 Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image94.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image95.png b/source/asserts/nucleistudio/advanceusage/image95.png new file mode 100644 index 0000000..ba81809 Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image95.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image96.png b/source/asserts/nucleistudio/advanceusage/image96.png new file mode 100644 index 0000000..d1852d6 Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image96.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image97.png b/source/asserts/nucleistudio/advanceusage/image97.png new file mode 100644 index 0000000..5cdc2f8 Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image97.png differ diff --git a/source/asserts/nucleistudio/advanceusage/image98.png b/source/asserts/nucleistudio/advanceusage/image98.png new file mode 100644 index 0000000..2db377b Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/image98.png differ diff --git a/source/asserts/nucleistudio/advanceusage/nice-1.png b/source/asserts/nucleistudio/advanceusage/nice-1.png new file mode 100644 index 0000000..b992480 Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/nice-1.png differ diff --git a/source/asserts/nucleistudio/advanceusage/nice-10.png b/source/asserts/nucleistudio/advanceusage/nice-10.png new file mode 100644 index 0000000..98ebbd3 Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/nice-10.png differ diff --git a/source/asserts/nucleistudio/advanceusage/nice-2.png b/source/asserts/nucleistudio/advanceusage/nice-2.png new file mode 100644 index 0000000..a654e72 Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/nice-2.png differ diff --git a/source/asserts/nucleistudio/advanceusage/nice-3.png b/source/asserts/nucleistudio/advanceusage/nice-3.png new file mode 100644 index 0000000..b41986c Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/nice-3.png differ diff --git a/source/asserts/nucleistudio/advanceusage/nice-4.png b/source/asserts/nucleistudio/advanceusage/nice-4.png new file mode 100644 index 0000000..71be037 Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/nice-4.png differ diff --git a/source/asserts/nucleistudio/advanceusage/nice-5.png b/source/asserts/nucleistudio/advanceusage/nice-5.png new file mode 100644 index 0000000..be4f1de Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/nice-5.png differ diff --git a/source/asserts/nucleistudio/advanceusage/nice-6.png b/source/asserts/nucleistudio/advanceusage/nice-6.png new file mode 100644 index 0000000..9bc056c Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/nice-6.png differ diff --git a/source/asserts/nucleistudio/advanceusage/nice-7.png b/source/asserts/nucleistudio/advanceusage/nice-7.png new file mode 100644 index 0000000..194626b Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/nice-7.png differ diff --git a/source/asserts/nucleistudio/advanceusage/nice-8.png b/source/asserts/nucleistudio/advanceusage/nice-8.png new file mode 100644 index 0000000..d1c8cf3 Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/nice-8.png differ diff --git a/source/asserts/nucleistudio/advanceusage/nice-9.png b/source/asserts/nucleistudio/advanceusage/nice-9.png new file mode 100644 index 0000000..a915f1c Binary files /dev/null and b/source/asserts/nucleistudio/advanceusage/nice-9.png differ diff --git a/source/asserts/nucleistudio/developer/image168.png b/source/asserts/nucleistudio/developer/image168.png new file mode 100644 index 0000000..4a59d5e Binary files /dev/null and b/source/asserts/nucleistudio/developer/image168.png differ diff --git a/source/asserts/nucleistudio/developer/image169.png b/source/asserts/nucleistudio/developer/image169.png new file mode 100644 index 0000000..a12699e Binary files /dev/null and b/source/asserts/nucleistudio/developer/image169.png differ diff --git a/source/asserts/nucleistudio/developer/image170.png b/source/asserts/nucleistudio/developer/image170.png new file mode 100644 index 0000000..1057fb2 Binary files /dev/null and b/source/asserts/nucleistudio/developer/image170.png differ diff --git a/source/asserts/nucleistudio/developer/image171.png b/source/asserts/nucleistudio/developer/image171.png new file mode 100644 index 0000000..7aae623 Binary files /dev/null and b/source/asserts/nucleistudio/developer/image171.png differ diff --git a/source/asserts/nucleistudio/developer/image172.png b/source/asserts/nucleistudio/developer/image172.png new file mode 100644 index 0000000..6c3d426 Binary files /dev/null and b/source/asserts/nucleistudio/developer/image172.png differ diff --git a/source/asserts/nucleistudio/projectbuild/image17.png b/source/asserts/nucleistudio/projectbuild/image17.png new file mode 100644 index 0000000..744f82a Binary files /dev/null and b/source/asserts/nucleistudio/projectbuild/image17.png differ diff --git a/source/asserts/nucleistudio/projectbuild/image18.png b/source/asserts/nucleistudio/projectbuild/image18.png new file mode 100644 index 0000000..8b18706 Binary files /dev/null and b/source/asserts/nucleistudio/projectbuild/image18.png differ diff --git a/source/asserts/nucleistudio/projectbuild/image19.png b/source/asserts/nucleistudio/projectbuild/image19.png new file mode 100644 index 0000000..ca8d8f8 Binary files /dev/null and b/source/asserts/nucleistudio/projectbuild/image19.png differ diff --git a/source/asserts/nucleistudio/projectbuild/image20.png b/source/asserts/nucleistudio/projectbuild/image20.png new file mode 100644 index 0000000..6a820a3 Binary files /dev/null and b/source/asserts/nucleistudio/projectbuild/image20.png differ diff --git a/source/asserts/nucleistudio/projectbuild/image21.png b/source/asserts/nucleistudio/projectbuild/image21.png new file mode 100644 index 0000000..38a2aa3 Binary files /dev/null and b/source/asserts/nucleistudio/projectbuild/image21.png differ diff --git a/source/asserts/nucleistudio/projectbuild/image22.png b/source/asserts/nucleistudio/projectbuild/image22.png new file mode 100644 index 0000000..c5de1a3 Binary files /dev/null and b/source/asserts/nucleistudio/projectbuild/image22.png differ diff --git a/source/asserts/nucleistudio/projectbuild/image23.png b/source/asserts/nucleistudio/projectbuild/image23.png new file mode 100644 index 0000000..b97d5c2 Binary files /dev/null and b/source/asserts/nucleistudio/projectbuild/image23.png differ diff --git a/source/asserts/nucleistudio/projectbuild/image24.png b/source/asserts/nucleistudio/projectbuild/image24.png new file mode 100644 index 0000000..bc64f5c Binary files /dev/null and b/source/asserts/nucleistudio/projectbuild/image24.png differ diff --git a/source/ide/advanceusage.rst b/source/ide/advanceusage.rst index 9245e71..cdb6e8e 100644 --- a/source/ide/advanceusage.rst +++ b/source/ide/advanceusage.rst @@ -1,12 +1,12 @@ .. _advanceusage: -Nuclei Studio 其它功能 +Nuclei Studio 高级功能 ====================== .. _ide_advanceusage_0: -导入旧版本Nuclei Studio创建的工程 ---------------------------------- +导入旧版本创建的工程 +--------------------- Nuclei Studio 2023.10版导导入旧工程 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -661,14 +661,150 @@ Nuclei Studio会在本地启一个web服务,同时打开Perfetto Trace Viewer |image71| +.. _ide_nuclei_nice_wizard: + +Nuclei NICE Wizard +--------------------- + +.. note:: + + 在 **芯来科技视频号** 中有 **Nuclei NICE Wizard** 的视频,您可以在微信中搜索 **芯来科技视频号** 点击查看相关内容。 + +Nuclei NICE Wizard 是一个集成在 Nuclei Studio 上的工具,旨在简化和加速 NICE (自定义指令扩展) 和 VNICE (向量化自定义指令扩展) 指令的创建过程。它允许用户通过图形界面快速配置并生成自定义指令所需的代码框架,从而实现对特定应用算法的硬件加速。具体来说: + +- **简化开发流程**:减少从构思到实现自定义指令的时间。 + +- **提高效率**:通过生成优化后的指令代码,提高应用程序的执行效率。 + +- **易于集成**:生成的代码可以直接整合到现有项目中,减少了额外的工作量。 + + +创建.nice文件,打开Nuclei NICE Wizard +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +在 Nuclei Studio 中打开目标工程,并在项目根目录下创建一个 ``*.nice`` 文件(例如 aicc.nice),双击打开Nuclei NICE Wizard。 + +|image-nice-1| + +|image-nice-2| + +新增指令 +~~~~~~~~ + +点击 ``Add...`` ,根据需要修改指令内容后,点击右上角 ``save`` 即可。 + +这里举例先创建两条指令,同时左侧被选中的指令会变灰,对应内容显示在右侧。 + +|image-nice-3| + +删除指令 +~~~~~~~~~ + +左侧选择对应指令,点击Remove,确认后删除对应指令。 + +|image-nice-4| + +修改指令 +~~~~~~~~ + +左侧选择对应指令,修改指令内容后,右上save和discard按钮变红,可保存修改或放弃修改。 + +|image-nice-5| + +文件生成 +~~~~~~~~ + +可定义insn.h(包含内嵌汇编头文件)和 nice.cc(包含指令实现逻辑)文件的保存地址,点击Save and Generate File,会生成对应文件。 + +|image-nice-6| + +|image-nice-7| + +|image-nice-8| + +NICE指令模板说明 +~~~~~~~~~~~~~~~~ + +|image-nice-1| + +单个指令模板如上图所示, + * opcode: 可选custome-0,custome-1,custome-2,custome-3 + * funct3: 3位功能字段,通常用来区分不同类型的指令。 + * funct7: 7 位功能字段,可以用来进一步细分指令类型或提供额外的功能选项。 + * rd: 返回值寄存器或类型(例如 void, int, vint8m8_t 等)。 + * rs1, rs2: 输入源寄存器或类型。 + +指令内容编辑说明 +~~~~~~~~~~~~~~~~ + +|image-nice-10| + +如上图,Instruction content显示默认内容。 + + * **Instruction name** :指令名称,具体定义规范如下 + + * **字母和数字** :函数名可以包含字母 ``(A-Z,a-z)`` 和数字 ``(0-9)`` ,但是不能以数字开头。 + + * **下划线** :函数名中可以使用下划线 ``_`` 来提高可读性,尤其是在多单词组合的情况下。例如,``get_user_name`` 是一个有效的函数名, ``< , > , … , ? , /`` 都不允许出现在函数名中。 + + * **特殊字符** :除了下划线以外,其他特殊字符如 ``! , @ , # , $ , % , ^ , & , * , ( , ) , { , } , [ , ] , \ , : , ; ,`` 。 + + * **关键字** :函数名不能是C语言的关键字或保留字,比如 ``int , char , float , double , if , else , while , for , return`` 等等。 + + * **Function name** :函数名称,在不勾选的情况下生成的对应函数名为指令名称,命名规范与 ``Instruction name`` 相同。 + + * **funct7** :对应模板的 ``funct7`` ,可通过勾选Binary对应项设置。 + + * **funct3** :对应模板的 ``funct3`` ,可通过勾选Binary对应项设置。 + + * **Return Value Type** :对应模板的rd,可点击Edit Type进行设置,如果rd为void。 + + * **Number of Function Parameters** :参数个数,可设置传入参数rs1、rs2以及rs3(rs3既为参数也为返回值)的对应类型。 + + * 参数为0时,Edit Type不可设置,rs1和rs2可在下方指定寄存器,如rd为void类型,rd也可在下方指定寄存器。 + + * 参数为1时,Edit Type可设置rs1类型,rs2可在下方指定寄存器,如rd为void类型,rd也可在下方指定寄存器。 + + * 参数为2时,Edit Type可设置rs1、rs2类型,如rd为void类型,rd也可在下方指定寄存器。 + + * 参数为3时,Edit Type可设置rs1、rs2、rs3类型。 + + +.. _ide_nuclei_model: + +Nuclei Model功能的使用 +---------------------- + +芯来科技为 Nuclei Near Cycle Model 开发了专门的运行工具——Model。自 Nuclei Studio 2014.06 版本起,Nuclei Near Cycle Model最初是通过 RVProf 工具运行的。随着 Nuclei Near Cycle Model 的不断迭代和发展,为了提供更简洁高效的用户体验,我们在 RVProf 的基础上进行了功能简化,推出了新的 Model 工具。 + +新工具的主要特点包括: + +**简化功能** :移除不必要的复杂功能,使用户能够更专注于 Nuclei Near Cycle Model 的核心功能。 + +**提升效率** :优化操作流程,减少用户配置和使用的时间成本。 + +**兼容性好** :确保与现有工作流无缝集成,同时支持最新的 Nuclei Near Cycle Model 特性。 + +通过这些改进,用户可以更加高效地利用 Nuclei Near Cycle Model 进行开发和调试。通过Nuclei Studio菜单 ``Run -> Run Configuration`` 打开Run Configuration,然找后到 ``Nuclei Model`` ,双击 ``Nuclei Model`` 菜单,就会生成对应工程的配置。 + +|image82| + +关于Nuclei Model的使用,将在Nuclei Near Cycle Model章节中详细介绍。 + +.. _ide_nuclei_near_cycle_model: + .. _ide_advanceusage_71: -使用Nuclei Near Cycle Model仿真性能分析 ---------------------------------------- +Nuclei Near Cycle Model +------------------------ 在Nuclei Studio 2024.06版中,集成了Nuclei Near Cycle Model,它是由芯来科技自主研发的仿真测试和性能分析工具,可以帮助研发人员在项目初期进行一些必要的仿真测试和程序性能分析。 -Nuclei Near Cycle Model当前只有Linux版本,其具体介绍和命令行上使用参见 (https://doc.nucleisys.com/nuclei_tools/xlmodel/intro.html ) ,下面将在Nuclei Studio上演示如何使用Nuclei Near Cycle Model进行仿真和性能分析。 +Nuclei Near Cycle Modeld在Nuclei Studio 2024.06版中只有Linux版本,从2024.12版开始,已实现对Windows的支持。其具体介绍和命令行上使用参见 (https://doc.nucleisys.com/nuclei_tools/xlmodel/intro.html ) ,下面将在Nuclei Studio上演示如何使用Nuclei Near Cycle Model进行仿真和性能分析。 + +.. note:: + + Nuclei Near Cycle Model 已支持 Windows/Linux 版本,此文档测试都是基于 Nuclei Studio IDE 2024.12的 Windows 版本完成的。 在使用过程,如有问题,可以查看 `https://github.com/Nuclei-Software/nuclei-studio `__ 相关内容,也可以向我们提交相关issue。 @@ -679,15 +815,17 @@ Nuclei Near Cycle Model对芯来全类型的Core都有支持,可以创建 |image72| -Nuclei Near Cycle Model采用Nuclei Studio中的RVProf运行配置来进行运行测试,选中编译好的测试工程,然后打开NucleiStudio的Run Configurations。 +Nuclei Near Cycle Model采用Nuclei Studio中的Model运行配置来进行运行测试,选中编译好的测试工程,然后打开NucleiStudio的Run Configurations。 |image73| -并创建一个RVProf的配置,具体的配置及参数说明如下。 +并创建一个Nuclei Near Cycle Model的配置,具体的配置及参数说明如下。 |image74| -其中在Config options中需要配置 ``--trace=1 --gprof=1 --logdir=Debug`` , ``--trace=1`` 表示开启rvtrace, ``--gprof=1`` 表示开启gprof功能, ``--logdir=Debug`` 则表示最终生成的 ``.rvtrace`` 文件、 ``.gmon`` 文件存存放的路径为当前工程下的Debug目录。 +在演示示例的Config options中配置了 ``--trace=1 --gprof=1 --logdir=Debug --cpu=n300fd`` , ``--trace=1`` 表示开启rvtrace, ``--gprof=1`` 表示开启gprof功能, ``--logdir=Debug`` 则表示最终生成的 ``.rvtrace`` 文件、 ``.gmon`` 文件存存放的路径为当前工程下的Debug目录, ``--cup=n300fd`` 表示当前模拟的cpu核是n300fd。 + +关于Nuclei Near Cycle Model的参数具体说明,请参见 `Description of Parameters `__ |image75| @@ -708,10 +846,6 @@ Nuclei Near Cycle Model采用Nuclei Studio中的RVProf运行配置来进行 |image78| -Nuclei Studio会在本地启一个web服务,同时打开Perfetto Trace Viewer。通过Perfetto Trace Viewer,可以查看 ``.json`` 文件。 - -|image79| - Nuclei Near Cycle Model中支持通过gprof来分析程序,所以当我们配置了 ``--gprof`` ,在程序运行时,也会在Debug目录( ``--logdir=XX`` 所配置的目录)下同步产生一个 ``.gmon`` 文件,双击 ``.gmon`` 文件,将调用gprof工具来分析程序执行所消耗的cycle数及调用关系;同时也会产生对应的 ``callgraph.ou`` t文件,双击 ``callgraph.out`` 文件,调用Call Graph查看程序的调用关系。 调用gprof工具,可以查看生成的 ``.gmon`` 文件中的内容。 @@ -720,7 +854,164 @@ Nuclei Near Cycle Model中支持通过gprof来分析程序,所以当我们 gprof工具在查看 ``.gmon`` 文件的同时,会根据其内容,解析出程序的调用关系,并生成 ``callgraph.out`` 文件,双击 ``callgraph.out`` 调用Call Graph工具查看。 -|image81| +|image43| + +.. _ide_live_watch: + +Live Watch功能的使用 +--------------------- + +Live Watch 是一款强大的实时监控工具,专为开发者设计,旨在帮助您更高效地调试和优化代码。通过 Live Watch,您可以即时查看程序运行过程中变量的变化情况,无需打断执行流程或手动添加日志语句。在Nuclei Studio 2024.12版中实现了Live Watch 功能,它支持自动刷新变量值,确保始终看到最新的数据变化。直观的图形化界面,能轻松管理需要监控的变量。 + +.. note:: + + Live Watch功能依赖Nuclei OpenOCD >= 2024.12版本。仅支持Nuclei CPU配置了RISC-V SBA功能。 + +Live Watch功能介绍 +~~~~~~~~~~~~~~~~~~ + +通过Nuclei Studio菜单 ``Window -> Show View -> Live Watch`` 可以打开Live Watch视图。 + +|image83| + +Live Watch 视图提供了一系列功能菜单,帮助用户更高效地管理和监控变量: + +|image84| + +**Remove** + + - 删除 Live Watch 视图中指定的变量行。 + +**Remove All** + + - 清除 Live Watch 视图中所有添加的变量。 + +**Show Live Plot** + + - 显示 Live Plot 视图,用于对采样的数据进行实时绘图。 + + +在隐藏的菜单栏中,有两个设置菜单用于配置全局属性: + +|image85| + +**Live Watch Settings** + +|image86| + + - Live Watch中的一些常用设置,包含: + + - 包含以下常用设置: + + - Live Watch Speed : 设定 Live Watch 的采样频率,最快为100 ms每次。 + + - Live Watch Varible Limit : 限制同时采样的变量数量,最多为10个。 + + - Live Plot Limit : 设定 Live Plot 同时绘制的最大样本数,最多同时绘制10个样本。 + + - Save Data Path : 指定 Live Watch 采样的数据自动保存路径,供后续分析使用。 + + - Save Data Speed : 设定 Live Watch 数据自动保存的频率,默认为每10分钟保存一次。 + +**Number Format** + + - Live Watch视图变量的值的显示方式。 + + +Live Watch使用演示 +~~~~~~~~~~~~~~~~~~ + +创建一个测试工程,并在工程内实现一个正弦计算。打开Live Watch视图,找到Live Watch Settings并根据需要设置相关参数(无可不设置,直接使用默认值)。 + +|image87| + +.. code-block:: c + + /** + * 获取随时间变化的正弦波形变量 + */ + double get_sine_wave_value(double amplitude, double frequency) { + // 获取当前周期计数器的值 + uint64_t current_cycle = __get_rv_cycle(); + + // 计算当前时间(单位:秒) + double currentTime = (double)current_cycle / SystemCoreClock; + + // 提前计算频率相关的因子 + double omega = frequency * 2 * PI; + + // 计算相位 + double phase = currentTime * omega; + + // 返回正弦值 + return sin(phase) * amplitude; + } + + int main(void) + { + + double amplitude = 100.0; // 波形的振幅 + + double frequency = 0.1; // 波形的频率(每秒周期数) + + double sine_value = 0; + + printf("Enter to task_2\r\n"); + while (1) { + + sine_value = get_sine_wave_value(amplitude, frequency); + + } + + return 0; + } + + +通过菜单 ``Windows -> Show VIew -> Live Watch`` ,打开Live Watch视图。 + +|image88| + +编译工程后,Debug运行程序,在Live Watch视图中添加需要查看的变量。 + +|image89| + +让工程全速运行时,可以看到变量的值,以设定的Live Watch Speed变化,如果想要通过Live Plot查看变量的变化曲线,可以选中该条记录,并点击鼠标右键,在弹出的菜单中选中 ``Toggle Live Plot`` ,Live Plot工具就会弹出,并适应的画出变量的变化曲线。 + +|image90| + +Live Plot绘制的曲线图如下 + +|image91| + +在Live Plot中点击鼠标右键弹出菜单,有 ``Suspend``、``Continue`` 两个功能菜单,点击 ``Suspend``,Live Plot会暂停画图。 + +|image92| + +用户可以通过滚动鼠标放大曲线,查看数据详情;点击 ``Continue`` Live Plot会继续绘制曲线。 + +|image93| + + +如果不想查看该变量的变化曲线,可以再次点击 ``Toggle Live Plot`` ,将该变量从Live Plot踢除。 + +|image94| + +Live Watch视图中的某个变量,点击鼠标右键,可以修改数据显示的格式。 + +|image97| + +Live Watch视图中的某个变量,点击鼠标右键,将该变量的结果存存为CSV格式文件,方便查阅和使用。 + +|image96| + +Live Watch也会自动将查询到的数据结果保存到 ``Save Data Path`` 中,用户可以在Save Data Path找到对应的CSV格式的数据文件。 + +|image98| + +如果不想继续查看该变量的值,也可以选中该条记录,并点击鼠标右键,在弹出的菜单中选中 ``Toggle Live Watch`` ,Live Watch就不再适时查询该变量的值。 + +|image95| + .. |image1| image:: /asserts/nucleistudio/advanceusage/image2.png @@ -819,106 +1110,127 @@ gprof工具在查看 ``.gmon`` 文件的同时,会根据其内容,解析出 .. |image47| image:: /asserts/nucleistudio/advanceusage/image48.png - .. |image48| image:: /asserts/nucleistudio/advanceusage/image49.png - .. |image49| image:: /asserts/nucleistudio/advanceusage/image50.png - .. |image50| image:: /asserts/nucleistudio/advanceusage/image51.png - .. |image51| image:: /asserts/nucleistudio/advanceusage/image52.png - .. |image52| image:: /asserts/nucleistudio/advanceusage/image53.png - .. |image53| image:: /asserts/nucleistudio/advanceusage/image54.png - .. |image54| image:: /asserts/nucleistudio/advanceusage/image55.png - .. |image55| image:: /asserts/nucleistudio/advanceusage/image56.png - .. |image56| image:: /asserts/nucleistudio/advanceusage/image57.png - .. |image57| image:: /asserts/nucleistudio/advanceusage/image58.png - .. |image58| image:: /asserts/nucleistudio/advanceusage/image59.png - .. |image59| image:: /asserts/nucleistudio/advanceusage/image60.png - .. |image60| image:: /asserts/nucleistudio/advanceusage/image61.png - .. |image61| image:: /asserts/nucleistudio/advanceusage/image47.png - .. |image62| image:: /asserts/nucleistudio/advanceusage/image62.png - .. |image63| image:: /asserts/nucleistudio/advanceusage/image63.png - .. |image64| image:: /asserts/nucleistudio/advanceusage/image64.png - .. |image65| image:: /asserts/nucleistudio/advanceusage/image65.png - .. |image66| image:: /asserts/nucleistudio/advanceusage/image66.png - .. |image67| image:: /asserts/nucleistudio/advanceusage/image67.png - .. |image68| image:: /asserts/nucleistudio/advanceusage/image68.png - .. |image69| image:: /asserts/nucleistudio/advanceusage/image69.png - .. |image70| image:: /asserts/nucleistudio/advanceusage/image70.png - .. |image71| image:: /asserts/nucleistudio/advanceusage/image71.png - .. |image72| image:: /asserts/nucleistudio/advanceusage/image72.png - .. |image73| image:: /asserts/nucleistudio/advanceusage/image73.png - .. |image74| image:: /asserts/nucleistudio/advanceusage/image74.png - .. |image75| image:: /asserts/nucleistudio/advanceusage/image75.png - .. |image76| image:: /asserts/nucleistudio/advanceusage/image76.png - .. |image77| image:: /asserts/nucleistudio/advanceusage/image77.png - .. |image78| image:: /asserts/nucleistudio/advanceusage/image78.png - .. |image79| image:: /asserts/nucleistudio/advanceusage/image79.png - .. |image80| image:: /asserts/nucleistudio/advanceusage/image80.png - .. |image81| image:: /asserts/nucleistudio/advanceusage/image81.png +.. |image82| image:: /asserts/nucleistudio/advanceusage/image82.png + +.. |image83| image:: /asserts/nucleistudio/advanceusage/image83.png + +.. |image84| image:: /asserts/nucleistudio/advanceusage/image84.png + +.. |image85| image:: /asserts/nucleistudio/advanceusage/image85.png + +.. |image86| image:: /asserts/nucleistudio/advanceusage/image86.png + +.. |image87| image:: /asserts/nucleistudio/advanceusage/image87.png + +.. |image88| image:: /asserts/nucleistudio/advanceusage/image88.png + +.. |image89| image:: /asserts/nucleistudio/advanceusage/image89.png + +.. |image90| image:: /asserts/nucleistudio/advanceusage/image90.png + +.. |image91| image:: /asserts/nucleistudio/advanceusage/image91.png + +.. |image92| image:: /asserts/nucleistudio/advanceusage/image92.png + +.. |image93| image:: /asserts/nucleistudio/advanceusage/image93.png + +.. |image94| image:: /asserts/nucleistudio/advanceusage/image94.png + +.. |image95| image:: /asserts/nucleistudio/advanceusage/image95.png + +.. |image96| image:: /asserts/nucleistudio/advanceusage/image96.png + +.. |image97| image:: /asserts/nucleistudio/advanceusage/image97.png + +.. |image98| image:: /asserts/nucleistudio/advanceusage/image98.png + +.. |image-nice-1| image:: /asserts/nucleistudio/advanceusage/nice-1.png + +.. |image-nice-2| image:: /asserts/nucleistudio/advanceusage/nice-2.png + +.. |image-nice-3| image:: /asserts/nucleistudio/advanceusage/nice-3.png + +.. |image-nice-4| image:: /asserts/nucleistudio/advanceusage/nice-4.png + +.. |image-nice-5| image:: /asserts/nucleistudio/advanceusage/nice-5.png + +.. |image-nice-6| image:: /asserts/nucleistudio/advanceusage/nice-6.png + +.. |image-nice-7| image:: /asserts/nucleistudio/advanceusage/nice-7.png + +.. |image-nice-8| image:: /asserts/nucleistudio/advanceusage/nice-8.png + +.. |image-nice-9| image:: /asserts/nucleistudio/advanceusage/nice-9.png + +.. |image-nice-10| image:: /asserts/nucleistudio/advanceusage/nice-10.png + + diff --git a/source/ide/faq.rst b/source/ide/faq.rst index c260a44..cb55df6 100644 --- a/source/ide/faq.rst +++ b/source/ide/faq.rst @@ -1,7 +1,7 @@ .. _faq: -常见问题 -======== +Nuclei Studio 常见问题 +====================== Nuclei Studio启动慢 ------------------- @@ -270,8 +270,8 @@ Debug时报错Error: Couldn't find an available hardware trigger. 这种情况下需要将程序编译到RAM上才可以支持IDE上进行调试(软件断点),如果需要调试则暂时只能通过命令行的方式进行调试。 -其他未注明或者遇到的版本问题 -============================ +其他未注明版本问题 +================== 如本文档中有疏漏的地方,请关注 `https://www.rvmcu.com/NucleiStudio-faq.html `__ 这里将列出不同版本后续遇到的常见问题。 diff --git a/source/ide/intro.rst b/source/ide/intro.rst index 6ef443e..6aeec8f 100644 --- a/source/ide/intro.rst +++ b/source/ide/intro.rst @@ -87,6 +87,72 @@ Nuclei Studio IDE充分利用上述Eclipse IDE优势,结合社区成熟的Ecli Nuclei Studio 更新说明 ======================= +2024.12版更新说明 +----------------- + +2024.12版本是基于eclipse Cpp 2024-12开发,CDT版本到Eclipse CDT 2024-09(2024-12版本暂末发布),升级了芯来科技的工具版本至2024.12,优化了部分原有功能,新增了调试及代码性能分析等功能,以及解决了2024.06版中存在的缺陷。 + +升级Eclipse Cpp版本 +~~~~~~~~~~~~~~~~~~~ + +在Nuclei Studio 2024.12基于Eclipse Cpp 2024-12版本开发此版本。基础的CDT版本,升级到了11.6.1。 + +升级RISC-V Toolchain、OpenOCD、QEMU版本 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +在Nuclei Studio 2024.12版本中集成了Nuclei RISC-V Toolchain 2024.12版,具体信息可以查看:https://github.com/riscv-mcu/riscv-gnu-toolchain/releases/tag/nuclei-2024.12 。 + +在Nuclei Studio 2024.12版本中集成了OpenOCD 2024.012版,具体信息可以查看:https://github.com/riscv-mcu/riscv-openocd/releases/tag/nuclei-2024.12 。 + +在Nuclei Studio 2024.12版本中集成了Nuclei Qemu 2024.12版,具体信息可以查看:https://github.com/riscv-mcu/qemu/releases/tag/nuclei-2024.12 。 + +新增对更多新核的支持 +~~~~~~~~~~~~~~~~~~~~ + +增加了对N200E、N202、N202E、NX1000、NX1000F、NX1000FD、UX1000、UX1000F CPU的核配套支持。 + +新增Flash Programming功能 +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +为了满足用户将编译好的二进制文件直接下载到硬件开发板的需求,Nuclei Studio 新增了 Flash Programming 功能。该功能允许用户快速、便捷地将编译好的二进制文件直接下载到硬件开发板中,极大提升了开发和调试的效率。 + +具体参见 :ref:`Flash Programming功能 ` 。 + +新增了Nuclei NICE Wizard +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Nuclei NICE Wizard 是一个集成在 Nuclei Studio 上的工具,旨在简化和加速 NICE (自定义指令扩展) 和 VNICE (向量化自定义指令扩展) 指令的创建过程。 + +具体参见 :ref:`Nuclei NICE Wizard ` 。 + +新增Nuclei Model功能的使用 +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Nuclei Model是芯来科技为 Nuclei Near Cycle Model 开发了专门的运行工具,为了提供更简洁高效的用户体验,在 RVProf 的基础上进行了功能简化,推出了新的 Model 工具。 + +具体参见 :ref:`Nuclei Model ` 。 + + +升级Nuclei Near Cycle Model版本 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Nuclei Near Cycle Model,是由芯来科技自主研发的仿真测试和性能分析工具,可以帮助研发人员在项目初期进行一些必要的仿真测试和程序性能分析。在此版本中全面支持 Nuclei CPU 200,300,600,900,1000系列的CPU,同时支持Windows和Linux系统下使用。 + +具体参见 :ref:`Nuclei Near Cycle Model ` 。 + +新增Live Watch功能 +~~~~~~~~~~~~~~~~~~~~ + +Live Watch 是芯来科技研发的实时监控工具,专为开发者设计,旨在帮助开发者更高效地调试和优化代码。 + +具体参见 :ref:`Live Watch功能的使用 ` 。 + + +ZCC升级 +~~~~~~~~~ + +在Nuclei Studio 2024.12版本中集成了ZCC 3.2.5版,并加入芯来科技支持的软件库。具体信息可以查看:https://www.terapines.com/products/zcc + 2024.06版更新说明 ----------------- diff --git a/source/ide/npkmanage.rst b/source/ide/npkmanage.rst index 7f1c11c..9380607 100644 --- a/source/ide/npkmanage.rst +++ b/source/ide/npkmanage.rst @@ -119,8 +119,52 @@ Type选择ssp: ``Soc Support Package`` .. _npkmanage_test_package: -测试NPK组件包 --------------- +NPK组件包的检测和问题处理 +----------------------------- + +.. _npkmanage_install_test_project: + +新创建组件包导入前的检测 +~~~~~~~~~~~~~~~~~~~~~~~~~ + +创建完成的软件包,在导入之前,可以先使用检查工具检测npk组件包的合法性,避免导入失败。其核心功能聚焦于代码风格、变量命名、函数结构以及依赖关系的合规性检查,确保代码质量。 + +关于该工具的内容请参见: `软件包检查工具 `__ + + +.. _npkmanage_install_err_project: + +软件包导入失败的处理 +~~~~~~~~~~~~~~~~~~~~ + +在软件包导入失败的情况下,可以根据相关日志去判断问题所在,这里主要针对npk文件格式错误、依赖不满足等问题。 + +点击Package Management 页面右下角的View log,会弹出对应日志页面,简略的告知导入失败的原因。 + +|image29| + +.. |image29| image:: /asserts/nucleistudio/developer/image168.png + + +|image30| + +.. |image30| image:: /asserts/nucleistudio/developer/image169.png + + +当日志中出现类似There are file parsing exceptions提示时,可以去对应的 ``<用户目录>\nuclei-pack-npk-v2\CFGs\logs\sys\`` 路径下看当天的日志文件,进一步了解相关npk文件的问题点,以便进行相应的修正。 + +|image31| + +.. |image31| image:: /asserts/nucleistudio/developer/image170.png + +|image32| + +.. |image32| image:: /asserts/nucleistudio/developer/image171.png + +|image33| + +.. |image33| image:: /asserts/nucleistudio/developer/image172.png + .. _npkmanage_create_test_project: diff --git a/source/ide/projectbuild.rst b/source/ide/projectbuild.rst index c9aed0d..adaddc7 100644 --- a/source/ide/projectbuild.rst +++ b/source/ide/projectbuild.rst @@ -158,49 +158,95 @@ Nuclei Studio中编译Hello World项目 |image15| +.. _ide_flash_programming: -.. |image1| image:: /asserts/nucleistudio/projectbuild/image2.png +Flash Programming +------------------ +为了满足用户将编译好的二进制文件直接下载到硬件开发板的需求,Nuclei Studio 新增了 Flash Programming 功能。该功能允许用户快速、便捷地将编译好的二进制文件直接下载到硬件开发板中,极大提升了开发和调试的效率;简化操作流程,用户只需点击一次即可完成二进制文件的下载。工程编译好后,找到Flash Programming,并点击,即可完成二进制文件下载的下载。 -.. |image2| image:: /asserts/nucleistudio/projectbuild/image3.png +|image17| +用户也可以修改其相关的配置信息,在Launch Bar中点击配置按钮,打开配置页面,然后选中Flash Programming选项卡。 -.. |image3| image:: /asserts/nucleistudio/projectbuild/image4.png +|image18| +**Load Program Image** -.. |image4| image:: /asserts/nucleistudio/projectbuild/image5.png +Load的文件,默认的elf格试的文件,也可以支持 ``*.bin、*.hex、*.s19、*.srec、*.symbolsrec`` 等各种格式 +|image19| -.. |image5| image:: /asserts/nucleistudio/projectbuild/image6.png +**Flash Programming Options** +Flash Programming的选项有以下三种 -.. |image6| image:: /asserts/nucleistudio/projectbuild/image7.png +Verify Image:选中时,Download命令会带上 ``verify`` 参数,这条指令要求确认你要烧录的镜像文件是否匹配当前连接的目标设备上的闪存配置。 +|image20| -.. |image7| image:: /asserts/nucleistudio/projectbuild/image8.png +Reset and Run:选中时,Download命令会带上 ``reset`` 参数,这条指令在执行完load后可能强制系统复位(SRST),并让目标设备运行。 +|image21| -.. |image8| image:: /asserts/nucleistudio/projectbuild/image9.png +Load in Ram:选中时,需要指定Program Address,Download命令会带上 ``resume {Program Address}`` 参数,这条指令固件加载到内存中,而不是闪存中。 +|image22| -.. |image9| image:: /asserts/nucleistudio/projectbuild/image10.png +**OpenOCD Flash Programming Command line** +这些参数最终会以命令行的形式通过 GDB 执行。用户也可以自定义所需的命令,只需勾选 ``Customize openocd flash programming command line`` ,即可在下方输入框中输入自定义命令。 -.. |image10| image:: /asserts/nucleistudio/projectbuild/image11.png +|image23| +根据需求配置好参数后,点击Flash Programming就可以下载二进制代码到硬件中,下载成功的结果如下图。 -.. |image11| image:: /asserts/nucleistudio/projectbuild/image12.png +|image24| -.. |image12| image:: /asserts/nucleistudio/projectbuild/image13.png +.. |image1| image:: /asserts/nucleistudio/projectbuild/image2.png -.. |image13| image:: /asserts/nucleistudio/projectbuild/image14.png +.. |image2| image:: /asserts/nucleistudio/projectbuild/image3.png +.. |image3| image:: /asserts/nucleistudio/projectbuild/image4.png -.. |image14| image:: /asserts/nucleistudio/projectbuild/image15.png +.. |image4| image:: /asserts/nucleistudio/projectbuild/image5.png +.. |image5| image:: /asserts/nucleistudio/projectbuild/image6.png + +.. |image6| image:: /asserts/nucleistudio/projectbuild/image7.png + +.. |image7| image:: /asserts/nucleistudio/projectbuild/image8.png + +.. |image8| image:: /asserts/nucleistudio/projectbuild/image9.png + +.. |image9| image:: /asserts/nucleistudio/projectbuild/image10.png + +.. |image10| image:: /asserts/nucleistudio/projectbuild/image11.png + +.. |image11| image:: /asserts/nucleistudio/projectbuild/image12.png + +.. |image12| image:: /asserts/nucleistudio/projectbuild/image13.png + +.. |image13| image:: /asserts/nucleistudio/projectbuild/image14.png + +.. |image14| image:: /asserts/nucleistudio/projectbuild/image15.png .. |image15| image:: /asserts/nucleistudio/projectbuild/image16.png +.. |image17| image:: /asserts/nucleistudio/projectbuild/image17.png + +.. |image18| image:: /asserts/nucleistudio/projectbuild/image18.png + +.. |image19| image:: /asserts/nucleistudio/projectbuild/image19.png + +.. |image20| image:: /asserts/nucleistudio/projectbuild/image20.png + +.. |image21| image:: /asserts/nucleistudio/projectbuild/image21.png + +.. |image22| image:: /asserts/nucleistudio/projectbuild/image22.png + +.. |image23| image:: /asserts/nucleistudio/projectbuild/image23.png +.. |image24| image:: /asserts/nucleistudio/projectbuild/image24.png \ No newline at end of file diff --git a/source/ide/update.rst b/source/ide/update.rst index 05d1f7d..37a4f62 100644 --- a/source/ide/update.rst +++ b/source/ide/update.rst @@ -1,12 +1,12 @@ .. _update: -Nuclei Studio 升级 -================== +Nuclei Studio 升级更新 +====================== 一般情况下,如果Nuclei Studio没有大的版本变动,Nuclei Studio升级工作可以由用户下载最新的GNU工具链以及其他相关工具和升级IDE Plugins的方式来完成。 -GCC/OpenOCD等工具链的安装 -------------------------- +工具链的安装 +------------- Nuclei Studio已经把工具链集成在IDE内部,工具链存放在Nuclei Studio_IDE_XXX文件夹内,路径为: ``Nuclei Studio_IDE_XXX\\NucleiStudio\\toolchain`` 。IDE默认使用此路径的工具链,所以请不要移动 ``toolchain`` 此文件夹,使用IDE创建工程后也不需要进行工具链的相关配置。