Description
请关注最新的issue评论,这里的文字说明可能不是最新版本,以具体代码为准
请注意 本issue与其他issue会经常更新,请点击上面的 edited 来获知最新的修改的变更
Note
点击这里还可以看到更多 Nuclei Linux SDK使用的各种技巧和场景的文章,持续不断更新完善中。
中文介绍
截止到2025.05.19起更新的代码,分支特性说明如下:
- 2025.05.19, 增加
_v3
系列分支,切换到2025.02-gcc14工具链,未来弃用其他分支: 关于各分支功能介绍 About each branch feature #2 (comment) - 2024.12.06: 关于各分支功能介绍 About each branch feature #2 (comment)
主要支持如下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.02-gcc14
的工具链上开发
提醒: 目前
_v3
分支使用的是开发中的预编译好的2025.02 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的要求,再进行代码的构建。
以下是各个分支的情况说明
Note
下面这些分支是活跃维护分支
目前这些活跃分支都已经切到
2025.02-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
的场景下进行了验证,请注意!
- dev_nuclei_6.6_v3_rt: 支持evalsoc v2版本,支持RV64 & RV32,用于评估 6.6 LTS内核 + PREEMPT_RT Patch 的内核版本
- dev_nuclei_6.6_v3_customsoc: 不支持Nuclei Qemu,支持Nuclei内部做的一个参考子系统,用于开发子系统中各种IP驱动(Uboot/Kernel)支持,支持的驱动参见dts,采用 freeloader 加载并引导 uboot-spl,然后uboot-spl加载its格式 opensbi + uboot的镜像并引导,然后uboot引导 kernel+rootfs its格式镜像, 只验证了rv64imafdc + SD启动模式,不建议以这个为开始,建议使用 dev_nuclei_6.6_v3 作为起始点移植,然后熟悉环境后,迁移到这个分支
- dev_nuclei_6.6_v3_optee: 支持evalsoc v2版本,但是需要硬件支持TEE + Worldguard(可选), 本分支用于验证OpTEE在6.6内核上的功能,详细参见 https://github.com/Nuclei-Software/nuclei-linux-sdk/tree/dev_nuclei_6.6_v3_optee/optee#readme
- dev_nuclei_6.6_v3_hsm: 不支持Nuclei Qemu,支持Nuclei内部做的一个HSM + Linux参考子系统,用于验证 HSM + OpTEE安全启动流程,只验证了rv64imafdc + SD启动模式,详细流程参见 https://github.com/Nuclei-Software/nuclei-linux-sdk/blob/dev_nuclei_6.6_v3_hsm/conf/evalsoc/Nuclei_HSM_Secure_Boot.md
Caution
下面这些分支将不会积极维护
- 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位地址空间内的镜像问题