Skip to content

Releases: Nuclei-Software/nuclei-sdk

Nuclei N100 Software Development Kit, Release 0.3.0

Choose a tag to compare

@fanghuaqi fanghuaqi released this 17 Jun 02:10

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

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 icount option via ICOUNT_OPT in nsdk_cli tools.
  • Tools: Added SDK_APPDIRS_IGNORE environment variable support in nsdk_cli tools 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 xPortTaskSwitch to disable/enable IRQ around vTaskSwitchContext, 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_I after 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 zcmp and zcmt instead of matching zc prefix.
    • Updated compiler flags -fomit-frame-pointer -fno-shrink-wrap-separate to only apply for zcmp extension.

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

Choose a tag to compare

@fanghuaqi fanghuaqi released this 17 Jun 02:10

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_PRESENT renamed 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

Choose a tag to compare

@fanghuaqi fanghuaqi released this 04 Aug 09:52

Nuclei embedded Software Development Kit, Release 0.8.1

Choose a tag to compare

@fanghuaqi fanghuaqi released this 04 Aug 09:50

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

Choose a tag to compare

@fanghuaqi fanghuaqi released this 26 May 02:27

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

Choose a tag to compare

@fanghuaqi fanghuaqi released this 26 May 02:20

Nuclei embedded Software Development Kit, Release 0.7.1

Choose a tag to compare

@fanghuaqi fanghuaqi released this 11 Nov 02:53

Nuclei embedded Software Development Kit, Release 0.7.0

Choose a tag to compare

@fanghuaqi fanghuaqi released this 21 Oct 06:57

This is release version 0.7.0 of Nuclei SDK.

  • Application

    • Add demo_plic case to show how to use PLIC related API in PLIC interrupt mode.
    • Add demo_clint_timer case to show how to use systimer in CLINT interrupt mode not ECLIC interrupt mode.
    • Update demo_pmp case to make it suitable for when PMP not present.
    • Change download mode from ddr to sram for smp and cache cases to be suitable for some custom soc sdk.
  • NMSIS

    • Add more ECC related macros for milm_ctl/mdlm_ctl/mcache_ctl csr
    • 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
  • SoC

    • Add Terapines ZCC NPK support, require Nuclei Studio >= 2024.06
    • Merge newlib stub code from many files into one file called stubs.c for all SoC supported in Nuclei SDK
    • Enable I/D cache for evalsoc before data/bss initialization steps using cpufeature.h for faster data initialization
    • gd32vf103 default CORE name changed from n205 to n203 which are the same in software
    • gd32vw55x default CORE name changed from n307fd to n300fd which are the same in software
    • evalsoc default CORE name changed from n307fd to n300fd which 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_xxx make 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_EN make variable for evalsoc which is only internally used by Nuclei to control whether ECC check is enabled or disabled.
    • Add core n200e/n202/n202e and remove n205/n205e/n305/n307/n307fd which can be replaced by n203/n203e/n300/n300f/n300fd
    • Prebuilt IAR projects and workbench are updated due to evalsoc support changes for plic and clint interrupt modes.
    • Add SYSCLK make variable for manually set default SYSTEM_CLOCK macro in evalsoc, it is useful for CODESIZE=1 case
    • Add QEMU_MC_EXTOPT make variable to pass extra Nuclei Qemu -M machine options for evalsoc.
    • Add QEMU_CPU_EXTOPT make variable to pass extra Nuclei Qemu -cpu cpu options for evalsoc.

Full Changelog: 0.6.0...0.7.0

Nuclei embedded Software Development Kit, Release 0.6.0

Choose a tag to compare

@fanghuaqi fanghuaqi released this 01 Jul 02:42

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 profiling middleware 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_vnice example to show how to use Nuclei Vector NICE feature.
    • Add demo_profiling example to how to use gprof and gcov in Nuclei Studio.
    • Add smphello, demo_cidu baremetal SMP examples in IAR workbench.
    • Add FreeRTOS smpdemo example to show how to use SMP version of FreeRTOS.
    • Optimize and fix cpuinfo example 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 lowpower example no need to use newlib_full library.
  • NMSIS

    • Update many CSR structure defined in core_feature_base.h such as CSR_MCFGINFO_Type, CSR_MDLMCTL_Type and CSR_MCACHECTL_Type etc.
    • Add __set_rv_cycle and __set_rv_instret API to set cycle and instret csr registers.
    • Add CSR_MTLBCFGINFO_Type CSR structure in core_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 __ROR64 in core_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
  • SoC

    • Redesign evalsoc reference SoC support software for better evalsoc and nuclei cpu support, see https://doc.nucleisys.com/nuclei_sdk/design/soc/evalsoc.html#usage
    • Remove -msave-restore in npk.yml to fix dhrystone benchmark value is low in Nuclei Studio issue.
    • No need to get system clock using get_cpu_freq for 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_dlink board support for Nuclei DLink development.
    • Fix non-ABS relocation R_RISCV_JAL against symbol '_start' fail for nuclei_llvm toolchain
    • Add Nuclei ux1000fd support 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_script is not empty.
    • Explicit declare asm function in gcc asm code if that part of code is a function, which is required by gprof plugin 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_init for 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 SystemIRegionInfo variable 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.S for evalsoc to support SMP boot, and for SMP stack setup,
      different IAR linker script is required, see the iar linker script provided in smphello or freertos/smpdemo.
  • Build System

  • 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/Zicond and 1000 series support in SDK CLI script used internally
    • Optimize gitlab ci jobs to speedup job execution time and better merge request pipeline check

Full Changelog: 0.5.0...0.6.0

Nuclei N100 Software Development Kit, Release 0.1.0

Choose a tag to compare

@fanghuaqi fanghuaqi released this 01 Jul 02:55

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/Include directory 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 evalsoc implementation.
    • This SDK will also be generated by 100 series nuclei_gen tool, please take a look at the evalsoc.memory, openocd_evalsoc.cfg, cpufeature.h and cpufeature.mk,
      for IAR projects, you need to also check the linker script inside it.
    • Only sram and flashxip download 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 our evalsoc, 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/iar folder.
  • 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.