跳到主要内容

博客

随时看到来自 RuyiSDK 团队的重大消息

RuyiSDK 0.23 版本更新说明

· 阅读需 3 分钟
xen0n
RuyiSDK 技术主管

RuyiSDK 0.23 现已发布,对应的包管理器版本也为 0.23.0。您可前往以下位置之一下载 RuyiSDK 包管理器:

本次更新主要包含了以下内容,祝您使用愉快!

RuyiSDK 包管理器

  • 出于项目验收要求,调整了默认遥测模式为 on。后续会随着 RuyiSDK 软件源的更新,周期性上传匿名化的使用统计数据。遥测服务端位于中国大陆境内,由 RuyiSDK 团队管理。
  • 修复了与外部依赖 semver 2.x 版本的兼容性。
  • 允许了在 CI 环境以 root 身份运行 ruyi
  • 每次发版会同时附带可重现(reproducible)的源码包了,有助于发行版打包工作等。

注意:由于活跃用户数等指标是项目 KPI,RuyiSDK 0.23 版本增加了遥测数据的上传功能,并在所有环境默认开启,不仅限于 CI。您可自行决定是否主动上传这部分匿名统计信息,以便 RuyiSDK 团队改进产品;您也可以选择删除先前的遥测数据,以及是否禁用遥测。您可用 ruyi self clean --telemetry 删除所有的遥测信息,包括设备信息。

在遥测模式为 on 时,每次 ruyi 被调用时都会告知您您的遥测数据将在何时上传。您可以做以下操作之一以屏蔽该提示。

  • 设置遥测模式为 localoff
  • 对数据上传行为给予同意。

具体的 ruyi 配置文件写法示例如下。该配置文件一般位于 ~/.config/ruyi/config.toml 位置,如不存在,创建即可。

# 在 [telemetry] 一节体现以下内容之一。如不存在此节,创建即可:
[telemetry]

# 您可以变更遥测模式为 local 或 off:
mode = "local"

# 或告知 ruyi 您在当前日期时间给予了同意:
upload_consent = 2024-12-32T25:61:00+08:00
# 此日期格式并不合法,这是有意为之,请您自行填入您操作的当前时刻。例如执行以下命令:
#
# echo "upload_consent = $(date -Iseconds)"
#
# 输出内容即可用于上述用途。

RuyiSDK 0.22 版本更新说明

· 阅读需 2 分钟
xen0n
RuyiSDK 技术主管

RuyiSDK 0.22 现已发布,对应的包管理器版本也为 0.22.0。您可前往以下位置之一下载 RuyiSDK 包管理器:

本次更新主要包含了以下内容,祝您使用愉快!

RuyiSDK 包管理器

  • 新增了 RuyiSDK 的平台支持文档,基于此完善了 RuyiSDK 包管理器的平台兼容性:
    • 将 Python 版本的最低要求降至 3.10,以与 Ubuntu 22.04 LTS 系统默认 Python 版本保持兼容。
    • 降低了各种 Python 依赖关系的版本要求,以支持与 Ubuntu 22.04 LTS 系统提供软件包配合工作。
    • 按照 Python 打包标准,新增声明 ruyi 入口点,以便发行版打包机制自动识别、处理。

**注意:**我们将于 RuyiSDK 0.23 版本增加 RuyiSDK 遥测数据的上传功能,并可能在 CI 环境将其默认开启。届时,您可自行决定是否主动上传这部分匿名统计信息,以便 RuyiSDK 团队改进产品;您也可以选择删除先前的遥测数据,以及是否禁用遥测。您可用 ruyi self clean --telemetry 删除所有的遥测信息,包括设备信息。

RuyiSDK 0.21 版本更新说明

· 阅读需 2 分钟
xen0n
RuyiSDK 技术主管

RuyiSDK 0.21 现已发布,对应的包管理器版本也为 0.21.0。您可前往以下位置之一下载 RuyiSDK 包管理器:

本次更新主要包含了以下内容,祝您使用愉快!

