0.6.0
版本发布时间: 2024-07-01 10:42:53
Nuclei-Software/nuclei-sdk最新发布版本:0.6.0(2024-07-01 10:42:53)
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 usenewlib_full
library.
-
NMSIS
- Update many CSR structure defined in
core_feature_base.h
such asCSR_MCFGINFO_Type
,CSR_MDLMCTL_Type
andCSR_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 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
__ROR64
incore_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
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 insmphello
orfreertos/smpdemo
.
- Redesign
-
Build System
- Now disassemble elf will show no alias instructions
- Add
u600*/u900*/ux1000fd
into 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=scalar
option is replaced by-mstringop-strategy=scalar
in 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/Zicond
and1000
series 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: https://github.com/Nuclei-Software/nuclei-sdk/compare/0.5.0...0.6.0