Blog
See important news from the RuyiSDK team at any time
RuyiSDK 0.13 is now released. The corresponding package manager version is also 0.13.
You can download the RuyiSDK package manager from one of the following locations:
This update mainly consists of the following changes. Happy hacking!
- Fixed issue #158: The two
versions of the
coremark package formerly had different directory layout
after extraction. Now both are "flattened" into the current directory.
- Fixed issue #159:
inconsistency in handling of "pre-release" versions.
- Following the official release of Python 3.12, the official
ruyi binaries
are now built in a Python 3.12 environment.
- Preparatory work towards introduction of plugin architecture: support for
the Starlark language has been introduced, with CI builds also supported.
Starlark is a minimal dialect of Python that is widely adopted by build
systems such as Bazel and BUCK. The choice of Starlark as the RuyiSDK
Package Manager plugin language is meant to enable all developers familiar
with the Python language to develop RuyiSDK Package Manager plugins with a
familiar syntax.
To support devices that require manual intervention during provisioning, and
whose images have to be downloaded manually, the RuyiSDK Device Provisioner is
now being refactored into a plugin-based architecture, with the next version
expected to be fit for testing. Older versions of the device provisioner will
stop working at that time; please upgrade before you test.
RuyiSDK 0.12 is now released. The corresponding package manager version is also 0.12.
You can download the RuyiSDK package manager from one of the following locations:
This update mainly consists of the following changes. Happy hacking!
- The Pine64 Star64 Armbian image can now be correctly downloaded.
- The user experience for downloading fetch-restricted files is implemented.
A hint message will be rendered according to the current system locale setting
when such a file is requested.
- pygit2 has been upgraded to 1.5.0 to support libgit2 1.8.
- The
XDG_STATE_HOME environment variable is now correctly respected.
To support devices that require manual intervention during provisioning, and
whose images have to be downloaded manually, the RuyiSDK Device Provisioner is
now being refactored to handle those complex situations, with the next version
expected to be fit for testing. Older versions of the device provisioner will
stop working at that time; please upgrade before you test.
RuyiSDK 0.11 is now released. The corresponding package manager version is also 0.11.
You can download the RuyiSDK package manager from one of the following locations:
This update mainly consists of the following changes. Happy hacking!
- Removed the only LGPL dependency so far. The entirety of RuyiSDK Package
Manager and its dependencies are now permissively licensed, which means
downstream users are free to use the RuyiSDK Package Manager in a
commercial fashion from now on.
- The Ruyi Device Provisioner (
ruyi device provision) now supports the following device models:
Please run ruyi update to pull in the update after upgrading the RuyiSDK
package manager.
We have noticed that more and more device models (even including the newly
announced BananaPi BPI-F3) are having their system images distributed by
means of net-disks only, such as Baidu Netdisk, Google Drive or MEGA.
It is a challenge to support such models due to this; we will attempt to do
so nevertheless in the coming releases. Stay tuned and your contribution is
welcome!
RuyiSDK 0.10 is now released. The corresponding package manager version is also 0.10.
You can download the RuyiSDK package manager from one of the following locations:
This update mainly consists of the following changes. Happy hacking!
- A global command-line option
--porcelain is now supported for external programs to conveniently interact with ruyi. ruyi list and ruyi news list are the first to gain a porcelain output format.
ruyi news list now prefers to present a news item in the system's current language if a translation is available.
RuyiSDK begins to support WinChipHead (WCH) RISC-V products from version 0.10 on.
- The LLVM toolchain maintained by PLCT is now packaged:
toolchain/llvm-plct, whose main feature is support for the XTHeadVector extension.
- The Ruyi Device Provisioner (
ruyi device provision) now supports the following device models:
- WCH CH32V103 EVB
- WCH CH32V203 EVB
- WCH CH32V208 EVB
- WCH CH32V303 EVB
- WCH CH32V305 EVB
- WCH CH32V307 EVB
- WCH CH582F EVB
- WCH CH592X EVB
Please run ruyi update to pull in the update after upgrading the RuyiSDK
package manager.
RuyiSDK 0.9 is now released. The corresponding package manager version is also 0.9.
You can download the RuyiSDK package manager from one of the following locations:
This update mainly consists of the following changes. Happy hacking!
- Unpacking of LZ4-compressed files is now supported.
RuyiSDK supports the entire Sipeed RISC-V product line from version 0.9 on.
The Ruyi Device Provisioner (ruyi device provision) now supports the following device models:
- Sipeed LicheeRV Nano
- Sipeed Lichee Cluster 4A
- Sipeed Lichee Console 4A
- Sipeed Maix-I
- Sipeed Tang Mega 138K Pro
In addition to the following models for whose support is already present:
- Sipeed LicheePi 4A
- Sipeed LicheeRV
Please run ruyi update to pull in the update after upgrading the RuyiSDK
package manager.
For your convenience following bleeding-edge development, the RuyiSDK team
has packaged a bare-metal toolchain targetting the experimental RV64ILP32 ABI.
Because this is a bare-metal toolchain, no sysroot is provided, and multilib
is not enabled: the ABI to use is ilp32d.
Given the following C program:
// test.c
long long add(long long *a, long long b)
{
return *a + b; // Should be realized with `ld` and `add`
}
void check(int);
void check_sizes(void)
{
check(sizeof(int)); // a0 should be 4
check(sizeof(long)); // a0 should be 4
check(sizeof(long long)); // a0 should be 8
check(sizeof(void *)); // a0 should be 4
}
We can now build object code conforming to the RV64ILP32 ABI with the proper
toolchain package and profile:
$ ruyi update
$ ruyi install gnu-plct-rv64ilp32-elf
$ ruyi venv -t gnu-plct-rv64ilp32-elf --without-sysroot baremetal-rv64ilp32 /tmp/venv
$ source /tmp/venv/bin/ruyi-activate
$ /tmp/venv11/bin/riscv64-plct-elf-gcc -O2 -c -o test.o test.c
Checking that everything works as intended:
$ riscv64-plct-elf-readelf -h test.o | grep 32
Class: ELF32
Flags: 0x25, RVC, X32, double-float ABI
$ riscv64-plct-elf-objdump -dw test.o
test.o: file format elf32-littleriscv
Disassembly of section .text:
00000000 <add>:
0: 6108 ld a0,0(a0)
2: 952e add a0,a0,a1
4: 8082 ret
00000006 <check_sizes>:
6: 3141 addiw sp,sp,-16
8: 4511 li a0,4
a: e406 sd ra,8(sp)
c: 00000097 auipc ra,0x0
10: 000080e7 jalr ra # c <check_sizes+0x6>
14: 4511 li a0,4
16: 00000097 auipc ra,0x0
1a: 000080e7 jalr ra # 16 <check_sizes+0x10>
1e: 4521 li a0,8
20: 00000097 auipc ra,0x0
24: 000080e7 jalr ra # 20 <check_sizes+0x1a>
28: 60a2 ld ra,8(sp)
2a: 4511 li a0,4
2c: 2141 addiw sp,sp,16
2e: 00000317 auipc t1,0x0
32: 00030067 jr t1 # 2e <check_sizes+0x28>
It can thus be shown that the toolchain indeed generates object code with
32-bit pointer width, but also leveraging RV64 capabilities.
Image packages are now available for the following boards.
You can have your device automatically provisioned with the RuyiSDK Device
Provisioning Wizard ruyi device provision. Or you can still manually
install with ruyi install: files will be automatically unpacked or
symlinked to ~/.local/share/ruyi/blobs/<package name>-<version>.
Thank you for supporting RuyiSDK!
The two models are largely compatible from a hardware perspective, but there
are still slight differences that only shows up in the device trees.
board-image/oerv-awol-d1-base: openEuler RISC-V, base system
board-image/oerv-awol-d1-xfce: openEuler RISC-V, with XFCE GUI
board-image/oerv-starfive-visionfive-base: openEuler RISC-V, base system
board-image/oerv-starfive-visionfive-xfce: openEuler RISC-V, with XFCE GUI
board-image/oerv-starfive-visionfive2-base: openEuler RISC-V, base system
board-image/oerv-starfive-visionfive2-xfce: openEuler RISC-V, with XFCE GUI
RuyiSDK 0.4 is now released. The corresponding package manager version is also 0.4.
You can download the RuyiSDK package manager from the GitHub Releases page:
https://github.com/ruyisdk/ruyi/releases .
This update mainly consists of the following changes. Happy hacking!
ruyi device provision now wraps invocations of fastboot with sudo.
ruyi self uninstall --purge now does not forget to remove the
~/.local/state/ruyi directory.
- Some hints are now provided when
ruyi fails to download from the repo,
for aiding the user's troubleshooting.
- The RuyiSDK software repository is now migrated to GitHub for stability of
service. You may have to take additional measures to continue syncing if
your region/organization have network access restrictions in place.
The repo at the original location will stop being regularly updated from
2024-02-01 on. Please upgrade your ruyi installation as soon as possible
to automatically migrate to the latest configuration defaults.
- Added the DynamoRIO suite
analyzer/dynamorio-riscv for RISC-V hosts.
- Added system-level QEMU package
emulator/qemu-system-riscv-upstream for AMD64 hosts.
- The upstream QEMU build is now bumped to 8.2.0.
Image packages are now available for the following boards.
You can install them with ruyi install: files will be automatically
unpacked or symlinked to ~/.local/share/ruyi/blobs/<package name>-<version>.
Thank you for supporting RuyiSDK!
board-image/buildroot-sdk-milkv-duo: official Buildroot SDK
board-image/buildroot-sdk-milkv-duo-python: official Buildroot SDK, with Python environment
board-image/buildroot-sdk-milkv-duo256m: official Buildroot SDK
board-image/buildroot-sdk-milkv-duo256m-python: official Buildroot SDK, with Python environment
board-image/oerv-sg2042-milkv-pioneer-base: openEuler RISC-V, base system
board-image/oerv-sg2042-milkv-pioneer-xfce: openEuler RISC-V, with XFCE GUI
board-image/revyos-sg2042-milkv-pioneer: RevyOS
System images:
board-image/oerv-sipeed-lpi4a-headless: openEuler RISC-V, without GUI
board-image/oerv-sipeed-lpi4a-xfce: openEuler RISC-V, with XFCE GUI
board-image/revyos-sipeed-lpi4a: RevyOS
Bootloader (U-Boot):
board-image/uboot-oerv-sipeed-lpi4a-16g: for use with openEuler on Sipeed LicheePi 4A (16G RAM)
board-image/uboot-oerv-sipeed-lpi4a-8g: for use with openEuler on Sipeed LicheePi 4A (8G RAM)
board-image/uboot-revyos-sipeed-lpi4a-16g: for use with RevyOS on Sipeed LicheePi 4A (16G RAM)
board-image/uboot-revyos-sipeed-lpi4a-8g: for use with RevyOS on Sipeed LicheePi 4A (8G RAM)
We have added support for news items to ruyi for you to follow
RuyiSDK development more easily.
If you are on ruyi 0.3 or greater, any incoming news item will appear
after a successful ruyi update. You can list all news items with
ruyi news list, and read with ruyi news read.
Thank you for supporting RuyiSDK!