RuyiSDK 包管理器

  • 将 RuyiSDK 软件源打包辅助命令 ruyi admin manifest 重命名为 ruyi admin checksum 了。如果您在为 RuyiSDK 打包,您可能需要更新您的脚本。
  • ruyi self clean 支持删除新闻(ruyi news)的阅读状态了:ruyi self clean --news-read-status
  • ruyi self clean 也支持一次性删除 ruyi 产生的所有可变状态文件了:ruyi self clean --all
  • 修复了 ruyi 测试用例与 Python 3.11 的兼容性。我们现在以 CI 形式确保 ruyi 能够在 Python 3.11、3.12、3.13 这三个版本通过测试,这将有助于保障后续 ruyi 在多种 Linux 发行版上的兼容性。
  • 新增声明了遗漏的 typing_extensions 依赖,以修复第三方打包。
  • 重构了 ruyi 子命令的声明与实现方式,后续扩展 ruyi 命令行功能更加方便了。

注意:我们可能在今后的一到两个版本期间,实装 RuyiSDK 遥测机制。届时,您可自行决定是否主动上传这部分匿名统计信息,以便 RuyiSDK 团队改进产品;您也可以选择删除先前的遥测数据,以及是否禁用遥测。您可用 ruyi self clean --telemetry 删除所有的遥测信息,包括设备信息。

RuyiSDK 0.20 版本更新说明

· 阅读需 2 分钟
xen0n
RuyiSDK 技术主管

RuyiSDK 0.20 现已发布,对应的包管理器版本也为 0.20.0。您可前往以下位置之一下载 RuyiSDK 包管理器:

本次更新主要包含了以下内容,祝您使用愉快!

RuyiSDK 包管理器

  • ruyi self uninstall --purge 不会遗留遥测数据了。
  • 修复了 ruyi admin 子命令无法被调用的问题。
  • 修复了 Ruyi 虚拟环境中,向无 target tuple 前缀的命令(如一系列 LLVM 工具)的转发。
  • 应 RuyiSDK 项目需求方要求,移除了插件机制的 Starlark 沙箱。这有助于简化打包与降低开发门槛:按照 RuyiSDK 当前的威胁模型(threat model),沙箱机制不会带来额外的安全性。

注意:由于 Starlark 与 Python 存在细微的语义差异,在升级到 ruyi 0.20.0 之后,您必须将软件源 ruyi update 到最新,才能继续使用 ruyi 的部分功能(如 ruyi venv 等)。除此之外,我们预计插件机制的技术细节变更不会对实际使用造成影响。

注意:我们可能在今后的一到两个版本期间,实装 RuyiSDK 遥测机制。届时,您可自行决定是否主动上传这部分匿名统计信息,以便 RuyiSDK 团队改进产品;您也可以选择删除先前的遥测数据,以及是否禁用遥测。您可用 ruyi self clean --telemetry 删除所有的遥测信息,包括设备信息。

Eclipse 上游初步支持 RISC-V,每日构建镜像已经可以下载试用

· 阅读需 3 分钟

Eclipse 是一款开源且功能强大的集成开发环境(IDE),广泛支持多种编程语言,为开发者提供了一个统一的平台,用于编写、调试和管理代码。同时,Eclipse 还具备强大的插件系统,可根据需求灵活扩展功能。

近期,来自中国科学院软件研究所(ISCAS)的 RevyOS 小队的工程师联合其他开源社区开发者,成功为 Eclipse 上游代码仓库引入了对 riscv64 架构的初步支持。期间创建了二十余个 Issue/PR,涵盖了包括 SWT、Equinox 在内的关键组件。目前,Eclipse 已支持在 riscv64 平台上基于 OpenJDK 开发 Java 项目。

eclipse-pic-1.png

图1-Eclipse upstream 涉及到几十个不同的组建和支持过程,许多开发者都进行了贡献

相关改动已被合入上游,感兴趣的朋友可通过下方链接,建议选择 Integration Builds 板块中的最新构建日期(20240929以后每日构建支持riscv)进入每日构建资源页面,选择“Eclipse SDK -> Linux (64 bit version for RISC-V)”下载后进行体验。

https://download.eclipse.org/eclipse/downloads/index.html

eclipse-pic-2.png

图2-在安装了 Debian 操作系统的 SiFive Unmatched 上测试运行 Eclipse SDK IDE

接下来,RevyOS 小队将继续完善 Eclipse riscv64 的支持,敬请期待更多优化与改进!

中国科学院软件研究所诚邀对开源技术充满热情的开源软件贡献者加入进来,助力 Eclipse 在 riscv64 平台上的发展。

关于 ISCAS、RevyOS小队

RevyOS小队隶属于 PLCT Lab, ISCAS。ISCAS 是 RISC-V International 的 Development Partner、Training Partner,同时在2024年8月获得了 RISC-V Ecosystem Labs 认证。

