Releases: Nuclei-Software/nuclei-sdk
Release list
Nuclei N100 Software Development Kit, Release 0.3.0
Caution
Please use Nuclei N100 SDK v0.3.0 with Nuclei Studio 2025.10
This N100 SDK Release is made on master_n100 branch
Breaking Changes
- N100 Interrupt Controller Split: N100 CPU now supports two interrupt controller variants — IRQC and ECLIC.
- This N100 SDK(develop_n100/master_n100) only supports the IRQC version.
- If your N100 CPU is configured with ECLIC, please use Nuclei SDK >= 0.9.0(master/develop) instead.
Highlights
- Build: Bumped CI and sdkbuild podman image to 2025.10 toolchain.
- Build: Added support for Terapines Zcc >= 4.1.2 and the new C library configuration.
- Tools: Added conditional QEMU
icountoption viaICOUNT_OPTinnsdk_clitools. - Tools: Added
SDK_APPDIRS_IGNOREenvironment variable support innsdk_clitools to specify ignored application directories. - Documentation: Clarified that N100 SDK only supports N100 with IRQC interrupt controller; for ECLIC, use Nuclei SDK >= 0.9.0.
- Documentation: Updated toolchain version references from 2025.02 to 2025.10.
Bug Fixes
-
OS:
- Fixed task stack pointer alignment for FreeRTOS, UCOSII, and RT-Thread porting — now correctly aligns to 16 bytes for non-ilp32e and 4 bytes for ilp32e, per the RISC-V psABI specification.
- Fixed
xPortTaskSwitchto disable/enable IRQ aroundvTaskSwitchContext, preventing interrupt nesting during task switch in FreeRTOS. - Fixed tickless sleep mode missing interrupts by ensuring global IRQ is disabled before stopping SysTick in FreeRTOS.
- Removed unnecessary
__FENCE_Iafter re-enabling interrupts in tickless sleep mode in FreeRTOS. - Fixed tick drift caused by wrong elapsed time calculation when WFI wakes up but MTIME has not yet incremented in FreeRTOS tickless idle.
-
Build:
- Fixed GDB not working correctly in Nuclei Studio IDE when toolchain is Terapines ZCC.
- Fixed Zc extension detection to explicitly check for
zcmpandzcmtinstead of matchingzcprefix. - Updated compiler flags
-fomit-frame-pointer -fno-shrink-wrap-separateto only apply forzcmpextension.
For detailed information, please refer to the online documentation.
Full Changelog: n100-0.2.1...n100-0.3.0
Nuclei embedded Software Development Kit, Release 0.9.0
Caution
Please use Nuclei SDK v0.9.0 with Nuclei Studio 2025.10
This Nuclei SDK Release is made on master branch
Breaking Changes
- AMO intrinsic return value semantics fix:
__AMOADD_*,__AMOAND_*, etc. now return the original memory value (per RISC-V spec). Users relying on the old behavior need to update their code. __TEE_PRESENTrenamed to__SMODE_PRESENT.- If your N100 CPU is configured with IRQC not ECLIC, please use Nuclei N100 SDK >= 0.3.0(master_n100/develop_n100) instead.
Highlights
- ECLIC v2: Hardware context auto-save/restore, shadow register, S-Mode interrupt control
- N100 Series CPU(ECLIC): Added Nuclei N100 series with ECLIC support
- ThreadX SMP: Symmetric multiprocessing support with GCC/IAR ports and regression test suites
- NMSIS v1.6.0: RVV sub-type macros, DSP/NN library updates
- ECC Safety Features: Precise ECC error injection for ILM/DLM/DCache/CCache/CLM
- SMP/Cluster Cache: New APIs for SMP and L2 Cache operations
Bug Fixes
- Fix task switch stack frame not 16-byte aligned per RISC-V ABI in FreeRTOS/UCOSII/ThreadX/RT-Thread
- Fix multiple ThreadX SMP scheduling issues (time-slice, duplicate scheduling, IRQ system state, context switch)
- Fix FreeRTOS SMP recursive spinlock correctness on weak memory models
- Fix missing memory barriers in interrupt masking macros across FreeRTOS/RT-Thread/UCOSII
- Fix FreeRTOS tickless sleep interrupt handling and tick drift
- Fix missing FCSR save/restore in NMSIS FPU context handling
- Fix Zc extension detection and zcmp flag handling
For the full list of changes, see the online changelog
Full Codebase Changelog: 0.8.1...0.9.0
Nuclei N100 Software Development Kit, Release 0.2.1
Caution
Please use Nuclei N100 SDK v0.2.1 with Nuclei Studio 2025.02
See https://doc.nucleisys.com/nuclei_n100_sdk/changelog.html#v0-2-1
Full Changelog: n100-0.2.0...n100-0.2.1
Nuclei embedded Software Development Kit, Release 0.8.1
Caution
Please use Nuclei SDK 0.8.1 with >= Nuclei Studio 2025.02
See https://doc.nucleisys.com/nuclei_sdk/changelog.html#v0-8-1
Full Changelog: 0.8.0...0.8.1
Nuclei embedded Software Development Kit, Release 0.8.0
Caution
Please use Nuclei SDK 0.8.0 with >= Nuclei Studio 2025.02
See https://doc.nucleisys.com/nuclei_sdk/changelog.html#v0-8-0
Full Changelog: 0.7.1...0.8.0
Nuclei N100 Software Development Kit, Release 0.2.0
Caution
Please use Nuclei N100 SDK with Nuclei Studio 2025.02
See https://doc.nucleisys.com/nuclei_n100_sdk/changelog.html#v0-2-0
Full Changelog: n100-0.1.0...n100-0.2.0
Nuclei embedded Software Development Kit, Release 0.7.1
See https://doc.nucleisys.com/nuclei_sdk/changelog.html#v0-7-1
Full Changelog: 0.7.0...0.7.1
Nuclei embedded Software Development Kit, Release 0.7.0
This is release version 0.7.0 of Nuclei SDK.
-
Application
- Add
demo_pliccase to show how to use PLIC related API in PLIC interrupt mode. - Add
demo_clint_timercase to show how to use systimer in CLINT interrupt mode not ECLIC interrupt mode. - Update
demo_pmpcase to make it suitable for when PMP not present. - Change download mode from
ddrtosramfor smp and cache cases to be suitable for some custom soc sdk.
- Add
-
NMSIS
- Add more ECC related macros for
milm_ctl/mdlm_ctl/mcache_ctlcsr - Add more PLIC interrupt API in
core_feature_plic.h - Add more interrupt related API when in plic interrupt mode, see changes in
core_feature_base.h - Bump NMSIS version to 1.3.0 with updated NMSIS Core/DSP/NN header files and prebuilt library
- Add more ECC related macros for
-
SoC
- Add Terapines ZCC NPK support, require Nuclei Studio >= 2024.06
- Merge newlib stub code from many files into one file called
stubs.cfor all SoC supported in Nuclei SDK - Enable I/D cache for evalsoc before data/bss initialization steps using
cpufeature.hfor faster data initialization - gd32vf103 default CORE name changed from
n205ton203which are the same in software - gd32vw55x default CORE name changed from
n307fdton300fdwhich are the same in software - evalsoc default CORE name changed from
n307fdton300fdwhich are the same in software - Add plic interrupt and exception related handling code for evalsoc
- Fix BPU is not enabled during startup for startup code for IAR compiler, which will increase performance of 600/900/1000 series a lot
-
Build System
- Introduce
XLCFG_xxxmake variable for evalsoc which is only internally used by Nuclei to overwrite default cpufeature.h macro definition, which will be useful for some applications such as demo_cidu, demo_cache, demo_spmp, demo_smpu and demo_smode_eclic - Introduce
ECC_ENmake variable for evalsoc which is only internally used by Nuclei to control whether ECC check is enabled or disabled. - Add core
n200e/n202/n202eand removen205/n205e/n305/n307/n307fdwhich can be replaced byn203/n203e/n300/n300f/n300fd - Prebuilt IAR projects and workbench are updated due to evalsoc support changes for plic and clint interrupt modes.
- Add
SYSCLKmake variable for manually set default SYSTEM_CLOCK macro in evalsoc, it is useful forCODESIZE=1case - Add
QEMU_MC_EXTOPTmake variable to pass extra Nuclei Qemu-Mmachine options for evalsoc. - Add
QEMU_CPU_EXTOPTmake variable to pass extra Nuclei Qemu-cpucpu options for evalsoc.
- Introduce
Full Changelog: 0.6.0...0.7.0
Nuclei embedded Software Development Kit, Release 0.6.0
This is release version 0.6.0 of Nuclei SDK.
Note
- Please use Nuclei Studio 2024.06 with this Nuclei SDK 0.6.0.
- There are many changes in this release, so we decide to name it as 0.6.0, not 0.5.1
- This version introduced ThreadX and FreeRTOS-SMP support for Nuclei RISC-V Processors.
- This version introduced a
profilingmiddleware and an example to show code coverage and profiling technology
using gcov and gprof in Nuclei Studio 2024.06. - This version introduced support for Nuclei 100 series RISC-V CPU, but in seperated Nuclei SDK branches called master_n100 or develop_n100, see https://github.com/Nuclei-Software/nuclei-sdk/tree/master_n100
- This version introduced support for gd32vw55x chip and Nuclei DLink Board.
- Better Terapines ZCC toolchain integrated in Nuclei SDK and Nuclei Studio, try ZStudio Lite version here https://www.terapines.com/products/, if you want to take a try, please use nuclei sdk develop branch code and import to Nuclei Studio, and take a try.
- Better IAR Workbench support in Nuclei SDK, with Baremetal SMP and FreeRTOS SMP supported.
-
Application
- Add ThreadX RTOS example to show how to use ThreadX in SDK.
- Add Nuclei 1000 series benchmark flags for benchmark examples.
- Add
demo_vniceexample to show how to use Nuclei Vector NICE feature. - Add
demo_profilingexample to how to use gprof and gcov in Nuclei Studio. - Add
smphello,demo_cidubaremetal SMP examples in IAR workbench. - Add FreeRTOS
smpdemoexample to show how to use SMP version of FreeRTOS. - Optimize and fix
cpuinfoexample for better cpu feature dection. - Optimize benchmark gcc13 flags to provide better performance.
- Fix wrong ipc calculating for benchmark examples.
- Reset mcycle and minstret when read cycle or instret in benchmark examples.
- Fix dhrystone strcmp_xlcz.S removed by make clean in windows.
- Update benchmark flags for benchmark examples when compiled with Terapines ZCC Toolchain.
- Fix
lowpowerexample no need to usenewlib_fulllibrary.
-
NMSIS
- Update many CSR structure defined in
core_feature_base.hsuch asCSR_MCFGINFO_Type,CSR_MDLMCTL_TypeandCSR_MCACHECTL_Typeetc. - Add
__set_rv_cycleand__set_rv_instretAPI to set cycle and instret csr registers. - Add
CSR_MTLBCFGINFO_TypeCSR structure incore_feature_base.h. - Fix protection type error in PMP/sPMP API.
- Fix wrong CLIC_CLICINFO_VER_Msk and CLIC_CLICINFO_NUM_Msk macro value in
core_feature_eclic.h - Add
__ROR64incore_compatiable.h. - Add and update DSP intrinsic APIs in
core_feature_dsp.h. - Add and update Nuclei customized CSRs in
riscv_encoding.h. - Sync NMSIS DSP/NN library 1.2.1
- Update many CSR structure defined in
-
SoC
- Redesign
evalsocreference SoC support software for better evalsoc and nuclei cpu support, see https://doc.nucleisys.com/nuclei_sdk/design/soc/evalsoc.html#usage - Remove
-msave-restorein npk.yml to fix dhrystone benchmark value is low in Nuclei Studio issue. - No need to get system clock using
get_cpu_freqfor gd32vf103. - In npk.yml, when pass
-isystem=should be changed to-isystem =as a workaround for Nuclei Studio to pass correct system include header. - Update standard c library and arch ext prompt for soc npk.yml for better hints.
- Add
gd32vf103c_dlinkboard support for Nuclei DLink development. - Fix non-ABS relocation R_RISCV_JAL against symbol '_start' fail for nuclei_llvm toolchain
- Add Nuclei
ux1000fdsupport in both NPK and Makefile based Build System. - Add support for gd32vw55x SoC which is Gigadevice new Nuclei RISC-V N300 Processor based WiFi MCU.
- Add SPLITMODE support for evalsoc when evaluate NA class Core.
- Allow custom linker script if npk variable
linker_scriptis not empty. - Explicit declare asm function in gcc asm code if that part of code is a function, which is required by
gprofplugin in Nuclei Studio. - Clear zc bit for non zc elf in mmsic_ctl csr for cases when cpu is not reset but zc bit is set before.
- Only print CSR value when CSR is present during
__premain_initfor evalsoc. - Fix undefined symbol when link cpp for clang
__eh_frame_start/__eh_frame_hdr_start/__eh_frame_end/__eh_frame_hdr_end - Add LDSPEC_EN, L2_EN and BPU_EN for evalsoc in Makefile based build system to control
load speculative, L2 cache and BPU enable or disable, which is only internally used. - Move eclic and interrupt and exception initialization from startup asm code into premain c code for evalsoc.
- Optimize cpu startup when ECLIC not present it will not be initialized, which is helpful for CPU without ECLIC unit.
- evalsoc
SystemIRegionInfovariable is removed now, if you want to access to the base address of cpu internal device, you can use*_BASEADDR, such as__CIDU_BASEADDR. - Introduce an IAR startup asm code called
IAR/startup.Sfor evalsoc to support SMP boot, and for SMP stack setup,
different IAR linker script is required, see the iar linker script provided insmphelloorfreertos/smpdemo.
- Redesign
-
Build System
- Now disassemble elf will show no alias instructions
- Add
u600*/u900*/ux1000fdinto support CORE list - Update and optimize toolchain support for Terapines ZCC Toolchain, which can provide better performance
- In
Build/toolchain/nuclei_gnu.mk,-mmemcpy-strategy=scalaroption is replaced by-mstringop-strategy=scalarin official gcc 14, see
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=4ae5a7336ac8e1ba57ee1e885b5b76ed86cdbfd5
-
RTOS
- Bump FreeRTOS Kernel to V11.1.0
- Bump RTThread Nano to V3.1.5
- Introduce FreeRTOS SMP support for Nuclei RISC-V CPU
- Introduce Eclipse ThreadX v6.4.1 Support for Nuclei RISC-V CPU
-
Misc
- Add
Zc/Zicondand1000series support in SDK CLI script used internally - Optimize gitlab ci jobs to speedup job execution time and better merge request pipeline check
- Add
Full Changelog: 0.5.0...0.6.0
Nuclei N100 Software Development Kit, Release 0.1.0
This is release version 0.1.0 of N100 SDK.
Note
- Please use Nuclei N100 SDK with Nuclei Studio 2024.06, get it from https://nucleisys.com/download.php#tools
- Nuclei N100 SDK is modified based on Nuclei SDK 0.5.0 release, and will not merge back to Nuclei SDK in the future.
- This SDK is not compatible with Nuclei SDK for 200/300/600/900/1000 series, if you want SDK for these series, please switch to master or develop branch, see https://github.com/Nuclei-Software/nuclei-sdk/tree/master
-
Application
- Added baremetal/freertos/ucosii/rtthread examples.
- Baremetal examples contains helloworld, demo_irqc, demo_timer, demo_extirq, lowpower cases to show cpu interrupt and timer usage.
- Baremetal examples also contains benchmark examples such as coremark, dhrystone, whetstone which can demostrate the performance of Nuclei CPU.
- RTOS examples contains different samples to show how to use FreeRTOS, UCOSII and RT-Thread on Nuclei N100.
-
Build System
- Support Nuclei 100 series RISC-V CPU Cores.
- Support Nuclei RISC-V GCC toolchain, IAR Compiler and Terapines ZCC toolchain.
-
NMSIS
- NMSIS in N100 SDK is not compatible with standard NMSIS, this is modified to match Nuclei 100 series CPU.
- Most of the APIs in this modified NMSIS are similar to standard NMSIS, but some APIs have been changed or added.
- Please refer to the header files in
NMSIS/Core/Includedirectory for more details.
-
SoC
- Only Nuclei Evaluation SoC for 100 series is supported by this SDK.
- If you want to port to your own SoC, you modify based on this
evalsocimplementation. - This SDK will also be generated by 100 series
nuclei_gentool, please take a look at theevalsoc.memory,openocd_evalsoc.cfg,cpufeature.handcpufeature.mk,
for IAR projects, you need to also check the linker script inside it. - Only
sramandflashxipdownload modes are supported in this SDK, and the linker script is quite different to normal Nuclei SDK,
please take care, especially the vector table and exception entry address are RTL configurable which means when your RTL configuration
is different to ourevalsoc, you need to modify the linker script to match your rtl configuration. - IAR support is also added in this SDK, and linker and startup/exception code are different from GCC, please take care when you port to your own SoC.
-
RTOS
- FreeRTOS/UCOSII/RT-Thread port for 100 series CPU are added in this SDK.
- IAR compiler port and gcc/clang port are also supported by these RTOSes.
-
IDE support
- Nuclei Studio 2024.06 will support this Nuclei N100 SDK via NPK solution just like Nuclei SDK.
- IAR Workbench support is also done in this SDK, please take a try with it in
ideprojects/iarfolder.
-
Documentation
- The documentation is modified based on Nuclei SDK.
- We have go through the whole documentation and modified it to match Nuclei N100 SDK, maybe some of them are not perfect, please feel free to correct me if you find any mistakes.