Skip to content

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

Description

@fanghuaqi

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

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

image

Note

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

Caution

  • 使用老版本的Linux SDK分支,例如v2或者更早的版本,均需要注意freeloader里面之前CC_CTRL配置的时候是直接写1的(主要是PF_NO_WB(PFNWB)这个位域默认值被改写),但是这种写法可能导致Linux启动或者运行出现问题(stress-ng hangup)或者其他莫名其妙的hang死,应该是只修改CC_CTRL.CC_EN位域就行, 同时还有很多freeloader相关的修改也需要注意,这些在新版本v3分支上都已经修改了,详细参见 关于各分支功能介绍 About each branch feature #2 (comment)
  • 使用老版本的Linux SDK,还可能遇到因为buildroot config里面配置的toolchain下载地址是老的URL,但是由于网站升级下载链接发生变化,导致构建失败,需要按照 关于各分支功能介绍 About each branch feature #2 (comment) 这里步骤进行类似修复

中文介绍

截止到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的要求,再进行代码的构建。

以下是各个分支的情况说明

Note

下面这些分支是活跃维护分支

目前这些活跃分支都已经切到 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#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位地址空间内的镜像问题
  • dev_nuclei_6.1_nommu: 基于6.1内核,用于验证no-mmu linux(aka uclinux)的支持,参见 关于各分支功能介绍 About each branch feature #2 (comment)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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