特别致谢以下贡献者

于波、陈璇、Hannes Wellmann、Alexander Kurtakov、Ed Merks、Pawel Stankiewicz、Frederic Gurr

如有遗漏,请联系作者

RuyiSDK 0.19 版本更新说明

· 阅读需 5 分钟
xen0n
RuyiSDK 技术主管

RuyiSDK 0.19 现已发布,对应的包管理器版本也为 0.19.0。您可前往以下位置之一下载 RuyiSDK 包管理器:

本次更新主要包含了以下内容,祝您使用愉快!

RuyiSDK 包管理器

  • 修复了当环境 locale 配置在本机上无效时,ruyi news list 在官方软件源上崩溃的问题。这也是 RuyiSDK 包管理器的首个来自外部贡献者的贡献。感谢 RekiDunois
  • 为打包工作者新增了 ruyi admin format-manifest 命令,用来自动格式化软件包描述文件,确保符合标准格式。
  • ruyi venv 新增了多工具链支持:可以为一个虚拟环境配置多个 target tuple 互不相同的工具链包了。
  • 新增了 ruyi self clean 命令,用来清理 Ruyi 产生的各种数据,释放存储空间。
  • 对于发行版直接再次分发 RuyiSDK 官方编译 ruyi 二进制的情况,为发行版打包工作者提供了手段来阻止用户不慎 ruyi self uninstall
  • 基础的遥测功能,目前不支持数据上传。详见"遥测"一节。

遥测

为帮助 RuyiSDK 团队更好了解用户使用习惯以改进体验,我们为 RuyiSDK 包管理器增加了基础的遥测功能。有以下 3 种遥测模式:

  • local: 仅收集数据,不主动上报。这是默认模式。
  • on: 收集数据并周期性上报。目前未实现。
  • off: 完全禁用遥测。

目前我们将收集以下的数据:

  • 首次运行 ruyi 时,将一次性收集少量设备信息。
    • 仅从系统随机数生成唯一的安装 ID,与任何系统配置、本地数据均无关;
    • 当前运行环境是否为几种知名 CI 服务之一,如 GitHub Actions、GitLab CI、Travis CI 等;
    • 操作系统内核种类与处理器架构;
    • C 运行库种类与版本(形如 glibc 2.40);
    • Linux 发行版代号与版本;
    • 如处理器架构为 RISC-V,还将收集由设备树指定的系统型号与 /proc/cpuinfo 所暴露的 CPU 核数、微架构、ISA 字符串等 RISC-V 特定信息。
  • 每次运行 ruyi,将记录调用的命令种类,不含参数。
  • 每次运行 Ruyi 虚拟环境中的工具链代理,将记录被调用的命令名。

如果您不希望参与遥测,请在运行新版 ruyi 之前做以下两种操作之一即可。要么确保环境变量中存在 RUYI_TELEMETRY_OPTOUT=1(请注意:不是 OUTPUT),要么在配置文件 ~/.config/ruyi/config.toml 加入以下内容:

[telemetry]
mode = "off"

在 RuyiSDK 完全支持遥测数据上传之前的一个版本,我们将会告知您此事,您可自行决定是否删除先前的遥测数据,以及是否禁用遥测。您可用 ruyi self clean --telemetry 删除所有的遥测信息,包括设备信息。

Linux 发行版打包

RuyiSDK 包管理器已为以下主流 Linux 发行版打包:

  • Debian 13 ("trixie")
  • Fedora 39, 40, 41
  • openEuler 24.03
  • Ubuntu 22.04 ("jammy"), 24.04 ("noble")
  • Arch Linux (通过 AUR)

其中除 Fedora 39、Fedora 41 未有 riscv64 架构包之外,均提供三种官方支持架构即 amd64arm64riscv64 的二进制包。

RuyiSDK 0.18 版本更新说明

· 阅读需 2 分钟
xen0n
RuyiSDK 技术主管

RuyiSDK 0.18 现已发布,对应的包管理器版本也为 0.18.0。您可前往以下位置之一下载 RuyiSDK 包管理器:

本次更新主要包含了以下内容,祝您使用愉快!

RuyiSDK 包管理器

  • 进一步完善了 issue #181 的修复:先前虽然修复了代码块的折行缺字问题,但不经意间也让长度超过一行的 Markdown 列表项、块状引用等内容被截断了。
  • 完成了 issue #193:为方便发行版的打包工作,移除了对 python-frontmatter 这一第三方库的依赖。

