diff --git a/source/asserts/nucleistudio/npk/image-1.png b/source/asserts/nucleistudio/npkoverview/image-1.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-1.png rename to source/asserts/nucleistudio/npkoverview/image-1.png diff --git a/source/asserts/nucleistudio/npk/image-10.png b/source/asserts/nucleistudio/npkoverview/image-10.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-10.png rename to source/asserts/nucleistudio/npkoverview/image-10.png diff --git a/source/asserts/nucleistudio/npk/image-11.png b/source/asserts/nucleistudio/npkoverview/image-11.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-11.png rename to source/asserts/nucleistudio/npkoverview/image-11.png diff --git a/source/asserts/nucleistudio/npk/image-12.png b/source/asserts/nucleistudio/npkoverview/image-12.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-12.png rename to source/asserts/nucleistudio/npkoverview/image-12.png diff --git a/source/asserts/nucleistudio/npk/image-13.png b/source/asserts/nucleistudio/npkoverview/image-13.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-13.png rename to source/asserts/nucleistudio/npkoverview/image-13.png diff --git a/source/asserts/nucleistudio/npk/image-14.png b/source/asserts/nucleistudio/npkoverview/image-14.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-14.png rename to source/asserts/nucleistudio/npkoverview/image-14.png diff --git a/source/asserts/nucleistudio/npk/image-15.png b/source/asserts/nucleistudio/npkoverview/image-15.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-15.png rename to source/asserts/nucleistudio/npkoverview/image-15.png diff --git a/source/asserts/nucleistudio/npk/image-16.png b/source/asserts/nucleistudio/npkoverview/image-16.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-16.png rename to source/asserts/nucleistudio/npkoverview/image-16.png diff --git a/source/asserts/nucleistudio/npk/image-17.png b/source/asserts/nucleistudio/npkoverview/image-17.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-17.png rename to source/asserts/nucleistudio/npkoverview/image-17.png diff --git a/source/asserts/nucleistudio/npk/image-2.png b/source/asserts/nucleistudio/npkoverview/image-2.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-2.png rename to source/asserts/nucleistudio/npkoverview/image-2.png diff --git a/source/asserts/nucleistudio/npk/image-3.png b/source/asserts/nucleistudio/npkoverview/image-3.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-3.png rename to source/asserts/nucleistudio/npkoverview/image-3.png diff --git a/source/asserts/nucleistudio/npk/image-4.png b/source/asserts/nucleistudio/npkoverview/image-4.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-4.png rename to source/asserts/nucleistudio/npkoverview/image-4.png diff --git a/source/asserts/nucleistudio/npk/image-5.png b/source/asserts/nucleistudio/npkoverview/image-5.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-5.png rename to source/asserts/nucleistudio/npkoverview/image-5.png diff --git a/source/asserts/nucleistudio/npk/image-6.png b/source/asserts/nucleistudio/npkoverview/image-6.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-6.png rename to source/asserts/nucleistudio/npkoverview/image-6.png diff --git a/source/asserts/nucleistudio/npk/image-7.png b/source/asserts/nucleistudio/npkoverview/image-7.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-7.png rename to source/asserts/nucleistudio/npkoverview/image-7.png diff --git a/source/asserts/nucleistudio/npk/image-8.png b/source/asserts/nucleistudio/npkoverview/image-8.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-8.png rename to source/asserts/nucleistudio/npkoverview/image-8.png diff --git a/source/asserts/nucleistudio/npk/image-9.png b/source/asserts/nucleistudio/npkoverview/image-9.png similarity index 100% rename from source/asserts/nucleistudio/npk/image-9.png rename to source/asserts/nucleistudio/npkoverview/image-9.png diff --git a/source/asserts/nucleistudio/npk/image.png b/source/asserts/nucleistudio/npkoverview/image.png similarity index 100% rename from source/asserts/nucleistudio/npk/image.png rename to source/asserts/nucleistudio/npkoverview/image.png diff --git a/source/ide/advanceusage.rst b/source/ide/advanceusage.rst index d54c544..b840c8d 100644 --- a/source/ide/advanceusage.rst +++ b/source/ide/advanceusage.rst @@ -139,14 +139,20 @@ Studio工程使用Code Coverage和Profiling相关功能。在Nuclei Studio Tools `__\ 的功能做了进一步的优化和升级,使其更容使用。 关于Eclipse Linux Tools的详细参见 -`Eclipse Linux Tools: `__\ +`Eclipse Linux Tools `__\ + +在使用过程,如有问题,可以查看 `https://github.com/Nuclei-Software/nuclei-studio `__ 相关内容,也可以向我们提交相关issue。 + +.. note:: + + 在 **芯来科技视频号** 中有 **如何在Nuclei Studio中使用Code Coverage和Profiling功能** 的视频,您可以在微信中搜索 **芯来科技视频号** 点击查看相关内容。 关于Code Coverage功能 ~~~~~~~~~~~~~~~~~~~~~ Nuclei Studio中的Code Coverage功能是借助于gcc编译器提供gcov工具来查看指定源码文件的代码覆盖率,可以帮助开发人员确定他们的测试用例是否足够充分,是否覆盖了被测代码的所有分支和路径。 -在Nuclei Studio中,通过给工程中的文件或者文件夹添加 ``--coverage`` 编译选项编译,在实际开发板上运行时,可以配合semihost功能实现文件读写到主机电脑上,就可以收集到需要的coverage文件(gcda/gcno文件),或者通过Nuclei SDK提供的profiling库来实现将coverage数据打印到串口上,然后通过IDE来解析并保存到主机上。 +在Nuclei Studio中,通过给工程中的文件或者文件夹添加 ``--coverage`` 编译选项编译,在实际开发板上运行时,可以配合semihost功能实现文件读写到主机电脑上,就可以收集到需要的coverage文件(gcda/gcno文件),或者通过 `Nuclei SDK提供的profiling库 `__ 来实现将coverage数据打印到串口上,然后通过IDE来解析并保存到主机上。 .. note:: 注意:此处只需要将编译选项 ``--coverage`` 加到特定的应用目录或者源码文件上,而不能加到整个工程,否则在程序运行时将会消耗大量内存,导致运行失败。 @@ -178,7 +184,7 @@ Nuclei Studio中的Code Coverage功能是借助于gcc编译器提供gcov工具 Nuclei Studio中的Profiling功能是借助于gcc编译器和binutils中的gprof工具,来查看指定文件中函数的运行时间和调用次数,以及调用关系。gprof可以用来确定程序的瓶颈,以便进行性能优化。gprof通过在程序运行时收集数据来工作,然后生成一个报告,该报告显示每个函数在程序中占用CPU时间的百分比以及函数之间的调用关系。 -在Nuclei Studio中,通过带特定的编译选项 ``-pg`` 编译指定源码文件,在实际开发板上运行时,可以配合semihost功能实现文件读写到主机电脑上,就可以收集到需要的coverage文件(gcda/gcno文件),或者通过Nuclei SDK提供的profiling库来实现将coverage数据打印到串口上,然后通过IDE来解析并保存到主机上。 +在Nuclei Studio中,通过带特定的编译选项 ``-pg`` 编译指定源码文件,在实际开发板上运行时,可以配合semihost功能实现文件读写到主机电脑上,就可以收集到需要的coverage文件(gcda/gcno文件),或者通过 `Nuclei SDK提供的profiling库 `__ 来实现将coverage数据打印到串口上,然后通过IDE来解析并保存到主机上。 .. note:: 注意:此处只需要将编译选项 ``-pg`` 加到特定的应用目录或者源码文件上,而不能加到整个工程,否则在程序运行时将会消耗大量内存,导致运行失败。 @@ -238,7 +244,7 @@ Coverage、Profiling和Call Graph使用 通过串口使用 ^^^^^^^^^^^^ -nuclei_sdk 0.6.0及以上版本的nulclei_sdk中,包含一个 ``Profiling demo to show how to use gprof and gcov`` 测试工程,在NucleiSudio安装了nuclei_sdk 0.6.0后,可以创建此测试工程。 +nuclei_sdk 0.6.0及以上版本的nulclei_sdk中,包含一个 ``Profiling demo to show how to use gprof and gcov`` 测试工程,在NucleiSudio安装了nuclei_sdk 0.6.0后,可以创建此测试工程。关于 ``Profiling demo to show how to use gprof and gcov`` 测试工程,可参考 `demo_profiling `__ 。 |image22| @@ -306,7 +312,7 @@ Gprof工具会启动,就可以看到对应用程序的分析结果,显示了 通过Semihosting使用 ^^^^^^^^^^^^^^^^^^^ -NucleiSudio安装了nuclei_sdk 0.6.0后,可以创建一个 ``Profiling demo to show how to use gprof and gcov`` 的测试工程,此时需要选中 ``Enable Semihosting`` 。 +NucleiSudio安装了nuclei_sdk 0.6.0后,可以创建一个 ``Profiling demo to show how to use gprof and gcov`` 的测试工程,此时需要选中 ``Enable Semihosting`` 。关于 ``Profiling demo to show how to use gprof and gcov`` 测试工程,可参考 `demo_profiling `__ 。 |image36| @@ -351,9 +357,15 @@ Trace技术是一种强大的调试工具,它能够帮助开发人员跟踪和 Nuclei Studio集成了Trace工具,结合相对应的硬件和Nuclei OpenOCD,用户在对工程进行Debug时,也可查看到Trace日志,并结合源码时行问题排查。 +.. note:: + + 在 **芯来科技视频号** 中有 **如何在Nuclei Studio中使用Trace功能** 的视频,您可以在微信中搜索 **芯来科技视频号** 点击查看相关内容。 + .. note:: 关于OpenOCD的Nuclei ETrace的一些命令,请参加OpenOCD下的openocd.pdf手册。 + +在使用过程,如有问题,可以查看 `https://github.com/Nuclei-Software/nuclei-studio `__ 相关内容,也可以向我们提交相关issue。 Trace界面介绍 ~~~~~~~~~~~~~ @@ -571,6 +583,8 @@ RVProf功能的使用 RVProf是芯来科技针对cpu cycle model开发的性能分析工具,Nuclei Studio在2024.02.dev版本中,完成对RVProf的支持。在实际使用中,RVProf功能分三步完成,首先通过Cycle model工具,运行代码,产生 ``.rvtrace`` 文件,然后RVProf工具,将 ``.rvtrace`` 解析成对应的 ``.json`` 文件,最后通过google的开源工具Perfetto Trace Viewer对 ``.json`` 文件进行解析并展示。因为cpu cycle model当前仅提供了linux版本,所以本文档均是在linux环境下演示此功能。 +在使用过程,如有问题,可以查看 `https://github.com/Nuclei-Software/nuclei-studio `__ 相关内容,也可以向我们提交相关issue。 + 测试环境 ~~~~~~~~~ @@ -652,6 +666,8 @@ Nuclei Studio会在本地启一个web服务,同时打开Perfetto Trace Viewer Nuclei Near Cycle Model当前只有Linux版本,其具体介绍和命令行上使用参见 (https://doc.nucleisys.com/nuclei_tools/xlmodel/intro.html ) ,下面将在Nuclei Studio上演示如何使用Nuclei Near Cycle Model进行仿真和性能分析。 +在使用过程,如有问题,可以查看 `https://github.com/Nuclei-Software/nuclei-studio `__ 相关内容,也可以向我们提交相关issue。 + 创建测试工程 ~~~~~~~~~~~~ diff --git a/source/ide/intro.rst b/source/ide/intro.rst index a57bbcd..bfb0d7f 100644 --- a/source/ide/intro.rst +++ b/source/ide/intro.rst @@ -3,6 +3,10 @@ Nuclei Studio IDE 简介 ======================= +.. note:: + + Nuclei Studio出视频教程啦,相关内容在 **芯来科技视频号** 中持续更新中,您可以在微信中搜索 **芯来科技视频号** 并关注,以便获取到我们最新的更新内容。 + 一款高效易用的集成开发环境(Integrated Development Environment,IDE)对于任何MCU都显得非常重要,软件开发人员需要借助IDE进行实际的项目开发与调试。 ARM的商业IDE软件Keil,在中国大陆很多嵌入式软件工程师均对其非常熟悉。但是商业IDE软件(譬如Keil)存在着授权以及收费的问题,各大MCU厂商也会推出自己 的免费IDE供用户使用,譬如瑞萨的e2studio和NXP的LPCXpresso等,这些IDE均是基于开源的Eclipse框架,Eclipse几乎成了开源免费MCU IDE的主流选择。 diff --git a/source/ide/npk.rst b/source/ide/npk.rst index aba88a6..470b732 100644 --- a/source/ide/npk.rst +++ b/source/ide/npk.rst @@ -57,11 +57,9 @@ NPK软件包管理 |image26| -导入过程中,会自动打开Package Management页面。 - |image27| -待导入完成后,你应该能够在Nuclei Studio IDE的Package Management页面中看到新导入的软件包。 +导入过程中,会自动打开Package Management页面。待导入完成后,你应该能够在Nuclei Studio IDE的Package Management页面中看到新导入的软件包。 |image28| @@ -124,7 +122,7 @@ NPK软件包管理 |image10| -进入具体的项目配置页如图4-8所示,因为RVSTAR的内核是固定的N205,其对应的arch和abi分别是rv32imac和ilp32,所以Core选项不能修改。同样,RVSTAR开发板仅支持一种FLASHXIP下载模式,所以DOWNLOAD这一选项也不能修改。点击 ``Finish`` 完成工程创建。在2023.10版本,增加了对Arm项目的支持。 +进入具体的项目配置页如图所示,因为RVSTAR的内核是固定的N205,其对应的arch和abi分别是rv32imac和ilp32,所以Core选项不能修改。同样,RVSTAR开发板仅支持一种FLASHXIP下载模式,所以DOWNLOAD这一选项也不能修改。点击 ``Finish`` 完成工程创建。在2023.10版本,增加了对Arm项目的支持。 |image11| diff --git a/source/ide/npkoverview.rst b/source/ide/npkoverview.rst index 8538253..cd5520c 100644 --- a/source/ide/npkoverview.rst +++ b/source/ide/npkoverview.rst @@ -1246,7 +1246,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1: -.. figure:: /asserts/nucleistudio/npk/image.png +.. figure:: /asserts/nucleistudio/npkoverview/image.png * **list 单项选择框** @@ -1262,7 +1262,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_1: -.. figure:: /asserts/nucleistudio/npk/image-1.png +.. figure:: /asserts/nucleistudio/npkoverview/image-1.png * **checkbox 单项勾选框** @@ -1277,7 +1277,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_2: -.. figure:: /asserts/nucleistudio/npk/image-2.png +.. figure:: /asserts/nucleistudio/npkoverview/image-2.png * **multicheckbox 穿梭选择框** @@ -1300,7 +1300,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_3: -.. figure:: /asserts/nucleistudio/npk/image-3.png +.. figure:: /asserts/nucleistudio/npkoverview/image-3.png .. code-block:: yaml @@ -1316,7 +1316,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_4: -.. figure:: /asserts/nucleistudio/npk/image-4.png +.. figure:: /asserts/nucleistudio/npkoverview/image-4.png * **text 单行文本框** @@ -1333,7 +1333,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_5: -.. figure:: /asserts/nucleistudio/npk/image-5.png +.. figure:: /asserts/nucleistudio/npkoverview/image-5.png * **multitext 多行文本框** @@ -1351,7 +1351,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_6: -.. figure:: /asserts/nucleistudio/npk/image-6.png +.. figure:: /asserts/nucleistudio/npkoverview/image-6.png * **multichoice 多选下拉框** @@ -1370,7 +1370,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_7: -.. figure:: /asserts/nucleistudio/npk/image-7.png +.. figure:: /asserts/nucleistudio/npkoverview/image-7.png .. code-block:: yaml @@ -1391,7 +1391,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_8: -.. figure:: /asserts/nucleistudio/npk/image-8.png +.. figure:: /asserts/nucleistudio/npkoverview/image-8.png * **cascaderchoice 级联选择框** @@ -1415,7 +1415,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_9: -.. figure:: /asserts/nucleistudio/npk/image-9.png +.. figure:: /asserts/nucleistudio/npkoverview/image-9.png * **switchbutton 开关** @@ -1430,7 +1430,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_10: -.. figure:: /asserts/nucleistudio/npk/image-10.png +.. figure:: /asserts/nucleistudio/npkoverview/image-10.png * **slider 数字选择框** @@ -1446,7 +1446,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_11: -.. figure:: /asserts/nucleistudio/npk/image-11.png +.. figure:: /asserts/nucleistudio/npkoverview/image-11.png * **spinner 数字选择框** @@ -1463,7 +1463,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_12: -.. figure:: /asserts/nucleistudio/npk/image-12.png +.. figure:: /asserts/nucleistudio/npkoverview/image-12.png * **multispinner 多数字选择框** @@ -1481,7 +1481,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_13: -.. figure:: /asserts/nucleistudio/npk/image-13.png +.. figure:: /asserts/nucleistudio/npkoverview/image-13.png * **multicheckbox_v2 多项勾选框** @@ -1501,7 +1501,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_14: -.. figure:: /asserts/nucleistudio/npk/image-14.png +.. figure:: /asserts/nucleistudio/npkoverview/image-14.png .. code-block:: yaml @@ -1521,7 +1521,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_15: -.. figure:: /asserts/nucleistudio/npk/image-15.png +.. figure:: /asserts/nucleistudio/npkoverview/image-15.png * **multiradio 单选框** @@ -1540,7 +1540,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_16: -.. figure:: /asserts/nucleistudio/npk/image-16.png +.. figure:: /asserts/nucleistudio/npkoverview/image-16.png .. code-block:: yaml @@ -1559,7 +1559,7 @@ default表示默认值,description表示该选项的含义,global表示这 .. _figure_about_project_1_17: -.. figure:: /asserts/nucleistudio/npk/image-17.png +.. figure:: /asserts/nucleistudio/npkoverview/image-17.png NPK的语法 --------- diff --git a/source/ide/projectrun.rst b/source/ide/projectrun.rst index e03ec81..88835d1 100644 --- a/source/ide/projectrun.rst +++ b/source/ide/projectrun.rst @@ -410,6 +410,10 @@ Debug Configuration DLink是芯来科技基于RV Link,并在其基础上做功能迭代升级后,所研发的RISC-V调试器,使之更适应于Nuclei Studio的应用场景。目前Dlink仅针对单核RISC-V工程实现调试运行,且已实现量产,具体实物如下,具体关于Dlink固件下载参见 https://github.com/Nuclei-Software/nuclei-dlink/wiki/upload-dlink-firmware。 +.. note:: + + 在 **芯来科技视频号** 中有 **如何在Nuclei Studio中通过Dlink调试程** 的视频,您可以在微信中搜索 **芯来科技视频号** 点击查看相关内容。 + |image50| 如需使用Dlink进行调试,可以在NucleiStudio菜单中 ``Run -> Run Configurations`` 打开Run Configurations的配置页面,并配置一个Dlink Debug Configuration,双击GDB Custom Debugging新建一个配置项,并在Main选项卡中配置内容如下: