Skip to content

Nuclei embedded Software Development Kit, Release 0.4.0

Compare
Choose a tag to compare
@fanghuaqi fanghuaqi released this 06 Jan 02:36
· 850 commits to master since this release

This is release version 0.4.0 of Nuclei SDK.

  • Application

    • Add app_demo_pmp application to demostrate pmp feature.
    • Add app_demo_spmp application to demostrate smode pmp feature, spmp is present when TEE feature is enabled.
    • Add demo_smode_eclic application to demonstrate ECLIC interrupt with TEE feature of Nuclei Processor.
    • Changed test/core test case due to EXC_Frame_Type struct member name changes.
    • Fix XS bit set bug in demo_nice application.
    • Add return value in smphello application.
  • NMSIS

    • Add __CTZ count trailing zero API in core_compatiable.h
    • Add __switch_mode switch risc-v privilege mode API in core_feature_base.h
    • Add __enable_irq_s, __disable_irq_s smode irq control(on/off) API in core_feature_base.h
    • Add __set_medeleg exception delegation API in core_feature_base.h
    • Update and add smode eclic related API in core_feature_eclic.h only present when TEE_PRESENT=1
    • Optimize APIs of PMP and add __set_PMPENTRYx and __get_PMPENTRYx API for easily PMP configuration in core_feature_pmp.h
    • Add spmp related APIs for smode pmp hardware feature when __SPMP_PRESENT=1
    • Add per-hart related APIs for systimer such as SysTimer_SetHartCompareValue, SysTimer_SetHartSWIRQ and etc in core_feature_timer.h, this is mainly needed when configure timer in smode per hart
    • Add TEE related csr macros in riscv_encoding.h
    • Add iregion offset macros and N3/VP mask in riscv_encoding.h and use it in demosoc/evalsoc implementation.
    • Add ICachePresent/DCachePresent API
    • Don't sub extra cost for BENCH_xxx API
    • Update NMSIS Core/DSP/NN and prebuilt library to version 1.1.0
  • Build System

    • Add intexc_<Device>_s.S asm file into compiling for evalsoc and demosoc
    • Show ARCH_EXT information when run make info
    • Don't specify elf filename when run gdb, only specify it when do load to avoid some gdb internal error
    • Add BOOT_HARTID and JTAGSN support, which need to be done in SoC support code and build system
  • SoC

    • Add smode interrupt and exception handling framework for evalsoc and demosoc, for details see code changes.

      • A new section called .vector_s is added(required in linker script) to store smode vector table which is initialized in system_<Device>.c
      • A new intexc_<Device>_s.S asm source file is added to handle s-mode interrupt and exception
      • A default smode exception register and handling framework is added in system_<Device>.c
      • API Changes: Exception_DumpFrame parameters changed to add mode passing in system_<Device>.c/h
      • API Changes: EXC_Frame_Type struct member mcause/mepc changed to cause/epc in system_<Device>.c/h
    • Print \0 instead of \r when do simulation exit for better integration in Nuclei Studio QEMU simulation.

    • Add clock stub function for libncrt library in demosoc/evalsoc/gd32vf103 SoC support software.

    • Add sram download mode for evalsoc/demosoc, for details directly check the linker script

    • Change default __ICACHE_PRESENT/__DCACHE_PRESENT to 1 for evalsoc/demosoc, when evalsoc/demosoc startup, it will
      enable i/d cache if it really present.

    • Update openocd configuration files to remove deprecated command which might not be support in future

    • Merge smp and single core openocd config into one configuration for evalsoc and demosoc

    • Add BOOT_HARTID support for evalsoc and demosoc, which is used to specify the boot hartid, used together with SMP
      can support SMP or AMP run mode

    • Add JTAGSN support to specify a unified hummingbird jtag debugger via adapter serial

    • For AMP support, we can work together with Nuclei Linux SDK, see https://github.com/Nuclei-Software/nsdk_ampdemo

    • Add NPK support for SMP/AMP working mode, and sram download mode

  • CI

    • Start to use Nuclei QEMU/Toolchain/OpenOCD 2022.12 in daily ci for gitlab runner
  • Tools

    • Add httpserver.py tool to create a http server on selected folder, good to preview built documentation.
    • Fix many issues related to nsdk_cli scripts when integrated using fpga hardware ci flow.
    • Support extra parsing benchmark python script for nsdk_cli tools, see 5f546fa
    • Add nsdk_runcpu.py tool to run fpga baremetal benchmark
  • Documentation

    • Add make preview to preview build documentation.

Full Changelog: 0.3.9...0.4.0