RuyiSDK 软件源

  • 更新了 WPS Office 到上游最新版本。
  • 更新了 RV64ILP32 裸机工具链 toolchain/gnu-plct-rv64ilp32-elf 到当前最新版本。
  • 更新了 Milk-V Duo 的支持:
    • 新增打包了 Milk-V Duo 官方实例代码库 source/milkv-duo-examples。您可在一个新的目录下,用 ruyi extract 命令解压它。
    • 新增打包了 Milk-V 官方提供的 Milk-V Duo 宿主工具链如下。请注意:它们是 RuyiSDK 受权对上游 https://github.com/milkv-duo/host-tools 仓库进行的重新打包;且上游仅提供了 x86_64 架构的二进制。
      • toolchain/gnu-milkv-milkv-duo-bin:适用于 Linux glibc 环境。
      • toolchain/gnu-milkv-milkv-duo-elf-bin:适用于裸机环境。
      • toolchain/gnu-milkv-milkv-duo-musl-bin:适用于 Linux musl 环境。
    • 更新了 Milk-V Duo 官方系统镜像包到上游最新版本。RuyiSDK 受权对这些镜像进行了重新打包,以便后续所有通过 RuyiSDK 渠道分发的系统镜像都能以 ruyisdk 用户名与密码登录,方便您的评估。

RuyiSDK 0.17 版本更新说明

· 阅读需 2 分钟
xen0n
RuyiSDK 技术主管

RuyiSDK 0.17 现已发布,对应的包管理器版本也为 0.17.0。您可前往以下位置之一下载 RuyiSDK 包管理器:

本次更新主要包含了以下内容,祝您使用愉快!

RuyiSDK 包管理器

  • 修复了 issue #181:现在在宽度较短的终端窗口中使用 ruyi news read 等功能时,Markdown 代码块中的长行不会缺字了,行首、行尾也不再存在影响复制粘贴的空格。代价是覆盖整行宽度的漂亮的背景色无法实现了。

RuyiSDK 软件源

  • 更新了 Box64 到上游最新开发版本。
  • 更新了 WPS Office 到上游最新版本。请注意:上游移除了 AArch64 架构的原生支持。这部分用户也将需要依赖二进制翻译方案来运行 WPS Office 了。
  • 明确了软件源内容的开源许可证:Apache 2.0 许可证,与 Ruyi 包管理器本体一致。

RuyiSDK 0.16 版本更新说明

· 阅读需 1 分钟
xen0n
RuyiSDK 技术主管

RuyiSDK 0.16 现已发布,对应的包管理器版本也为 0.16.0。您可前往以下位置之一下载 RuyiSDK 包管理器:

本次更新主要包含了以下内容,祝您使用愉快!

RuyiSDK 包管理器

  • 完成了设备安装器(ruyi device provision)的插件化改造。今后对不常见刷写步骤的支持将更加方便了:不一定需要更新 ruyi 本体了。

嘉楠勘智K230D: 首款基于新32位 RuyiSDK 的AIoT量产芯片

· 阅读需 7 分钟
RuyiSDK
RuyiSDK 团队

在上期文章中,向大家介绍了《玄铁团队与PLCT实验室联合发布:新32位产品级开源工具链及Linux内核》,本期为大家带来新32位(RV64ILP32)产品化的最新进展:嘉楠勘智K230D。去年,嘉楠推出 K230,它基于玄铁c908 打造,是世界上第一款带有 VECTOR 1.0 的 RISC-V 64位 AIOT 芯片。今年,嘉楠勘智推出更高集成度的 K230D AIoT 芯片,内存由原来外挂 256MB/512MB 改为内封 128MB。原先基于 LP64 ABI 的软件内存开销过大,不再适合 K230D,而新32位技术可同时提升内存与缓存的效率。PLCT实验室联合玄铁团队,一起为 K230D 打造基于新32位的 RuyiSDK,第一次实现新32位 AIoT 产品的落地。相比原先基于 LP64 ABI 的 SDK,新32位 SDK 内存开销下降 30%,同时链表遍历性能提升 20%,兼顾成本和性能。

616c6103a9a4656a2b24226e55425d62.png

