Nuclei RISC-V Toolchain 2023.10
This is the release note of Nuclei RISC-V Toolchain 2023.10.
Warning
This 2023.10 toolchain has some issues in using Zc extension, please use 2024.02 release to replace this version.
Note: llvm compiler is introduced in Nuclei Toolchain for the first time, you can take a try with it, but with just official RISC-V ISA support, no Nuclei customized ISA supported.
This release is maded upon nuclei/2023 branch
Please create issue if you are facing issues using Nuclei RISC-V Toolchain, see https://github.com/riscv-mcu/riscv-gnu-toolchain/issues
Known issues of this release: #10
Toolchain source version update
- Bump gcc from gcc
10.2
to gcc13.1
- Bump binutils from
2.36
to2.40
- Bump gdb from
10.0
to13.2
- Bump newlib
4.1.0
to4.3.0
- Bump libncrt from
2.0.0
to3.0.0
- Include clang release
17.0.2
New features
This new version of toolchain need to work with Nuclei Studio 2023.10, and it is already included in it.
Nuclei SDK 0.5.0 and NMSIS 1.2.0 need to use this new version of toolchain.
Nuclei Toolchain cross compile prefix changed from
riscv-nuclei-elf-
toriscv64-unknown-elf-
- Both gcc and clang distributed in this release support latest RISC-V Vector Intrinsic API v0.12
-march
compiler isa option changed to use both single-letter and multi-letter ISA extensions, see riscv-non-isa/riscv-toolchain-conventions#26, so previous single-lettler isa string such asb/p/k/v
now all changed to multi-letter now, see https://doc.nucleisys.com/nuclei_sdk/develop/buildsystem.html#arch-ext for details isa string name changes.- P Extension draft 0.5.4 release and Nuclei DSP N1/N2/N3 support is added to gcc 13, isa naming is
_xxldsp
,_xxldspn1x
,_xxldspn2x
and_xxldspn3x
- RISC-V Code Size Reduction extension called
Zc*
support is added to gcc 13, isa naming is_zca
,_zcb
,_zcf
,_zcd
,_zcmp
and_zcmt
- Nuclei Code Size Reduction extension called
Xxlcz
support is added to gcc 13, isa naming is_xxlcz
, need to use together withZc*
extension - Other general extensions such as IMAFDCV and Zk* extension support is already added in gcc 13 officially, see https://gcc.gnu.org/gcc-13/changes.html
- We also cherry picked upstream master branch's new feature such as
Zicond
and RVV auto vectorization. - Nuclei customized CSRs support are added in gcc 13
- Nuclei libncrt C library upgrade to version 3.0.0, and library spilt into three parts(c library part + fileops part + heapops part), for more details, please check libncrt user guide distributed in toolchain
share/pdf/Nuclei C Runtime Library Doc.pdf
doc, eg.--specs=libncrt_small.specs
in gcc10 now should change to--specs=libncrt_small.specs -lncrt_small -lfileops_uart -lheapops_basic
in linker options, you can also refer to https://doc.nucleisys.com/nuclei_sdk/develop/buildsystem.html#stdclib. - We also changed multilib combinations to support B/P/Zc extensions, check it by
riscv64-unknown-elf-gcc -print-multi-lib
orriscv64-unknown-elf-clang -v
- Toolchain prebuilt documentation can be found in
share/pdf
andshare/doc
folder.
How to get prebuilt toolchain for windows or linux
Please click https://nucleisys.com/download.php#tools to find release 2023.10.