You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 12-nucleisdk-0.5.0-dhrystone-score-lower-than-expected-in-IDE.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,7 +12,7 @@ The detailed steps and screenshots are as follows:
12
12
13
13
1. Download the **sdk-nuclei_sdk 0.5.0** NPK component package.
14
14
15
-
2. Create a new **Nuclei RISCV-V C/C++ project**.
15
+
2. Create a new **Nuclei RISC-V C/C++ project**.
16
16
17
17
3. During project creation, select **Dhrystone Benchmark** and **N307FD Core**, and keep the default settings for the other options. If you build and run it directly at this point, the benchmark score is **1.405**.
Copy file name to clipboardExpand all lines: 15-unsatisfiedLinkError_of_swt-win32-4965r8_dll_on_windows7.md
+3Lines changed: 3 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,6 +39,9 @@ java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
39
39
40
40
```
41
41
42
+
> [!NOTE]
43
+
> The version number in the SWT library file name (e.g., `swt-win32-4965r8.dll`, `swt-win32-4965r11.dll`) depends on the Eclipse/SWT plugin version bundled with each Nuclei Studio release. Different IDE versions ship with different SWT plugin versions, so the exact DLL name in your log may differ from the one in the title of this document.
44
+
42
45
This is because Eclipse 2024.06 uses certain features that have specific operating system requirements. For details, refer to https://github.com/eclipse-platform/eclipse.platform.swt/issues/1252
@@ -295,7 +295,7 @@ Clean the project and recompile, then run profiling again. You can see the optim
295
295
**Note:** The above is only a simple example. Users can analyze and optimize the hotspot functions one by one. Due to sampling and other factors during execution,
296
296
the distribution of TOP functions may fluctuate, which is normal. The final precise analysis requires counting the total number of cycles and then calculating the improvement ratio.
297
297
298
-
### 2 Call Graph Feature
298
+
### 3 Call Graph Feature
299
299
300
300
The Call Graph in Nuclei Studio mainly obtains the function call relationships in the program by analyzing Profiling data.
301
301
@@ -327,7 +327,7 @@ It presents the program's time consumption relationships very intuitively in the
The Code coverage feature in Nuclei Studio is based on the gcov tool provided by the gcc compiler. During compilation, the specified source files must be compiled with the specific compiler option `-coverage`. After a successful build, an ELF file is obtained, which is then run on the actual development board to collect the required coverage files (gcda/gcno files), and finally the results are displayed graphically in the IDE.
333
333
@@ -365,13 +365,13 @@ Add the `-coverage` compiler option and recompile the code:
365
365
366
366
You can run it in the qemu simulator or on the actual board (coverage statistics do not involve performance analysis, so either qemu or on-board testing works).
1. The Profiling and Code coverage features can be enabled at the same time. Simply add code that collects both Profiling data and Code coverage data, and add the `-pg -coverage` compiler options when compiling.
**Note:** Nuclei SDK version 0.6.0 or later is required
47
47
@@ -111,7 +111,7 @@ aes_ecb_encrypt
111
111
112
112
In the backed-up `aes_demo_nice` project, the user needs to study the algorithmic characteristics of the hotspot functions and replace them with **NICE/VNICE** instructions to improve overall program performance.
113
113
114
-
Add `#include "insn.h"` to the two C files `aes_dec.c` and `aes_dec.c`, which contain the **TOP5** hotspot functions of AES encryption/decryption, so that **NICE/VNICE** instruction replacements can be added.
114
+
Add `#include "insn.h"` to the two C files `aes_dec.c` and `aes_enc.c`, which contain the **TOP5** hotspot functions of AES encryption/decryption, so that **NICE/VNICE** instruction replacements can be added.
115
115
116
116
The **TOP1** hotspot function is `aes_mix_columns_dec`, which implements the inverse MixColumns of AES decryption. It takes a state matrix as input, performs the computation, and outputs the computed state matrix to the same address. It implements Load data, the inverse mix computation, and Store data. The code is as follows:
The **TOP2** hotspot function is `aes_mix_columns_enc`, which, similar to TOP1, implements the inverse MixColumns of AES encryption. It likewise takes a state matrix as input, performs the computation, and outputs the computed state matrix to the same address:
189
+
The **TOP2** hotspot function is `aes_mix_columns_enc`, which, similar to TOP1, implements the MixColumns of AES encryption. It likewise takes a state matrix as input, performs the computation, and outputs the computed state matrix to the same address:
Considering that the instruction implementation may not be achievable with a single instruction, two **VNICE** instructions can be used to replace this algorithm: the first one loads 16 bytes of data into a Vector register, and the second one performs the computation and the store.
218
218
219
-
The `opcode`, `funct3`, and `funct7` of the instructions can still be customized within the encoding fields. The first instruction uses `rd` to describe the Vector register and `rs1` to describe the input parameter address; the second instruction uses `rs1` to describe the input parameter address and `rs1` to describe the input Vector register. The inline assembly for the two **VNICE** instructions is written into `insn.h` and defined as follows:
219
+
The `opcode`, `funct3`, and `funct7` of the instructions can still be customized within the encoding fields. The first instruction uses `rd` to describe the Vector register and `rs1` to describe the input parameter address; the second instruction uses `rs1` to describe the input parameter address and `rs2` to describe the input Vector register. The inline assembly for the two **VNICE** instructions is written into `insn.h` and defined as follows:
Copy file name to clipboardExpand all lines: 20-quick_downloads_using_flash_programming.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,7 +17,7 @@ Version >= 202412 is required. Version 202502 is provided below.
17
17
18
18
**step1: Create a project and program the bit file**
19
19
20
-
Use version 0.7.1 of sdk-nuclei_sdk to create a u900 helloworld project. Select Simple Helloworld Demo, FLASH download mode, and U900 Core in sequence, then click Finsh.
20
+
Use version 0.7.1 of sdk-nuclei_sdk to create a u900 helloworld project. Select Simple Helloworld Demo, FLASH download mode, and U900 Core in sequence, then click Finish.
@@ -81,7 +81,7 @@ Nuclei Studio supports multiple download modes: DDR, FLASH, FLASHXIP, ILM, and S
81
81
82
82
The FLASH and FLASHXIP modes can be used by following the steps above, while DDR, ILM, and SRAM download to memory, which differs from Flash. The following uses ILM as an example.
83
83
84
-
Click Nulcei Settings to open the page, select ILM in Download, and save.
84
+
Click Nuclei Settings to open the page, select ILM in Download, and save.
Copy file name to clipboardExpand all lines: 5-update_npk_to_support_nucleistudio_202310.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -160,7 +160,7 @@ The final display effect when creating a project is as follows
160
160
161
161
## libncrt Upgrade
162
162
163
-
libncrt has also changed somewhat compared to before. Before using libncrt in NPK, both the old and new versions of the SDK define a variable `stdclib` in **conifguration**,
163
+
libncrt has also changed somewhat compared to before. Before using libncrt in NPK, both the old and new versions of the SDK define a variable `stdclib` in **configuration**,
164
164
whose value is a dropdown box that allows selecting different values. The difference lies in how `stdclib` is used in `common_flags` or elsewhere after it is obtained.
165
165
166
166
For some notes about `stdclib`, see [here](https://doc.nucleisys.com/nuclei_sdk/develop/buildsystem.html#stdclib)
Copy file name to clipboardExpand all lines: 6-gcc13_gen_rvv_instructions_when_rvv_enabled.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,8 +3,8 @@
3
3
## Problem Description
4
4
5
5
If you are using `Nuclei SDK 0.5.0` with Nuclei RISC-V Toolchain 2023.10, and
6
-
when compile some examples with RVV enabled, it may generate rvv instructions
7
-
which called auto-vectorzation.
6
+
when compiling some examples with RVV enabled, it may generate RVV instructions,
7
+
which is called auto-vectorization.
8
8
9
9
Take `application/baremetal/benchmark/dhrystone` for example:
10
10
@@ -15,12 +15,12 @@ make CORE=nx900fd ARCH_EXT=v clean
15
15
make CORE=nx900fd ARCH_EXT=v dasm
16
16
~~~
17
17
18
-
Then if you check the `dhrystone.dasm`, you will be able to see rvv instructions:
18
+
Then if you check the `dhrystone.dasm`, you will be able to see RVV instructions:
19
19
20
20
## Solution
21
21
22
-
This autogenerated instructions may affect your hardware performance, so if you want
23
-
to disable it, you don't need to pass rvv extension when compile application.
22
+
These auto-generated instructions may affect your hardware performance, so if you want
23
+
to disable it, you don't need to pass the RVV extension when compiling the application.
24
24
25
25
~~~shell
26
26
$ cat dhrystone.dasm |grep vs
@@ -39,6 +39,6 @@ $ cat dhrystone.dasm |grep vs
39
39
40
40
You can check https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112537 for more details.
41
41
42
-
In gcc 14.x, if you want to disable the RISC-V RVV automatic vectorization, you can use the options ``-fno-tree-loop-vectorize -fno-tree-slp-vectorize``.
42
+
In GCC 14.x, if you want to disable the RISC-V RVV automatic vectorization, you can use the options ``-fno-tree-loop-vectorize -fno-tree-slp-vectorize``.
43
43
44
-
In gcc 13.x, you need to pass ``--param=riscv-autovec-preference=none``
44
+
In GCC 13.x, you need to pass ``--param=riscv-autovec-preference=none``.
Copy file name to clipboardExpand all lines: README.md
+1-3Lines changed: 1 addition & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,8 +24,6 @@ Please create new doc based on [Doc Template](0-template.md)
24
24
25
25
Click [this link](https://doc.nucleisys.com/nuclei_studio_supply/) to see online version.
26
26
27
-
> If you find any spelling errors or imperfections in the documentation, you are welcome to submit a Pull Request or Issue to help us improve it!
28
-
29
27
> If you come across any spelling errors or areas that need improvement in the document, feel free to submit a Pull Request or Issue to help us enhance it!
30
28
31
29
## Documents
@@ -42,7 +40,7 @@ Click [this link](https://doc.nucleisys.com/nuclei_studio_supply/) to see online
42
40
-[8. Issues with OpenOCD when operating nor-flash larger than 16M-Byte](8-openocd_202310_flashloader_flaws.md)
43
41
-[9. Upgrade the project toolchain to GCC 13 by modifying the .cproject file](9-modify_the_cproject_file_to_change_the_project_to_gcc13.md)
44
42
-[10. Compiling projects with the command line in Nuclei Studio](10-compiling_projects_with_headless_in_nuclei_studio.md)
45
-
-[11. Error reported when OpenOCD flashes a program: Error:Device ID 8xle2g8a6d is not known as FESPI capable](11-openocd_reported_error_not_known_as_fespi_capable.md)
43
+
-[11. Error reported when OpenOCD flashes a program: Error:Device ID 0x1e200a6d is not known as FESPI capable](11-openocd_reported_error_not_known_as_fespi_capable.md)
46
44
-[12. About the inconsistency between Dhrystone benchmark scores in the IDE and NSDK 0.5.0 command-line scores](12-nucleisdk-0.5.0-dhrystone-score-lower-than-expected-in-IDE.md)
47
45
-[13. Error: Couldn't find an available hardware trigger / Error: can't add breakpoint: resource not available](13-error_could_not_find_an_available_hardware_trigger.md)
48
46
-[14. cannot find -lncrt_balanced: No such file or directory](14-cannot_find_-lncrt_balanced_no_such_file_or_directory.md)
0 commit comments