达摩院玄铁团队联手嘉楠科技和中科院软件所PLCT实验室,将新32位落地到Banana Pi开源社区的BPI-CANMV-K230D-Zero 开发板,并与PLCT实验室的 RuyiSDK 集成,一起为用户提供便捷的使用体验:

  • 升级 Linux 内核至 6.6、升级工具链

  • 新增32位根系统 和 LVGL

  • 基于 VECTOR 的图形加速

  • 支持 Linux + Nuttx 双系统,大小核任意切换

  • 支持传统64位和新32位,两种系统配置

内核配置:

传统64位(64LP64)新32位(64ILP32)
内核编译命令make ARCH=riscv k230_defconfig allmake ARCH=riscv k230_defconfig 64ilp32.config all

默认配置差异仅2行:

CONFIG_ARCH_RV64ILP32=y

CONFIG_32BIT=y

内存对比

下面的视频和图片展示了,传统64位(左)与新32位(右)对比 LVGL 的运行:

k230d_final.jpeg

动态内存对比传统64位 (RV64 LP64)新32位 (RV64 ILP32)
used37MB24MB
静态内存对比传统64位 (RV64 LP64)新32位 (RV64 ILP32)
kernel code10282KB10456KB
rwdata1126KB832KB
rodata5105KB4464KB
bss500KB376KB

相比传统64位,新32位 RuyiSDK 大幅提升内存使用效率,避免了 K230D 产品化中的内存浪费。

性能对比

由于 LP64 的指针数据类型比 ILP32 大一倍,导致 LP64 的缓存利用率偏低。下面,基于 K230D 对比二者的双向链表遍历性能:

双向链表遍历 (链表节点为4000,遍历50000次结果)

第一次执行时长第二次执行时长第三次执行时长第四次执行时长第五次执行时长平均执行时长
单位:纳秒单位:秒
LP64387222162834202618503774494961353948499840349405903.728280805
ILP32261474925722618915172680216665289449936828472820362.659727769

结果显示,ILP32 的链表遍历性能显著优于 LP64。

相关资料:

K230D RuyiSDK:https://github.com/ruyisdk/k230_linux_sdk

(镜像构建详见文档 https://github.com/ruyisdk/k230_linux_sdk/blob/dev/README_zh.md

K230D 使用说明:https://ruyisdk.org/docs/k230d/intro

结束语

与过往的架构(ARM、x86、MIPS、Sparc)聚焦用户态的思路不同,当前新32位的方案是:基于 RVA20/22/23 Profiles 为 RV64 架构的特权态提供 ILP32 ABI 能力,这是前人未曾走过的新路。自 2024 年 3 月推出新 32 位工具链和 Linux 内核以来,这次终于在 K230D 上实现了产品化,降低了 30% 的内存开销,大幅提升缓存性能,这些成果进一步揭示了新 32 位的产业化价值。我们热切期待开发者们积极参与新32位的开发和完善中,共同提出宝贵的建议和意见,推动新 32 位不断发展。我们致力于建立一个健康和活跃的开源社区,将持续投入资源和精力,确保新32位软件的稳定和可靠,并不断改进和完善其功能和性能。在此,我们也呼吁更多的硬件厂商加入我们的阵营,共同推动新32位嵌入式系统的发展和创新,为行业带来更多机遇。

关于我们

●   RuyiSDK 是一个由 PLCT Lab 所启动的开源项目,该项目旨在为 RISC-V 开发者提供一个完整的、全家桶式的全功能开发环境,包含从编译、调试到仿真的全套工具,并计划支持市面上主流的 RISC-V 硬件。

●   达摩院玄铁团队持续深耕 RISC-V 技术研发及生态建设,并陆续推出了一系列玄铁处理器,可满足高中低全系列性能需求。玄铁积极拥抱开源,坚持开放创新,已逐渐构建起以 RISC-V 为核心的生态体系,与生态伙伴协同推动 RISC-V 芯片、开发工具、操作系统、应用解决方案等不同层面的软硬一体化发展。全力推动 RISC-V 软硬全栈技术多领域发展落地,加速实现智能时代的万物互联!

●   嘉楠科技(Canaan Inc.)(纳斯达克股票代码:CAN)是一家领先的高性能ASIC芯片设计公司,以“区块链+AI”为多元化经营战略,业务范围涵盖高性能ASIC计算芯片及设备研发、AI芯片及产品开发。作为一家纳斯达克上市公司,嘉楠科技是全球“区块链第一股”,也是第一家在美国上市的中国自主知识产权AI芯片公司。公司愿景:提升社会运行效率,改善人类生活方式。