Skip to content

关于各分支功能介绍 About each branch feature #2

Open
@fanghuaqi

Description

@fanghuaqi

请关注最新的issue评论,这里的文字说明可能不是最新版本,以具体代码为准

请注意 本issue与其他issue会经常更新,请点击上面的 edited 来获知最新的修改的变更

image

Note

点击这里还可以看到更多 Nuclei Linux SDK使用的各种技巧和场景的文章,持续不断更新完善中

中文介绍

截止到2025.05.19起更新的代码,分支特性说明如下:

主要支持如下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#6173Quick 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位地址空间内的镜像问题

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentation

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions