请关注最新的issue评论,这里的文字说明可能不是最新版本,以具体代码为准
请注意 本issue与其他issue会经常更新,请点击上面的 edited 来获知最新的修改的变更
Note
点击 这里 还可以看到更多 Nuclei Linux SDK使用的各种技巧和场景的文章,持续不断更新完善中 。
中文介绍
截止到2026.05.14 起更新的代码,分支特性说明如下:
主要支持如下SoC :
demosoc : 比较早版本的评估用的SoC,不带有CPU IREGION特性,已经弃用,不再支持。
evalsoc : 目前最新的评估用的SoC,带CPU IREGION特性,演进了两个版本
evalsoc v1: DDR Base为0xA0000000 , 默认提供的FPGA Soft CPU Core Frequency 通常是 100MHz 或者 50Mhz,不再支持
evalsoc v2: DDR Base为0x80000000 , 默认提供的FPGA Soft CPU Core Frequency 通常是 50Mhz, 2023.07 引入作为evalsoc v1的替代。
最新的 900 评估bitstream都是采用的evalsoc v2
分支说明
请注意 :切换分支或者切换启动模式(sd/flash), 需要清理 work目录,删掉或者重命名,且切换分支的时候,需要同时更新submodule的代码
请注意 : 如果你打算在你自己的SOC上bringup Linux环境,请先阅读我们准备好的bringup建议 #21
目前活跃开发的分支为 dev_nuclei_5.10/6.1/6.6/6.9/6.12_v3 : 主要针对最新的900 CPU的FPGA evalsoc进行适配和优化。
提醒 : 后续我们将只积极维护 _v3 分支,其他分支不再积极维护,其他特性功能我们也将逐步迁移到 2025.10-gcc14的工具链上开发
提醒 : 目前 _v3 分支使用的是开发中的预编译好的2025.10 gcc14 glibc 工具链,工具链的信息记录在 buildroot_initramfs_*_config文件中。
提醒 : 计划使用 dev_nuclei_next / dev_nuclei_5.10分支的, 建议直接使用 dev_nuclei_5.10_v3 分支
提醒 : 关于默认的CPU/Peripheral/Timer频率以选中的SoC中对应的dts(如nuclei_rv64imafdc.dts)和build.mk配置为准。
提醒 : 请根据你当前拿到的bitstream的CPU版本以及CPU主频来选择分支,切换到对应分支,并确保代码是最新的,然后检查并修改对应的dts或者build.mk来满足你的bitstream的要求,再进行代码的构建。
以下是各个分支的情况说明
目前这些活跃分支都已经切到 2025.10-gcc14的工具链
dev_nuclei_5.10_v3 : 支持 evalsoc v2版本, 支持RV64 & RV32,用于评估 5.10 LTS内核版本
dev_nuclei_6.1_v3 : 支持 evalsoc v2版本, 支持RV64 & RV32,用于评估 6.1 LTS内核版本
dev_nuclei_6.6_v3 : 默认分支 , 支持 evalsoc v2版本, 支持RV64 & RV32,用于评估 6.6 LTS内核版本
dev_nuclei_6.9_v3 : 支持 evalsoc v2版本, 支持RV64 & RV32,用于评估 6.9内核版本(这是非LTS版本)
dev_nuclei_6.12_v3 : 支持 evalsoc v2版本, 支持RV64 & RV32,用于评估 6.12 LTS内核版本
下面这些分支是一些特殊功能的分支,相对功能会复杂一些,请注意使用。
下面绝大部分都只在 CORE=ux900fd BOOT_MODE=sd的场景下进行了验证,请注意!
Caution
下面这些分支将不会积极维护,且被弃用 ,且可能有问题,请注意。
如果确实需要使用某些特殊分支,一般情况下v3打头的分支均会有替代可用的或者类似功能的,请使用上注意。
下面这些分支已经不再维护,请注意使用上可能存在问题,请参考我们Linux SDK v3分支 commit历史记录做相应的更新,或者切到我们 v3分支上
dev_nuclei_next : 支持SD卡启动和Flash启动, 请切换到 dev_nuclei_5.10_v2 分支。
支持demosoc 和 evalsoc v1,基于Kernel 5.10, 支持RV64
从flash启动,并借助sd卡启动linux,freeloader整合了opensbi+uboot,sd卡加载kernel+rootfs+dtb
从flash直接启动,不需要依赖sd卡,freeloader整合了opensbi+uboot+kernel+rootfs+dtb(对spiflash大小有要求>=8M),也可以在uboot阶段打断启动后从SD卡启动(运行 run distro_bootcmd)
feature/fsl : 用于评估FSL91030M 开发板,使用参见 https://github.com/Nuclei-Software/nuclei-linux-sdk/tree/feature/fsl/conf/fsl91030m
dev_nuclei_keystone : 主要用于评估Keystone TEE相关的方案,基于 Kernel 5.10, 支持RV64
dev_nuclei_penglai : 主要用于评估Penglai TEE相关的方案,基于 Kernel 5.10, 支持RV64
dev_nuclei_5.10 & dev_nuclei_6.1 : 分别用于评估最新的5.10 或者 6.1 LTS版本内核,支持 evalsoc v1版本, 支持RV64
dev_nuclei_5.10_v2 & dev_nuclei_6.1_v2 : 分别用于评估最新的5.10 或者 6.1 LTS版本内核,支持 evalsoc v2版本, 支持RV64 & RV32
dev_nuclei_6.6_v2 : 用于评估6.6版本的内核,目前dts里面默认带上了 _zicbom_svpbmt 扩展(请注意 ), 采用我们最新的预编译的gcc13 glibc 2.38的工具链(开发中 ),支持evalsoc v2, 支持rv32 & rv64, 支持 Svnapot/Svpbmt/Zbb/Zicbom/Zicboz/Vector 特性,demosoc支持已经被删除了
dev_nuclei_6.9_v2 : 用于评估6.9版本的内核,采用我们最新的预编译的gcc13 glibc 2.38的工具链(开发中 ),支持evalsoc v2, 支持rv32 & rv64, 支持 Svnapot/Svpbmt/Zbb/Zicbom/Zicboz/Vector 特性,demosoc支持已经被删除了
dev_nuclei_6.6_v2_customsoc : 基于6.6 内核增加对Nuclei SoC IP Driver的支持和测试(持续增加中),测试使用本地参考平台,支持位于 conf/customsoc, 修改的内核位于 dev_nuclei_6.6.y分支
dev_nuclei_6.6_v2_android : 基于Android Linux Kernel 6.6版本针对 CORE=ux900fd 进行的移植和适配,用于测试AOSP的Bringup,详细使用参见该分支下的 conf/evalsoc/README.md
feature/optee_5.10 : 主要用于评估OpTEE 相关的方案,基于Kernel 5.10, , 支持RV64, 参见 Introduce OpTEE complete solution for RISC-V and looking for how to contribute it OP-TEE/optee_os#6173 和 Quick steps to evaluate optee solution on nuclei qemu #13
feature/optee_5.10_wg : 主要用于评估OpTEE 相关的方案,基于Kernel 5.10, , 支持RV64, 同时需要CPU硬件支持更多安全特性
dev_nuclei_6.4_v2_rt : 基于Linux 6.4内核 + RT Patches用于评估实时内核
feature/5.10_ccm : 基于 5.10内核,增加了Linux CCM的cache 管理的适配, 代码适配,可以boot,但是需要带DMA的设备来测试这个
dev_nuclei_5.10_v2_64baddr : 基于 5.10内核,用于测试ddr基地址大于 32位,uboot加载镜像采用FIT格式 来解决之前方式只能加载32位地址空间内的镜像问题,这个分支只适配了 ux900fd - sd 模式
dev_nuclei_5.10_v2_fit : 基于 5.10内核,用于测试ddr基地址大于 32位,uboot加载镜像采用FIT格式 来解决之前方式只能加载32位地址空间内的镜像问题
dev_nuclei_6.1_v2_fit : 基于 6.1内核,用于测试ddr基地址大于 32位,uboot加载镜像采用FIT格式 来解决之前方式只能加载32位地址空间内的镜像问题
dev_nuclei_6.6_v2_fit : 基于 6.6内核,用于测试ddr基地址大于 32位,uboot加载镜像采用FIT格式 来解决之前方式只能加载32位地址空间内的镜像问题
dev_nuclei_6.1_nommu : 基于6.1内核,用于验证no-mmu linux(aka uclinux)的支持,参见 关于各分支功能介绍 About each branch feature #2 (comment)
Note
点击这里还可以看到更多 Nuclei Linux SDK使用的各种技巧和场景的文章,持续不断更新完善中。
Caution
PF_NO_WB(PFNWB)这个位域默认值被改写),但是这种写法可能导致Linux启动或者运行出现问题(stress-ng hangup)或者其他莫名其妙的hang死,应该是只修改CC_CTRL.CC_EN位域就行, 同时还有很多freeloader相关的修改也需要注意,这些在新版本v3分支上都已经修改了,详细参见 关于各分支功能介绍 About each branch feature #2 (comment)中文介绍
Note
截止到2026.05.14起更新的代码,分支特性说明如下:
_v3_*分支下的代码,为evalsoc配置新增了PMUv2和XEC以太网支持,更新了freeloader和OpenSBI以适配新的CPU特性(如TLB控制和预取),同时修复了编译告警、64位地址错误并优化了CI流程。关于各分支功能介绍 About each branch feature #2 (comment)_v3系列分支,切换到2025.02-gcc14工具链,未来弃用其他分支: 关于各分支功能介绍 About each branch feature #2 (comment)主要支持如下SoC:
分支说明
目前活跃开发的分支为
dev_nuclei_5.10/6.1/6.6/6.9/6.12_v3: 主要针对最新的900 CPU的FPGA evalsoc进行适配和优化。以下是各个分支的情况说明
Note
下面这些分支是活跃维护分支
Caution
dev_nuclei_5.10_v2分支。opensbi+uboot,sd卡加载kernel+rootfs+dtbopensbi+uboot+kernel+rootfs+dtb(对spiflash大小有要求>=8M),也可以在uboot阶段打断启动后从SD卡启动(运行run distro_bootcmd)_zicbom_svpbmt扩展(请注意), 采用我们最新的预编译的gcc13 glibc 2.38的工具链(开发中),支持evalsoc v2, 支持rv32 & rv64, 支持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.mdux900fd - sd模式