Note
If you want to develop and run program on Nuclei 200/300/600/900/1000 series RISC-V CPU, please switch to develop or master branch.
This N100 SDK is modified based on the Nuclei SDK framework, NMSIS is also a modified version to support limited feature provided by Nuclei 100 series processor.
We also integrated some RTOSes into Nuclei SDK, which are FreeRTOS, UCOSII and RTThread, you can easily find it in the OS folder.
Nuclei RISC-V GCC/Clang, IAR compiler and Terapines ZCC are supported in Nuclei N100 SDK.
- For Nuclei RISC-V GCC/Clang and Terapines ZCC, see Nuclei N100 SDK - TOOLCHAIN support
- For IAR compiler support, see ideprojects/iar/README.md.
Wanner to take a try with Nuclei N100 SDK for Nuclei 100 series CPU, click Quick Start with Nuclei N100 SDK to start up.
Wanner to take a try with Nuclei SDK for Nuclei 200/300/600/900/1000 series CPU, click Quick Start with Nuclei SDK to start up.
- Ubuntu Linux >=20.04 LTS or Windows >=10
- Linux: GNU Make >= 3.82
- Windows: Windows Build Tools
- Nuclei Studio >= 2025.02
- Nuclei Studio can support import Nuclei SDK NPK package to provide IDE project wizard create/build/debug.
- Nuclei Studio also contains same release of Nuclei Toolchain/QEMU/OpenOCD, so just download IDE is enough.
- Create and modify your own setup config, see comments in
setup.bat
orsetup.sh
- For Linux, create
setup_config.sh
in $NUCLEI_SDK_ROOT. - For Windows, create
setup_config.bat
in %NUCLEI_SDK_ROOT%.
- For Linux, create
- Source the environment script right in NUCLEI_SDK_ROOT
- For Linux:
source setup.sh
- For Windows:
setup.bat
- For Linux:
- Build and run application.
- Note: By default, the SoC and Board is set to
evalsoc
andnuclei_fpga_eval
, if you don't pass any SOC and BOARD variable in Make command, it will use the default SoC and Board. - Assume that you will run this application -> application/baremetal/helloworld/.
- cd application/baremetal/helloworld/
- you can run make help to show help message.
- We provided different Nuclei Core configurations(CORE=<your_core>) we supported, see Build/Makefile.core.
- such as
CORE=n100m
- such as
- We support several download modes(DOWNLOAD=) for different applications.
- sram: Program will be downloaded into ram and run directly in ram, program lost when poweroff
- For example, if you want to build your application for CORE=n100m DOWNLOAD=sram, you can easily run this command:
make CORE=n100m DOWNLOAD=sram all
- If you want to upload your application for CORE=n100m DOWNLOAD=sram, you can easily run this command:
make CORE=n100m DOWNLOAD=sram upload
- (Option 1)If you want to debug your application for CORE=n100m DOWNLOAD=sram:
- First open a new terminal in the same application folder and run:
make CORE=n100m DOWNLOAD=sram run_openocd
- Then run this command
make CORE=n100m DOWNLOAD=sram run_gdb
in the existing terminal, then you can debug it using gdb, if you want to load your program, you need to typeload
to achieve it. - Notice: Since version 0.2.4, you can also pass extra
GDB_PORT=<portno>
, to change to use new gdb port other than default3333
, for example,make CORE=n100m DOWNLOAD=sram GDB_PORT=3344 run_openocd
andmake CORE=n100m DOWNLOAD=sram GDB_PORT=3344 run_gdb
- First open a new terminal in the same application folder and run:
- (Option 2)If you want to debug your application for CORE=n100m DOWNLOAD=sram:
make CORE=n100m DOWNLOAD=sram debug
- If you want to use UART terminal tool to view the UART message, you can choose
screen
orminicom
in Linux,teraterm
in Windows, the default UART baudrate we use is115200
.
- Note: By default, the SoC and Board is set to
-
N100 SDK only support Nuclei RISC-V Toolchain >= 2025.02, and toolchain prefix is
riscv64-unknown-elf-
. -
N100 SDK is modified based on Nuclei SDK, so the user experience are similiar to Nuclei SDK, and directory structure is also similar, if you have experience in using Nuclei SDK, it will be easy to use N100 SDK.