Open fanghuaqi opened 4 years ago
Please pay attention to the latest issue comments, the text descriptions here may not be the latest version, refer to the specific code for accuracy.
As of July 2023, the updated code features are as follows:
Mainly supports the following SoCs:
demosoc: An earlier evaluation SoC without CPU IREGION features, now deprecated.
evalsoc: The latest evaluation SoC with CPU IREGION features, evolved in two versions, with DDR base at 0xA0000000 (v1) and 0x80000000 (v2) respectively.
Branches introduction:
Please note: When switching branches or switching boot modes (sd/flash), you need to clean the
work
directory, delete or rename it. Also when switching branches, you need to update the submodule code at the same time. Please note: If you plan to bringup a Linux environment on your own SOC, please read our prepared bringup advice #21 first
Currently, actively development branches are dev_nuclei_5.10_v2
, dev_nuclei_6.1_v2
and dev_nuclei_6.6_v2
dev_nuclei_next: Default branch, supports SD card boot and Flash boot
Supports demosoc and evalsoc v1, based on Kernel 5.10(RV64 only)
Boots from flash, and borrows SD card to boot Linux, freeloader integrates opensbi+uboot
, SD card loads kernel+rootfs+dtb
Boots directly from flash, no dependency on SD card, freeloader integrates opensbi+uboot+kernel+rootfs+dtb
(requires flash >=8M), or can boot from SD card in uboot (run run distro_bootcmd
)
feature/fsl: For evaluation of FSL91030M board, see usage at https://github.com/Nuclei-Software/nuclei-linux-sdk/tree/feature/fsl/conf/fsl91030m
dev_nuclei_keystone: Mainly for evaluation of Keystone TEE related solutions, based on Kernel 5.10(RV64 only)
dev_nuclei_penglai: Mainly for evaluation of Penglai TEE related solutions, based on Kernel 5.10(RV64 only)
dev_nuclei_5.10 & dev_nuclei_6.1: For evaluation of latest 5.10 or 6.1 LTS kernel versions, supports evalsoc v1(RV64 only)
dev_nuclei_5.10_v2 & dev_nuclei_6.1_v2: For evaluation of latest 5.10 or 6.1 LTS kernel versions, supports evalsoc v2(RV32&RV64)
dev_nuclei_6.6_v2: For evaluation of linux kernel 6.6,which use our latest gcc13 glibc 2.38 toolchain(WIP),support evalsoc v2, support rv32 & rv64, support Svnapot/Svpbmt/Zbb/Zicbom/Zicboz/Vector
extension,demosoc removed and dropped
dev_nuclei_6.9_v2: For evaluation of linux kernel 6.9,which use our latest gcc13 glibc 2.38 toolchain(WIP),support evalsoc v2, support rv32 & rv64, support Svnapot/Svpbmt/Zbb/Zicbom/Zicboz/Vector
extension,demosoc removed and dropped
dev_nuclei_6.6_v2_customsoc: Built upon the 6.6 kernel, this version includes support for Nuclei SoC IP Driver, with ongoing additions and testing. Local reference platforms are used for testing, and it supports configurations located in conf/customsoc
. The modified kernel is located in the dev_nuclei_6.6.y
branch.
dev_nuclei_6.6_v2_android: Based on the Android Linux Kernel version 6.6, the porting and adaptation for CORE=ux900fd has been conducted to test the Bringup of AOSP. For detailed usage, please refer to the README.md
in the conf/evalsoc
branch.
feature/optee_5.10: Mainly for evaluation of OpTEE solutions, based on Kernel 5.10(RV64 only), see https://github.com/OP-TEE/optee_os/issues/6173 and https://github.com/Nuclei-Software/nuclei-linux-sdk/issues/13
feature/optee_5.10_wg: Mainly for evaluation of OpTEE solutions, based on Kernel 5.10(RV64 only), requires more CPU security features
dev_nuclei_6.4_v2_rt: Based on Linux 6.4 Kernel + RT Patches used to evaluate Realtime feature
feature/5.10_ccm: Based on the 5.10 kernel, added the adaptation of Linux CCM cache management, code adaptation, can boot, but need a device with DMA to test this
dev_nuclei_5.10_v2_64baddr: Based on the 5.10 kernel, used to test the ddr base address greater than 32 bits, uboot loads the image using FIT formatto solve the problem that the previous method can only load images in the 32-bit address space, this branch only adapts the ux900fd - sd
mode
dev_nuclei_5 10_v2_fit: Based on the 5.10 kernel, used to test the ddr base address is greater than 32 bits, uboot loads the image using FIT format to solve the problem that the previous method can only load the image in the 32-bit address space
dev_nuclei_6 1_v2_fit: Based on the 6.1 kernel, used to test the ddr base address is greater than 32 bits, uboot loads the image using FIT format to solve the problem that the previous method can only load the image in the 32-bit address space
dev_nuclei_6 6_v2_fit: Based on the 6.6 kernel, used to test the ddr base address is greater than 32 bits, uboot loads the image using FIT format to solve the problem that the previous method can only load the image in the 32-bit address space
The documentation can be found in each branch's README.md, which can be reviewed online.
We have introduced OpTEE support, please check this issue https://github.com/OP-TEE/optee_os/issues/6173
The related branches:
feature/optee_5.10 : https://github.com/Nuclei-Software/nuclei-linux-sdk/tree/feature/optee_5.10
feature/optee_5.10_wg : https://github.com/Nuclei-Software/nuclei-linux-sdk/tree/feature/optee_5.10_wg
feature/optee_5.10_wg
branch introduce the support with world-guard and secure mode feature of Nuclei CPU. Currently only run on hardware, no qemu emulation support.
Since 2023.07, the ddr base address of our fpga emulation platform for 900 series changed from 0xA0000000 to 0x80000000, so we are able to have totally 2GB DDR RAM to use, instead of 1.5G.
If you want to try that features, please use these branches:
dev_nuclei_5.10_v2 : https://github.com/Nuclei-Software/nuclei-linux-sdk/tree/dev_nuclei_5.10_v2
dev_nuclei_6.1_v2 : https://github.com/Nuclei-Software/nuclei-linux-sdk/tree/dev_nuclei_6.1_v2
- These two branches required a new version of Nuclei QEMU > 2022.12, please contact with our AE to get it.
- These two branches are for Linux Kernel 5.10 LTS version and 6.1 LTS version.
There are also branches without _v2
naming in it, it is used for old DDR base is 0xA0000000
We have just introduced with no-mmu linux support for riscv64 processors.
You can evaluate it using Nuclei Qemu 2023.10 downloaded from https://www.nucleisys.com/upload/files/toochain/qemu/nuclei-qemu-2023.10-linux-x64.tar.gz
Just extract it, and add its binary path to existing system PATH.
You can find this feature in branch: https://github.com/Nuclei-Software/nuclei-linux-sdk/tree/dev_nuclei_6.1_nommu
The freeloader will consist with loader, dts and kernel binary, when you clone this repo, and switch to this branch, and update the submodule, then you can evaluate this on qemu or hardware.
export PATH=/path/to/qemu/bin:$PATH
# choose rv64imafdc
# clean previous build if existed
make CORE=ux900fd clean
# build freeloader is enough, no need to build boot images, sd card is not needed
# bitstream with 50MHz CPU is expected by default
make CORE=ux900fd freeloader
# run on qemu
make CORE=ux900fd run_qemu
# upload to hardware board, hardware need to be power on and jtag connected
# boot need a few minutes depended on cpu frequency
make CORE=ux900fd upload_freeloader
Sample output on qemu is attached here: rv64imafdc_nommu_linux_bootlog.txt
We have just introduced with preempt_rt linux support for riscv64 processors.
You can evaluate it using Nuclei Qemu 2023.10 downloaded from https://www.nucleisys.com/upload/files/toochain/qemu/nuclei-qemu-2023.10-linux-x64.tar.gz
Just extract it, and add its binary path to existing system PATH.
You can find this feature in branch: https://github.com/Nuclei-Software/nuclei-linux-sdk/tree/dev_nuclei_6.4_v2_rt
The freeloader will consist with loader, dts and kernel binary, when you clone this repo, and switch to this branch, and update the submodule, then you can evaluate this on qemu or hardware.
export PATH=/path/to/qemu/bin:$PATH
# choose rv64imafdc
# clean previous build if existed
make CORE=ux900fd clean
# build freeloader is enough, no need to build boot images, sd card is not needed
# bitstream with 50MHz CPU is expected by default
make CORE=ux900fd freeloader
# run on qemu
make CORE=ux900fd run_qemu
# upload to hardware board, hardware need to be power on and jtag connected
# boot need a few minutes depended on cpu frequency
make CORE=ux900fd upload_freeloader
Sample output on qemu is attached here: rv64imafdc_rt_linux_bootlog.txt
cyclictest program which we use to test rtlinux, is built from rt-test source code,
rt-test git source : git://git.kernel.org/pub/scm/utils/rt-tests/rt-tests.git
here is our rv64fd binary built from rt-test 2.0 ,numa library is master branch cyclictest.gz
We just introduced support of Linux Kernel 6.6 in branch dev_nuclei_6.6_v2
, which is using prebuilt gcc 13 + glibc 2.38 toolchain, the buildroot/uboot are also upgraded to latest stable branch.
The riscv features linux kernel 6.6 supported:
We introduced dev_nuclei_6.6_v2_customsoc branch, mainly used to demonstrate our Nuclei SoC IP linux driver code and how to use it.
We introduced Linux perf tool support which may cause cycle/instret
not able to be read in user space, see https://github.com/Nuclei-Software/nuclei-linux-sdk/issues/26
中文介绍
截止到2023.07号起更新的代码,分支特性说明如下:
主要支持如下SoC:
分支说明
目前活跃开发的分支为
dev_nuclei_5.10_v2
,dev_nuclei_6.1_v2
和dev_nuclei_6.6_v2
: 主要针对最新的900 CPU的FPGA evalsoc进行适配和优化。文档做了更新的分支如下:
以下是各个分支的情况说明
dev_nuclei_5.10_v2
分支。opensbi+uboot
,sd卡加载kernel+rootfs+dtbopensbi+uboot+kernel+rootfs+dtb
(对spiflash大小有要求>=8M),也可以在uboot阶段打断启动后从SD卡启动(运行run distro_bootcmd
)Svnapot/Svpbmt/Zbb/Zicbom/Zicboz/Vector
特性,demosoc支持已经被删除了Svnapot/Svpbmt/Zbb/Zicbom/Zicboz/Vector
特性,demosoc支持已经被删除了conf/customsoc
, 修改的内核位于dev_nuclei_6.6.y
分支CORE=ux900fd
进行的移植和适配,用于测试AOSP的Bringup,详细使用参见该分支下的conf/evalsoc/README.md
ux900fd - sd
模式