Skip to content

Commit

Permalink
doc: add more notices about 0.5.0 release changes
Browse files Browse the repository at this point in the history
- Including toolchain support update
- Including how to contribute and port your own target

Signed-off-by: Huaqi Fang <[email protected]>
  • Loading branch information
fanghuaqi committed Nov 2, 2023
1 parent 9e5738e commit 9c59a35
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 5 deletions.
4 changes: 2 additions & 2 deletions doc/source/changelog.rst
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ This is release version ``0.5.0`` of Nuclei SDK.
- Add cpuinfo case to dump nuclei cpu feature
- Add stack check demo to demostrate nuclei stack check feature
- Add support for gcc13/clang17/terapines/iar compiler
- Fix missing break in ``__set_hpm_event`` function
- Fix missing break in ``__set_hpm_event`` function, take care if you are using this API.
- For different compiler option support, we introduced ``toolchain_$(TOOLCHAIN).mk`` file to place toolchain specified options, see benchmark examples' Makefile
- Optimize demo_cidu smp case
- Optimize application code and makefile when port for clang, terapines zcc and iar compiler
Expand All @@ -53,7 +53,7 @@ This is release version ``0.5.0`` of Nuclei SDK.

* SOC

- Demosoc support is removed since evalsoc is the successor
- **CAUTION**: Demosoc support is removed since evalsoc is the successor, please use **evalsoc** now.
- Set RUNMODE_CCM_EN macro when CCM_EN make variable passed and allow __CCM_PRESENT overwrite by RUNMODE_CCM_EN macro
- Enable __CIDU_PRESENT macro passed via compiler option
- Update cpu startup asm code to fix clang compile issue such as STB_WEAK warning and non-ABS relocation error
Expand Down
6 changes: 6 additions & 0 deletions doc/source/contribute.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,12 @@ Port your Nuclei SoC into Nuclei SDK
If you want to port you Nuclei Processor Core based Board to Nuclei SDK,
you need to follow these steps:

And the best example is our evalsoc support, although it may contains many unused features you may
not want to use, but it is our evaluation SoC and will supply to provide best support for Nuclei RISC-V
CPU features, if you are already using it, please keep in update of the evalsoc support changes in each
release, you can track it by diff each release changes, and please also remember Nuclei SDK release may
also bump with NMSIS release.

Assume your SoC name is ``ncstar``, based on Nuclei core **n307**, and **RISCV_ARCH**
is ``rv32imafc``, **RISCV_ABI** is ``ilp32f``, and you made a new board called ``ncstar_eval``,
and this SoC only support **FlashXIP** download mode.
Expand Down
13 changes: 10 additions & 3 deletions doc/source/develop/buildsystem.rst
Original file line number Diff line number Diff line change
Expand Up @@ -560,9 +560,9 @@ TOOLCHAIN
This variable is used to select different toolchain to compile application.
Currently we support 3 toolchain in Nuclei SDK.

* **nuclei_gnu**: default, it will choose nuclei gnu toolchain.
* **nuclei_llvm**: still in experiment, nuclei customized extensions not yet supported.
* **terapines**: still in experiment, it depends on the toolchain vendor about the supported extensions.
* **nuclei_gnu**: default, it will choose nuclei gnu toolchain, distributed with Nuclei Toolchain.
* **nuclei_llvm**: still in experiment, nuclei customized extensions not yet supported, distributed with Nuclei Toolchain.
* **terapines**: still in experiment, it depends on the toolchain vendor about the supported extensions, if you want to take a try with it, just visit https://www.terapines.com/ and request an terapines toolchain evaluation.

For **nuclei_gnu/nuclei_llvm** toolchain both newlib and libncrt library are supported,
but nuclei_llvm toolchain multilib selection mechanism is not as good as gnu toolchain,
Expand All @@ -571,6 +571,8 @@ you need to take care of the arch isa string order, please see ``riscv64-unknown
And IAR compiler support is also done in Nuclei SDK, you can take a try with it
via ``ideprojects/iar`` folder provided prebuilt ide projects.

If you want to use old Nuclei GNU Toolchain <= 2022.12 in Nuclei SDK 0.5.0, you need to pass extra ``COMPILE_PREFIX=riscv-nuclei-elf-`` when build any application, such as ``make CORE=n307fd COMPILE_PREFIX=riscv-nuclei-elf- STDCLIB=libncrt_small clean all``, but this is not recommended, and will be deprecated in future any time.

.. _develop_buildsystem_var_download:

DOWNLOAD
Expand Down Expand Up @@ -1146,6 +1148,11 @@ system libraries by the ``STDCLIB`` variable choice, so need to link desired lib

.. note::

* For clang based compiler, if ``-u _print_float`` is not passed in linker options, it may fail
during link process, so here we pass ``-u _print_float`` for newlib_nano, then it means for
nuclei_llvm and terapines toolchain, ``STDCLIB=newlib_nano`` equals to ``STDCLIB=newlib_small``
* Nuclei libncrt library couldn't be used with terapines toolchain, so you can't use any libncrt library
when you are using terapines toolchain.
* About Newlib and Newlib nano difference, please check
https://github.com/riscv-collab/riscv-newlib/blob/riscv-newlib-3.2.0/newlib/README
* About Nuclei C runtime library, it provided basic libgcc, c library and math library feature, but
Expand Down

0 comments on commit 9c59a35

Please sign in to comment.