diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..6d8a7a75 --- /dev/null +++ b/404.html @@ -0,0 +1,1326 @@ + + + + + + + + + + + + + + + + + + RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ +

404 - Not found

+ +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..bfc04088 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +docs.revyos.dev diff --git a/Installation/image for flash/lpi4a1.png b/Installation/image for flash/lpi4a1.png new file mode 100644 index 00000000..ebf51a88 Binary files /dev/null and b/Installation/image for flash/lpi4a1.png differ diff --git a/Installation/image for flash/lpi4a2.png b/Installation/image for flash/lpi4a2.png new file mode 100644 index 00000000..2c119464 Binary files /dev/null and b/Installation/image for flash/lpi4a2.png differ diff --git a/Installation/image for flash/lpi4a3.png b/Installation/image for flash/lpi4a3.png new file mode 100644 index 00000000..f8904a6a Binary files /dev/null and b/Installation/image for flash/lpi4a3.png differ diff --git a/Installation/image for flash/lpi4a4.png b/Installation/image for flash/lpi4a4.png new file mode 100644 index 00000000..3fa5ccae Binary files /dev/null and b/Installation/image for flash/lpi4a4.png differ diff --git a/Installation/image for flash/lpi4a5.png b/Installation/image for flash/lpi4a5.png new file mode 100644 index 00000000..32cd4461 Binary files /dev/null and b/Installation/image for flash/lpi4a5.png differ diff --git a/Installation/image for flash/lpi4a6.png b/Installation/image for flash/lpi4a6.png new file mode 100644 index 00000000..9c63cc5b Binary files /dev/null and b/Installation/image for flash/lpi4a6.png differ diff --git a/Installation/image for flash/lpi4a7.png b/Installation/image for flash/lpi4a7.png new file mode 100644 index 00000000..5b2e27a6 Binary files /dev/null and b/Installation/image for flash/lpi4a7.png differ diff --git a/Installation/image for flash/pioneer-image-dir.png b/Installation/image for flash/pioneer-image-dir.png new file mode 100644 index 00000000..710fad98 Binary files /dev/null and b/Installation/image for flash/pioneer-image-dir.png differ diff --git a/Installation/licheebook/index.html b/Installation/licheebook/index.html new file mode 100644 index 00000000..484e16eb --- /dev/null +++ b/Installation/licheebook/index.html @@ -0,0 +1,1339 @@ + + + + + + + + + + + + + + + + + + Licheebook - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Licheebook

+ +

施工中

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Installation/licheeconsole4a/index.html b/Installation/licheeconsole4a/index.html new file mode 100644 index 00000000..28433feb --- /dev/null +++ b/Installation/licheeconsole4a/index.html @@ -0,0 +1,1339 @@ + + + + + + + + + + + + + + + + + + Licheeconsole4a - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Licheeconsole4a

+ +

施工中

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Installation/licheepi4a/index.html b/Installation/licheepi4a/index.html new file mode 100644 index 00000000..ac8dd2a0 --- /dev/null +++ b/Installation/licheepi4a/index.html @@ -0,0 +1,1799 @@ + + + + + + + + + + + + + + + + + + + + + + Lichee Pi 4A - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + +

LicheePi4A镜像刷写教程

+

LicheePi4A支持从 SD card 启动和从 eMMC 启动。以下分别介绍这两种启动方式下该如何刷写RevyOS镜像。

+

演示环境:Ubuntu22.04

+

从SD card 启动

+

注意!从sd卡启动不需要改变拨码开关!按照eMMC拨码开关进行设置!

+

准备工作

+

硬件准备

+

准备MicroSD 读卡器和一张MicroSD 卡

+

烧录相关工具

+

安装zstd用于解压镜像文件

+
apt install zstd
+
+

获取镜像

+

从以下链接下载 LicheePi4A 以 sdcard- 为前缀的 SD card 启动系统镜像:RevyOS0720

+

解压镜像压缩包得到sdcard-lpi4a-20240720_171951.img文件

+
unzstd sdcard-lpi4a-20240720_171951.img.zst
+
+

使用BalenaEtcher写入镜像到 MicroSD 卡

+

从官网获取烧录工具 BalenaEtcher https://etcher.balena.io/

+

把 SD 卡插入读卡器,并将其插入电脑。

+

运行 BalenaEtcher用于写入镜像到SD 卡。 +在 BalenaEtcher 窗口中, 首先点击 "Flash from file" 来选择镜像文件。 + +选择完镜像文件后在第二栏选择需要写入的设备。 + +两项都选择完以后点击"Flash"写入镜像。 + +在等待一段时间后会显示烧录已完成。 +

+

使用dd写入镜像

+

在刷写前请保证您在 of= 设置了正确的设备

+
# sudo dd if=./sdcard-lpi4a-20240720_171951.img of=<Target Device> status=progress
+# sync
+
+

等待完成即可使用

+

系统启动

+

在写入镜像完成后将SD 卡插入如图所示卡槽中。 + +连接hdmi线与电源线后可直接启动。

+

从eMMC启动

+

从eMMC启动镜像时,刷写镜像的途径分为连接串口与不连接串口两种情况,其中进行的操作有些许区别,在此将两种方式一起进行介绍。 +从eMMC启动应当先取出 SD Card

+

准备工作

+

从eMMC启动需要将u-boot文件、boot文件以及root文件通过fastboot刷入eMMC中,所以需要保证已安装fastboot。

+

Ubuntu可直接通过apt安装

+
apt install fastboot 
+
+

通过串口连接时需要串口控制台进行监控,在Ubuntu下选择使用minicom。

+
apt install minicom
+
+

获取镜像

+

从以下链接下载 LicheePi4A 的系统镜像:RevyOS0720

+

其中u-boot文件需要根据自己的板卡规格进行选择,请注意提前了解自己的板卡规格后进行下载。

+

下载后使用 unzstd 解压 root 和 boot 镜像

+
unzstd boot-lpi4a-20240720_171951.ext4.zst
+unzstd root-lpi4a-20240720_171951.ext4.zst
+
+

写入镜像到eMMC(不接入串口)

+

按住板卡上的BOOT键后,接入电脑。板卡会进入刷写模式

+

写入镜像到eMMC(接入串口)

+

首先从终端打开minicom,进入串口控制台。

+
sudo minicom
+
+

如图所示将串口与板卡进行连接,usb端接入电脑。板卡上的Type-C接口通过USB-Type-C线连接到电脑。

+

连接串口,红色圈内(从左往右第一排第二个)为 GND,黄色圈内(第一排第五个)为 TX,绿色圈内(第二排第五个)为 RX。与主机应遵循TX到RX,RX到TX,GND到GND的接线。

+

+

在接入后在串口控制台中按任意按键打断,在串口控制台窗口中输入

+
fastboot usb 0
+
+

随后另起一个窗口进行镜像刷写。

+

正式刷写

+

以下命令均为在镜像文件下载文件夹路径内,注意文件路径和文件名。

+

使设备进入 u-boot fastboot

+

如果 lsusb 结果不是 ID 1234:8888 Brain Actuated Technologies USB download gadget,运行下面的命令

+
fastboot flash ram u-boot-with-spl-lpi4a-16g.bin # 替换为您的型号对应的 uboot 镜像
+fastboot reboot
+sleep 1
+
+

刷写镜像

+
fastboot flash uboot u-boot-with-spl-lpi4a-16g.bin
+fastboot flash boot boot-lpi4a-20240720_171951.ext4
+fastboot flash root root-lpi4a-20240720_171951.ext4
+
+

fastboot 会显示刷写进度,如果连接了串口,在串口控制台中可以看到具体进度(下图以刷写 +boot,大小为 92886476 Bytes为例,可在 cmd_parameter: boot, imagesize: 92886476 处查看刷入的内容)。

+

+

刷写完成后拔掉电脑与板卡连接的USB-Type-C线,接入电源线便可直接启动进入系统。

+

可能出现的问题

+

如果 lsusb 中存在 download 设备,但fastboot 命令仍然卡在 < waiting for any device > ,可以尝试使用 sudo 运行 fastboot 命令。

+

用户登录

+
    +
  • 登录账户:debian
  • +
  • 账户密码:debian
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Installation/milkv-meles/index.html b/Installation/milkv-meles/index.html new file mode 100644 index 00000000..6024dced --- /dev/null +++ b/Installation/milkv-meles/index.html @@ -0,0 +1,1339 @@ + + + + + + + + + + + + + + + + + + Milkv meles - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Milkv meles

+ + + + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Installation/milkv-pioneer/index.html b/Installation/milkv-pioneer/index.html new file mode 100644 index 00000000..259fd8ca --- /dev/null +++ b/Installation/milkv-pioneer/index.html @@ -0,0 +1,1686 @@ + + + + + + + + + + + + + + + + + + + + + + Milk-V Pioneer - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

在 Milk-V pioneer 上安装 RevyOS

+

1.准备工作

+

工具准备

+
    +
  • MicroSD卡
  • +
  • MicroSD读卡器
  • +
  • NVMe SSD读卡器
  • +
+

镜像下载

+

RevyOS 镜像目录:镜像下载

+

目前最新镜像版本为:20240819

+

以下以20240819镜像目录为例:

+

+

RevyOS 镜像刷写遵循固件文件+系统文件的方式,因此会用到以下文件

+

固件文件:

+
    +
  • firmware_single_sg2042-v6.6-lts-v0p7.bin(刷写进SPI Flash中)
  • +
  • firmware_single_sg2042-v6.6-lts-v0p7.img(刷写进SD卡中)
  • +
+

系统文件:

+
    +
  • revyos-pioneer-20240819-154656.img.zst
  • +
+

2.固件刷写

+

刷写说明

+

根据镜像下载中的说明,固件文件可以存放于 SPI Flash 或 SD卡中,因此下面将会进行分类说明。

+

将固件刷写到SD卡中

+

操作环境:Ubuntu 22.04

+

使用 BalenaEtcher 写入

+

1、选择文件 firmware_single_sg2042-v6.6-lts-v0p7.img +2、选择目标SD卡 +3、点击烧录

+

通过命令行写入

+

将SD卡插入读卡器并连接至电脑,确认是否正确连接以及设备路径

+

在存放firmware_single_sg2042-v6.6-lts-v0p7.img文件的目录下时,使用dd命令将文件刷写到SD卡中

+

sudo dd if=firmware_single_sg2042-v6.6-lts-v0p7.img of=/dev/sda bs=4M status=progress

+

of=/dev/sda 此项请根据设备路径进行更改

+

刷写完成后请使用sync命令,确保数据写入到 SD 卡中。

+

将固件刷写到 SPI Flash 中

+

操作环境:RevyOS0819

+

注意事项:首次使用时推荐使用SD卡存放固件

+

通过命令行写入

+

此方法是将.bin文件写入到mtd中,所以需要安装相关软件包以及加载相关模块

+
sudo apt install mtd-utils
+sudo modprobe mtdblock
+
+

然后下载文件

+
wget https://mirror.iscas.ac.cn/revyos/extra/images/sg2042/20240819/firmware_single_sg2042-v6.6-lts-v0p7.bin
+
+

下载完成后切换到 firmware_single_sg2042-v6.6-lts-v0p7.bin 的下载目录下,执行以下命令

+
sudo flashcp -v firmware_single_sg2042-v6.6-lts-v0p7.bin /dev/mtd1
+
+

至此刷写完成

+

3.镜像刷写

+

操作环境:Ubuntu 22.04

+

通过命令行写入

+

首先需要解压revyos-pioneer-20240819-154656.img.zst文件

+
unzstd revyos-pioneer-20240819-154656.img.zst
+
+

得到revyos-pioneer-20240819-154656.img文件

+

将NVMe SSD插入读卡器并连接至电脑,确认是否正确连接以及设备路径

+

在存放revyos-pioneer-20240819-154656.img文件的目录下时,使用dd命令将文件刷写到NVMe SSD中

+

sudo dd if=revyos-pioneer-20240819-154656.img of=/dev/nvme0n1 bs=4M status=progress

+

of=/dev/nvme0n1 此项请根据设备路径进行更改

+

刷写完成后请使用sync命令,确保数据写入到NVMe SSD中。

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/Installation/\345\234\250 macOS \344\270\212\345\210\267\345\206\231 RevyOS \351\225\234\345\203\217\345\210\260 lpi4a/index.html" "b/Installation/\345\234\250 macOS \344\270\212\345\210\267\345\206\231 RevyOS \351\225\234\345\203\217\345\210\260 lpi4a/index.html" new file mode 100644 index 00000000..fc2141dd --- /dev/null +++ "b/Installation/\345\234\250 macOS \344\270\212\345\210\267\345\206\231 RevyOS \351\225\234\345\203\217\345\210\260 lpi4a/index.html" @@ -0,0 +1,1412 @@ + + + + + + + + + + + + + + + + + + 在 macOS 上刷写 RevyOS 镜像到 lip4a - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

在 macOS 上刷写 RevyOS 镜像到 lip4a

+

一、 前置准备

+
    +
  • 使用 brew 或其他方式安装 android-platform-tools
  • +
  • 下载对应硬件的 uboot 以及镜像
  • +
  • 确保您的开发版通过串口以及 usb 连接 Mac
  • +
  • 确保您的开发版有通过 12V 供电
  • +
+

开始下载 uboot 以及镜像:

+

访问该网站,并且确保您进入的是最新日期的文件夹,这里以 20240720 为例:

+

下载以下文件:

+
+

确保您下载的文件与您的硬件相符,荔枝派 4a 分为 8G 以及 16G 版本,对应的 uboot 也不相同。

+
+

接着,使用 brew 安装 android-platform-tools:

+

brew intsall android-platform-tools

+

确定 fastboot 指令能够正常使用:

+
yuiyuuhayashi@MacBook-Air ~ % fastboot usb 0
+< waiting for any device >
+
+

二、开始安装

+

首先, 让你的荔枝派在启动阶段进入 xx 模式。 +输入 fastboot usb 0,并且确定您已经通过 type C 接口正确连接到您的 Mac 以及接入 12V 供电 +在 Mac 上输入如下指令:

+
fastboot flash uboot <filename>
+
+

正确刷写后,使用 fastboot reboot 进行重启

+
+

若没有开发版没有正确重启,请手动断电重启

+
+

同样的进入 xx 模式,在 macOS 上执行如下指令:

+
fastboot flash root <filename>
+
+

同样的,使用 fastboot reboot 进行重启

+

三、进入系统

+

在进入系统后,请输入如下账号密码:

+
debian
+debian
+
+

成功进入系统后,可使用 neofetch 等方式查看系统版本等信息。

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_static/js/extra.js b/_static/js/extra.js new file mode 100644 index 00000000..f93faf74 --- /dev/null +++ b/_static/js/extra.js @@ -0,0 +1,5 @@ +// We love spaces. See https://github.com/vinta/pangu.js/ +document.addEventListener('DOMContentLoaded', () => { + // listen to any DOM change and automatically perform spacing via MutationObserver() + pangu.autoSpacingPage(); +}); diff --git a/adaptation/GStreamer-pipeline-example-with-thead-omxil-lib/index.html b/adaptation/GStreamer-pipeline-example-with-thead-omxil-lib/index.html new file mode 100644 index 00000000..d145622f --- /dev/null +++ b/adaptation/GStreamer-pipeline-example-with-thead-omxil-lib/index.html @@ -0,0 +1,2246 @@ + + + + + + + + + + + + + + + + + + + + + + GStreamer pipeline - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

GStreamer pipeline examples with thead OpenMax-IL lib

+

Some GStreamer pipeline command-line examples with omxil library on TH1520, RevyOS

+

Get ready

+

In this section, the grammer of the gstreamer command-line pipeline and some usefule debug tips are introduced. They have been moved to the end of the article.

+

Pipeline samples

+

Basically, you neet to install gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-plugins-bad, gstreamer1.0-omx-generic, gstreamer1.0-omx-bellagio-config,gstreamer1.0-tools.

+

Test

+

videotestsrc

+
# videotestsrc
+gst-launch-1.0 videotestsrc ! autovideosink
+
+# specify the video stream format
+gst-launch-1.0 videotestsrc ! video/x-raw, format=NV12, width=960, height=540, framerate=60/1 ! autovideosink
+
+

fpsdisplaysink

+
# display framerate
+gst-launch-1.0 videotestsrc ! fpsdisplaysink
+
+# no need to sync on the clock - used to test the performance of the pipeline
+gst-launch-1.0 videotestsrc ! fpsdisplaysink sync=false
+
+# stop display on the screen, but redirect the output to stdout
+gst-launch-1.0 videotestsrc ! fpsdisplaysink text-overlay=false -v 2>&1
+
+# specify which sink to use
+gst-launch-1.0 videotestsrc ! fpsdisplaysink sink=glimagesink
+
+# combine the previous examples
+gst-launch-1.0 videotestsrc ! fpsdisplaysink sink=glimagesink sync=false text-overlay=false -v 2>&1
+
+

audiotestsrc

+
# audiotestsrc
+gst-launch-1.0 audiotestsrc ! autoaudiosink
+
+# change volume (0 to 1)
+gst-launch-1.0 audiotestsrc volume=0.1 ! autoaudiosink
+
+# change waveform
+# could be selected among square, silence, pink-noise, etc.
+gst-launch-1.0 audiotestsrc wave=pink-noise ! autoaudiosink
+
+# set fix frequency, such as "do" (262 Hz)
+gst-launch-1.0 audiotestsrc freq=262 ! autoaudiosink
+
+

fakesink

+
# a dummy sink that swallows everything
+gst-launch-1.0 videotestsrc ! fakesink
+
+

Decode

+

Video decode

+
# let decodebin choose which decoder to use,
+# and autovideosink choose which video-sink to use (not recommended)
+gst-launch-1.0 filesrc location=fire.mp4 ! decodebin ! autovideosink
+
+# h264 software decode without opengl display
+gst-launch-1.0 filesrc location=fire.mp4 ! qtdemux ! h264parse ! avdec_h264 ! xvimagesink
+
+# h264 hardware decode with opengl display
+gst-launch-1.0 filesrc location=fire.mp4 ! qtdemux ! h264parse ! omxh264dec ! glimagesink
+
+# h265 hardware decode
+gst-launch-1.0 filesrc location=fire.mp4 ! qtdemux ! h265parse ! omxh265dec ! glimagesink
+
+# vp9 hardware decode 
+gst-launch-1.0 filesrc location=fire.webm ! matroskademux ! omxvp9dec ! glimagesink
+
+# mpeg4 hardware decode 
+gst-launch-1.0 filesrc location=fire.mp4 ! qtdemux ! queue ! mpeg4videoparse ! omxmpeg4videodec ! glimagesink
+
+# play mkv/webm file
+gst-launch-1.0 filesrc location=fire.mkv ! matroskademux ! decodebin ! glimagesink
+
+# todo 10-bit h264/h265 decode
+
+

Audio decode

+
# there is no hardware decoder on th1520
+
+# let autoaudiosink choose which audio-sink to use
+gst-launch-1.0 filesrc location=blade.mp3 ! decodebin ! audioconvert ! autoaudiosink
+
+# mp3 decode
+gst-launch-1.0 filesrc location=blade.mp3 ! mpegaudioparse ! avdec_mp3 ! audioconvert ! autoaudiosink
+
+# aac decode
+gst-launch-1.0 filesrc location=blade.aac ! aacparse ! avdec_aac ! audioconvert ! autoaudiosink
+gst-launch-1.0 filesrc location=blade.aac ! aacparse ! faad ! audioconvert ! autoaudiosink
+## faad works well without aacparse
+gst-launch-1.0 filesrc location=blade.aac ! faad ! audioconvert ! autoaudiosink
+
+# opus decode
+## ogg file must be demuxed by oggdemux first
+gst-launch-1.0 filesrc location=blade.ogg ! oggdemux ! opusparse ! opusdec ! audioconvert ! autoaudiosink
+gst-launch-1.0 filesrc location=blade.ogg ! oggdemux ! opusparse ! avdec_opus ! audioconvert ! autoaudiosink
+
+# wav decode
+gst-launch-1.0 filesrc location=test.wav ! wavparse ! audioresample ! audioconvert ! autoaudiosink
+
+# use specific audiosink
+gst-launch-1.0 filesrc location=blade.mp3 ! decodebin ! audioconvert ! pulsesink
+
+# specify the output device by using alsasink with device property
+gst-launch-1.0 filesrc location=blade.mp3 ! decodebin ! audioconvert ! alsasink device=hw:0,2
+
+

demux and decode

+

We play media file in this section.

+
# play mp4 file with both audio and video
+gst-launch-1.0 filesrc location=fire.mp4 ! qtdemux name=demux \
+  demux.video_0 ! queue  ! decodebin ! videoconvert ! autovideosink \
+  demux.audio_0 ! queue ! decodebin ! audioconvert !  autoaudiosink
+
+

Encode to file

+

Video encode

+
# h264 encode test
+# before import video stream to omxh264dec, data should be transformed to frame with rawvideoparse
+# property and pad of rawvideoparse should be set to the same, so we use 'use-sink-caps=true' here
+gst-launch-1.0 videotestsrc ! videoconvert \
+  ! video/x-raw, format=NV12, width=640, height=480 \
+  ! rawvideoparse use-sink-caps=true ! omxh264enc ! fakesink
+
+# h264 hardware encode to file
+## todo: encoded h264 file has seek problem
+gst-launch-1.0 videotestsrc ! videoconvert \
+  ! video/x-raw, format=NV12, width=640, height=480 \
+  ! rawvideoparse use-sink-caps=true ! omxh264enc \
+  ! h264parse ! qtmux ! mp4mux ! filesink location=test.mp4
+
+# h264 hardware encode to file with specific bitrate(bit per second)
+gst-launch-1.0 videotestsrc ! videoconvert \
+  ! video/x-raw, format=NV12, width=640, height=480 \
+  ! rawvideoparse use-sink-caps=true  \
+  ! omxh264enc target-bitrate=3000000 \
+  ! h264parse ! filesink location=test.mp4
+
+
+# h265 hardware encode to file
+## this pipeline produces h265 stream only
+## qtdemux is not needed while decoding
+gst-launch-1.0 videotestsrc ! videoconvert \
+  ! video/x-raw, format=NV12, width=640, height=480 \
+  ! rawvideoparse use-sink-caps=true ! omxh265enc \
+  ! h265parse ! filesink location=test.h265
+
+# h264 hardware encode from camera to file
+gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert \
+  ! video/x-raw, format=NV12,width=640,height=480 \
+  ! rawvideoparse use-sink-caps=true \
+  ! omxh264enc ! h264parse ! filesink location=test.mp4 -e
+
+

Audio encode

+
# There is no hardware audio encoder on th1520
+
+# encode aac stream with adts container(.aac file)
+## the unit of the bitrate is 'bit/sec'
+gst-launch-1.0 audiotestsrc ! voaacenc bitrate=128000 ! avmux_adts ! filesink location=test.aac
+
+
+# todo: encode aac stream with adif container(.m4a file)
+
+# encode to mp3 file
+## the unit of the bitrate is 'kbit/sec'
+gst-launch-1.0 audiotestsrc ! lamemp3enc quality=2 target=bitrate bitrate=192 cbr=true ! id3v2mux ! filesink location=test.mp3
+
+# encode opus stream to .ogg file
+gst-launch-1.0 audiotestsrc ! opusenc ! oggmux ! filesink location=test.opus
+
+
+# todo: encode pcm stream to .wav file
+
+

mux and encode

+

This part has been removed to Video + audio transcode section.

+

Media file transcode

+

Video transcode

+

Since omx...dec cannot fulfill qtdemux and mp4mux, and gst-omx is no longer maintained, it is hard to mux mp4 file with these two plugins. To mux stream from omxh264dec, use avmux_mp4 instead. But there is no h265 or vp9 muxer available for omx...dec

+

The raw video stream should be processed by rawvideoparse before sent to encoder. Because itself cannot scale frame or change framerate, rawvideoparse need to get the stream info of its sink pad(src pad of the backward element). Therefore use-sink-caps must be set to true.

+

To change width and height, set properties output-width and output-height of omx...dec. To modify bitrate and bitrate control method, set properties control-rate and target-bitrate of omx...enc. To change framerate, set properties of videorate.

+
# h265 to h264
+gst-launch-1.0 filesrc location=test_h265.mp4 ! qtdemux ! h265parse ! omxh265dec \
+  ! rawvideoparse use-sink-caps=true \
+  ! omxh264enc ! h264parse ! avmux_mp4 ! filesink location=t_h264.mp4
+
+# vp9 to h264
+gst-launch-1.0 filesrc location=test_vp9.webm ! matroskademux ! omxvp9dec \
+  ! rawvideoparse use-sink-caps=true \
+  ! omxh264enc ! h264parse ! avmux_mp4 ! filesink location=t_h264.mp4
+
+# arbitrary input to h264
+gst-launch-1.0 filesrc location=test_h264.mp4 ! decodebin \
+  ! rawvideoparse use-sink-caps=true \
+  ! omxh264enc ! h264parse ! filesink location=t_h264.mp4
+
+# h264 to h264, with more options
+## set the video width and height to 1280×720, framerate to 15fps, bitrate mode to constant and bitrate to 5Mbps
+gst-launch-1.0 filesrc location=test_h264.mp4 ! qtdemux ! h264parse \
+  ! omxh264dec output-width=1280 output-height=720 \
+  ! videorate ! video/x-raw, framerate=15/1 \
+  ! rawvideoparse use-sink-caps=true  \
+  ! omxh264enc control-rate=constant target-bitrate=5000000 ! h264parse ! filesink location=t_h264.mp4
+
+## there is no vp9 encoder in th1520 omxil lib
+
+

Audio transcode

+
# aac to mp3
+gst-launch-1.0 filesrc location=test.aac ! aacparse ! avdec_aac ! audioconvert ! lamemp3enc quality=2 target=bitrate bitrate=192 cbr=true ! id3v2mux ! filesink location=t.mp3
+
+# mp3 to aac
+gst-launch-1.0 filesrc location=test.mp3 ! mpegaudioparse ! avdec_mp3 ! audioconvert ! voaacenc bitrate=128000 ! avmux_adts ! filesink location=t.aac
+
+# wav to mp3
+gst-launch-1.0 filesrc location=test.wav ! wavparse ! audioresample ! audioconvert ! lamemp3enc quality=2 target=bitrate bitrate=192 cbr=true ! id3v2mux ! filesink location=t.mp3
+
+# mp3 to wav
+gst-launch-1.0 filesrc location=test.mp3 ! mpegaudioparse ! avdec_mp3 ! audioresample ! audioconvert \
+  ! audio/x-raw, rate=44100, format=S16LE ! wavenc ! filesink location=t.wav
+
+

Video + audio remux and transcode

+
# mux test
+gst-launch-1.0 audiotestsrc ! autoaudiosink videotestsrc ! autovideosink
+
+# mux the test video and audio stream to a mp4 file
+## be aware that '-e' must be set to this pipeline,
+## and there is no '!' before audiotestsrc
+gst-launch-1.0 -e videotestsrc ! videoconvert \
+  ! video/x-raw, format=NV12, width=960, height=540 \
+  ! rawvideoparse use-sink-caps=true ! omxh264enc ! h264parse \
+  ! avmux_mp4 name=mux ! filesink location=t_h264.mp4 \
+  audiotestsrc ! lamemp3enc ! mux.
+
+# change container from mkv to mp4 with h264 stream
+## this means demux a mkv file then mux video and audio stream to mp4 file
+gst-launch-1.0 filesrc location=test_h264.mkv \
+  ! matroskademux name=demux mp4mux force-create-timecode-trak=true name=mux ! filesink location=t_h264.mp4 \
+  demux.video_0 ! queue ! video/x-h264 ! mux. \
+  demux.audio_0 ! queue ! audio/mpeg ! mux.
+
+

Media mixing

+

Camera capture

+

You can use command v4l2-ctl, which is included in package v4l-utils to get information of your camera.

+

For more information, read this article

+
# h264 hardware encode from camera to file
+gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert \
+  ! video/x-raw, format=NV12,width=640,height=480 \
+  ! rawvideoparse format=nv12 width=640 height=480 \
+  ! omxh264enc ! h264parse ! filesink location=test.mp4 -e
+
+
+

Stream transfer

+
# capture camera and stream to other machine
+
+## source
+gst-launch-1.0 v4l2src device=/dev/video0 !  videoconvert ! videorate \
+  ! video/x-raw,  format=NV12,width=640,height=480,framerate=20/1 \
+  ! rawvideoparse format=nv12 width=640 height=480  framerate=20/1 \
+  ! omxh264enc ! h264parse config-interval=1 ! video/x-h264,stream-format=byte-stream,alignment=nal \
+  ! rtph264pay ! udpsink  host=192.168.31.27 port=5600
+
+## destination
+gst-launch-1.0 udpsrc port=5600 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' \
+  ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink
+
+

Other tools

+

gst-inspect-1.0

+

gst-inspect-1.0 is a tool to print info about a GStreamer element(factory), which is included in gstreamer1.0-tools.

+
# print the GStreamer element list with a 'less' like paing filter.
+gst-inspect-1.0
+
+# print info of the element
+gst-inspect-1.0 <element_name>
+
+

gst-discover1.0

+

gst-discover-1.0 is a tool to show info about the media file, which is inclucded in gstreamer1.0-plugins-base-apps.

+
gst-discoverer-1.0 -v test.mp4
+
+

gst-play-1.0

+

If you are tired of manually build pipeline for playback by hand. You can use gst-play-1.0 as an alternative, which is included in gstreamer1.0-plugins-base-apps.

+
# play media file
+gst-play-1.0 test.mp4
+
+# play media file with specific sink
+gst-play-1.0 --videosink=glimagesink --audiosink=alsasink
+
+

Left button and right button can be used to seek. For more info, please read this article.

+

Other examples

+

Get ready

+

Debug tips

+

To get the cap info or property of an element, you may need to run gst-inspect-1.0 <element_name>. If gst-inspect-1.0 command not found, install gstreamer1.0-tools.

+

If you want to debug GStreamer, refer to the articles below. +https://gstreamer.freedesktop.org/documentation/tutorials/basic/debugging-tools.html +https://gstreamer.freedesktop.org/documentation/gstreamer/running.html?gi-language=c

+

Grammer

+

Here is a simple command-line pipeline.

+
gst-launch-1.0 videotestsrc ! autovideosink
+
+

! represent a link. The established pipeline looks like

+
videotestsrc => autovideosink
+
+

There are several properties in videotestsrc, which could be lookup by gst-inspect-1.0 videotestsrc.Set some properties:

+
gst-launch-1.0 videotestsrc pattern=ball flip=true ! autovideosink
+
+

NAME=VALUE is a property. pattern and flip are properties of videotestsrc.

+

Sometimes we need to control the behavior of gst-launch-1.0.

+
GST_DEBUG=3 gst-launch-1.0 videotestsrc pattern=ball flip=true ! autovideosink
+gst-launch-1.0 videotestsrc pattern=ball flip=true ! autovideosink --gst-debug-level=3
+
+

There are two ways to achieve this goal. One is setting environment variable. Another one is passing command-line argument to gst-launch-1.0. GST_DEBUG=3 and --gst-debug-level=3 have the same meaning.

+

In most video decoding cases, there is a video-stream and an audio stream. We need to use demuxer to seperate them. Demuxer usually have several src pad. Here is an example.

+
gst-launch-1.0 filesrc location=test-video.mp4 ! qtdemux name=demux demux. ! queue ! h264parse ! omxh264dec ! glimagesink demux. ! queue ! aacparse ! avdec_aac ! audioconvert !  alsasink
+
+

It is hard to read. Add some word wrap:

+
gst-launch-1.0 filesrc location=test-video.mp4 ! qtdemux name=demux \
+  demux. ! queue ! h264parse ! omxh264dec ! glimagesink \
+  demux. ! queue ! aacparse ! avdec_aac ! audioconvert ! pulsesink
+
+

Here we use a demuxer to seperate video and audio, the grammer is:

+
... demuxer name=DEMUXER_NAME \
+DEMUXER_NAME.PIPELINE_NAME_1 ! queue ! ...(the remaining part of pipeline 1) \
+DEMUXER_NAME.PIPELINE_NAME_2 ! queue ! ...(the remaining part of pipeline 2)
+
+

Sometimes we need to set certain properties of the stream at certain nodes in the pipeline, e.g set resolution of the videostream of the videotestsrc.

+
gst-launch-1.0 videotestsrc ! video/x-raw, width=800, height=600 ! glimagesink
+
+

We negotiated the pad properties between videotestsrc and glimagesink. The property names and values must be supported by both element. You can find them in Pad Templates section of gst-inspect-1.0.

+

Reference

+
    +
  1. GStreamer pipeline grammar - StackOverflow
  2. +
  3. GStreamer pipeline samples - GitHub
  4. +
  5. gst-launch-1.0 - GStreamer doc
  6. +
  7. How to display fps of streaming video in gsteramer? - StackOverflow
  8. +
  9. Storing AAC Audio and Retrieving - StackOverflow
  10. +
  11. Accelerated GStreamer User Guide - NVIDIA
  12. +
  13. Storing AAC Audio and Retrieving - StackOverflow
  14. +
  15. Play an opus file with gstreamer and pulseaudio - StackOverflow
  16. +
  17. mp4mux not working with omxh264enc
  18. +
  19. omxh264enc makes qtmux error out with "Buffer has no PTS." - FreeDesktop - Gitlab
  20. +
  21. gst-omx: Retire the whole package - FreeDesktop - Gitlab
  22. +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/adaptation/GStreamer\346\222\255\346\224\276\345\231\250\351\200\202\351\205\215/index.html" "b/adaptation/GStreamer\346\222\255\346\224\276\345\231\250\351\200\202\351\205\215/index.html" new file mode 100644 index 00000000..965fab69 --- /dev/null +++ "b/adaptation/GStreamer\346\222\255\346\224\276\345\231\250\351\200\202\351\205\215/index.html" @@ -0,0 +1,2122 @@ + + + + + + + + + + + + + + + + + + + + + + GStreamer 播放器适配 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + +

支持 PTG omxil 库的 GStreamer 播放器适配文档

+

适用SDK v1.1.2

+

概述

+

PTG 的 OpenMAX IL 库(下称 vpu-omxil)可使 LicheePi 4A 能够流畅硬解码 4k 60fps 的视频,那么具体应该如何使用该库呢?本文将主要介绍 LicheePi 4A 开发板上 Parole 播放器的集成与使用,用户可根据本文来了解在 LicheePi 4A 上的适配过程 +以 h264 的硬解为例,视频硬解的工作流程如图所示

+
                +-------------------------------------------+
+                |    +------------+       +------------+    |   +--------+
+video stream----+--->| omxh264dec +------>| video-sink +----+-->| player |
+                |    +------+-----+       +------------+    |   +--------+
+                |           |     GStreamer                 |
+                +-----------+-------------------------------+
+                            |
+                      +-----v-----+
+                      | vpu-omxil |
+                      +-----+-----+
+                            |
+                            |
+                    +-------v-------+
+                    | kernel module |
+                    |    (driver)   |
+                    +-------+-------+
+                            |
+                            v
+                        hardware
+
+
    +
  1. 视频流(video stream)由 GStreamer 读入后经过一系列预处理,送到 GStreamer 的解码器omxh264dec
  2. +
  3. omxh264dec 调用动态库,即 PTG 提供的 vpu-omxil 库,该库通过驱动访问硬件(kernel module)进行硬解
  4. +
  5. 解码后的流传输到 GStreamer 的 video-sink 中,并由播放器(player)呈现
  6. +
+

A. GStreamer omxh264dec 解码测试

+

将 omxh264 解码的部分单独拎出来,大体的结构如下

+
  +---+------------+----+
+  |   +------------+    |
+  |   | omxh264dec |    |
+  |   +------------+    |
+  |      GStreamer      |
+  +----------+----------+
+             |
+  +----+-----v-----+----+
+  |    +-----------+    |
+  |    | vpu-omxil |    |
+  |    +-----------+    |
+  |  libomxil-bellagio  |
+  +----------+----------+
+             |
++------------v------------+
+|  - memalloc   - vc8000  |
+|  - hantrodec  - vidmem  |
+|      kernel modules     |
++------------+------------+
+             |
+             v
+          hardware
+
+

我们依照自底向上的顺序构建图示的链条。 +本节的主要目的是使 omxh264dec 解码器能够运行,并不涉及到输出屏幕等内容。

+

1. 驱动编译、安装以及硬件访问权限的设置

+

硬解码需要访问硬件,而访问硬件又需要驱动,所以需要编译并安装驱动

+

1.1 编译驱动

+

PTG 提供的驱动源:

+

https://github.com/revyos/vpu-vc8000e-kernel

+

https://github.com/revyos/vpu-vc8000d-kernel

+

https://github.com/revyos/video_memory

+
1.1.1替代方案
+

revyos/thead-kernel 已经合并了上述三个内核模块, 使用revyos_defconfig 可以无需编译上述内核模块

+

1.2 安装驱动

+
# depmod 分析可载入模块的依赖关系,在 /lib/modules/<kernel-version>中添加modules.dep文件,以便后续 modprobe 使用
+sudo depmod -a
+sudo modprobe vidmem vc8000 hantrodec memalloc
+
+## 如果 modprobe 安装有问题的话,可以尝试使用 insmod 安装
+#cd /usr/lib/modules/$(uname -r)
+#sudo insmod $(find . -name *vidmem.ko*)
+#sudo insmod $(find . -name *vc8000.ko*)
+#sudo insmod $(find . -name *hantrodec.ko*)
+#sudo insmod $(find . -name *memalloc.ko*)
+
+# 可选:设置开机加载模块
+echo -e "\nvidmem\nhantrodec\nmemalloc\nvc8000\n" | sudo tee -a /etc/modules > /dev/null
+
+

1.3 设置硬件访问权限

+

安装内核模块后,/dev 目录下会出现 hantrodec vidmem vc8000 三个设备文件。默认情况下,用户对其没有访问权限,如果不修改权限的话,非 root 用户在打开 omxil 库时会报错。

+
# 生效一次
+cd /dev
+sudo chmod 666 hantrodec vidmem vc8000
+
+# 长期生效
+cat << EOF | sudo tee /lib/udev/rules.d/70-hantro.rules > /dev/null
+KERNEL=="vidmem", MODE="0666"
+KERNEL=="hantrodec", MODE="0666"
+KERNEL=="vc8000", MODE="0666"
+EOF
+
+

RevyOS 适配记录

+

如果要获取 RevyOS 特定版本的内核模块,可进入 revyos/thead-kernel ,并在 GitHub CI 中下载 artifacts

+

2. 安装 vpu-omxil 并调整配置

+

首先,请将 vpu-omxil 下载并解压到 /usr/lib/omxil/中 +vpu-omxil_1.2.1.tar.gz +如下图所示, 需要

+
    +
  1. vpu-omxil 中的 OpenMax 组件注册到 libomxil-bellagio
  2. +
  3. gst-omx(该包提供了 omxh264dec 解码器) 调用 libomxil-bellagio 的时候也需要知道调用的组件名称
  4. +
+
+---------+   +-------------------+   +-----------+
+| gst-omx +-->| libomxil-bellagio +-->| vpu-omxil |
++---------+   +-------------------+   +-----------+
+
+

2.1 将 vpu-omxil 中的组件注册到 libomxil-bellagio

+
sudo apt install libomxil-bellagio-bin libomxil-bellagio0
+# 注册组件
+omxregister-bellagio -v /usr/lib/omxil/
+
+

使用 omxregister-bellagio 生成注册文件,默认路径为 ~/.omxregister

+
2.1.1 RevyOS/Debian 注册组件
+

th1520-vpu 利用了 debian 在 usr/lib/riscv64-linux-gnu/libomxil-bellagio0 安装之后 +触发自动注册行为 结果如下

+
cat /var/lib/libomxil-bellagio0/registry
+/usr/lib/riscv64-linux-gnu/libomxil-bellagio0/libOMX.hantro.H2.video.encoder.so
+ ==> OMX.hantro.H2.video.encoder ==> OMX.hantro.H2.video.encoder.avc:OMX.hantro.H2.video.encoder.hevc:
+/usr/lib/riscv64-linux-gnu/libomxil-bellagio0/libOMX.hantro.VC8000D.image.decoder.so
+ ==> OMX.hantro.VC8000D.image.decoder ==> OMX.hantro.VC8000D.image.decoder.jpeg:
+/usr/lib/riscv64-linux-gnu/libomxil-bellagio0/libOMX.hantro.H2.image.encoder.so
+ ==> OMX.hantro.H2.image.encoder ==> OMX.hantro.H2.image.encoder.jpeg:
+/usr/lib/riscv64-linux-gnu/libomxil-bellagio0/libOMX.hantro.VC8000D.video.decoder.so
+ ==> OMX.hantro.VC8000D.video.decoder ==> OMX.hantro.VC8000D.video.decoder.mpeg4:OMX.hantro.VC8000D.video.decoder.avc:OMX.hantro.VC8000D.video.decoder.avs:OMX.hantro.VC8000D.video.decoder.h263:OMX.hantro.VC8000D.video.decoder.wmv:OMX.hantro.VC8000D.video.decoder.vp6:OMX.hantro.VC8000D.video.decoder.vp8:OMX.hantro.VC8000D.video.decoder.jpeg:OMX.hantro.VC8000D.video.decoder.hevc:OMX.hantro.VC8000D.video.decoder.vp9:OMX.hantro.VC8000D.video.decoder.avs2:
+
+

2.2 调整 gstomx.conf 的设置

+

调整 gstomx.conf 的设置以使解码器 omxh264dec 调用正确的组件,具体请查看针对 gst-omx 的补丁

+

gst-omx-01-add-libomxil-config.patch

+

3. 添加 dmabuf 补丁

+

请查看 PTG 提供的针对 gst-omx 的 dmabuf 补丁 +gst-omx-02-set-dec-out-port-dmabuf.patch

+

4. GStreamer 解码初步测试

+
sudo apt install gstreamer1.0-omx-generic gstreamer1.0-omx-bellagio-config gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-gl gstreamer1.0-plugins-good gstreamer1.0-tools
+
+# 1 基本解码
+gst-launch-1.0 filesrc location=<test.mp4> ! qtdemux !  h264parse ! omxh264dec  ! videoconvert ! fakesink  sync=false
+# 2 在终端中显示 fps
+# 参考:https://stackoverflow.com/questions/73948308
+gst-launch-1.0 filesrc location=<test.mp4> ! qtdemux !  h264parse ! omxh264dec  ! videoconvert ! fpsdisplaysink video-sink=fakesink  text-overlay=false sync=false -v 2>&1
+
+

fakesink会把前面的视频流全部吞掉,不输出画面(因而不会在 video-sink 这一环节损失性能),但是结合fpsdisplaysink可以读取到解码的速度。正常日志如下:

+
Setting pipeline to PAUSED ...[DBGT]
+vc8kdec compiled without trace support (ENABLE_DBGT_TRACE switch not enabled)
+Pipeline is PREROLLING ...
+Redistribute latency...
+OMX  ! decoder_get_parameter OMX_ErrorNoMore (2)
+Pipeline is PREROLLED ...
+Setting pipeline to PLAYING ...
+New clock: GstSystemClockRedistribute latency...
+0:01:39.5 / 0:01:49.4 (90.9 %)
+
+

【TIP】如果有 [omxh264dec-omxh264dec0: Could not initialize supporting library.](https://gist.github.com/Sakura286/015fae6792e160268db7ad8a697dd2df) 等字样的报错,可以安装gst-omxlibomxil-bellagiolibc6相关的 debug-symbol 包,使用 gdb 启动上述命令进行调试。调试时,先断DWLInit,然后再断open,具体看是打开哪个地方的时候出错了。

+

RevyOS 适配记录

+

RevyOS 适配过程中对于初始化动态库失败找到了如下三种原因:

+
    +
  1. 编译 vpu-omxil 时使用的工具链与当前系统不兼容
  2. +
  3. 未使用omxregister-bellagio注册 vpu-omxil
  4. +
  5. 未调整 /dev 目录下 hantrodec vc8000 vidmem 等设备的权限
  6. +
+

B. 选用合适的 GStreamer video-sink

+

video-sink 是视频流在整个 GStreamer pipeline 中的最后一步,其作用一般是将视频流输出到屏幕上。 +前文中fakesink只是测试解码器是否正常工作的特殊 video-sink可选的 video-sink非常多,常见的有 autovideosinkximagesinkxvimagesinkfbdevsinkwaylandsinkglimagesinkgtkglsink等,它们各在不同的插件包里,需要酌情安装:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
video-sink所属包名
waylandsinkgstreamer1.0-plugins-bad
fbdevsinkgstreamer1.0-plugins-bad
autovideosinkgstreamer1.0-plugins-good
gtkglsinkgstreamer1.0-plugins-good
ximagesink | xvimagesinkgstreamer1.0-plugins-base
glimagesinkgstreamer1.0-plugins-base | gstreamer1.0-gl
+

【TIP】使用 gst-inspect-1.0 <video-sink-name> 来查看对应 video-sink 可用的选项 +【TIP】添加 --gst-debug-level=<lv> 来获得更多的输出日志,其中 <lv> 代表了从 1 到 6,啰嗦程度从低到高,建议在等级 4 及以下,否则日志会非常长 +请尝试不同的 video-sink ,并尝试不同的插件参数,以及给予不同的环境变量,直至找到可以流畅硬解 H264 的那一个。

+

RevyOS 适配记录

+
    +
  • **waylandsink**:由于现在(20230720)RevyOS 采用了 Xfce 桌面,不可能支持 Wayland,故 waylandsink从原理上无法使用
  • +
  • **fbdevsink****ximagesink**:无法使用
  • +
  • **xvimagesink**:通过流水线图以及日志可以确定,playbin 或 autovideosink 会自动调用 xvimagesink,使用 perf 分析后可以发现,使用xvimagesink 不可避免地会进行大量的 memcpy 操作,严重降低解码性能;该问题在获得PTG的 dmabuf 补丁后依然存在,故无法使用
  • +
  • **gtkglsink**GTK3 不支持 EGL on X11,而 RevyOS 目前基于 x11,且只支持 EGL,故无法使用
  • +
+

剩下的只有glimagesink,根据 Running and debugging GStreamer Applications,并观察其他使用到 glimagesink 的例子,可以猜测需要明确指定环境变量 GST_GL_APIGST_GL_PLATFORM +由于 RevyOS 使用了 gles2+egl 的组合,使用如下的命令,成功硬解。

+
GST_GL_API=gles2 GST_GL_PLATFORM=egl gst-launch-1.0 filesrc location=<test.mp4> ! qtdemux !  h264parse ! omxh264dec  ! videoconvert ! fpsdisplaysink video-sink=glimagesink sync=false
+
+

然而 GStreamer 被播放器调用时是无法通过环境变量来传递参数的,所以构建 gst-plugins-base 时应当传递额外的 meson 编译参数:

+
-Dgl_api=[\'gles2\'] -Dgl_platform=[\'egl\']
+
+

C. 播放器支持

+

GStreamer 的 pipeline 没有问题之后,就需要使播放器支持。不同播放器会使用到不同的 video-sink,同样对 gstreamer 有着不同程度的依赖。 +适配播放器时,最重要的工作便是①使播放器适配已验证的 video-sink,或者②使 gstreamer pipeline 支持播放器指定的 video-sink,此次 RevyOS 适配过程采用了①方案。

+
                +-------------------------------------------+
+                |    +------------+       +------------+    |   +--------+
+video stream----+--->| omxh264dec +------>| video-sink +----+-->| player |
+                |    +------------+       +------------+    |   +--------+
+                |                GStreamer                  |
+                +-------------------------------------------+
+
+

RevyOS 适配记录

+

根据 https://gstreamer.freedesktop.org/apps/ 进行简单的排查

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
是否可用是否更新应用名备注
GnashFlash 播放器
GEntransDebian 未收录
20230226Kaffeine❌ 需要大量 KDE 相关组件
✔️ 存在于riscv64 仓库
❌ 在 Debian amd64 Gnome 上,播放窗口与控制窗口分离,且默认调用了 VLC 进行播放
LcdgriloDebian 未收录
✔️20230218Parole✔️ For XFCE
❓ 不支持 Wayland,仅支持 x11
✔️ Debian amd64 Gnome 验证通过
✔️ 存在于riscv64 仓库
SongbirdDebian 未收录
SnappyDebian 未收录
Totem需要 GTK3,然而 GTK3 不支持 EGL on X11
+

最初选择的播放器是 Totem,但是发现 Totem 无法指定除了 gtkglsink 以外的 video-sink,且由于 RevyOS 不支持 gtkglsink,所以支持 Totem 播放器的难度较大。 +对支持 GStreamer 的播放器进行排查后发现了 Parole , Parole 由 GObject 编写,与常见的面向对象编程略有区别。寻找其构建 parole_gst 对象时的方法 parole_gst_constructed,将 video-sink 属性设置为前文已验证的 glimagesink,补丁:

+

parole-01-add-glimagesink-support.patch

+

至此,粗略的适配工作完成。

+

总结:RevyOS 适配工作

+
    +
  1. 编译驱动模块至内核,设置启动加载,设置设备权限
  2. +
  3. 将 PTG 提供的 omxil 二进制动态库文件打包为 th1520-vpu
  4. +
  5. 修改 th1520-vpu 的依赖,使其依赖 gst-omx 、libomxil-bellagio 等包
  6. +
  7. 设置了一些 postinstall 操作,例如使用 omxregister-bellagio 注册组件等
  8. +
  9. 修改 gst-omx
  10. +
  11. 增加 config 中对 vpu-omxil 组件的支持
  12. +
  13. 应用 dmabuf 补丁
  14. +
  15. 增加对 h265 vp9 的支持
  16. +
  17. 修改 gst-base 编译时的 gl 支持,限制为 gles2+egl
  18. +
  19. 修改 parole 以支持 glimagesink
  20. +
+

本文所用资源

+

补丁集合:

+

https://gist.github.com/Sakura286/26777ea8204c1819885e093806a4f7ca

+

PTG omxil 库

+

https://drive.google.com/file/d/1pYgCVI7WltfpskltJ-RqzVUCEC21FS56

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 00000000..1cf13b9f Binary files /dev/null and b/assets/images/favicon.png differ diff --git a/assets/javascripts/bundle.220ee61c.min.js b/assets/javascripts/bundle.220ee61c.min.js new file mode 100644 index 00000000..116072a1 --- /dev/null +++ b/assets/javascripts/bundle.220ee61c.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Ci=Object.create;var gr=Object.defineProperty;var Ri=Object.getOwnPropertyDescriptor;var ki=Object.getOwnPropertyNames,Ht=Object.getOwnPropertySymbols,Hi=Object.getPrototypeOf,yr=Object.prototype.hasOwnProperty,nn=Object.prototype.propertyIsEnumerable;var rn=(e,t,r)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))yr.call(t,r)&&rn(e,r,t[r]);if(Ht)for(var r of Ht(t))nn.call(t,r)&&rn(e,r,t[r]);return e};var on=(e,t)=>{var r={};for(var n in e)yr.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Ht)for(var n of Ht(e))t.indexOf(n)<0&&nn.call(e,n)&&(r[n]=e[n]);return r};var Pt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Pi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ki(t))!yr.call(e,o)&&o!==r&&gr(e,o,{get:()=>t[o],enumerable:!(n=Ri(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Ci(Hi(e)):{},Pi(t||!e||!e.__esModule?gr(r,"default",{value:e,enumerable:!0}):r,e));var sn=Pt((xr,an)=>{(function(e,t){typeof xr=="object"&&typeof an!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(xr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(O){return!!(O&&O!==document&&O.nodeName!=="HTML"&&O.nodeName!=="BODY"&&"classList"in O&&"contains"in O.classList)}function f(O){var Qe=O.type,De=O.tagName;return!!(De==="INPUT"&&s[Qe]&&!O.readOnly||De==="TEXTAREA"&&!O.readOnly||O.isContentEditable)}function c(O){O.classList.contains("focus-visible")||(O.classList.add("focus-visible"),O.setAttribute("data-focus-visible-added",""))}function u(O){O.hasAttribute("data-focus-visible-added")&&(O.classList.remove("focus-visible"),O.removeAttribute("data-focus-visible-added"))}function p(O){O.metaKey||O.altKey||O.ctrlKey||(a(r.activeElement)&&c(r.activeElement),n=!0)}function m(O){n=!1}function d(O){a(O.target)&&(n||f(O.target))&&c(O.target)}function h(O){a(O.target)&&(O.target.classList.contains("focus-visible")||O.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(O.target))}function v(O){document.visibilityState==="hidden"&&(o&&(n=!0),Y())}function Y(){document.addEventListener("mousemove",N),document.addEventListener("mousedown",N),document.addEventListener("mouseup",N),document.addEventListener("pointermove",N),document.addEventListener("pointerdown",N),document.addEventListener("pointerup",N),document.addEventListener("touchmove",N),document.addEventListener("touchstart",N),document.addEventListener("touchend",N)}function B(){document.removeEventListener("mousemove",N),document.removeEventListener("mousedown",N),document.removeEventListener("mouseup",N),document.removeEventListener("pointermove",N),document.removeEventListener("pointerdown",N),document.removeEventListener("pointerup",N),document.removeEventListener("touchmove",N),document.removeEventListener("touchstart",N),document.removeEventListener("touchend",N)}function N(O){O.target.nodeName&&O.target.nodeName.toLowerCase()==="html"||(n=!1,B())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),Y(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var cn=Pt(Er=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var u={next:function(){var p=c.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},s=function(){var c=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof c){var d=this;p.forEach(function(B,N){d.append(N,B)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(f,c){typeof f!="string"&&(f=String(f)),c&&typeof c!="string"&&(c=String(c));var u=document,p;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=c,u.head.appendChild(p);try{if(p.href.indexOf(c)!==0)throw new Error(p.href)}catch(O){throw new Error("URL unable to set base "+c+" due to "+O)}}var m=u.createElement("a");m.href=f,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=f,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,Y=!0,B=this;["append","delete","set"].forEach(function(O){var Qe=h[O];h[O]=function(){Qe.apply(h,arguments),v&&(Y=!1,B.search=h.toString(),Y=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var N=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==N&&(N=this.search,Y&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},s=i.prototype,a=function(f){Object.defineProperty(s,f,{get:function(){return this._anchorElement[f]},set:function(c){this._anchorElement[f]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(f){a(f)}),Object.defineProperty(s,"search",{get:function(){return this._anchorElement.search},set:function(f){this._anchorElement.search=f,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(s,{toString:{get:function(){var f=this;return function(){return f.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(f){this._anchorElement.href=f,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(f){this._anchorElement.pathname=f},enumerable:!0},origin:{get:function(){var f={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=f&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(f){},enumerable:!0},username:{get:function(){return""},set:function(f){},enumerable:!0}}),i.createObjectURL=function(f){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(f){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er)});var qr=Pt((Mt,Nr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Mt=="object"&&typeof Nr=="object"?Nr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Mt=="object"?Mt.ClipboardJS=r():t.ClipboardJS=r()})(Mt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return Ai}});var s=i(279),a=i.n(s),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(T){return!1}}var d=function(T){var E=p()(T);return m("cut"),E},h=d;function v(j){var T=document.documentElement.getAttribute("dir")==="rtl",E=document.createElement("textarea");E.style.fontSize="12pt",E.style.border="0",E.style.padding="0",E.style.margin="0",E.style.position="absolute",E.style[T?"right":"left"]="-9999px";var H=window.pageYOffset||document.documentElement.scrollTop;return E.style.top="".concat(H,"px"),E.setAttribute("readonly",""),E.value=j,E}var Y=function(T,E){var H=v(T);E.container.appendChild(H);var I=p()(H);return m("copy"),H.remove(),I},B=function(T){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},H="";return typeof T=="string"?H=Y(T,E):T instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(T==null?void 0:T.type)?H=Y(T.value,E):(H=p()(T),m("copy")),H},N=B;function O(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?O=function(E){return typeof E}:O=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},O(j)}var Qe=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},E=T.action,H=E===void 0?"copy":E,I=T.container,q=T.target,Me=T.text;if(H!=="copy"&&H!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&O(q)==="object"&&q.nodeType===1){if(H==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(H==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Me)return N(Me,{container:I});if(q)return H==="cut"?h(q):N(q,{container:I})},De=Qe;function $e(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?$e=function(E){return typeof E}:$e=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},$e(j)}function Ei(j,T){if(!(j instanceof T))throw new TypeError("Cannot call a class as a function")}function tn(j,T){for(var E=0;E0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof I.action=="function"?I.action:this.defaultAction,this.target=typeof I.target=="function"?I.target:this.defaultTarget,this.text=typeof I.text=="function"?I.text:this.defaultText,this.container=$e(I.container)==="object"?I.container:document.body}},{key:"listenClick",value:function(I){var q=this;this.listener=c()(I,"click",function(Me){return q.onClick(Me)})}},{key:"onClick",value:function(I){var q=I.delegateTarget||I.currentTarget,Me=this.action(q)||"copy",kt=De({action:Me,container:this.container,target:this.target(q),text:this.text(q)});this.emit(kt?"success":"error",{action:Me,text:kt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(I){return vr("action",I)}},{key:"defaultTarget",value:function(I){var q=vr("target",I);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(I){return vr("text",I)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(I){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return N(I,q)}},{key:"cut",value:function(I){return h(I)}},{key:"isSupported",value:function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof I=="string"?[I]:I,Me=!!document.queryCommandSupported;return q.forEach(function(kt){Me=Me&&!!document.queryCommandSupported(kt)}),Me}}]),E}(a()),Ai=Li},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,f){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(f))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof m=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return a(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(m))return c(m,d,h);if(s.nodeList(m))return u(m,d,h);if(s.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return a(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),s=f.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var f=this;function c(){f.off(i,c),s.apply(a,arguments)}return c._=s,this.on(i,c,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=a.length;for(f;f{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var rs=/["'&<>]/;Yo.exports=ns;function ns(e){var t=""+e,r=rs.exec(t);if(!r)return t;var n,o="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||a(m,d)})})}function a(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof et?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){a("next",m)}function u(m){a("throw",m)}function p(m,d){m(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function pn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Ee=="function"?Ee(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(s){return new Promise(function(a,f){s=e[i](s),o(a,f,s.done,s.value)})}}function o(i,s,a,f){Promise.resolve(f).then(function(c){i({value:c,done:a})},s)}}function C(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var It=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function Ve(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ie=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=Ee(s),f=a.next();!f.done;f=a.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var u=this.initialTeardown;if(C(u))try{u()}catch(v){i=v instanceof It?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=Ee(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{ln(h)}catch(v){i=i!=null?i:[],v instanceof It?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new It(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)ln(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ve(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ve(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Sr=Ie.EMPTY;function jt(e){return e instanceof Ie||e&&"closed"in e&&C(e.remove)&&C(e.add)&&C(e.unsubscribe)}function ln(e){C(e)?e():e.unsubscribe()}var Le={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Sr:(this.currentObservers=null,a.push(r),new Ie(function(){n.currentObservers=null,Ve(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new xn(r,n)},t}(F);var xn=function(e){ie(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Sr},t}(x);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ie(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,f=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Wt);var Sn=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Dt);var Oe=new Sn(wn);var M=new F(function(e){return e.complete()});function Vt(e){return e&&C(e.schedule)}function Cr(e){return e[e.length-1]}function Ye(e){return C(Cr(e))?e.pop():void 0}function Te(e){return Vt(Cr(e))?e.pop():void 0}function zt(e,t){return typeof Cr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Nt(e){return C(e==null?void 0:e.then)}function qt(e){return C(e[ft])}function Kt(e){return Symbol.asyncIterator&&C(e==null?void 0:e[Symbol.asyncIterator])}function Qt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function zi(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Yt=zi();function Gt(e){return C(e==null?void 0:e[Yt])}function Bt(e){return un(this,arguments,function(){var r,n,o,i;return $t(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,et(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,et(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,et(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Jt(e){return C(e==null?void 0:e.getReader)}function U(e){if(e instanceof F)return e;if(e!=null){if(qt(e))return Ni(e);if(pt(e))return qi(e);if(Nt(e))return Ki(e);if(Kt(e))return On(e);if(Gt(e))return Qi(e);if(Jt(e))return Yi(e)}throw Qt(e)}function Ni(e){return new F(function(t){var r=e[ft]();if(C(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function qi(e){return new F(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?A(function(o,i){return e(o,i,n)}):de,ge(1),r?He(t):Dn(function(){return new Zt}))}}function Vn(){for(var e=[],t=0;t=2,!0))}function pe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new x}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,f=a===void 0?!0:a;return function(c){var u,p,m,d=0,h=!1,v=!1,Y=function(){p==null||p.unsubscribe(),p=void 0},B=function(){Y(),u=m=void 0,h=v=!1},N=function(){var O=u;B(),O==null||O.unsubscribe()};return y(function(O,Qe){d++,!v&&!h&&Y();var De=m=m!=null?m:r();Qe.add(function(){d--,d===0&&!v&&!h&&(p=$r(N,f))}),De.subscribe(Qe),!u&&d>0&&(u=new rt({next:function($e){return De.next($e)},error:function($e){v=!0,Y(),p=$r(B,o,$e),De.error($e)},complete:function(){h=!0,Y(),p=$r(B,s),De.complete()}}),U(O).subscribe(u))})(c)}}function $r(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function z(e,t=document){let r=ce(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ce(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function tr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(ke(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),V(e===_e()),J())}function Xe(e){return{x:e.offsetLeft,y:e.offsetTop}}function Kn(e){return L(b(window,"load"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>Xe(e)),V(Xe(e)))}function rr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>rr(e)),V(rr(e)))}var Yn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!Wr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),va?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Wr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ba.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Gn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Jn=typeof WeakMap!="undefined"?new WeakMap:new Yn,Xn=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=ga.getInstance(),n=new La(t,r,this);Jn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Xn.prototype[e]=function(){var t;return(t=Jn.get(this))[e].apply(t,arguments)}});var Aa=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:Xn}(),Zn=Aa;var eo=new x,Ca=$(()=>k(new Zn(e=>{for(let t of e)eo.next(t)}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ye(e){return Ca.pipe(S(t=>t.observe(e)),g(t=>eo.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(()=>he(e)))),V(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var to=new x,Ra=$(()=>k(new IntersectionObserver(e=>{for(let t of e)to.next(t)},{threshold:0}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function sr(e){return Ra.pipe(S(t=>t.observe(e)),g(t=>to.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function ro(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=he(e),o=bt(e);return r>=o.height-n.height-t}),J())}var cr={drawer:z("[data-md-toggle=drawer]"),search:z("[data-md-toggle=search]")};function no(e){return cr[e].checked}function Ke(e,t){cr[e].checked!==t&&cr[e].click()}function Ue(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),V(t.checked))}function ka(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ha(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(V(!1))}function oo(){let e=b(window,"keydown").pipe(A(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:no("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),A(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!ka(n,r)}return!0}),pe());return Ha().pipe(g(t=>t?M:e))}function le(){return new URL(location.href)}function ot(e){location.href=e.href}function io(){return new x}function ao(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)ao(e,r)}function _(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)ao(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function so(){return location.hash.substring(1)}function Dr(e){let t=_("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Pa(e){return L(b(window,"hashchange"),e).pipe(l(so),V(so()),A(t=>t.length>0),X(1))}function co(e){return Pa(e).pipe(l(t=>ce(`[id="${t}"]`)),A(t=>typeof t!="undefined"))}function Vr(e){let t=matchMedia(e);return er(r=>t.addListener(()=>r(t.matches))).pipe(V(t.matches))}function fo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(V(e.matches))}function zr(e,t){return e.pipe(g(r=>r?t():M))}function ur(e,t={credentials:"same-origin"}){return ue(fetch(`${e}`,t)).pipe(fe(()=>M),g(r=>r.status!==200?Ot(()=>new Error(r.statusText)):k(r)))}function We(e,t){return ur(e,t).pipe(g(r=>r.json()),X(1))}function uo(e,t){let r=new DOMParser;return ur(e,t).pipe(g(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),X(1))}function pr(e){let t=_("script",{src:e});return $(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(g(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),R(()=>document.head.removeChild(t)),ge(1))))}function po(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function lo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(po),V(po()))}function mo(){return{width:innerWidth,height:innerHeight}}function ho(){return b(window,"resize",{passive:!0}).pipe(l(mo),V(mo()))}function bo(){return G([lo(),ho()]).pipe(l(([e,t])=>({offset:e,size:t})),X(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(ee("size")),o=G([n,r]).pipe(l(()=>Xe(e)));return G([r,t,o]).pipe(l(([{height:i},{offset:s,size:a},{x:f,y:c}])=>({offset:{x:s.x-f,y:s.y-c+i},size:a})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(s=>{let a=document.createElement("script");a.src=i,a.onload=s,document.body.appendChild(a)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,s,a,f,c)=>{if(s===`${this.url}`){let u=new ErrorEvent("error",{message:i,filename:s,lineno:a,colno:f,error:c});this.dispatchEvent(u),this.onerror&&this.onerror(u)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(` + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Chromium WebGL 测试

+

测试网站地址:https://webglsamples.org/aquarium/aquarium.html

+

直接打开即可,左侧数字是渲染的鱼的数量,数量越多越占性能

+

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/benchmark/coremark/index.html b/benchmark/coremark/index.html new file mode 100644 index 00000000..8ca56376 --- /dev/null +++ b/benchmark/coremark/index.html @@ -0,0 +1,1679 @@ + + + + + + + + + + + + + + + + + + + + + + coremark - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

coremark

+

摘要

+

CoreMark是一个综合基准,用于测量嵌入式系统中使用的中央处理器(CPU)的性能。它是在2009由eembc的shay gal-on开发的,旨在成为一个行业标准,取代过时的dehrystone基准。代码用C编写,包含以下算法:列表处理(增删改查和排序)、矩阵操作(公共矩阵操作)、状态机(确定输入流是否包含有效数字)和CRC。用户可以自由的下载Coremark,并移植到自己的平台上运行,随后就可以看到分数。

+

测试项介绍

+

文件介绍

+
├── barebones    --移植到裸机环境下需要修改的目录
+│   ├── core_portme.c       --移植的目标平台配置信息
+│   ├── core_portme.h       --计时以及板级初始化实现
+│   ├── core_portme.mak     --该子目录的makefile
+│   ├── cvt.c
+│   └── ee_printf.c         --打印函数串口发送实现
+├── core_list_join.c    --列表操作程序
+├── core_main.c         --主程序
+├── coremark.h          --项目配置与数据结构的定义头文件
+├── coremark.md5        
+├── core_matrix.c       --矩阵运算程序
+├── core_state.c        --状态机控制程序
+├── core_util.c         --CRC计算程序
+├── cygwin              --x86 cygwin和gcc 3.4(四核,双核和单核系统)的测试代码
+│   ├── core_portme.c
+│   ├── core_portme.h
+│   └── core_portme.mak
+├── freebsd             --以下同理,是在不同操作系统下的测试代码
+│   ├── ...
+├── LICENSE.md
+├── linux
+│   ├── ...
+├── linux64
+│   ├── ...
+├── macos
+│   ├── ...
+├── Makefile            
+├── README.md           --自述文件,CoreMark项目的基本介绍
+├── rtems
+│   ├── ...
+└── simple
+    ├── ...
+    └──
+
+

make 目标

+
    +
  • run - 默认目标,创建 run1.log 和 run2.log
  • +
  • run1.log - 用性能参数运行基准测试,并输出到 run1.log
  • +
  • run2.log - 用验证参数运行基准测试,并输出到 run2.log
  • +
  • run3.log - 用配置文件生成参数运行基准测试,并输出到 run3.log
  • +
  • compile - 编译基准测试可执行文件
  • +
  • link - 链接基准测试可执行文件
  • +
  • check - 测试可能未修改的源文件的 MD5
  • +
  • clean - 清理临时文件
  • +
+

编译/使用

+

根据 README 说法,只需要在 coremark 文件夹下执行 make 即可进行编译与测试。测试结果会出现在 Results 文件夹中,其中 run1.log 是测试结果。

+

测试计划

+

coremark 总体测试时间较短。 +计划同时测试 10 次取平均数值。

+

操作步骤

+
$ git clone https://github.com/eembc/coremark.git
+$ cd coremark
+$ make
+
+

测试结果

+
2K performance run parameters for coremark.
+CoreMark Size    : 666
+Total ticks      : 12915
+Total time (secs): 12.915000
+Iterations/Sec   : 8517.228029
+Iterations       : 110000
+Compiler version : GCC13.1.0
+Compiler flags   : -O2 -DPERFORMANCE_RUN=1  -lrt
+Memory location  : Please put data memory location here
+            (e.g. code in flash, data on heap etc)
+seedcrc          : 0xe9f5
+[0]crclist       : 0xe714
+[0]crcmatrix     : 0x1fd7
+[0]crcstate      : 0x8e3a
+[0]crcfinal      : 0x33ff
+Correct operation validated. See README.md for run and reporting rules.
+CoreMark 1.0 : 8517.228029 / GCC13.1.0 -O2 -DPERFORMANCE_RUN=1  -lrt / Heap
+
+
+

GCC 10.4 + xtheadc

+
make XCFLAGS="-march=rv64gv0p7_zfh_xtheadc -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns  -msignedness-cmpiv -fno-code-hoisting -mno-thread-jumps1 -mno-iv-adjust-addr-cost -mno-expand-split-imm"
+
+
2K performance run parameters for coremark.
+CoreMark Size    : 666
+Total ticks      : 15129
+Total time (secs): 15.129000
+Iterations/Sec   : 13219.644392
+Iterations       : 200000
+Compiler version : GCC10.4.0
+Compiler flags   : -O2 -march=rv64gv0p7_zfh_xtheadc -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns  -msignedness-cmpiv -fno-code-hoisting -mno-thread-jumps1 -mno-iv-adjust-addr-cost -mno-expand-split-imm -DPERFORMANCE_RUN=1  -lrt
+Memory location  : Please put data memory location here
+                        (e.g. code in flash, data on heap etc)
+seedcrc          : 0xe9f5
+[0]crclist       : 0xe714
+[0]crcmatrix     : 0x1fd7
+[0]crcstate      : 0x8e3a
+[0]crcfinal      : 0x4983
+Correct operation validated. See README.md for run and reporting rules.
+CoreMark 1.0 : 13219.644392 / GCC10.4.0 -O2 -march=rv64gv0p7_zfh_xtheadc -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns  -msignedness-cmpiv -fno-code-hoisting -mno-thread-jumps1 -mno-iv-adjust-addr-cost -mno-expand-split-imm -DPERFORMANCE_RUN=1  -lrt / Heap
+
+

GCC 13.1 + xthead matrix

+
make XCFLAGS="-march=rv64imafd_xtheadba_xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadfmv_xtheadint_xtheadmac_xtheadmemidx_xtheadmempair_xtheadsync -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns -fno-code-hoisting -mno-thread-jumps"
+
+
2K performance run parameters for coremark.
+CoreMark Size    : 666
+Total ticks      : 11897
+Total time (secs): 11.897000
+Iterations/Sec   : 9246.028411
+Iterations       : 110000
+Compiler version : GCC13.1.0
+Compiler flags   : -O2 -march=rv64imafd_xtheadba_xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadfmv_xtheadint_xtheadmac_xtheadmemidx_xtheadmempair_xtheadsync -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns -fno-code-hoisting -DPERFORMANCE_RUN=1  -lrt
+Memory location  : Please put data memory location here
+            (e.g. code in flash, data on heap etc)
+seedcrc          : 0xe9f5
+[0]crclist       : 0xe714
+[0]crcmatrix     : 0x1fd7
+[0]crcstate      : 0x8e3a
+[0]crcfinal      : 0x33ff
+Correct operation validated. See README.md for run and reporting rules.
+CoreMark 1.0 : 9246.028411 / GCC13.1.0 -O2 -march=rv64imafd_xtheadba_xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadfmv_xtheadint_xtheadmac_xtheadmemidx_xtheadmempair_xtheadsync -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns -fno-code-hoisting -DPERFORMANCE_RUN=1  -lrt / Heap
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/benchmark/glmark2/index.html b/benchmark/glmark2/index.html new file mode 100644 index 00000000..e5a99bde --- /dev/null +++ b/benchmark/glmark2/index.html @@ -0,0 +1,1486 @@ + + + + + + + + + + + + + + + + + + + + + + glmark2 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

glmark2

+

glmark2 是基于 OpenGL 2.0 以及 ES 2.0 的一个性能测试.

+

此处我们只使用 glmark2-es2 ,软件包已经预装在RevyOS中,用于 x11-glesv2 的测试.

+

th1520 只支持 glmark-es2.

+

准备步骤

+

开始之前我们需要调整芯片进入高性能模式,在终端中执行下述命令即可,需要使用 sudo 或者root账户.

+
echo performance >  /sys/devices/system/cpu/cpufreq/policy0/scaling_governor 
+
+cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq
+
+

如果在执行之后看到 "1848000" 数字,则表明已经调整至性能模式,可以继续向下操作.

+

开始运行

+

使用任意账户登陆系统,打开终端输入 glmark2-es2,需要将HDMI连接到显示器,请勿通过SSH连接执行.

+

输入命令后,桌面上会出现一个有图形活动的新窗口。

+

测试完成后,额外窗口会消失,分数会以 glmark2 Score: xxx 的形式输出在终端中。

+

测试示例:

+
debian@lpi4a:~/Desktop$ glmark2-es2
+=======================================================
+    glmark2 2021.12
+=======================================================
+    OpenGL Information
+    GL_VENDOR:      Imagination Technologies
+    GL_RENDERER:    PowerVR B-Series BXM-4-64
+    GL_VERSION:     OpenGL ES 3.2 build 1.17@6210866
+    Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=8
+    Surface Size:   800x600 windowed
+=======================================================
+[build] use-vbo=false: FPS: 513 FrameTime: 1.949 ms
+[build] use-vbo=true: FPS: 1367 FrameTime: 0.732 ms
+[texture] texture-filter=nearest: FPS: 1449 FrameTime: 0.690 ms
+[texture] texture-filter=linear: FPS: 1454 FrameTime: 0.688 ms
+[texture] texture-filter=mipmap: FPS: 1453 FrameTime: 0.688 ms
+[shading] shading=gouraud: FPS: 1172 FrameTime: 0.853 ms
+[shading] shading=blinn-phong-inf: FPS: 1180 FrameTime: 0.847 ms
+[shading] shading=phong: FPS: 1002 FrameTime: 0.998 ms
+[shading] shading=cel: FPS: 979 FrameTime: 1.021 ms
+[bump] bump-render=high-poly: FPS: 700 FrameTime: 1.429 ms
+[bump] bump-render=normals: FPS: 1354 FrameTime: 0.739 ms
+[bump] bump-render=height: FPS: 1320 FrameTime: 0.758 ms
+[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1059 FrameTime: 0.944 ms
+[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 381 FrameTime: 2.625 ms
+[pulsar] light=false:quads=5:texture=false: FPS: 1484 FrameTime: 0.674 ms
+[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 349 FrameTime: 2.865 ms
+[desktop] effect=shadow:windows=4: FPS: 736 FrameTime: 1.359 ms
+[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 161 FrameTime: 6.211 ms
+[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 173 FrameTime: 5.780 ms
+[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 242 FrameTime: 4.132 ms
+[ideas] speed=duration: FPS: 593 FrameTime: 1.686 ms
+[jellyfish] <default>: FPS: 572 FrameTime: 1.748 ms
+[terrain] <default>: FPS: 42 FrameTime: 23.810 ms
+[shadow] <default>: FPS: 619 FrameTime: 1.616 ms
+[refract] <default>: FPS: 82 FrameTime: 12.195 ms
+[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1539 FrameTime: 0.650 ms
+[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1238 FrameTime: 0.808 ms
+[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1535 FrameTime: 0.651 ms
+[function] fragment-complexity=low:fragment-steps=5: FPS: 1411 FrameTime: 0.709 ms
+[function] fragment-complexity=medium:fragment-steps=5: FPS: 1050 FrameTime: 0.952 ms
+[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1376 FrameTime: 0.727 ms
+[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1394 FrameTime: 0.717 ms
+[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1379 FrameTime: 0.725 ms
+=======================================================
+                                  glmark2 Score: 950 
+=======================================================
+
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/benchmark/images/chromium_webgl_1.png b/benchmark/images/chromium_webgl_1.png new file mode 100644 index 00000000..379bfeb7 Binary files /dev/null and b/benchmark/images/chromium_webgl_1.png differ diff --git a/benchmark/lmbench/index.html b/benchmark/lmbench/index.html new file mode 100644 index 00000000..26733d13 --- /dev/null +++ b/benchmark/lmbench/index.html @@ -0,0 +1,1755 @@ + + + + + + + + + + + + + + + + + + + + + + lmbench - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

lmbench for Lpi4A

+

软件版本

+
+

lmbench for revyOS

+
+

测试说明

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
带宽测评工具反应时间测评工具其他
读取缓存文件上下文切换\
拷贝内存网络:连接的建立,管道,TCP,UDP 和RPC hot potato\
读内存文件系统的建立和删除\
写内存进程创建处理器时钟比率计算
管道信号处理\
TCP上层的系统调用\
\内存读入反应时间\
+

测试准备

+

下载测试工具:

+
git clone https://github.com/revyos/lmbench3.git
+
+
+

该版本为已为 RevyOS 移植版本。

+
+

在开始测试前,需要先安装依赖:

+
sudo apt install gcc make libntirpc-dev -y
+
+

测试执行

+

执行命令进行编译,配置,并测试

+
cd lmbench3
+cd src
+make results
+
+

编译完成后会有以下选项提示需要设置:

+

以下不需要更改的项目直接回车,会自动设置默认值。

+

MULTIPLE COPIES [default 1]: 设置同时运行 lmbench 的份数,份数多会使 lmbench 运行缓慢,默认是 1,这里设置为默认值 1。

+
=====================================================================
+
+If you are running on an MP machine and you want to try running
+multiple copies of lmbench in parallel, you can specify how many here.
+
+Using this option will make the benchmark run 100x slower (sorry).
+
+NOTE:  WARNING! This feature is experimental and many results are 
+    known to be incorrect or random!
+
+MULTIPLE COPIES [default 1]: 
+=====================================================================
+
+

Job placement selection [default 1]: 作业调度控制方法,默认值是 1,表示允许作业调度,这里设置为默认值。

+
=====================================================================
+
+Options to control job placement
+1) Allow scheduler to place jobs
+2) Assign each benchmark process with any attendent child processes
+   to its own processor
+3) Assign each benchmark process with any attendent child processes
+   to its own processor, except that it will be as far as possible
+   from other processes
+4) Assign each benchmark and attendent processes to their own
+   processors
+5) Assign each benchmark and attendent processes to their own
+   processors, except that they will be as far as possible from
+   each other and other processes
+6) Custom placement: you assign each benchmark process with attendent
+   child processes to processors
+7) Custom placement: you assign each benchmark and attendent
+   processes to processors
+
+Note: some benchmarks, such as bw_pipe, create attendent child
+processes for each benchmark process.  For example, bw_pipe
+needs a second process to send data down the pipe to be read
+by the benchmark process.  If you have three copies of the
+benchmark process running, then you actually have six processes;
+three attendent child processes sending data down the pipes and 
+three benchmark processes reading data and doing the measurements.
+
+Job placement selection [default 1]: 
+=====================================================================
+
+

Memory: 设置测试内存大小,默认是 $MB , 即为程序计算出来的最大可测试内存,也可以手动定义测试值,这里设置为这里使用默认值。

+
=====================================================================
+
+Several benchmarks operate on a range of memory.  This memory should be
+sized such that it is at least 4 times as big as the external cache[s]
+on your system.   It should be no more than 80% of your physical memory.
+
+The bigger the range, the more accurate the results, but larger sizes
+take somewhat longer to run the benchmark.
+
+MB [default 686]: 
+Checking to see if you have 686 MB; please wait for a moment...
+686MB OK
+686MB OK
+686MB OK
+Hang on, we are calculating your cache line size.
+OK, it looks like your cache line is 64 bytes.
+
+=====================================================================
+
+

SUBSET (ALL|HARWARE|OS|DEVELOPMENT) [default all]: 要运行的测试集,包含 ALL/HARWARE/OS/DEVELOPMENT,默认选 all,这里选 all

+
=====================================================================
+
+lmbench measures a wide variety of system performance, and the full suite
+of benchmarks can take a long time on some platforms.  Consequently, we
+offer the capability to run only predefined subsets of benchmarks, one
+for operating system specific benchmarks and one for hardware specific
+benchmarks.  We also offer the option of running only selected benchmarks
+which is useful during operating system development.
+
+Please remember that if you intend to publish the results you either need
+to do a full run or one of the predefined OS or hardware subsets.
+
+SUBSET (ALL|HARWARE|OS|DEVELOPMENT) [default all]: 
+=====================================================================
+
+

FASTMEM [default no]: 内存 latency 测试,如果跳过该测试,则设置为 yes,如果不跳过则设置为 no,默认是 no,这里设置为默认值。

+
=====================================================================
+
+This benchmark measures, by default, memory latency for a number of
+different strides.  That can take a long time and is most useful if you
+are trying to figure out your cache line size or if your cache line size
+is greater than 128 bytes.
+
+If you are planning on sending in these results, please don't do a fast
+run.
+
+Answering yes means that we measure memory latency with a 128 byte stride.  
+
+FASTMEM [default no]: 
+=====================================================================
+
+

SLOWFS [default no]: 文件系统 latency 测试,如果跳过值设置为 yes,不跳过设置为 no,默认 no,这里设置为默认值。

+
=====================================================================
+
+This benchmark measures, by default, file system latency.  That can
+take a long time on systems with old style file systems (i.e., UFS,
+FFS, etc.).  Linux' ext2fs and Sun's tmpfs are fast enough that this
+test is not painful.
+
+If you are planning on sending in these results, please don't do a fast
+run.
+
+If you want to skip the file system latency tests, answer "yes" below.
+
+SLOWFS [default no]: 
+=====================================================================
+
+

DISKS [default none]: 硬盘带宽和 seek time,需要设置测试硬盘的盘符,例如 /dev/sda,默认不测试(默认 none ),这里设置为默认值。

+
=====================================================================
+
+This benchmark can measure disk zone bandwidths and seek times.  These can
+be turned into whizzy graphs that pretty much tell you everything you might
+need to know about the performance of your disk.  
+
+This takes a while and requires read access to a disk drive.  
+Write is not measured, see disk.c to see how if you want to do so.
+
+If you want to skip the disk tests, hit return below.
+
+If you want to include disk tests, then specify the path to the disk
+device, such as /dev/sda.  For each disk that is readable, you'll be
+prompted for a one line description of the drive, i.e., 
+
+    Iomega IDE ZIP
+or
+    HP C3725S 2GB on 10MB/sec NCR SCSI bus
+
+DISKS [default none]: 
+=====================================================================
+
+

REMOTE [default none]: 网络测试,需要 2 台机器并设置 rsh,是测试机器能 rsh 访问另一台,默认不测试(默认 none ),这里设置为默认值。

+
=====================================================================
+
+If you are running on an idle network and there are other, identically
+configured systems, on the same wire (no gateway between you and them),
+and you have rsh access to them, then you should run the network part
+of the benchmarks to them.  Please specify any such systems as a space
+separated list such as: ether-host fddi-host hippi-host.
+
+REMOTE [default none]: 
+=====================================================================
+
+

Processor mhz [default 999 MHz, 1.0010 nanosec clock]: 测试 cpu,默认 $MHZ,即为程序判断出的频率,也可以根据情况自己设定,例如 3500,单位 MHz,这里设置为默认值。

+
=====================================================================
+
+Calculating mhz, please wait for a moment...
+I think your CPU mhz is 
+
+    999 MHz, 1.0010 nanosec clock
+
+but I am frequently wrong.  If that is the wrong Mhz, type in your
+best guess as to your processor speed.  It doesn't have to be exact,
+but if you know it is around 800, say 800.  
+
+Please note that some processors, such as the P4, have a core which
+is double-clocked, so on those processors the reported clock speed
+will be roughly double the advertised clock rate.  For example, a
+1.8GHz P4 may be reported as a 3592MHz processor.
+
+Processor mhz [default 999 MHz, 1.0010 nanosec clock]: 
+=====================================================================
+
+

FSDIR [default /usr/tmp]: 临时目录用来存放测试文件,可以自己设定,默认 /usr/tmp,这里设置为默认值。

+
=====================================================================
+
+We need a place to store a 686 Mbyte file as well as create and delete a
+large number of small files.  We default to /usr/tmp.  If /usr/tmp is a
+memory resident file system (i.e., tmpfs), pick a different place.
+Please specify a directory that has enough space and is a local file
+system.
+
+FSDIR [default /usr/tmp]: 
+=====================================================================
+
+

Status output file [default /dev/tty]: 测试输出信息文件存放目录,可以自己设定,默认 /dev/tty

+
=====================================================================
+
+lmbench outputs status information as it runs various benchmarks.
+By default this output is sent to /dev/tty, but you may redirect
+it to any file you wish (such as /dev/null...).
+
+Status output file [default /dev/tty]: 
+=====================================================================
+
+

Mail results [default yes]: 是否将测试结果邮件发出来,默认是 yes,这里设置为 no

+
=====================================================================
+
+There is a database of benchmark results that is shipped with new
+releases of lmbench.  Your results can be included in the database
+if you wish.  The more results the better, especially if they include
+remote networking.  If your results are interesting, i.e., for a new
+fast box, they may be made available on the lmbench web page, which is
+
+    http://www.bitmover.com/lmbench
+
+Mail results [default yes]: no
+OK, no results mailed.
+=====================================================================
+
+

以上项目设置完成后,开始自动执行测试。

+

测试结果

+

测试说明

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/benchmark/p7zip/index.html b/benchmark/p7zip/index.html new file mode 100644 index 00000000..fa417b5f --- /dev/null +++ b/benchmark/p7zip/index.html @@ -0,0 +1,1458 @@ + + + + + + + + + + + + + + + + + + + + + + p7zip - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

p7zip

+

p7zip 测试是用于测试系统解压性能,通过数据直观评估性能,以下是运行 7pzip 测试的操作步骤

+

安装 7zip

+

首先需要在 RevyOS 中 安装 p7zip

+
debian@lpi4a:~/Desktop$ sudo apt update
+debian@lpi4a:~/Desktop$ sudo apt install p7zip-full
+
+

执行性能测试

+

进行 p7zip 测试需要在终端中输入以下命令来执行:

+
debian@lpi4a:~/Desktop$ 7z b
+
+

系统会开始进行测试然后输出性能数据。

+

通过以上步骤,可以在 RevyOS 上安装并测试 7zip 的性能。

+

以下是测试结果参考,使用镜像版本为RevyOS2023121016g版本

+
debian@lpi4a:~/Desktop$ 7z b
+
+7-Zip 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
+p7zip Version 16.02 (locale=C.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs LE)
+
+LE
+CPU Freq: - 64000000 64000000 - - - - - -
+
+RAM size:   15739 MB,  # CPU hardware threads:   4
+RAM usage:    882 MB,  # Benchmark threads:      4
+
+                       Compressing  |                  Decompressing
+Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
+         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS
+
+22:       3252   303   1045   3164  |      75268   394   1628   6422
+23:       3092   307   1025   3151  |      74514   399   1617   6447
+24:       3021   318   1022   3249  |      72017   398   1588   6322
+25:       2945   320   1050   3363  |      67801   395   1529   6034
+----------------------------------  | ------------------------------
+Avr:             312   1036   3232  |              396   1591   6306
+Tot:             354   1313   4769
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/benchmark/reboot/index.html b/benchmark/reboot/index.html new file mode 100644 index 00000000..8492f14d --- /dev/null +++ b/benchmark/reboot/index.html @@ -0,0 +1,1479 @@ + + + + + + + + + + + + + + + + + + + + + + reboot-test - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

重启测试

+

摘要

+

使用脚本对整机进行重启测试。

+

测试项说明

+

测试机器重启会不会出现死机等问题。

+

测试计划

+

进行重启测试 500 次。

+

操作步骤

+

在 /lib/system/system 下创建名为 cycletest.service_ 重启脚本:

+
[Unit]
+Description=Reboots unit after 30s
+
+[Service]
+StandardOutput=syslog+console
+ExecStart=/bin/sh -c "\
+test -f /cycle-count || echo 0 > /cycle-count;\
+echo 'starting cycletest';\
+sleep 30;\
+expr `cat /cycle-count` + 1 > /cycle-count;\
+systemctl reboot;\
+"
+
+[Install]
+WantedBy=multi-user.target
+
+

后根据以下指令安装并开始测试:

+
systemctl daemon-reload
+systemctl enable cycletest.service (enable the service to start on reboot)
+systemctl start cycletest.service (start the service, should reboot in 30s)
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/benchmark/stream/index.html b/benchmark/stream/index.html new file mode 100644 index 00000000..c126b715 --- /dev/null +++ b/benchmark/stream/index.html @@ -0,0 +1,1466 @@ + + + + + + + + + + + + + + + + + + + + + + stream - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Stream

+

使用说明

+

STREAM 基准测试是一个简单的综合基准测试程序,它测量可持续内存带宽(以 MB/s 为单位)和简单向量内核的相应计算速率。

+

stream 仅有单个文件,在进行测试时只需要对 stream.c 进行编译即可:

+
git clone <https://github.com/microseyuyu/STREAM.git>
+cd STREAM
+gcc -O3 -fopenmp -DN=2000000 -DNTIMES=10 stream.c -o stream
+export OMP_NUM_THREADS=8
+./stream
+
+

参数说明:

+
    +
  • -O3:指定最高编译优化级别,即 3。
  • +
  • fopenmp:启用OpenMP,适应多处理器环境,更能得到内存带宽实际最大值。开启后,程序默认运行线程为CPU线程数
  • +
+

DN=2000000:指定测试数组a[]、b[]、c[]的大小(Array size)。该值对测试结果影响较大(5.9版本默认值2000000,。若stream.c为5.10版本,参数名变为-DSTREAM_ARRAY_SIZE,默认值10000000)。注意:必须设置测试数组大小远大于CPU 最高级缓存(一般为L3 Cache)的大小,否则就是测试CPU缓存的吞吐性能,而非内存吞吐性能。 +- -DNTIMES=10:执行的次数,并从这些结果中选最优值。 +- OMP_NUM_THREADS=8 线程数量。

+

参考结果:

+
debian@lpi4a:~/Desktop/STREAM$ ./stream
+-------------------------------------------------------------
+STREAM version $Revision: 5.10 $
+-------------------------------------------------------------
+This system uses 8 bytes per array element.
+-------------------------------------------------------------
+*****  WARNING: ******
+      It appears that you set the preprocessor variable N when compiling this code.
+      This version of the code uses the preprocesor variable STREAM_ARRAY_SIZE to control the array size
+      Reverting to default value of STREAM_ARRAY_SIZE=10000000
+*****  WARNING: ******
+Array size = 10000000 (elements), Offset = 0 (elements)
+Memory per array = 76.3 MiB (= 0.1 GiB).
+Total memory required = 228.9 MiB (= 0.2 GiB).
+Each kernel will be executed 10 times.
+ The *best* time for each kernel (excluding the first iteration)
+ will be used to compute the reported bandwidth.
+-------------------------------------------------------------
+Number of Threads requested = 8
+Number of Threads counted = 8
+-------------------------------------------------------------
+Your clock granularity/precision appears to be 1 microseconds.
+Each test below will take on the order of 21622 microseconds.
+   (= 21622 clock ticks)
+Increase the size of the arrays if this shows that
+you are not getting at least 20 clock ticks per test.
+-------------------------------------------------------------
+WARNING -- The above is only a rough guideline.
+For best results, please be sure you know the
+precision of your system timer.
+-------------------------------------------------------------
+Function    Best Rate MB/s  Avg time     Min time     Max time
+Copy:            8364.2     0.019258     0.019129     0.019508
+Scale:           8291.0     0.019572     0.019298     0.020162
+Add:             6223.6     0.038835     0.038563     0.040011
+Triad:           6222.5     0.038776     0.038570     0.039470
+-------------------------------------------------------------
+Solution Validates: avg error less than 1.000000e-13 on all three arrays
+-------------------------------------------------------------
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/build/debian/Debian\350\275\257\344\273\266\345\214\205\346\236\204\345\273\272\346\265\201\347\250\213/index.html" "b/build/debian/Debian\350\275\257\344\273\266\345\214\205\346\236\204\345\273\272\346\265\201\347\250\213/index.html" new file mode 100644 index 00000000..70ea9abd --- /dev/null +++ "b/build/debian/Debian\350\275\257\344\273\266\345\214\205\346\236\204\345\273\272\346\265\201\347\250\213/index.html" @@ -0,0 +1,1537 @@ + + + + + + + + + + + + + + + + + + + + + + Debian 软件包构建流程 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Debian 软件包构建流程

+

宿主 debian

+
# qemu-user 下编译
+sudo apt update
+sudo apt install -y \
+    sbuild buildd qemu-system-misc qemu-user-static binfmt-support \
+    ca-certificates apt-transport-https devscripts mmdebstrap
+
+# native
+sudo apt install -y \
+    sbuild buildd ca-certificates apt-transport-https devscripts mmdebstrap
+
+# 修正宿主的debian-ports证书相关问题 现阶段可能不需要了
+wget https://mirror.sjtu.edu.cn/debian/pool/main/d/debian-ports-archive-keyring/debian-ports-archive-keyring_2023.02.01_all.deb
+sudo dpkg -i ./debian-ports-archive-keyring_2023.02.01_all.deb
+
+
+# sbuild 增加当前用户免root
+sudo sbuild-adduser $USER
+
+

创建打包环境

+

revyos-c910v

+
export SUFFIX=revyos-c910v-sbuild
+sudo sbuild-createchroot --debootstrap=debootstrap --arch=riscv64 \
+    --chroot-suffix=-$SUFFIX \
+    --keyring='' \
+    --no-deb-src \
+    --include=debian-ports-archive-keyring,ca-certificates,apt-transport-https,eatmydata \
+    --extra-repository="deb [trusted=yes] https://mirror.iscas.ac.cn/revyos/revyos-c910v/ revyos-c910v main contrib non-free" \
+    --extra-repository="deb [trusted=yes] https://mirror.iscas.ac.cn/revyos/revyos-addons/ revyos-addons main" \
+    sid /srv/chroot/sid-riscv64-$SUFFIX \
+    https://mirror.iscas.ac.cn/revyos/revyos-base/
+
+# 修正环境相关问题
+sudo sed -i 's/deb http/deb [trusted=yes] http/g' /srv/chroot/sid-riscv64-$SUFFIX/etc/apt/sources.list
+sudo rm -rf /srv/chroot/sid-riscv64-$SUFFIX/var/lib/apt/lists/*
+echo "command-prefix=eatmydata" | sudo tee -a /etc/schroot/chroot.d/sid-riscv64-$SUFFIX-*
+
+# 调整source顺序 - 目的是同版本使用c910v仓库的
+# 编辑sources.list 确保以下顺序
+deb [trusted=yes] https://mirror.iscas.ac.cn/revyos/revyos-c910v/ revyos-c910v main contrib non-free
+deb [trusted=yes] https://mirror.iscas.ac.cn/revyos/revyos-addons/ revyos-addons main
+deb [trusted=yes] https://mirror.iscas.ac.cn/revyos/revyos-base/ sid main contrib non-free non-free-firmware
+
+

构建命令

+

revyos-c910v

+
sbuild --arch=riscv64 -d sid -c sid-riscv64-revyos-c910v-sbuild xxx.dsc
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/debian/enable_optimization_gcc/index.html b/build/debian/enable_optimization_gcc/index.html new file mode 100644 index 00000000..dcd2abd2 --- /dev/null +++ b/build/debian/enable_optimization_gcc/index.html @@ -0,0 +1,1473 @@ + + + + + + + + + + + + + + + + + + + + + + 如何启用优化GCC - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + +

如何启用 T-Head 优化 GCC

+

实验性 feature 如果发现问题可以进行issue申报

+
# 增加优化源
+sudo sed -i '1ideb https://mirror.iscas.ac.cn/revyos/revyos-c910v/ revyos-c910v main' /etc/apt/sources.list
+# 更新软件
+sudo apt update && sudo apt upgrade -y
+# 安装 gcc-10/gcc-13
+sudo apt install -y build-essential gcc-13 g++-13
+# 重启避免其他问题
+sudo reboot
+
+

测试 gcc-10 (gcc10.4 启用xtheadc+v0p7)

+
gcc -v
+Using built-in specs.
+COLLECT_GCC=gcc
+COLLECT_LTO_WRAPPER=/usr/lib/gcc/riscv64-linux-gnu/10/lto-wrapper
+Target: riscv64-linux-gnu
+Configured with: ../src/configure -v --with-pkgversion='Debian 10.4.0-8revyos2.3' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=riscv64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libsanitizer --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --disable-multilib --with-arch=rv64gcv0p7_zfh_xtheadc --with-abi=lp64d --enable-checking=release --build=riscv64-linux-gnu --host=riscv64-linux-gnu --target=riscv64-linux-gnu
+Thread model: posix
+Supported LTO compression algorithms: zlib zstd
+gcc version 10.4.0 (Debian 10.4.0-8revyos2.3)
+
+

测试 gcc-13 (gcc13.2 启用xthead extension)

+
gcc-13 -v
+Using built-in specs.
+COLLECT_GCC=gcc-13
+COLLECT_LTO_WRAPPER=/usr/libexec/gcc/riscv64-linux-gnu/13/lto-wrapper
+Target: riscv64-linux-gnu
+Configured with: ../src/configure -v --with-pkgversion='Debian 13.2.0-1revyos1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=riscv64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --disable-multilib --with-arch=rv64gc_zfh_xtheadba_xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadfmv_xtheadint_xtheadmac_xtheadmemidx_xtheadmempair_xtheadsync --with-abi=lp64d --enable-checking=release --build=riscv64-linux-gnu --host=riscv64-linux-gnu --target=riscv64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=16
+Thread model: posix
+Supported LTO compression algorithms: zlib zstd
+gcc version 13.2.0 (Debian 13.2.0-1revyos1)
+
+

gcc-10/gcc-13 区别

+

除了v0p7 其他优化都可以用 gcc-13 代替 gcc-10

+

后者的优化可以主线报问题 是已经主线化的功能

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/build/debian/\347\274\226\350\257\221\345\231\250\347\233\270\345\205\263\350\257\264\346\230\216/index.html" "b/build/debian/\347\274\226\350\257\221\345\231\250\347\233\270\345\205\263\350\257\264\346\230\216/index.html" new file mode 100644 index 00000000..9b11f3bc --- /dev/null +++ "b/build/debian/\347\274\226\350\257\221\345\231\250\347\233\270\345\205\263\350\257\264\346\230\216/index.html" @@ -0,0 +1,1568 @@ + + + + + + + + + + + + + + + + + + + + + + 编译器相关说明 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

编译器相关说明

+

RevyOS 会预制相关优化编译器 基本支持rv64gc

+

常规扩展

+ + + + + + + + + + + + + + + + + + + + + + + +
支持的优化gcc-10gcc-13clang-17
Zfh
v0p7
+

THead 厂商扩展

+

xthead 当前版本 v2.2

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
支持的优化1gcc-102gcc-13.2clang-17
XTheadCmo
XTheadSync
XTheadBa
XTheadBb
XTheadBs
XTheadCondMov
XTheadMemIdx
XTheadMemPair
XTheadFMemIdx
XTheadMac
XTheadFmv
XTheadInt
XTHeadVdot3
+

注:

+
    +
  1. gcc-11/gcc-12/clang-14/clang15/clang16 xthead 扩展太少或无 所以未列出
  2. +
  3. gcc-10 使用 xtheadc 覆盖所有的扩展 gcc-10 使用了 thead-gcc 的源码
  4. +
  5. XTHeadVdot c910v/c920 不支持
  6. +
+

参考文档

+ + + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/build/other/gcc\347\274\226\350\257\221\350\275\257\344\273\266\350\257\264\346\230\216/index.html" "b/build/other/gcc\347\274\226\350\257\221\350\275\257\344\273\266\350\257\264\346\230\216/index.html" new file mode 100644 index 00000000..32583817 --- /dev/null +++ "b/build/other/gcc\347\274\226\350\257\221\350\275\257\344\273\266\350\257\264\346\230\216/index.html" @@ -0,0 +1,1472 @@ + + + + + + + + + + + + + + + + + + + + + + gcc 编译软件软件说明 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

gcc build programs 说明

+

安装gcc

+

首先确保安装gcc:

+
sudo apt update
+sudo apt install gcc
+
+

运行程序

+

下面以最简单的 'hello,world' 程序为例演示如何编译并运行:

+

编译以下内容并命名为 hello.c:

+
#include <stdio.h>
+
+int main()
+{
+        printf("hello, world\n");
+        return 0;
+}
+
+

编译并执行:

+
debian@lpi4a:~/test$ gcc -g hello.c -o hello
+
+debian@lpi4a:~/test$ ./hello
+hello, world
+
+
+

g++ build programs 说明

+

首先确保安装g++:

+
sudo apt update
+sudo apt install g++
+
+

运行程序

+

下面以最简单的 'hello,world' 程序为例演示如何编译并运行:

+

编译以下内容并命名为 hello.cpp:

+
#include <iostream>
+using namespace std;
+
+int main()
+{
+    cout << "Hello, World!\n";
+    return 0;
+}
+
+
+

编译并执行:

+
debian@lpi4a:~/test$ g++ -g hello.cpp -o hello
+debian@lpi4a:~/test$ ./hello
+Hello, World!
+
+

以上就是gcc/g++ 编译程序并运行的最简单实例,更复杂的应用案例可以参考相应的 +系统编程手册。

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/build/other/manuel_build_kernel/index.html b/build/other/manuel_build_kernel/index.html new file mode 100644 index 00000000..12f73986 --- /dev/null +++ b/build/other/manuel_build_kernel/index.html @@ -0,0 +1,1410 @@ + + + + + + + + + + + + + + + + + + + + + + 手动编译内核 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

手动编译内核

+

内核工具链下载地址:

+

https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1663142514282/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1-20220906.tar.gz

+

这里假设编译环境为 UbuntuDebian

+

安装依赖:

+
sudo apt install -y gdisk dosfstools g++-12-riscv64-linux-gnu build-essential libncurses-dev gawk flex bison openssl libssl-dev tree dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf device-tree-compiler
+
+

解压工具链(这里解压到/opt):

+
tar -xvf Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1-20220906.tar.gz -C /opt
+
+

设置环境变量,将工具链加入环境变量中(假设工具链放在/opt中):

+
export PATH="/opt/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1/bin:$PATH"
+export CROSS_COMPILE=riscv64-unknown-linux-gnu-
+export ARCH=riscv
+
+

使用git下载内核代码:

+
# 内核仓库
+git clone https://github.com/revyos/thead-kernel.git
+
+

编译内核:

+
# 创建安装目标目录
+mkdir rootfs && mkdir rootfs/boot
+
+# 目录创建完成后,目录结构应该看起来是这样:
+# .. << 当前工作路径
+# |-- rootfs
+#     |-- boot
+# |-- thead-kernel
+#     |-- ...
+
+# 进入内核代码目录,开始构建
+cd thead-kernel
+make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv revyos_defconfig
+make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv -j$(nproc)
+make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv -j$(nproc) dtbs
+sudo make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv INSTALL_MOD_PATH=../rootfs/ modules_install -j$(nproc)
+sudo make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv INSTALL_PATH=../rootfs/boot zinstall -j$(nproc)
+# 构建perf(如果需要的话)
+make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv LDFLAGS=-static NO_LIBELF=1 NO_JVMTI=1 VF=1 -C tools/perf/
+sudo cp -v tools/perf/perf ../rootfs/sbin/perf-thead
+# 安装内核到安装目标目录
+sudo cp -v arch/riscv/boot/Image ../rootfs/boot/
+# 安装设备树到安装目标目录
+sudo cp -v arch/riscv/boot/dts/thead/light-lpi4a.dtb ../rootfs/boot/
+sudo cp -v arch/riscv/boot/dts/thead/light-lpi4a-dsi0-hdmi.dtb ../rootfs/boot/
+
+

之后只需要把rootfs中内容拷贝或覆盖到对应目录即可,注意内核Image和内核module目录一定要对应,不然会因缺失内核模块导致外设功能失效。

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/build/other/thead-qemu\347\274\226\350\257\221\346\265\201\347\250\213/index.html" "b/build/other/thead-qemu\347\274\226\350\257\221\346\265\201\347\250\213/index.html" new file mode 100644 index 00000000..b3bf01f6 --- /dev/null +++ "b/build/other/thead-qemu\347\274\226\350\257\221\346\265\201\347\250\213/index.html" @@ -0,0 +1,1401 @@ + + + + + + + + + + + + + + + + + + + + + + T-Head QEMU 编译流程 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

T-Head QEMU 编译流程

+

C910V强制cpu指定补丁

+
From 5164bca5a4bcde4534dc1a9aa3a7f619719874cf Mon Sep 17 00:00:00 2001
+From: Han Gao <gaohan@iscas.ac.cn>
+Date: Sun, 23 Apr 2023 22:11:35 +0800
+Subject: [PATCH] qemu-user-riscv64 default cpu is c910v
+
+Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
+---
+ linux-user/riscv/target_elf.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/linux-user/riscv/target_elf.h b/linux-user/riscv/target_elf.h
+index 9dd65652ee45..3195cfa71408 100644
+--- a/linux-user/riscv/target_elf.h
++++ b/linux-user/riscv/target_elf.h
+@@ -9,7 +9,7 @@
+ #define RISCV_TARGET_ELF_H
+ static inline const char *cpu_get_model(uint32_t eflags)
+ {
+-    /* TYPE_RISCV_CPU_ANY */
+-    return "any";
++    /* TYPE_RISCV_CPU_C910V */
++    return "c910v";
+ }
+ #endif
+
+

编译流程

+
./configure \
+  --prefix=$HOME/qemu-install \
+  --static \
+  --target-list=riscv64-linux-user \
+  --disable-system \
+  --disable-pie \
+  --interp-prefix=/etc/qemu-binfmt/%M
+
+make -j20
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/build/\346\236\204\345\273\272\346\226\207\346\241\243/index.html" "b/build/\346\236\204\345\273\272\346\226\207\346\241\243/index.html" new file mode 100644 index 00000000..93e214c4 --- /dev/null +++ "b/build/\346\236\204\345\273\272\346\226\207\346\241\243/index.html" @@ -0,0 +1,1345 @@ + + + + + + + + + + + + + + + + + + 构建文档 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

构建文档

+

这里描述了 RevyOS 相关的构建文档

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/changelog/ahead/20230802/index.html b/changelog/ahead/20230802/index.html new file mode 100644 index 00000000..f45c48a6 --- /dev/null +++ b/changelog/ahead/20230802/index.html @@ -0,0 +1,1434 @@ + + + + + + + + + + + + + + + + + + + + + + 20230802 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20230802

+

测试版镜像

+

基于 lpi4a 20230614 版本 +增加 ahead 支持 混合新 20230820 改动

+

下载地址

+

https://mirror.iscas.ac.cn/revyos/extra/images/beagle/test/20230802/

+

其余参见

+ + + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/changelog/lpi4a/20230412/index.html b/changelog/lpi4a/20230412/index.html new file mode 100644 index 00000000..eebbea8c --- /dev/null +++ b/changelog/lpi4a/20230412/index.html @@ -0,0 +1,1530 @@ + + + + + + + + + + + + + + + + + + + + + + 20230412 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20230412

+ +

系统版本

+

RevyOS 20230412 版本

+

桌面环境相关

+
    +
  • 默认桌面环境为xfce4桌面
  • +
  • 使用pulseaudio作为音频服务
  • +
+

支持应用相关

+
    +
  • LibreOffice:7.5.2 (7.5.2~rc2-1revyos1)
  • +
  • GIMP:2.10.34 (2.10.34-1)
  • +
  • VLC:3.0.18 (3.0.18-2)
  • +
  • Firefox:111.0 (111.0-1revyos1)
  • +
  • xfce4: 4.18
  • +
  • Debian GCC:13 (13-20230320-1)
  • +
  • Python3:3.11.2 (3.11.2-1+b1)
  • +
  • Go:1.19.8 (1.19.8-2)
  • +
  • Rust:1.65.0 (1.65.0+dfsg1-1~exp3)
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113 (5.10.113-g7b352f5ac2ba)
  • +
+

硬件相关

+
    +
  • CPU主频最高为1.84Ghz
  • +
  • 支持 HDMI 输出
  • +
  • 支持 WIFI/BT 模块 RTL8723DS
  • +
+

系统服务

+
    +
  • 使用 network-manager 作为网络管理器
  • +
  • 预装 systemd-timesyncd 作为NTP服务,联网后可以自动同步时间
  • +
+

当前版本存在问题

+
    +
  • 因 Wifi/BT 模块蓝牙部分存在硬件问题,系统暂时没有蓝牙支持
  • +
  • 需要手动安装 wpasupplicant 才可连接无线网
  • +
  • xfce声音控制面板无法显示声音设备
  • +
  • 系统桌面不支持GPU硬件加速
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/changelog/lpi4a/20230425/index.html b/changelog/lpi4a/20230425/index.html new file mode 100644 index 00000000..0d8a3002 --- /dev/null +++ b/changelog/lpi4a/20230425/index.html @@ -0,0 +1,1549 @@ + + + + + + + + + + + + + + + + + + + + + + 20230425 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+ + + +
+
+ + + + + + + +

20230425

+ +

系统版本

+

RevyOS 20230425 版本

+

桌面环境相关

+
    +
  • 默认桌面环境为xfce4桌面
  • +
  • 使用pulseaudio作为音频服务
  • +
  • 使用wpasupplicant作为无线网络服务
  • +
+

支持应用相关

+
    +
  • LibreOffice:7.5.2 (7.5.2~rc2-1revyos1)
  • +
  • GIMP:2.10.34 (2.10.34-1)
  • +
  • VLC:3.0.18 (3.0.18-2)
  • +
  • Firefox:111.0 (111.0-1revyos1)
  • +
  • xfce4: 4.18
  • +
  • Debian GCC:13 (13-20230320-1)
  • +
  • Python3:3.11.2 (3.11.2-1+b1)
  • +
  • Go:1.19.8 (1.19.8-2)
  • +
  • Rust:1.65.0 (1.65.0+dfsg1-1~exp3)
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113 (5.10.113-g7b352f5ac2ba)
  • +
+

硬件相关

+
    +
  • CPU主频最高为1.84Ghz
  • +
  • 支持 HDMI 输出
  • +
  • 支持WIFI/BT模块RTL8723DS
  • +
+

系统服务

+
    +
  • 使用 network-manager 作为网络管理器
  • +
  • 预装 systemd-timesyncd 作为NTP服务,联网后可以自动同步时间
  • +
+

当前版本存在问题

+
    +
  • 因 Wifi/BT 模块蓝牙部分存在硬件问题,系统暂时没有蓝牙支持
  • +
  • 字符界面终端键盘输入的内容显示滞后
  • +
+

已修复的问题

+
    +
  • xfce声音控制面板无法显示声音设备
  • +
  • 系统桌面不支持GPU硬件加速
  • +
  • 需要手动安装 wpasupplicant 才可连接无线网
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/changelog/lpi4a/20230511/index.html b/changelog/lpi4a/20230511/index.html new file mode 100644 index 00000000..fad854ac --- /dev/null +++ b/changelog/lpi4a/20230511/index.html @@ -0,0 +1,1549 @@ + + + + + + + + + + + + + + + + + + + + + + 20230511 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+ + + +
+
+ + + + + + + +

20230511

+ +

系统版本

+

RevyOS 20230511 版本

+

桌面环境相关

+

添加了gnome桌面支持

+
    +
  • 支持gnome 桌面
  • +
  • 支持xfce4 桌面
  • +
+

支持应用相关

+
    +
  • GIMP:2.10.34 (2.10.34-1)
  • +
  • VLC:3.0.18 (3.0.18-2)
  • +
  • Firefox:111.0 (111.0-1revyos1)
  • +
  • GNOME: 42.4 (预装在 gnome版本)
  • +
  • xfce4: 4.18 (预装在 xfce版本)
  • +
  • Python3:3.11.2 (3.11.2-1+b1)
  • +
  • 未预装 Go:1.19.8 (1.19.8-2)
  • +
  • 未预装 Rust:1.65.0 (1.65.0+dfsg1-1~exp3)
  • +
  • 未预装 GCC:13 (13.1.0)
  • +
  • 未支持 chromium(计划推进中)
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113 (5.10.113-gbb4691fe5572)
  • +
  • 打开了 iotop 相关选项
  • +
+

硬件相关

+
    +
  • CPU主频最高为1.84Ghz
  • +
  • 支持 HDMI 输出
  • +
  • 支持 WIFI/BT 模块RTL8723DS
  • +
  • 加入风扇调速功能,风扇转速随CPU温度调整
  • +
+

系统服务

+
    +
  • 添加了查询版本时间戳功能,在终端输入'cat /etc/revyos-release' 即可获取
  • +
  • 使用 network-manager 作为网络管理器
  • +
  • 预装 systemd-timesyncd 作为NTP服务,联网后可以自动同步时间
  • +
+

当前版本存在问题

+
    +
  • 因 Wifi/BT 模块蓝牙部分存在硬件问题,系统暂时没有蓝牙支持
  • +
  • 字符界面终端键盘输入的内容显示滞后
  • +
  • 不支持2K分辨率
  • +
+

已修复的问题

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/changelog/lpi4a/20230614/index.html b/changelog/lpi4a/20230614/index.html new file mode 100644 index 00000000..475e0ab1 --- /dev/null +++ b/changelog/lpi4a/20230614/index.html @@ -0,0 +1,1553 @@ + + + + + + + + + + + + + + + + + + + + + + 20230614 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+ + + +
+
+ + + + + + + +

20230614

+ +

系统版本

+

RevyOS 20230614 版本

+

桌面环境相关

+

当前版本只提供xfce4桌面支持

+
    +
  • 支持xfce4 桌面
  • +
+

支持应用相关

+

提供了chromium支持

+
    +
  • LibreOffice:7.5.2 (7.5.2~rc2-1revyos1)
  • +
  • GIMP:2.10.34 (2.10.34-1)
  • +
  • VLC:3.0.18 (3.0.18-2)
  • +
  • Firefox:111.0 (111.0-1revyos1)
  • +
  • Chromium:109.0 (109.0.5414.119-1revyos1)
  • +
  • xfce4: 4.18 (预装在 xfce版本)
  • +
  • Python3:3.11.2 (3.11.2-1+b1)
  • +
  • 未预装 Go:1.19.8 (1.19.8-2)
  • +
  • 未预装 Rust:1.65.0 (1.65.0+dfsg1-1~exp3)
  • +
  • 未预装 GCC:13 (13.1.0)
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113 (5.10.113-gfac22a756532)
  • +
  • 打开exfat支持
  • +
  • 加入了HDMI音频支持
  • +
+

硬件相关

+
    +
  • CPU主频最高为1.84Ghz
  • +
  • 支持HDMI输出
  • +
  • 支持WIFI/BT模块RTL8723DS,WI-FI和蓝牙功能都已启用
  • +
  • 支持风扇调速功能
  • +
+

系统服务

+
    +
  • 添加了查询版本时间戳功能,在终端输入'cat /etc/revyos-release' 即可获取
  • +
  • 使用 network-manager 作为网络管理器
  • +
  • 预装 systemd-timesyncd 作为NTP服务,联网后可以自动同步时间
  • +
+

当前版本存在问题

+
    +
  • 不支持2K分辨率
  • +
  • 鼠标拖动滞后
  • +
+

已修复的问题

+
    +
  • 修复了WI-FI和蓝牙功能
  • +
  • 字符界面终端键盘输入的内容显示滞后
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/changelog/lpi4a/20230810/index.html b/changelog/lpi4a/20230810/index.html new file mode 100644 index 00000000..01412002 --- /dev/null +++ b/changelog/lpi4a/20230810/index.html @@ -0,0 +1,1607 @@ + + + + + + + + + + + + + + + + + + + + + + 20230810 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+ + + +
+
+ + + + + + + +

20230810

+

系统版本

+

RevyOS 20230810 版本

+

版本下载

+

RevyOS 20230810 lpi4a

+
    +
  • boot-20230810-222415.ext4
  • +
  • root-20230810-222415.ext4
  • +
  • u-boot-with-spl-lpi4a.bin 8g版本需要刷写
  • +
  • u-boot-with-spl-lpi4a-16g.bin 16g版本需要刷写
  • +
+

破坏性更新

+

重新设计了启动流程 所以需要重新刷写所有分区

+

更新之后启动遇到错误

+
Retrieving file: /dtbs/linux-image-5.10.113-lpi4a/<NULL>-light-c910.
+Skipping l0r for failure retrieving fdt
+Light LPI4A#
+
+遇见这种情况需要执行</br>
+env default -a -f;env save;reset
+
+

桌面环境相关

+

当前版本只提供xfce4桌面支持

+

支持应用相关

+
    +
  • LibreOffice:7.5.2 (7.5.2~rc2-1revyos1)
  • +
  • GIMP:2.10.34 (2.10.34-1)
  • +
  • VLC:3.0.18 (3.0.18-2)
  • +
  • Parole:4.18.0 (4.18.0-1revyos1)
  • +
  • Chromium:109.0 (109.0.5414.119-1revyos1)
  • +
  • xfce4: 4.18 (预装在 xfce版本)
  • +
  • Python3:3.11.2 (3.11.2-1+b1)
  • +
  • 未预装 firefox:114.0 (114.0-1revyos1)
  • +
  • 未预装 code-oss: 1.80.1 (1.80.1-1+electron23)
  • +
  • 未预装 Go:1.19.8 (1.19.8-2)
  • +
  • 未预装 Rust:1.65.0 (1.65.0+dfsg1-1~exp3)
  • +
  • 未预装 GCC:13 (13.1.0)
  • +
+

内核相关

+

内核 commit ID: #2023.08.10.02.31+c130cdb21

+
    +
  • 内核版本号:5.10.113 (2023.08.10.02.31+c130cdb21)
  • +
  • 加入对USB串口设备的支持
  • +
+

硬件相关

+
    +
  • CPU主频最高为1.84Ghz
  • +
  • 支持HDMI输出
  • +
  • 支持WIFI/BT模块RTL8723DS,WI-FI和蓝牙功能都已启用
  • +
  • 支持风扇调速功能
  • +
+

系统服务

+
    +
  • 版本时间戳(/etc/revyos-release)- xfce 桌面: 20230810-222415
  • +
+

当前版本存在问题

+
    +
  • 不支持2K分辨率
  • +
  • 鼠标拖动滞后
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/changelog/lpi4a/20230916/index.html b/changelog/lpi4a/20230916/index.html new file mode 100644 index 00000000..178f4d68 --- /dev/null +++ b/changelog/lpi4a/20230916/index.html @@ -0,0 +1,1491 @@ + + + + + + + + + + + + + + + + + + + + + + 20230916 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20230916

+

系统版本

+

RevyOS 20230916 版本

+

版本下载

+

RevyOS 20230916 lpi4a

+
    +
  • boot-20230916-231502.ext4
  • +
  • root-20230916-231502.ext4
  • +
  • u-boot-with-spl-lpi4a.bin 8g版本需要刷写
  • +
  • u-boot-with-spl-lpi4a-16g.bin 16g版本需要刷写
  • +
+

SBI 时间戳

+
    +
  • U-Boot SPL 2020.01-g8640db84 (Sep 21 2023 - 02:14:36 +0000)
  • +
+

u-boot 时间戳

+
    +
  • U-Boot 2020.01-g8640db84 (Sep 21 2023 - 02:14:36 +0000)
  • +
+

内核 commit ID

+
    +
  • +

    2023.09.11.06.54+b4d73b48a

    +
  • +
+

版本时间戳(/etc/revyos-release)

+
    +
  • XFCE桌面:20230916-231502
  • +
+

系统和桌面

+
    +
  • 支持DebianOS xfce4 桌面
  • +
+

硬件加速

+
    +
  • xfce4 桌面支持GPU加速
  • +
+

支持应用

+
    +
  • LibreOffice:7.5.4~rc2-1
  • +
  • 支持 GIMP:2.10.34-1
  • +
  • 支持 VLC:3.0.18 (3.0.18-2)
  • +
  • 支持 Parole:4.18.0 (4.18.0-1revyos1)
  • +
  • 未预装 Firefox:114.0 (114.0-1revyos1)
  • +
  • 支持 Chromium:109.0 (109.0.5414.119-1revyos1)
  • +
  • 支持 xfce4: 4.18 (预装在 xfce版本)
  • +
  • 支持 Python3:3.11.2 (3.11.2-1+b1)
  • +
  • 支持 apt-get 安装源
  • +
  • 未预装 Go:1.19 (1.19~1+b1)
  • +
  • 未预装 Rust:1.66.0 (1.66.0+dfsg1-1~exp1)
  • +
  • 未预装 GCC:13 (13.1.0-1)
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113-lpi4a #2023.09.11.06.54+b4d73b48a
  • +
  • 升级DDK版本到1.17
  • +
+

硬件相关

+
    +
  • CPU主频最高1.84Ghz
  • +
  • 只开启了HDMI输出
  • +
  • 支持WIFI/BT模块RTL8723DS,WI-FI和蓝牙功能都已启用
  • +
  • 支持风扇调速功能
  • +
+

存在问题

+
    +
  • 不支持2K分辨率
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/changelog/lpi4a/20231026/index.html b/changelog/lpi4a/20231026/index.html new file mode 100644 index 00000000..76c5d3a2 --- /dev/null +++ b/changelog/lpi4a/20231026/index.html @@ -0,0 +1,1574 @@ + + + + + + + + + + + + + + + + + + + + + + 20231026 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20231026

+

系统版本

+

RevyOS 20231026 版本

+

版本下载

+

RevyOS 20231026 lpi4a

+
    +
  • boot-20231026_181638.ext4.zst
  • +
  • root-20231026_181638.ext4.zst
  • +
  • u-boot-with-spl-lpi4a.bin 8g版本刷写
  • +
  • u-boot-with-spl-lpi4a-16g.bin 16g版本刷写
  • +
+

系统和桌面

+
    +
  • 支持DebianOS xfce4 桌面
  • +
+

硬件加速

+
    +
  • xfce4 桌面支持GPU加速
  • +
+

支持应用

+
    +
  • LibreOffice:7.5.4~rc2-1
  • +
  • 支持 GIMP:2.10.34-1
  • +
  • 支持 VLC:3.0.18 (3.0.18-2)
  • +
  • 支持 Parole:4.18.0 (4.18.0-1revyos1)
  • +
  • 未预装 Firefox:114.0 (114.0-1revyos1)
  • +
  • 支持 Chromium:109.0 (109.0.5414.119-1revyos1)
  • +
  • 支持 xfce4: 4.18 (预装在 xfce版本)
  • +
  • 支持 Python3:3.11.2 (3.11.2-1+b1)
  • +
  • 支持 apt-get 安装源
  • +
  • 未预装 Go:1.19 (1.19~1+b1)
  • +
  • 未预装 Rust:1.66.0 (1.66.0+dfsg1-1~exp1)
  • +
  • 未预装 GCC:13 (13.1.0-1)
  • +
  • 支持 mpv:0.35.1
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113-lpi4a
  • +
  • 升级DDK版本到1.17
  • +
+

硬件相关

+
    +
  • CPU主频最高1.84Ghz
  • +
  • 只开启了HDMI输出
  • +
  • 支持WIFI/BT模块RTL8723DS,WI-FI和蓝牙功能都已启用
  • +
  • 支持风扇调速功能
  • +
+

已修复的问题

+
    +
  • 解决了HDMI音频爆音的问题
  • +
  • 添加了鼠标指针偏移的临时解决方案
  • +
+

存在问题

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/changelog/lpi4a/20231210/index.html b/changelog/lpi4a/20231210/index.html new file mode 100644 index 00000000..90d5fc48 --- /dev/null +++ b/changelog/lpi4a/20231210/index.html @@ -0,0 +1,1606 @@ + + + + + + + + + + + + + + + + + + + + + + 20231210 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20231210

+

系统版本

+

RevyOS 20231210 版本

+

版本下载

+

RevyOS 20231210 lpi4a

+
    +
  • boot-lpi4a-20231210_134926.ext4.zst
  • +
  • root-lpi4a-20231210_134926.ext4.zst
  • +
  • u-boot-with-spl-lpi4a.bin 8g版本刷写
  • +
  • u-boot-with-spl-lpi4a-16g.bin 16g版本刷写
  • +
+

SBI 时间戳

+
    +
  • U-Boot SPL 2020.01-g8640db84 (Sep 21 2023 - 02:14:36 +0000)
  • +
+

u-boot 时间戳

+
    +
  • U-Boot 2020.01-g8640db84 (Sep 21 2023 - 02:14:36 +0000)
  • +
+

内核 commit ID

+
    +
  • 2023.12.08.03.26+b8c5d3546
  • +
+

版本时间戳(/etc/revyos-release)

+
    +
  • XFCE桌面:20231210-134926
  • +
+

系统和桌面

+
    +
  • 支持DebianOS xfce4 桌面
  • +
+

硬件加速

+
    +
  • xfce4 桌面支持GPU加速和2D加速
  • +
+

支持应用

+
    +
  • LibreOffice:7.5.4~rc2-1
  • +
  • 支持 GIMP:2.10.34-1
  • +
  • 支持 VLC:3.0.18 (3.0.18-2revyos1)
  • +
  • 支持 Parole:4.18.0 (4.18.0-1revyos1)
  • +
  • 未预装 Firefox:118.0 (118.0.2-1revyos1)
  • +
  • 支持 Chromium:109.0 (109.0.5414.119-1revyos2)
  • +
  • 支持 xfce4: 4.18 (预装在 xfce版本)
  • +
  • 支持 Python3:3.11.4 (3.11.4-1)
  • +
  • 支持 apt-get 安装源
  • +
  • 未预装 Go:1.19 (1.19~1+b1)
  • +
  • 未预装 Rust:1.70.0 (1.70.0+dfsg1-1)
  • +
  • 未预装 GCC:13 (13.2.0-4revyos1)
  • +
  • 支持 mpv:0.35.1
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113-lpi4a #2023.12.08.03.26+b8c5d3546
  • +
  • 升级DDK版本到1.17
  • +
+

硬件相关

+
    +
  • CPU主频最高1.84Ghz
  • +
  • 支持单HDMI输出或者HDMI/DSI双输出
  • +
  • 支持2D加速
  • +
  • 支持WIFI/BT模块RTL8723DS,WI-FI和蓝牙功能都已启用
  • +
  • 支持风扇调速功能
  • +
+

已修复的问题

+
    +
  • 改善了在menu上鼠标移动有延迟的问题
  • +
+

存在问题

+
    +
  • WIFI/BT模块AIC8800的蓝牙功能暂不可用
  • +
  • AIC8800内核支持已经存在,但对应设备树和固件暂时没有
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/changelog/lpi4a/20240202/index.html b/changelog/lpi4a/20240202/index.html new file mode 100644 index 00000000..40597fb5 --- /dev/null +++ b/changelog/lpi4a/20240202/index.html @@ -0,0 +1,1603 @@ + + + + + + + + + + + + + + + + + + + + + + 20240202 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20240202

+

系统版本

+

RevyOS 20240202 版本

+

版本下载

+

RevyOS 20240202 lpi4a

+
    +
  • boot-lpi4a-20240202_141632.ext4.zst
  • +
  • root-lpi4a-20240202_141632.ext4.zst
  • +
  • u-boot-with-spl-lpi4a-main.bin 8g版本刷写
  • +
  • u-boot-with-spl-lpi4a-16g-main.bin 16g版本刷写
  • +
+

SBI 时间戳

+
    +
  • U-Boot SPL 2020.01-g69d7d3cd (Jan 31 2024 - 12:58:20 +0000)
  • +
+

u-boot 时间戳

+
    +
  • U-Boot 2020.01-g69d7d3cd (Jan 31 2024 - 12:58:20 +0000)
  • +
+

内核 commit ID

+
    +
  • lpi4a:#2024.01.31.14.11+384c5e9e2
  • +
  • ahead:#2023.12.08.03.31+62225503f
  • +
+

版本时间戳(/etc/revyos-release)

+
    +
  • XFCE桌面:20240202-141632
  • +
+

系统和桌面

+
    +
  • 支持DebianOS xfce4 桌面
  • +
+

硬件加速

+
    +
  • xfce4 桌面支持GPU加速和2D加速
  • +
+

支持应用

+
    +
  • LibreOffice:7.5.4~rc2-1
  • +
  • 支持 GIMP:2.10.34-1
  • +
  • 支持 VLC:3.0.18 (3.0.18-2revyos1)
  • +
  • 支持 Parole:4.18.0 (4.18.0-1revyos1)
  • +
  • 未预装 Firefox:118.0 (118.0.2-1revyos1)
  • +
  • 支持 Chromium:109.0 (109.0.5414.119-1revyos2)
  • +
  • 支持 xfce4: 4.18 (预装在 xfce版本)
  • +
  • 支持 Python3:3.11.4 (3.11.4-1)
  • +
  • 支持 apt-get 安装源
  • +
  • 未预装 Go:1.19 (1.19~1+b1)
  • +
  • 未预装 Rust:1.70.0 (1.70.0+dfsg1-1)
  • +
  • 未预装 GCC:13 (13.2.0-4revyos1)
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113-lpi4a #2024.01.31.14.11+384c5e9e2
  • +
  • 内核版本号:5.10.113-ahead #2024.01.31.14.11+384c5e9e2
  • +
+

硬件相关

+
    +
  • CPU主频最高1.84Ghz
  • +
  • 支持单HDMI输出或者HDMI/DSI双输出
  • +
  • 支持2D加速
  • +
  • 支持WIFI/BT模块RTL8723DS,WI-FI和蓝牙功能都已启用
  • +
  • 支持风扇调速功能
  • +
+

已修复的问题

+

存在问题

+
    +
  • WIFI/BT模块RTL8723的蓝牙功能在重启/睡眠后不可用
  • +
  • AIC8800暂时不可用
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/changelog/lpi4a/20240601/index.html b/changelog/lpi4a/20240601/index.html new file mode 100644 index 00000000..009e5527 --- /dev/null +++ b/changelog/lpi4a/20240601/index.html @@ -0,0 +1,1615 @@ + + + + + + + + + + + + + + + + + + + + + + 20240601 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20240601

+

系统版本

+

RevyOS 20240601 版本

+

版本下载

+

RevyOS 20240601 lpi4a

+
    +
  • boot-lpi4a-20240601_180941.ext4.zst
  • +
  • root-lpi4a-20240601_180941.ext4.zst
  • +
  • u-boot-with-spl-lpi4a.bin 8g版本刷写
  • +
  • u-boot-with-spl-lpi4a-16g.bin 16g版本刷写
  • +
  • sdcard-lpi4a-20240601_180941.img.zst SD卡刷写
  • +
+

SBI 时间戳

+
    +
  • U-Boot SPL 2020.01-g96627087 (May 29 2024 - 08:30:59 +0000)
  • +
+

u-boot 时间戳

+
    +
  • U-Boot 2020.01-g96627087 (May 29 2024 - 08:30:59 +0000)
  • +
+

内核 commit ID

+
    +
  • lpi4a:#2024.01.31.14.11+384c5e9e2
  • +
+

版本时间戳(/etc/revyos-release)

+
    +
  • XFCE桌面:20240601_180941
  • +
+

RevyOS 20240601 meles

+
    +
  • boot-meles-20240601_180943.ext4.zst
  • +
  • iw-single-line.bin
  • +
  • root-meles-20240601_180943.ext4.zst
  • +
  • sdcard-meles-20240601_180943.img.zst
  • +
  • u-boot-with-spl-meles-4g.bin
  • +
  • u-boot-with-spl-meles.bin
  • +
+

系统和桌面

+
    +
  • 支持DebianOS xfce4 桌面
  • +
+

硬件加速

+
    +
  • xfce4 桌面支持GPU加速和2D加速
  • +
+

支持应用

+
    +
  • LibreOffice:7.5.4~rc2-1
  • +
  • 支持 GIMP:2.10.34-1
  • +
  • 支持 VLC:3.0.21-1revyos1
  • +
  • 支持 Parole:4.18.0 (4.18.0-1revyos1)
  • +
  • 未预装 Firefox:118.0 (118.0.2-1revyos1)
  • +
  • 支持 Chromium:109.0 (109.0.5414.119-1revyos2)
  • +
  • 支持 xfce4: 4.18 (预装在 xfce版本)
  • +
  • 支持 Python3:3.11.2-1+b1
  • +
  • 支持 apt-get 安装源
  • +
  • 未预装 Go:1.19 (1.19~1+b1)
  • +
  • 未预装 Rust:1.70.0 (1.70.0+dfsg1-1)
  • +
  • 未预装 GCC:13 (13.2.0-23revyos1)
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113-lpi4a #2024.05.31.16.27+2dec14431
  • +
+

硬件相关

+
    +
  • CPU主频最高1.84Ghz
  • +
  • 支持单HDMI输出或者HDMI/DSI双输出
  • +
  • 支持2D加速
  • +
  • 支持WIFI/BT模块RTL8723DS,WI-FI和蓝牙功能都已启用
  • +
  • 支持风扇调速功能
  • +
  • 支持从sd卡启动
  • +
+

已修复的问题

+
    +
  • str部分已修复
  • +
+

存在问题

+
    +
  • std存在部分问题
  • +
  • WIFI/BT模块RTL8723的蓝牙功能在重启/睡眠后不可用
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/desktop/games/OpenTTD\346\270\270\346\210\217/index.html" "b/desktop/games/OpenTTD\346\270\270\346\210\217/index.html" new file mode 100644 index 00000000..a57888db --- /dev/null +++ "b/desktop/games/OpenTTD\346\270\270\346\210\217/index.html" @@ -0,0 +1,1432 @@ + + + + + + + + + + + + + + + + + + + + + + OpenTTD 游戏 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

OpenTTD

+

状态: +可以运行,软解图形

+

资料: +https://github.com/OpenTTD/OpenTTD/blob/master/COMPILING.md +https://salsa.debian.org/openttd-team/openttd/-/blob/master/debian/control

+

步骤

+
# 安装依赖
+sudo apt install libsdl2-dev zlib1g-dev libpng-dev libfreetype-dev libfontconfig-dev libicu-dev liblzo2-dev liblzma-dev libfluidsynth-dev libopengl-dev grfcodec openttd-opengfx cmake
+
+# 下载代码&编译
+git clone https://github.com/OpenTTD/OpenTTD.git
+cd OpenTTD
+mkdir build
+cd build
+cmake ..
+make
+
+# 运行
+./openttd
+
+

图形和音频资源文件通过游戏内功能下载,支持中文

+

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/desktop/games/images/openttd_1.png b/desktop/games/images/openttd_1.png new file mode 100644 index 00000000..76b400eb Binary files /dev/null and b/desktop/games/images/openttd_1.png differ diff --git a/desktop/games/images/yquake2_1.png b/desktop/games/images/yquake2_1.png new file mode 100644 index 00000000..fba9a2e7 Binary files /dev/null and b/desktop/games/images/yquake2_1.png differ diff --git a/desktop/games/yquake2/index.html b/desktop/games/yquake2/index.html new file mode 100644 index 00000000..1ead33bf --- /dev/null +++ b/desktop/games/yquake2/index.html @@ -0,0 +1,1451 @@ + + + + + + + + + + + + + + + + + + + + + + yquake2 游戏 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

yquake2

+

状态: +可以运行,支持GLES加速

+

资料: +https://github.com/yquake2/yquake2/blob/master/doc/020_installation.md +https://github.com/yquake2/yquake2/blob/master/doc/030_configuration.md

+

安装步骤

+
# 安装依赖
+sudo apt install build-essential libgl1-mesa-dev libsdl2-dev libopenal-dev libcurl4-openssl-dev
+
+# 下载代码&编译
+git clone https://github.com/yquake2/yquake2.git
+mkdir build
+cd build
+cmake ..
+make
+
+# 运行
+#(需要准备好游戏原始资源文件夹baseq2)
+cd ..
+cd release
+cp -r ~/baseq2 .
+./quake2
+
+

展示

+

需要将原始游戏资源文件夹baseq2放到和quake2程序同一个目录中(Steam版可用)

+

分辨率和图形加速选项在游戏内设置菜单修改,不修改默认是软渲染,硬渲染设置请改为“OpenGL ES3”(参见下图)

+

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/desktop/install/index.html b/desktop/install/index.html new file mode 100644 index 00000000..b9b12767 --- /dev/null +++ b/desktop/install/index.html @@ -0,0 +1,1407 @@ + + + + + + + + + + + + + + + + + + + + + + 安装 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

包安装

+

在RevyOS中安装包只需要在 terminal 中输入

+
apt install + 包名
+
+

即可安装

+

以下以安装 git作为演示

+
debian@lpi4a:~$ sudo apt install git
+[sudo] password for debian: 
+Reading package lists... Done
+Building dependency tree... Done
+Reading state information... Done
+The following additional packages will be installed:
+  git-man liberror-perl patch
+Suggested packages:
+  gettext-base git-daemon-run | git-daemon-sysvinit git-doc git-email git-gui
+  gitk gitweb git-cvs git-mediawiki git-svn ed diffutils-doc
+The following NEW packages will be installed:
+  git git-man liberror-perl patch
+0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
+Need to get 8605 kB of archives.
+After this operation, 39.4 MB of additional disk space will be used.
+Do you want to continue? [Y/n] y
+Get:1 https://mirror.iscas.ac.cn/revyos/revyos-base sid/main riscv64 liberror-perl all 0.17029-2 [29.0 kB]
+Get:2 https://mirror.iscas.ac.cn/revyos/revyos-base sid/main riscv64 git-man all 1:2.40.1-1 [2072 kB]
+Get:3 https://mirror.iscas.ac.cn/revyos/revyos-base sid/main riscv64 git riscv64 1:2.40.1-1 [6390 kB]
+Get:4 https://mirror.iscas.ac.cn/revyos/revyos-base sid/main riscv64 patch riscv64 2.7.6-7+b1 [114 kB]
+Fetched 8605 kB in 1s (6656 kB/s)
+Selecting previously unselected package liberror-perl.
+(Reading database ... 75688 files and directories currently installed.)
+Preparing to unpack .../liberror-perl_0.17029-2_all.deb ...
+Unpacking liberror-perl (0.17029-2) ...
+Selecting previously unselected package git-man.
+Preparing to unpack .../git-man_1%3a2.40.1-1_all.deb ...
+Unpacking git-man (1:2.40.1-1) ...
+Selecting previously unselected package git.
+Preparing to unpack .../git_1%3a2.40.1-1_riscv64.deb ...
+Unpacking git (1:2.40.1-1) ...
+Selecting previously unselected package patch.
+Preparing to unpack .../patch_2.7.6-7+b1_riscv64.deb ...
+Unpacking patch (2.7.6-7+b1) ...
+Setting up liberror-perl (0.17029-2) ...
+Setting up patch (2.7.6-7+b1) ...
+Setting up git-man (1:2.40.1-1) ...
+Setting up git (1:2.40.1-1) ...
+Processing triggers for man-db (2.11.2-2) ...
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/desktop/revyos-use-docker/index.html b/desktop/revyos-use-docker/index.html new file mode 100644 index 00000000..01112f0c --- /dev/null +++ b/desktop/revyos-use-docker/index.html @@ -0,0 +1,1394 @@ + + + + + + + + + + + + + + + + + + + + + + docker - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

安装 riscv64 docker

+

源中已有 riscv64 的docker安装包,名为 docker.io,可以直接使用:

+
sudo apt install docker.io
+
+

测试 docker

+
sudo docker pull riscv64/debian:unstable
+
+

技巧

+

Rootless Docker

+

如果需要不以 root 权限运行 docker, 即如果不用 sudo, 出现了下面的错误:

+
debian@lpi4a:~$ docker pull riscv64/debian:unstable
+Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=riscv64%2Fdebian&tag=unstable": dial unix /var/run/docker.sock: connect: permission denied
+
+
+

需要执行以下命令将用户加入 docker 用户组中:

+
sudo usermod -aG docker $USER # 或换成需要免root运行docker的用户名
+
+

重新登陆,如果出现下面的结果即可免特权运行docker

+
$ id
+uid=1000(debian) gid=1000(debian) groups=1000(debian),4(adm),7(lp),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),105(netdev),106(bluetooth),112(docker),996(input) # 这里出现了 docker 用户组即可
+
+

为 Docker 配置代理

+

编辑 /usr/lib/systemd/system/docker.service,在 [Service] 下加入代理,docker只读取下面三个变量

+
[Service]
+...
+Environment="HTTP_PROXY=http://proxy.example.com:8080/"
+Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
+Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
+
+

添加完成后重加载 systemd units,然后重启 docker 即可

+
sudo systemctl daemon-reload 
+sudo systemctl restart docker
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/desktop/software/Images/ROS2_Gazebo.png b/desktop/software/Images/ROS2_Gazebo.png new file mode 100644 index 00000000..1f12f5ee Binary files /dev/null and b/desktop/software/Images/ROS2_Gazebo.png differ diff --git a/desktop/software/Images/ROS2_RViz.png b/desktop/software/Images/ROS2_RViz.png new file mode 100644 index 00000000..9c51f345 Binary files /dev/null and b/desktop/software/Images/ROS2_RViz.png differ diff --git a/desktop/software/Images/ROS2_TurtleSim.png b/desktop/software/Images/ROS2_TurtleSim.png new file mode 100644 index 00000000..f082c0f3 Binary files /dev/null and b/desktop/software/Images/ROS2_TurtleSim.png differ diff --git a/desktop/software/Images/ROS2_rqt.png b/desktop/software/Images/ROS2_rqt.png new file mode 100644 index 00000000..6e90abad Binary files /dev/null and b/desktop/software/Images/ROS2_rqt.png differ diff --git a/desktop/software/ROS2/index.html b/desktop/software/ROS2/index.html new file mode 100644 index 00000000..bd0ff02e --- /dev/null +++ b/desktop/software/ROS2/index.html @@ -0,0 +1,1750 @@ + + + + + + + + + + + + + + + + + + + + + + ROS2 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Robot Operating System (ROS)

+
+

本页的 ROS 指 ROS 2

+
+

状态:可以运行

+

官方资料页:https://ros.org/

+

官方文档: https://docs.ros.org/

+

软件说明

+

ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、函数库、可视化工具、消息传递和软件包管理等诸多功能。ROS遵循BSD开源许可协议。

+

安装

+

添加源

+

假设使用来自 ros.z572.online 的源

+

注意下面应该使用 bookworm

+
sudo sh -c "echo 'deb [trusted=yes] https://ros.z572.online/main bookworm main\ndeb-src [trusted=yes] https://ros.z572.online/main bookworm main' > /etc/apt/sources.list.d/ros.list"
+sudo apt update
+sudo apt upgrade
+
+

安装 ROS

+

目前已经测试 ROS JazzyHumble 版本可用

+

注意:两个版本可能会存在依赖冲突,请不要尝试同时安装两个版本

+

Jazzy:

+
apt install ros-jazzy-desktop-full
+
+

Humble:

+
apt install ros-humble-desktop-full
+
+

安装 rosdep

+
sudo apt install python3-rosdep2
+
+

然后删除 /etc/ros/rosdep/sources.list.d/10-debian.list, +并修改 etc/ros/rosdep/sources.list.d/20-default.list 为下面的内容

+
yaml https://raw.githubusercontent.com/revyos-ros/rosdistro/master/rosdep/base.yaml
+yaml https://raw.githubusercontent.com/revyos-ros/rosdistro/master/rosdep/python.yaml
+yaml https://raw.githubusercontent.com/revyos-ros/rosdistro/master/rosdep/ruby.yaml
+
+

获取 ROS 环境

+

根据安装的 ROS 版本,选择相应的命令

+

Jazzy:

+
source /opt/ros/jazzy/setup.sh
+
+

Humble:

+
source /opt/ros/Humble/setup.sh
+
+

可以将上面的内容加入 .bashrc 或者您使用的 shell profile 中。

+

功能使用

+

rosdep

+
rosdep update
+
+

使用 rosdep 安装外部依赖(以 micro_ros_setup)为例

+

1.设置环境变量 +请根据您安装的版本选择对应的命令

+

Jazzy:

+
AMENT_PACKAGE_PATH=/opt/ros/jazzy
+
+

Humble:

+
AMENT_PACKAGE_PATH=/opt/ros/humble
+
+

2.下载源代码

+
git clone https://github.com/micro-ROS/micro_ros_setup && cd micro_ros_setup
+
+

3.安装依赖

+
rosdep install --from-paths . -y --ignore-src
+
+

colon

+

colon 是一款现代的 ROS 编译工具

+
sudo apt install colcon
+
+

测试编译(依然以 micro_ros_setup)为例

+
git clone https://github.com/micro-ROS/micro_ros_setup && cd micro_ros_setup
+colcon build
+
+

ros2 command

+
    +
  • ros2 pkg 命令用于管理 ROS 2 包。
  • +
  • ros2 run 命令用于运行 ROS 2 包中的特定节点。
  • +
  • ros2 topic 命令用于与 ROS 2 的话题交互。
  • +
  • ros2 param 命令用于管理 ROS 2 参数。
  • +
  • ros2 service 命令用于与 ROS 2 服务交互。
  • +
  • ros2 node 命令用于与 ROS 2 节点交互。
  • +
  • ros2 bag 命令用于记录和回放 ROS 2 数据。
  • +
  • ros2 launch 命令用于启动 ROS 2 启动文件。
  • +
+

已测试的 ROS 2 功能

+
    +
  • +

    Node(C++)
    + 运行 C++ 节点:
    +bash + ros2 run demo_nodes_cpp talker + ros2 run demo_nodes_cpp listener

    +
  • +
  • +

    Node(Python)
    + 运行 Python 节点:
    +bash + ros2 run demo_nodes_py talker + ros2 run demo_nodes_py listener

    +
  • +
  • +

    Add Two Ints Server
    + 测试服务端和客户端:
    +bash + ros2 run demo_nodes_cpp add_two_ints_server + ros2 run demo_nodes_cpp add_two_ints_client

    +
  • +
  • +

    TF2
    + 测试静态变换、监听和监控功能:
    + 发布静态变换并监听:
    +bash + ros2 run tf2_ros static_transform_publisher 1 1 1 0 0 0 /base_link /odom + ros2 run tf2_ros tf2_echo base_link odom
    + 监控变换:
    +bash + ros2 run tf2_ros static_transform_publisher 1 1 1 0 0 0 /base_link /odom + ros2 run tf2_ros tf2_monitor
    + 查看变换框架图(需生成 PDF 文件):
    +bash + ros2 run tf2_ros static_transform_publisher 1 1 1 0 0 0 /base_link /odom + ros2 run tf2_tools view_frames

    +
  • +
  • +

    TurtleSim
    + 需要图形界面支持:
    + 启动 turtlesim 节点:
    +bash + ros2 run turtlesim turtlesim_node
    + 图形界面会弹出一个窗口。
    + 使用键盘控制小乌龟:
    +bash + ros2 run turtlesim turtle_teleop_key

    +
  • +
+

TurtleSim 使用截图

+
    +
  • RQT
    + 需要图形界面支持:
    + 启动 RQT 图形工具:
    +bash + ros2 run rqt_gui rqt_gui
  • +
+

rqt 使用截图

+

rviz2

+

需要使用 sudo switch-gl gl4es 再重启后使用 LIBGL_ALWAYS_SOFTWARE=true rviz2 here 启动,效果如下

+

RViz2 使用截图

+

gazebo

+

使用 sudo apt install gazebo11 安装

+

需要使用 sudo switch-gl gl4es 再重启后使用 LIBGL_ALWAYS_SOFTWARE=true gazebo 启动,效果如下

+

Gazebo 使用截图

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/desktop/software/gimp/index.html b/desktop/software/gimp/index.html new file mode 100644 index 00000000..a1dd77ae --- /dev/null +++ b/desktop/software/gimp/index.html @@ -0,0 +1,1435 @@ + + + + + + + + + + + + + + + + + + + + + + GIMP 图像编辑工具 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

GIMP图像处理软件

+

状态:可以运行

+

官方资料页:https://docs.gimp.org/2.10/en/

+

软件说明

+

GIMP 是一个多平台工具,用于创建和编辑各种图像。 GIMP 是 GNU Image Manipulation Program 的首字母缩写。 GIMP 有很多功能。它可以用作简单的绘画程序、专家级的照片修饰程序、创建数字艺术的工具、在线批处理系统、批量生产的图像渲染器、图像格式转换器等。 GIMP 是可扩展和可扩展的。它旨在通过插件和扩展来增强以执行任何操作。先进的脚本界面允许从最简单的任务到最复杂的图像处理程序的所有内容都可以轻松编写脚本。

+

使用说明

+

GIMP是 RevyOS 预安装图形处理软件,如想使用 GIMP,在terminal中输入

+
gimp
+
+

在等待资源加载后就会弹出 GIMP 主界面

+

+

使用功能参考官方资料页

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/desktop/software/iBus/index.html b/desktop/software/iBus/index.html new file mode 100644 index 00000000..eb35ae43 --- /dev/null +++ b/desktop/software/iBus/index.html @@ -0,0 +1,1423 @@ + + + + + + + + + + + + + + + + + + + + + + iBus 输入法 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

iBus 输入法

+

状态:可以运行

+

资料:https://wiki.debian.org/I18n/ibus

+

步骤(没有使用im-config)

+
sudo apt install ibus ibus-libpinyin
+sudo reboot
+
+

重启后需要手动将中文输入法添加到输入选项中:

+

托盘图标->右击->Preference +

+

点击选项卡Input Method->Add,打开下图窗口 +

+

点击Chinese->Intelligent Pinyin->Add +

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/CNAME b/en/CNAME new file mode 100644 index 00000000..bfc04088 --- /dev/null +++ b/en/CNAME @@ -0,0 +1 @@ +docs.revyos.dev diff --git a/en/Installation/image for flash/lpi4a1.png b/en/Installation/image for flash/lpi4a1.png new file mode 100644 index 00000000..ebf51a88 Binary files /dev/null and b/en/Installation/image for flash/lpi4a1.png differ diff --git a/en/Installation/image for flash/lpi4a2.png b/en/Installation/image for flash/lpi4a2.png new file mode 100644 index 00000000..2c119464 Binary files /dev/null and b/en/Installation/image for flash/lpi4a2.png differ diff --git a/en/Installation/image for flash/lpi4a3.png b/en/Installation/image for flash/lpi4a3.png new file mode 100644 index 00000000..f8904a6a Binary files /dev/null and b/en/Installation/image for flash/lpi4a3.png differ diff --git a/en/Installation/image for flash/lpi4a4.png b/en/Installation/image for flash/lpi4a4.png new file mode 100644 index 00000000..3fa5ccae Binary files /dev/null and b/en/Installation/image for flash/lpi4a4.png differ diff --git a/en/Installation/image for flash/lpi4a5.png b/en/Installation/image for flash/lpi4a5.png new file mode 100644 index 00000000..32cd4461 Binary files /dev/null and b/en/Installation/image for flash/lpi4a5.png differ diff --git a/en/Installation/image for flash/lpi4a6.png b/en/Installation/image for flash/lpi4a6.png new file mode 100644 index 00000000..9c63cc5b Binary files /dev/null and b/en/Installation/image for flash/lpi4a6.png differ diff --git a/en/Installation/image for flash/lpi4a7.png b/en/Installation/image for flash/lpi4a7.png new file mode 100644 index 00000000..5b2e27a6 Binary files /dev/null and b/en/Installation/image for flash/lpi4a7.png differ diff --git a/en/Installation/image for flash/pioneer-image-dir.png b/en/Installation/image for flash/pioneer-image-dir.png new file mode 100644 index 00000000..710fad98 Binary files /dev/null and b/en/Installation/image for flash/pioneer-image-dir.png differ diff --git a/en/Installation/licheebook/index.html b/en/Installation/licheebook/index.html new file mode 100644 index 00000000..1cb826be --- /dev/null +++ b/en/Installation/licheebook/index.html @@ -0,0 +1,1339 @@ + + + + + + + + + + + + + + + + + + Licheebook - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Licheebook

+ +

WIP

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/Installation/licheeconsole4a/index.html b/en/Installation/licheeconsole4a/index.html new file mode 100644 index 00000000..edbb8b80 --- /dev/null +++ b/en/Installation/licheeconsole4a/index.html @@ -0,0 +1,1339 @@ + + + + + + + + + + + + + + + + + + Licheeconsole4a - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Licheeconsole4a

+ +

WIP

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/Installation/licheepi4a/index.html b/en/Installation/licheepi4a/index.html new file mode 100644 index 00000000..943683bd --- /dev/null +++ b/en/Installation/licheepi4a/index.html @@ -0,0 +1,1795 @@ + + + + + + + + + + + + + + + + + + + + + + Lichee Pi 4A - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + +

LicheePi 4A Image Flashing Guide

+

The LicheePi 4A board supports booting from both SD card and eMMC. Below are instructions for flashing RevyOS images for each method.

+

Environment: Ubuntu 22.04

+
+

Booting from SD Card

+
+

Note: Ensure the dip switch is set for eMMC boot, even when booting from an SD card.

+
+

Preparation

+

Hardware

+
    +
  • A MicroSD card reader
  • +
  • A MicroSD card
  • +
+

Required Tools

+

Install zstd for decompressing the image:

+
apt install zstd
+
+

Downloading the Image

+

Download the system image starting with sdcard- for LicheePi4A from the RevyOS mirror site.

+

Decompress the downloaded image file:

+
unzstd sdcard-lpi4a-20240720_171951.img.zst
+
+

Writing the Image to the MicroSD Card with BalenaEtcher

+

Install BalenaEtcher from official website https://etcher.balena.io/.

+
    +
  1. Insert the SD card into the reader and connect it to the computer.
  2. +
  3. Open BalenaEtcher, click "Flash from file," and select the .img file. + Select image file
  4. +
  5. In the second field, select the target SD card. + Select target device
  6. +
  7. Click "Flash" to begin the write process. + Flash process
  8. +
  9. Wait for the flashing to complete. A success message will appear. + Flash complete
  10. +
+

Writing the Image with dd

+

You must the device after of= is correct.

+
# sudo dd if=./sdcard-lpi4a-20240720_171951.img of=<Target Device> status=progress
+# sync
+
+

After completed, you can boot from that SD card.

+

System Boot

+

After flashing, insert the SD card into the slot on the board, as shown below. + SD card slot

+

Connect the HDMI and power cables to start the system.

+
+

Booting from eMMC

+

When booting from eMMC, RevyOS images are flashed to the eMMC storage using fastboot. There are two options: connecting with or without a serial interface. This guide provides instructions for both methods.

+

You must eject SD card when booting from eMMC.

+

Preparation

+

Flashing the image to eMMC requires U-Boot, boot, and root files to be flashed via fastboot. Ensure fastboot is installed:

+
apt install fastboot
+
+

If using a serial connection, install minicom to monitor the console:

+
apt install minicom
+
+

Downloading the Image

+

Download the necessary image files for LicheePi4A from the RevyOS mirror site.

+

Make sure to choose the U-Boot file that matches your board model.

+

After downloading, decompress root and boot image with unzstd.

+
unzstd boot-lpi4a-20240720_171951.ext4.zst
+unzstd root-lpi4a-20240720_171951.ext4.zst
+
+

Flashing the Image to eMMC (Without Serial Connection)

+

Hold down the BOOT button on the board and connect it to the computer via USB. The board will enter flashing mode.

+

Flashing the Image to eMMC (With Serial Connection)

+

Open minicom in a terminal to access the serial console:

+

bash + sudo minicom

+

Connect the USB end to the computer, and connect the Type-C interface on the board to the computer with a USB-Type-C cable.

+

Connect the serial port like following image. In the red circle(count from left to right, the second pin on the first row) is GND, in the yellow circle(fifth pin on the first row) is TX and in the green circle(fifth pin on the second row) is RX. You have to connect TX to RX, RX to TX and GND to GND when connecting to your host device.

+

+

In the serial console, press any key to interrupt the boot process. Then, enter the following command:

+

bash + fastboot usb 0

+

In a new terminal window, navigate to the folder where the image files are stored, and execute the following flash commands:

+

Enter u-boot fastboot

+

If running lsusb doesn't give a ID 1234:8888 Brain Actuated Technologies USB download gadget output, excecute following commant to enter u-boot fastboot

+
   fastboot flash ram u-boot-with-spl-lpi4a-16g.bin # Replace with your device's uboot image
+   fastboot reboot
+   sleep 1
+
+

flash images

+

bash + fastboot flash ram u-boot-with-spl-lpi4a-16g.bin # Replace with your device's uboot image + fastboot reboot + sleep 1 + fastboot flash uboot u-boot-with-spl-lpi4a-16g.bin + fastboot flash boot boot-lpi4a-20240720_171951.ext4 + fastboot flash root root-lpi4a-20240720_171951.ext4

+

Monitor the flashing progress in the serial console.

+

In serial you can see the image size and the being flashing partition in cmd_parameter: boot, imagesize: 92886476 (In this guide we are flashing the boot image which has a size of 92886476 Bytes) +

+

After flashing is complete, disconnect the USB-Type-C cable, connect the power cable, and boot into the system.

+

Some possible problems

+

If you can see download device in lsusb, butfastboot stuck at < waiting for any device >you can try run fastboot with root privilege.

+
+

User Login

+

Default credentials for RevyOS:

+
    +
  • Username: debian
  • +
  • Password: debian
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/Installation/milkv-meles/index.html b/en/Installation/milkv-meles/index.html new file mode 100644 index 00000000..f7bcce5e --- /dev/null +++ b/en/Installation/milkv-meles/index.html @@ -0,0 +1,1339 @@ + + + + + + + + + + + + + + + + + + Milkv meles - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Milkv meles

+ + + + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/Installation/milkv-pioneer/index.html b/en/Installation/milkv-pioneer/index.html new file mode 100644 index 00000000..910c9fa6 --- /dev/null +++ b/en/Installation/milkv-pioneer/index.html @@ -0,0 +1,1701 @@ + + + + + + + + + + + + + + + + + + + + + + Milk-V Pioneer - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Installing RevyOS on the Milk-V Pioneer

+

1. Preparation

+

Required Tools

+
    +
  • MicroSD card
  • +
  • MicroSD card reader
  • +
  • NVMe SSD reader
  • +
+

Downloading the Image

+

RevyOS image directory: Download Link

+

Latest image version: 20240819

+

Example directory for the 20240819 image:

+

Image Directory

+

RevyOS requires flashing both firmware and system files, as listed below:

+
    +
  • Firmware files:
  • +
  • firmware_single_sg2042-v6.6-lts-v0p7.bin (for SPI Flash)
  • +
  • +

    firmware_single_sg2042-v6.6-lts-v0p7.img (for SD card)

    +
  • +
  • +

    System file:

    +
  • +
  • revyos-pioneer-20240819-154656.img.zst
  • +
+
+

2. Flashing the Firmware

+

Flashing Options

+

Firmware files can be stored on either the SPI Flash or an SD card, so the method will vary accordingly.

+

Flashing Firmware to SD Card

+

Operating System: Ubuntu 22.04

+

Using BalenaEtcher

+
    +
  1. Select the file firmware_single_sg2042-v6.6-lts-v0p7.img.
  2. +
  3. Choose the target SD card.
  4. +
  5. Click "Flash" to start the process.
  6. +
+

Using Command Line

+

Insert the SD card into a reader connected to your computer, then verify the device path.

+

Navigate to the directory with firmware_single_sg2042-v6.6-lts-v0p7.img and flash it with the following command:

+
sudo dd if=firmware_single_sg2042-v6.6-lts-v0p7.img of=/dev/sda bs=4M status=progress
+
+

Replace of=/dev/sda with your specific device path if different.

+

After flashing, use sync to ensure data is fully written to the SD card.

+

Flashing Firmware to SPI Flash

+

Operating System: RevyOS0819

+
+

Note: For first-time installation, using an SD card to store the firmware is recommended.

+
+

Using Command Line

+

Flashing to the SPI Flash requires installing utilities and loading the mtd module.

+

Install necessary packages:

+

bash + sudo apt install mtd-utils + sudo modprobe mtdblock

+

Download the firmware file:

+

bash + wget https://mirror.iscas.ac.cn/revyos/extra/images/sg2042/20240819/firmware_single_sg2042-v6.6-lts-v0p7.bin

+

Navigate to the directory where firmware_single_sg2042-v6.6-lts-v0p7.bin was downloaded and run:

+

bash + sudo flashcp -v firmware_single_sg2042-v6.6-lts-v0p7.bin /dev/mtd1

+

Flashing to SPI Flash is now complete.

+
+

3. Flashing the RevyOS Image

+

Operating System: Ubuntu 22.04

+

Using Command Line

+
    +
  1. +

    Decompress the revyos-pioneer-20240819-154656.img.zst file using unzstd revyos-pioneer-20240819-154656.img.zst. This produces the revyos-pioneer-20240819-154656.img file.

    +
  2. +
  3. +

    Insert the NVMe SSD into the reader and connect it to your computer, then confirm the device path.

    +
  4. +
  5. +

    In the directory containing revyos-pioneer-20240819-154656.img, flash the image to the NVMe SSD with dd command: sudo dd if=revyos-pioneer-20240819-154656.img of=/dev/nvme0n1 bs=4M status=progress. Replace of=/dev/nvme0n1 with the correct device path if different.

    +
  6. +
  7. +

    After flashing, use sync to ensure the data is fully written to the NVMe SSD.

    +
  8. +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/en/Installation/\345\234\250 macOS \344\270\212\345\210\267\345\206\231 RevyOS \351\225\234\345\203\217\345\210\260 lpi4a/index.html" "b/en/Installation/\345\234\250 macOS \344\270\212\345\210\267\345\206\231 RevyOS \351\225\234\345\203\217\345\210\260 lpi4a/index.html" new file mode 100644 index 00000000..aea93266 --- /dev/null +++ "b/en/Installation/\345\234\250 macOS \344\270\212\345\210\267\345\206\231 RevyOS \351\225\234\345\203\217\345\210\260 lpi4a/index.html" @@ -0,0 +1,1444 @@ + + + + + + + + + + + + + + + + + + Flashing RevyOS Image onto LPI4A from macOS - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Flashing RevyOS Image onto LPI4A from macOS

+

Step 1: Preparation

+
    +
  1. Install android-platform-tools using brew or an alternative method.
  2. +
  3. Download the correct U-Boot and RevyOS image files for your hardware model.
  4. +
  5. Connect your LPI4A development board to your Mac using both serial and USB connections.
  6. +
  7. Ensure your board is powered by a 12V power source.
  8. +
+

Download U-Boot and RevyOS Image

+

Visit the RevyOS mirror site and navigate to the latest dated folder (e.g., 20240720). Download the following files:

+
+

Note: Ensure the files match your LPI4A hardware configuration, as the 8GB and 16GB models require different U-Boot files.

+
+

Install Android Platform Tools

+

Use brew to install the tools:

+
brew install android-platform-tools
+
+

Verify fastboot is available by running:

+
yuiyuuhayashi@MacBook-Air ~ % fastboot usb 0
+< waiting for any device >
+
+

Step 2: Start Installation

+
    +
  1. Boot your LPI4A into the fastboot mode by entering fastboot usb 0. Ensure the board is properly connected via USB Type-C and powered by 12V.
  2. +
  3. On your Mac, execute the following command to flash U-Boot:
  4. +
+

bash + fastboot flash uboot <filename>

+
    +
  1. After flashing, reboot with:
  2. +
+

bash + fastboot reboot

+
+

If the board doesn’t reboot, perform a manual power cycle.

+
+
    +
  1. Re-enter fastboot mode on the development board and, on macOS, execute:
  2. +
+

bash + fastboot flash root <filename>

+
    +
  1. Reboot again using:
  2. +
+

bash + fastboot reboot

+

Step 3: Log in to RevyOS

+

Once booted, log in with the following credentials:

+
Username: debian
+Password: debian
+
+

After login, you can use neofetch or similar tools to verify the system version and other information.

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/_static/js/extra.js b/en/_static/js/extra.js new file mode 100644 index 00000000..f93faf74 --- /dev/null +++ b/en/_static/js/extra.js @@ -0,0 +1,5 @@ +// We love spaces. See https://github.com/vinta/pangu.js/ +document.addEventListener('DOMContentLoaded', () => { + // listen to any DOM change and automatically perform spacing via MutationObserver() + pangu.autoSpacingPage(); +}); diff --git a/en/adaptation/GStreamer-pipeline-example-with-thead-omxil-lib/index.html b/en/adaptation/GStreamer-pipeline-example-with-thead-omxil-lib/index.html new file mode 100644 index 00000000..701971d0 --- /dev/null +++ b/en/adaptation/GStreamer-pipeline-example-with-thead-omxil-lib/index.html @@ -0,0 +1,2246 @@ + + + + + + + + + + + + + + + + + + + + + + GStreamer Pipeline Example - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

GStreamer pipeline examples with thead OpenMax-IL lib

+

Some GStreamer pipeline command-line examples with omxil library on TH1520, RevyOS

+

Get ready

+

In this section, the grammer of the gstreamer command-line pipeline and some usefule debug tips are introduced. They have been moved to the end of the article.

+

Pipeline samples

+

Basically, you neet to install gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-plugins-bad, gstreamer1.0-omx-generic, gstreamer1.0-omx-bellagio-config,gstreamer1.0-tools.

+

Test

+

videotestsrc

+
# videotestsrc
+gst-launch-1.0 videotestsrc ! autovideosink
+
+# specify the video stream format
+gst-launch-1.0 videotestsrc ! video/x-raw, format=NV12, width=960, height=540, framerate=60/1 ! autovideosink
+
+

fpsdisplaysink

+
# display framerate
+gst-launch-1.0 videotestsrc ! fpsdisplaysink
+
+# no need to sync on the clock - used to test the performance of the pipeline
+gst-launch-1.0 videotestsrc ! fpsdisplaysink sync=false
+
+# stop display on the screen, but redirect the output to stdout
+gst-launch-1.0 videotestsrc ! fpsdisplaysink text-overlay=false -v 2>&1
+
+# specify which sink to use
+gst-launch-1.0 videotestsrc ! fpsdisplaysink sink=glimagesink
+
+# combine the previous examples
+gst-launch-1.0 videotestsrc ! fpsdisplaysink sink=glimagesink sync=false text-overlay=false -v 2>&1
+
+

audiotestsrc

+
# audiotestsrc
+gst-launch-1.0 audiotestsrc ! autoaudiosink
+
+# change volume (0 to 1)
+gst-launch-1.0 audiotestsrc volume=0.1 ! autoaudiosink
+
+# change waveform
+# could be selected among square, silence, pink-noise, etc.
+gst-launch-1.0 audiotestsrc wave=pink-noise ! autoaudiosink
+
+# set fix frequency, such as "do" (262 Hz)
+gst-launch-1.0 audiotestsrc freq=262 ! autoaudiosink
+
+

fakesink

+
# a dummy sink that swallows everything
+gst-launch-1.0 videotestsrc ! fakesink
+
+

Decode

+

Video decode

+
# let decodebin choose which decoder to use,
+# and autovideosink choose which video-sink to use (not recommended)
+gst-launch-1.0 filesrc location=fire.mp4 ! decodebin ! autovideosink
+
+# h264 software decode without opengl display
+gst-launch-1.0 filesrc location=fire.mp4 ! qtdemux ! h264parse ! avdec_h264 ! xvimagesink
+
+# h264 hardware decode with opengl display
+gst-launch-1.0 filesrc location=fire.mp4 ! qtdemux ! h264parse ! omxh264dec ! glimagesink
+
+# h265 hardware decode
+gst-launch-1.0 filesrc location=fire.mp4 ! qtdemux ! h265parse ! omxh265dec ! glimagesink
+
+# vp9 hardware decode 
+gst-launch-1.0 filesrc location=fire.webm ! matroskademux ! omxvp9dec ! glimagesink
+
+# mpeg4 hardware decode 
+gst-launch-1.0 filesrc location=fire.mp4 ! qtdemux ! queue ! mpeg4videoparse ! omxmpeg4videodec ! glimagesink
+
+# play mkv/webm file
+gst-launch-1.0 filesrc location=fire.mkv ! matroskademux ! decodebin ! glimagesink
+
+# todo 10-bit h264/h265 decode
+
+

Audio decode

+
# there is no hardware decoder on th1520
+
+# let autoaudiosink choose which audio-sink to use
+gst-launch-1.0 filesrc location=blade.mp3 ! decodebin ! audioconvert ! autoaudiosink
+
+# mp3 decode
+gst-launch-1.0 filesrc location=blade.mp3 ! mpegaudioparse ! avdec_mp3 ! audioconvert ! autoaudiosink
+
+# aac decode
+gst-launch-1.0 filesrc location=blade.aac ! aacparse ! avdec_aac ! audioconvert ! autoaudiosink
+gst-launch-1.0 filesrc location=blade.aac ! aacparse ! faad ! audioconvert ! autoaudiosink
+## faad works well without aacparse
+gst-launch-1.0 filesrc location=blade.aac ! faad ! audioconvert ! autoaudiosink
+
+# opus decode
+## ogg file must be demuxed by oggdemux first
+gst-launch-1.0 filesrc location=blade.ogg ! oggdemux ! opusparse ! opusdec ! audioconvert ! autoaudiosink
+gst-launch-1.0 filesrc location=blade.ogg ! oggdemux ! opusparse ! avdec_opus ! audioconvert ! autoaudiosink
+
+# wav decode
+gst-launch-1.0 filesrc location=test.wav ! wavparse ! audioresample ! audioconvert ! autoaudiosink
+
+# use specific audiosink
+gst-launch-1.0 filesrc location=blade.mp3 ! decodebin ! audioconvert ! pulsesink
+
+# specify the output device by using alsasink with device property
+gst-launch-1.0 filesrc location=blade.mp3 ! decodebin ! audioconvert ! alsasink device=hw:0,2
+
+

demux and decode

+

We play media file in this section.

+
# play mp4 file with both audio and video
+gst-launch-1.0 filesrc location=fire.mp4 ! qtdemux name=demux \
+  demux.video_0 ! queue  ! decodebin ! videoconvert ! autovideosink \
+  demux.audio_0 ! queue ! decodebin ! audioconvert !  autoaudiosink
+
+

Encode to file

+

Video encode

+
# h264 encode test
+# before import video stream to omxh264dec, data should be transformed to frame with rawvideoparse
+# property and pad of rawvideoparse should be set to the same, so we use 'use-sink-caps=true' here
+gst-launch-1.0 videotestsrc ! videoconvert \
+  ! video/x-raw, format=NV12, width=640, height=480 \
+  ! rawvideoparse use-sink-caps=true ! omxh264enc ! fakesink
+
+# h264 hardware encode to file
+## todo: encoded h264 file has seek problem
+gst-launch-1.0 videotestsrc ! videoconvert \
+  ! video/x-raw, format=NV12, width=640, height=480 \
+  ! rawvideoparse use-sink-caps=true ! omxh264enc \
+  ! h264parse ! qtmux ! mp4mux ! filesink location=test.mp4
+
+# h264 hardware encode to file with specific bitrate(bit per second)
+gst-launch-1.0 videotestsrc ! videoconvert \
+  ! video/x-raw, format=NV12, width=640, height=480 \
+  ! rawvideoparse use-sink-caps=true  \
+  ! omxh264enc target-bitrate=3000000 \
+  ! h264parse ! filesink location=test.mp4
+
+
+# h265 hardware encode to file
+## this pipeline produces h265 stream only
+## qtdemux is not needed while decoding
+gst-launch-1.0 videotestsrc ! videoconvert \
+  ! video/x-raw, format=NV12, width=640, height=480 \
+  ! rawvideoparse use-sink-caps=true ! omxh265enc \
+  ! h265parse ! filesink location=test.h265
+
+# h264 hardware encode from camera to file
+gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert \
+  ! video/x-raw, format=NV12,width=640,height=480 \
+  ! rawvideoparse use-sink-caps=true \
+  ! omxh264enc ! h264parse ! filesink location=test.mp4 -e
+
+

Audio encode

+
# There is no hardware audio encoder on th1520
+
+# encode aac stream with adts container(.aac file)
+## the unit of the bitrate is 'bit/sec'
+gst-launch-1.0 audiotestsrc ! voaacenc bitrate=128000 ! avmux_adts ! filesink location=test.aac
+
+
+# todo: encode aac stream with adif container(.m4a file)
+
+# encode to mp3 file
+## the unit of the bitrate is 'kbit/sec'
+gst-launch-1.0 audiotestsrc ! lamemp3enc quality=2 target=bitrate bitrate=192 cbr=true ! id3v2mux ! filesink location=test.mp3
+
+# encode opus stream to .ogg file
+gst-launch-1.0 audiotestsrc ! opusenc ! oggmux ! filesink location=test.opus
+
+
+# todo: encode pcm stream to .wav file
+
+

mux and encode

+

This part has been removed to Video + audio transcode section.

+

Media file transcode

+

Video transcode

+

Since omx...dec cannot fulfill qtdemux and mp4mux, and gst-omx is no longer maintained, it is hard to mux mp4 file with these two plugins. To mux stream from omxh264dec, use avmux_mp4 instead. But there is no h265 or vp9 muxer available for omx...dec

+

The raw video stream should be processed by rawvideoparse before sent to encoder. Because itself cannot scale frame or change framerate, rawvideoparse need to get the stream info of its sink pad(src pad of the backward element). Therefore use-sink-caps must be set to true.

+

To change width and height, set properties output-width and output-height of omx...dec. To modify bitrate and bitrate control method, set properties control-rate and target-bitrate of omx...enc. To change framerate, set properties of videorate.

+
# h265 to h264
+gst-launch-1.0 filesrc location=test_h265.mp4 ! qtdemux ! h265parse ! omxh265dec \
+  ! rawvideoparse use-sink-caps=true \
+  ! omxh264enc ! h264parse ! avmux_mp4 ! filesink location=t_h264.mp4
+
+# vp9 to h264
+gst-launch-1.0 filesrc location=test_vp9.webm ! matroskademux ! omxvp9dec \
+  ! rawvideoparse use-sink-caps=true \
+  ! omxh264enc ! h264parse ! avmux_mp4 ! filesink location=t_h264.mp4
+
+# arbitrary input to h264
+gst-launch-1.0 filesrc location=test_h264.mp4 ! decodebin \
+  ! rawvideoparse use-sink-caps=true \
+  ! omxh264enc ! h264parse ! filesink location=t_h264.mp4
+
+# h264 to h264, with more options
+## set the video width and height to 1280×720, framerate to 15fps, bitrate mode to constant and bitrate to 5Mbps
+gst-launch-1.0 filesrc location=test_h264.mp4 ! qtdemux ! h264parse \
+  ! omxh264dec output-width=1280 output-height=720 \
+  ! videorate ! video/x-raw, framerate=15/1 \
+  ! rawvideoparse use-sink-caps=true  \
+  ! omxh264enc control-rate=constant target-bitrate=5000000 ! h264parse ! filesink location=t_h264.mp4
+
+## there is no vp9 encoder in th1520 omxil lib
+
+

Audio transcode

+
# aac to mp3
+gst-launch-1.0 filesrc location=test.aac ! aacparse ! avdec_aac ! audioconvert ! lamemp3enc quality=2 target=bitrate bitrate=192 cbr=true ! id3v2mux ! filesink location=t.mp3
+
+# mp3 to aac
+gst-launch-1.0 filesrc location=test.mp3 ! mpegaudioparse ! avdec_mp3 ! audioconvert ! voaacenc bitrate=128000 ! avmux_adts ! filesink location=t.aac
+
+# wav to mp3
+gst-launch-1.0 filesrc location=test.wav ! wavparse ! audioresample ! audioconvert ! lamemp3enc quality=2 target=bitrate bitrate=192 cbr=true ! id3v2mux ! filesink location=t.mp3
+
+# mp3 to wav
+gst-launch-1.0 filesrc location=test.mp3 ! mpegaudioparse ! avdec_mp3 ! audioresample ! audioconvert \
+  ! audio/x-raw, rate=44100, format=S16LE ! wavenc ! filesink location=t.wav
+
+

Video + audio remux and transcode

+
# mux test
+gst-launch-1.0 audiotestsrc ! autoaudiosink videotestsrc ! autovideosink
+
+# mux the test video and audio stream to a mp4 file
+## be aware that '-e' must be set to this pipeline,
+## and there is no '!' before audiotestsrc
+gst-launch-1.0 -e videotestsrc ! videoconvert \
+  ! video/x-raw, format=NV12, width=960, height=540 \
+  ! rawvideoparse use-sink-caps=true ! omxh264enc ! h264parse \
+  ! avmux_mp4 name=mux ! filesink location=t_h264.mp4 \
+  audiotestsrc ! lamemp3enc ! mux.
+
+# change container from mkv to mp4 with h264 stream
+## this means demux a mkv file then mux video and audio stream to mp4 file
+gst-launch-1.0 filesrc location=test_h264.mkv \
+  ! matroskademux name=demux mp4mux force-create-timecode-trak=true name=mux ! filesink location=t_h264.mp4 \
+  demux.video_0 ! queue ! video/x-h264 ! mux. \
+  demux.audio_0 ! queue ! audio/mpeg ! mux.
+
+

Media mixing

+

Camera capture

+

You can use command v4l2-ctl, which is included in package v4l-utils to get information of your camera.

+

For more information, read this article

+
# h264 hardware encode from camera to file
+gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert \
+  ! video/x-raw, format=NV12,width=640,height=480 \
+  ! rawvideoparse format=nv12 width=640 height=480 \
+  ! omxh264enc ! h264parse ! filesink location=test.mp4 -e
+
+
+

Stream transfer

+
# capture camera and stream to other machine
+
+## source
+gst-launch-1.0 v4l2src device=/dev/video0 !  videoconvert ! videorate \
+  ! video/x-raw,  format=NV12,width=640,height=480,framerate=20/1 \
+  ! rawvideoparse format=nv12 width=640 height=480  framerate=20/1 \
+  ! omxh264enc ! h264parse config-interval=1 ! video/x-h264,stream-format=byte-stream,alignment=nal \
+  ! rtph264pay ! udpsink  host=192.168.31.27 port=5600
+
+## destination
+gst-launch-1.0 udpsrc port=5600 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' \
+  ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink
+
+

Other tools

+

gst-inspect-1.0

+

gst-inspect-1.0 is a tool to print info about a GStreamer element(factory), which is included in gstreamer1.0-tools.

+
# print the GStreamer element list with a 'less' like paing filter.
+gst-inspect-1.0
+
+# print info of the element
+gst-inspect-1.0 <element_name>
+
+

gst-discover1.0

+

gst-discover-1.0 is a tool to show info about the media file, which is inclucded in gstreamer1.0-plugins-base-apps.

+
gst-discoverer-1.0 -v test.mp4
+
+

gst-play-1.0

+

If you are tired of manually build pipeline for playback by hand. You can use gst-play-1.0 as an alternative, which is included in gstreamer1.0-plugins-base-apps.

+
# play media file
+gst-play-1.0 test.mp4
+
+# play media file with specific sink
+gst-play-1.0 --videosink=glimagesink --audiosink=alsasink
+
+

Left button and right button can be used to seek. For more info, please read this article.

+

Other examples

+

Get ready

+

Debug tips

+

To get the cap info or property of an element, you may need to run gst-inspect-1.0 <element_name>. If gst-inspect-1.0 command not found, install gstreamer1.0-tools.

+

If you want to debug GStreamer, refer to the articles below. +https://gstreamer.freedesktop.org/documentation/tutorials/basic/debugging-tools.html +https://gstreamer.freedesktop.org/documentation/gstreamer/running.html?gi-language=c

+

Grammer

+

Here is a simple command-line pipeline.

+
gst-launch-1.0 videotestsrc ! autovideosink
+
+

! represent a link. The established pipeline looks like

+
videotestsrc => autovideosink
+
+

There are several properties in videotestsrc, which could be lookup by gst-inspect-1.0 videotestsrc.Set some properties:

+
gst-launch-1.0 videotestsrc pattern=ball flip=true ! autovideosink
+
+

NAME=VALUE is a property. pattern and flip are properties of videotestsrc.

+

Sometimes we need to control the behavior of gst-launch-1.0.

+
GST_DEBUG=3 gst-launch-1.0 videotestsrc pattern=ball flip=true ! autovideosink
+gst-launch-1.0 videotestsrc pattern=ball flip=true ! autovideosink --gst-debug-level=3
+
+

There are two ways to achieve this goal. One is setting environment variable. Another one is passing command-line argument to gst-launch-1.0. GST_DEBUG=3 and --gst-debug-level=3 have the same meaning.

+

In most video decoding cases, there is a video-stream and an audio stream. We need to use demuxer to seperate them. Demuxer usually have several src pad. Here is an example.

+
gst-launch-1.0 filesrc location=test-video.mp4 ! qtdemux name=demux demux. ! queue ! h264parse ! omxh264dec ! glimagesink demux. ! queue ! aacparse ! avdec_aac ! audioconvert !  alsasink
+
+

It is hard to read. Add some word wrap:

+
gst-launch-1.0 filesrc location=test-video.mp4 ! qtdemux name=demux \
+  demux. ! queue ! h264parse ! omxh264dec ! glimagesink \
+  demux. ! queue ! aacparse ! avdec_aac ! audioconvert ! pulsesink
+
+

Here we use a demuxer to seperate video and audio, the grammer is:

+
... demuxer name=DEMUXER_NAME \
+DEMUXER_NAME.PIPELINE_NAME_1 ! queue ! ...(the remaining part of pipeline 1) \
+DEMUXER_NAME.PIPELINE_NAME_2 ! queue ! ...(the remaining part of pipeline 2)
+
+

Sometimes we need to set certain properties of the stream at certain nodes in the pipeline, e.g set resolution of the videostream of the videotestsrc.

+
gst-launch-1.0 videotestsrc ! video/x-raw, width=800, height=600 ! glimagesink
+
+

We negotiated the pad properties between videotestsrc and glimagesink. The property names and values must be supported by both element. You can find them in Pad Templates section of gst-inspect-1.0.

+

Reference

+
    +
  1. GStreamer pipeline grammar - StackOverflow
  2. +
  3. GStreamer pipeline samples - GitHub
  4. +
  5. gst-launch-1.0 - GStreamer doc
  6. +
  7. How to display fps of streaming video in gsteramer? - StackOverflow
  8. +
  9. Storing AAC Audio and Retrieving - StackOverflow
  10. +
  11. Accelerated GStreamer User Guide - NVIDIA
  12. +
  13. Storing AAC Audio and Retrieving - StackOverflow
  14. +
  15. Play an opus file with gstreamer and pulseaudio - StackOverflow
  16. +
  17. mp4mux not working with omxh264enc
  18. +
  19. omxh264enc makes qtmux error out with "Buffer has no PTS." - FreeDesktop - Gitlab
  20. +
  21. gst-omx: Retire the whole package - FreeDesktop - Gitlab
  22. +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/en/adaptation/GStreamer\346\222\255\346\224\276\345\231\250\351\200\202\351\205\215/index.html" "b/en/adaptation/GStreamer\346\222\255\346\224\276\345\231\250\351\200\202\351\205\215/index.html" new file mode 100644 index 00000000..62dc0e09 --- /dev/null +++ "b/en/adaptation/GStreamer\346\222\255\346\224\276\345\231\250\351\200\202\351\205\215/index.html" @@ -0,0 +1,2118 @@ + + + + + + + + + + + + + + + + + + + + + + GStreamer Player Porting - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + +

Adaptation Documentation for GStreamer Player Supporting PTG omxil Library

+

Applicable SDK v1.1.2

+

Overview

+

PTG's OpenMAX IL library (vpu-omxil) enables the LicheePi 4A to smoothly perform hardware decoding for 4K 60fps video playback. This document details the integration and usage of the Parole player on the LicheePi 4A development board, providing a guide to the adaptation process on this platform. The workflow for hardware decoding, using H.264 as an example, is shown below.

+
                +-------------------------------------------+
+                |    +------------+       +------------+    |   +--------+
+video stream----+--->| omxh264dec +------>| video-sink +----+-->| player |
+                |    +------+-----+       +------------+    |   +--------+
+                |           |     GStreamer                 |
+                +-----------+-------------------------------+
+                            |
+                      +-----v-----+
+                      | vpu-omxil |
+                      +-----+-----+
+                            |
+                            |
+                    +-------v-------+
+                    | kernel module |
+                    |    (driver)   |
+                    +-------+-------+
+                            |
+                            v
+                        hardware
+
+
    +
  1. The video stream is read into GStreamer, processed, and sent to the omxh264dec decoder in GStreamer.
  2. +
  3. omxh264dec invokes PTG's vpu-omxil library, which accesses the hardware through the driver (kernel module) for hardware decoding.
  4. +
  5. The decoded stream is then passed to GStreamer's video sink and rendered by the player.
  6. +
+

A. GStreamer omxh264dec Decoding Test

+

To isolate the omxh264dec decoding component, the general structure is as follows:

+
  +---+------------+----+
+  |   +------------+    |
+  |   | omxh264dec |    |
+  |   +------------+    |
+  |      GStreamer      |
+  +----------+----------+
+             |
+  +----+-----v-----+----+
+  |    +-----------+    |
+  |    | vpu-omxil |    |
+  |    +-----------+    |
+  |  libomxil-bellagio  |
+  +----------+----------+
+             |
++------------v------------+
+|  - memalloc   - vc8000  |
+|  - hantrodec  - vidmem  |
+|      kernel modules     |
++------------+------------+
+             |
+             v
+          hardware
+
+

This section focuses on enabling the omxh264dec decoder, without involving screen output.

+

1. Driver Compilation, Installation, and Hardware Access Permissions

+

To enable hardware decoding, drivers must be compiled and installed to access the hardware.

+

1.1 Compile Drivers

+

PTG-provided driver sources:

+ +
1.1.1 Alternative Solution
+

The revyos/thead-kernel has merged the above modules, so you may avoid compiling these if using revyos_defconfig.

+

1.2 Install Drivers

+
# Use depmod to analyze dependencies and create modules.dep in /lib/modules/<kernel-version>.
+sudo depmod -a
+sudo modprobe vidmem vc8000 hantrodec memalloc
+
+# If modprobe fails, try using insmod
+# cd /usr/lib/modules/$(uname -r)
+# sudo insmod $(find . -name *vidmem.ko*)
+# sudo insmod $(find . -name *vc8000.ko*)
+# sudo insmod $(find . -name *hantrodec.ko*)
+# sudo insmod $(find . -name *memalloc.ko*)
+
+# Optional: Load modules at boot
+echo -e "\nvidmem\nhantrodec\nmemalloc\nvc8000\n" | sudo tee -a /etc/modules > /dev/null
+
+

1.3 Set Hardware Access Permissions

+

After installing kernel modules, device files for hantrodec, vidmem, and vc8000 will appear in /dev. By default, users lack access permissions, so non-root users will encounter errors when opening the omxil library.

+
# For one-time effect
+cd /dev
+sudo chmod 666 hantrodec vidmem vc8000
+
+# For persistent effect
+cat << EOF | sudo tee /lib/udev/rules.d/70-hantro.rules > /dev/null
+KERNEL=="vidmem", MODE="0666"
+KERNEL=="hantrodec", MODE="0666"
+KERNEL=="vc8000", MODE="0666"
+EOF
+
+

RevyOS Adaptation Record

+

For RevyOS-specific kernel modules, go to revyos/thead-kernel and download artifacts from GitHub CI.

+

2. Install vpu-omxil and Adjust Configuration

+

First, download and extract vpu-omxil to /usr/lib/omxil/. +Download vpu-omxil_1.2.1.tar.gz

+

As illustrated below, the following steps are required:

+
    +
  1. Register the OpenMax components in vpu-omxil with libomxil-bellagio.
  2. +
  3. Configure gst-omx (which provides the omxh264dec decoder) to recognize the component names when calling libomxil-bellagio.
  4. +
+
+---------+   +-------------------+   +-----------+
+| gst-omx +-->| libomxil-bellagio +-->| vpu-omxil |
++---------+   +-------------------+   +-----------+
+
+

2.1 Register Components in vpu-omxil with libomxil-bellagio

+
sudo apt install libomxil-bellagio-bin libomxil-bellagio0
+# Register components
+omxregister-bellagio -v /usr/lib/omxil/
+
+

The registration file is generated by omxregister-bellagio and, by default, is located at ~/.omxregister.

+
2.1.1 RevyOS/Debian Component Registration
+

th1520-vpu utilizes Debian’s automatic registration process in /usr/lib/riscv64-linux-gnu/libomxil-bellagio0 upon installation. The resulting registry appears as follows:

+
cat /var/lib/libomxil-bellagio0/registry
+/usr/lib/riscv64-linux-gnu/libomxil-bellagio0/libOMX.hantro.H2.video.encoder.so
+ ==> OMX.hantro.H2.video.encoder ==> OMX.hantro.H2.video.encoder.avc:OMX.hantro.H2.video.encoder.hevc:
+/usr/lib/riscv64-linux-gnu/libomxil-bellagio0/libOMX.hantro.VC8000D.image.decoder.so
+ ==> OMX.hantro.VC8000D.image.decoder ==> OMX.hantro.VC8000D.image.decoder.jpeg:
+/usr/lib/riscv64-linux-gnu/libomxil-bellagio0/libOMX.hantro.H2.image.encoder.so
+ ==> OMX.hantro.H2.image.encoder ==> OMX.hantro.H2.image.encoder.jpeg:
+/usr/lib/riscv64-linux-gnu/libomxil-bellagio0/libOMX.hantro.VC8000D.video.decoder.so
+ ==> OMX.hantro.VC8000D.video.decoder ==> OMX.hantro.VC8000D.video.decoder.mpeg4:OMX.hantro.VC8000D.video.decoder.avc:OMX.hantro.VC8000D.video.decoder.avs:OMX.hantro.VC8000D.video.decoder.h263:OMX.hantro.VC8000D.video.decoder.wmv:OMX.hantro.VC8000D.video.decoder.vp6:OMX.hantro.VC8000D.video.decoder.vp8:OMX.hantro.VC8000D.video.decoder.jpeg:OMX.hantro.VC8000D.video.decoder.hevc:OMX.hantro.VC8000D.video.decoder.vp9:OMX.hantro.VC8000D.video.decoder.avs2:
+
+

2.2 Configure gstomx.conf

+

Adjust the gstomx.conf settings to ensure the omxh264dec decoder calls the correct components. See the following patch for gst-omx configuration details:

+

gst-omx-01-add-libomxil-config.patch

+

3. Add dmabuf Patch

+

Please refer to the dmabuf patch for gst-omx provided by PTG:

+

gst-omx-02-set-dec-out-port-dmabuf.patch

+

4. Initial GStreamer Decoding Test

+
sudo apt install gstreamer1.0-omx-generic gstreamer1.0-omx-bellagio-config gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-gl gstreamer1.0-plugins-good gstreamer1.0-tools
+
+# 1. Basic decoding
+gst-launch-1.0 filesrc location=<test.mp4> ! qtdemux !  h264parse ! omxh264dec  ! videoconvert ! fakesink  sync=false
+# 2. Display FPS in the terminal
+# Reference: https://stackoverflow.com/questions/73948308
+gst-launch-1.0 filesrc location=<test.mp4> ! qtdemux !  h264parse ! omxh264dec  ! videoconvert ! fpsdisplaysink video-sink=fakesink  text-overlay=false sync=false -v 2>&1
+
+

fakesink discards all incoming video frames, bypassing the video-sink rendering stage to avoid performance loss, while fpsdisplaysink provides decoding speed statistics. Sample log output:

+
Setting pipeline to PAUSED ...[DBGT]
+vc8kdec compiled without trace support (ENABLE_DBGT_TRACE switch not enabled)
+Pipeline is PREROLLING ...
+Redistribute latency...
+OMX  ! decoder_get_parameter OMX_ErrorNoMore (2)
+Pipeline is PREROLLED ...
+Setting pipeline to PLAYING ...
+New clock: GstSystemClockRedistribute latency...
+0:01:39.5 / 0:01:49.4 (90.9 %)
+
+

Tip: If encountering errors such as [omxh264dec-omxh264dec0: Could not initialize supporting library.](https://gist.github.com/Sakura286/015fae6792e160268db7ad8a697dd2df), consider installing the debug-symbol packages for gst-omx, libomxil-bellagio, and libc6. Use gdb to troubleshoot by running the command above, setting a breakpoint at DWLInit and open to pinpoint where the issue arises.

+

RevyOS Compatibility Notes

+

During the RevyOS adaptation process, the following issues were identified as causes for dynamic library initialization failures:

+
    +
  1. Incompatible toolchain used when compiling vpu-omxil.
  2. +
  3. Missing vpu-omxil registration with omxregister-bellagio.
  4. +
  5. Insufficient permissions for /dev devices hantrodec, vc8000, and vidmem.
  6. +
+

B. Choosing the Right GStreamer video-sink

+

The video-sink is the last step in the GStreamer pipeline, handling the final output of the video stream to the screen. +In the tests above, fakesink served as a testing video-sink to verify decoder functionality. There are, however, many video-sink options available (see list), such as autovideosink, ximagesink, xvimagesink, fbdevsink, waylandsink, glimagesink, gtkglsink, each requiring specific installation packages as follows:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
video-sinkPackage
waylandsinkgstreamer1.0-plugins-bad
fbdevsinkgstreamer1.0-plugins-bad
autovideosinkgstreamer1.0-plugins-good
gtkglsinkgstreamer1.0-plugins-good
ximagesink | xvimagesinkgstreamer1.0-plugins-base
glimagesinkgstreamer1.0-plugins-base | gstreamer1.0-gl
+

Tip: Use gst-inspect-1.0 <video-sink-name> to view available options for each video-sink. +Tip: Adjust --gst-debug-level=<lv> to set the debug log level, where <lv> ranges from 1 to 6, with higher levels providing more verbose output. Setting the level below 4 is recommended, as higher levels can result in very long logs. +Experiment with different video-sink options, plugin parameters, and environmental variables until you find one that enables smooth H.264 hardware decoding.

+

RevyOS Adaptation Notes

+
    +
  • waylandsink: As RevyOS is currently (20230720) using the Xfce desktop environment, Wayland support is not feasible, so waylandsink is inherently unusable.
  • +
  • fbdevsink and ximagesink: Both are unusable.
  • +
  • xvimagesink: From pipeline graphs and logs, we can see that playbin or autovideosink automatically calls xvimagesink. After analyzing with perf, it’s evident that xvimagesink involves significant memcpy operations, severely impacting decoding performance. This issue persists even with the PTG-provided dmabuf patch, so it’s not a viable option.
  • +
  • gtkglsink: Due to GTK3’s lack of support for EGL on X11, and as RevyOS is based on X11 and only supports EGL, this option is also unusable.
  • +
+

The only remaining option is glimagesink. Based on Running and debugging GStreamer Applications and examples that use glimagesink, it appears necessary to specify the environment variables GST_GL_API and GST_GL_PLATFORM. Since RevyOS uses a gles2 + egl setup, the following command enables successful hardware decoding:

+
GST_GL_API=gles2 GST_GL_PLATFORM=egl gst-launch-1.0 filesrc location=<test.mp4> ! qtdemux !  h264parse ! omxh264dec  ! videoconvert ! fpsdisplaysink video-sink=glimagesink sync=false
+
+

However, these parameters cannot be passed as environment variables when GStreamer is invoked by a media player. Therefore, it’s essential to pass additional meson build options when compiling gst-plugins-base:

+
-Dgl_api=[\'gles2\'] -Dgl_platform=[\'egl\']
+
+

C. Player Support

+

Once the GStreamer pipeline functions correctly, the next step is to enable player support. Different players utilize different video-sink elements and have varying levels of dependency on GStreamer. The adaptation strategy for players is to either (1) modify the player to support the verified video-sink or (2) modify the GStreamer pipeline to support the player’s specified video-sink. The RevyOS adaptation process adopts the first approach.

+
                +-------------------------------------------+
+                |    +------------+       +------------+    |   +--------+
+video stream----+--->| omxh264dec +------>| video-sink +----+-->| player |
+                |    +------------+       +------------+    |   +--------+
+                |                GStreamer                  |
+                +-------------------------------------------+
+
+

RevyOS Adaptation Notes

+

Based on the GStreamer-supported applications list:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
UsableUpdatedApplicationNotes
GnashFlash Player
GEntransNot in Debian
20230226Kaffeine❌ Requires extensive KDE dependencies
✔️ Present in the riscv64 repository
❌ On Debian amd64 Gnome, the playback and control windows are separated, with VLC as the default player.
LcdgriloNot in Debian
✔️20230218Parole✔️ For XFCE
❓ No Wayland support, X11 only
✔️ Verified on Debian amd64 Gnome
✔️ Available in the riscv64 repository
SongbirdNot in Debian
SnappyNot in Debian
TotemRequires GTK3, which doesn’t support EGL on X11
+

Totem was initially chosen but proved difficult to support due to its inability to specify a video-sink other than gtkglsink, which RevyOS does not support. After evaluating GStreamer-compatible players, Parole emerged as a suitable choice. Parole, written with GObject, requires modification in the parole_gst_constructed method to set video-sink to glimagesink, as previously validated. The patch can be found here:

+

parole-01-add-glimagesink-support.patch

+

With this, the preliminary adaptation work is complete.

+

Summary of RevyOS Adaptation Work

+
    +
  1. Compile driver modules into the kernel, enable them at boot, and set device permissions.
  2. +
  3. Package PTG's omxil binary dynamic library files as th1520-vpu.
  4. +
  5. Modify th1520-vpu dependencies to require gst-omx, libomxil-bellagio, etc.
  6. +
  7. Add post-install operations, such as registering components with omxregister-bellagio.
  8. +
  9. Modify gst-omx:
  10. +
  11. Add support for the vpu-omxil component in the config.
  12. +
  13. Apply dmabuf patches.
  14. +
  15. Add support for h265 and vp9.
  16. +
  17. Modify gst-base to limit GL support to gles2 + egl during compilation.
  18. +
  19. Modify Parole to support glimagesink.
  20. +
+

Resources Used

+

Patch collection:

+

https://gist.github.com/Sakura286/26777ea8204c1819885e093806a4f7ca

+

PTG omxil library:

+

https://drive.google.com/file/d/1pYgCVI7WltfpskltJ-RqzVUCEC21FS56

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/en/benchmark/Chromium\351\261\274\347\274\270GPU\346\265\213\350\257\225/index.html" "b/en/benchmark/Chromium\351\261\274\347\274\270GPU\346\265\213\350\257\225/index.html" new file mode 100644 index 00000000..ea2d9cd6 --- /dev/null +++ "b/en/benchmark/Chromium\351\261\274\347\274\270GPU\346\265\213\350\257\225/index.html" @@ -0,0 +1,1347 @@ + + + + + + + + + + + + + + + + + + Chromium WebGL Test - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Chromium WebGL Test

+

Test website: https://webglsamples.org/aquarium/aquarium.html

+

Simply open the link. The number on the left indicates the number of fish being rendered; the more fish, the more it impacts performance.

+

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/benchmark/coremark/index.html b/en/benchmark/coremark/index.html new file mode 100644 index 00000000..dd7dc008 --- /dev/null +++ b/en/benchmark/coremark/index.html @@ -0,0 +1,1677 @@ + + + + + + + + + + + + + + + + + + + + + + coremark - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

CoreMark

+

Summary

+

CoreMark is a comprehensive benchmark designed to measure CPU performance in embedded systems. Developed in 2009 by Shay Gal-On of EEMBC, it aims to be an industry standard, replacing the outdated Dhrystone benchmark. The code, written in C, includes the following algorithms: list processing (insert, delete, find, and sort), matrix operations (common matrix functions), state machines (checking if an input stream contains valid numbers), and CRC. Users can freely download CoreMark, port it to their platform, and obtain performance scores.

+

Test Items Overview

+

File Structure

+
├── barebones      -- Directory for modifications when porting to a bare-metal environment
+│   ├── core_portme.c        -- Target platform configuration information for porting
+│   ├── core_portme.h        -- Timer and board initialization implementation
+│   ├── core_portme.mak      -- Makefile for this subdirectory
+│   ├── cvt.c
+│   └── ee_printf.c          -- Serial implementation of print function
+├── core_list_join.c    -- List operation program
+├── core_main.c         -- Main program
+├── coremark.h          -- Header file with project configuration and data structure definitions
+├── coremark.md5        
+├── core_matrix.c       -- Matrix operations program
+├── core_state.c        -- State machine control program
+├── core_util.c         -- CRC calculation program
+├── cygwin              -- Test code for x86 Cygwin and GCC 3.4 (quad-core, dual-core, and single-core systems)
+│   ├── core_portme.c
+│   ├── core_portme.h
+│   └── core_portme.mak
+├── freebsd             -- Similarly, test code for various OS platforms
+│   ├── ...
+├── LICENSE.md
+├── linux
+│   ├── ...
+├── linux64
+│   ├── ...
+├── macos
+│   ├── ...
+├── Makefile            
+├── README.md           -- Readme file with basic introduction to the CoreMark project
+├── rtems
+│   ├── ...
+└── simple
+    ├── ...
+    └──
+
+

Make Targets

+
    +
  • run - Default target, generates run1.log and run2.log
  • +
  • run1.log - Runs the benchmark with performance parameters and outputs to run1.log
  • +
  • run2.log - Runs the benchmark with validation parameters and outputs to run2.log
  • +
  • run3.log - Runs the benchmark with config file-generated parameters and outputs to run3.log
  • +
  • compile - Compiles the benchmark executable
  • +
  • link - Links the benchmark executable
  • +
  • check - Tests the MD5 of unmodified source files
  • +
  • clean - Cleans temporary files
  • +
+

Compilation and Execution

+

According to the README, simply executing make in the coremark folder compiles and runs the tests. The results appear in the Results folder, with run1.log containing the performance results.

+

Test Plan

+

CoreMark tests are generally short. Plan to run 10 tests concurrently and take the average score.

+

Execution Steps

+
$ git clone https://github.com/eembc/coremark.git
+$ cd coremark
+$ make
+
+

Test Results

+
2K performance run parameters for coremark.
+CoreMark Size    : 666
+Total ticks      : 12915
+Total time (secs): 12.915000
+Iterations/Sec   : 8517.228029
+Iterations       : 110000
+Compiler version : GCC13.1.0
+Compiler flags   : -O2 -DPERFORMANCE_RUN=1  -lrt
+Memory location  : Please put data memory location here
+            (e.g. code in flash, data on heap etc)
+seedcrc          : 0xe9f5
+[0]crclist       : 0xe714
+[0]crcmatrix     : 0x1fd7
+[0]crcstate      : 0x8e3a
+[0]crcfinal      : 0x33ff
+Correct operation validated. See README.md for run and reporting rules.
+CoreMark 1.0 : 8517.228029 / GCC13.1.0 -O2 -DPERFORMANCE_RUN=1  -lrt / Heap
+
+

GCC 10.4 + xtheadc

+
make XCFLAGS="-march=rv64gv0p7_zfh_xtheadc -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns  -msignedness-cmpiv -fno-code-hoisting -mno-thread-jumps1 -mno-iv-adjust-addr-cost -mno-expand-split-imm"
+
+
2K performance run parameters for coremark.
+CoreMark Size    : 666
+Total ticks      : 15129
+Total time (secs): 15.129000
+Iterations/Sec   : 13219.644392
+Iterations       : 200000
+Compiler version : GCC10.4.0
+Compiler flags   : -O2 -march=rv64gv0p7_zfh_xtheadc -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns  -msignedness-cmpiv -fno-code-hoisting -mno-thread-jumps1 -mno-iv-adjust-addr-cost -mno-expand-split-imm -DPERFORMANCE_RUN=1  -lrt
+Memory location  : Please put data memory location here
+                        (e.g. code in flash, data on heap etc)
+seedcrc          : 0xe9f5
+[0]crclist       : 0xe714
+[0]crcmatrix     : 0x1fd7
+[0]crcstate      : 0x8e3a
+[0]crcfinal      : 0x4983
+Correct operation validated. See README.md for run and reporting rules.
+CoreMark 1.0 : 13219.644392 / GCC10.4.0 -O2 -march=rv64gv0p7_zfh_xtheadc -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns  -msignedness-cmpiv -fno-code-hoisting -mno-thread-jumps1 -mno-iv-adjust-addr-cost -mno-expand-split-imm -DPERFORMANCE_RUN=1  -lrt / Heap
+
+

GCC 13.1 + xthead matrix

+
make XCFLAGS="-march=rv64imafd_xtheadba_xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadfmv_xtheadint_xtheadmac_xtheadmemidx_xtheadmempair_xtheadsync -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns -fno-code-hoisting -mno-thread-jumps"
+
+
2K performance run parameters for coremark.
+CoreMark Size    : 666
+Total ticks      : 11897
+Total time (secs): 11.897000
+Iterations/Sec   : 9246.028411
+Iterations       : 110000
+Compiler version : GCC13.1.0
+Compiler flags   : -O2 -march=rv64imafd_xtheadba_xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadfmv_xtheadint_xtheadmac_xtheadmemidx_xtheadmempair_xtheadsync -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns -fno-code-hoisting -DPERFORMANCE_RUN=1  -lrt
+Memory location  : Please put data memory location here
+            (e.g. code in flash, data on heap etc)
+seedcrc          : 0xe9f5
+[0]crclist       : 0xe714
+[0]crcmatrix     : 0x1fd7
+[0]crcstate      : 0x8e3a
+[0]crcfinal      : 0x33ff
+Correct operation validated. See README.md for run and reporting rules.
+CoreMark 1.0 : 9246.028411 / GCC13.1.0 -O2 -march=rv64imafd_xtheadba_xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadfmv_xtheadint_xtheadmac_xtheadmemidx_xtheadmempair_xtheadsync -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns -fno-code-hoisting -DPERFORMANCE_RUN=1  -lrt / Heap
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/benchmark/glmark2/index.html b/en/benchmark/glmark2/index.html new file mode 100644 index 00000000..b9bb7dda --- /dev/null +++ b/en/benchmark/glmark2/index.html @@ -0,0 +1,1489 @@ + + + + + + + + + + + + + + + + + + + + + + glmark2 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

glmark2

+

glmark2 is an OpenGL 2.0 and ES 2.0 benchmark. +We will only use glmark2-es2 for relevant tests here . This is a testing tool for x11-glesv2.

+

This software package is already pre-installed in the system.

+

th1520 only support glmark-es2.

+

Pre-steps

+

If you need perfect performance, put your device into performance mode before you start, here's how to do it.

+

Please execute the following commands in the terminal. This command requires a root account or sudo.

+
echo performance >  /sys/devices/system/cpu/cpufreq/policy0/scaling_governor 
+
+cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq
+
+

After the execution is completed, you will see a series of numbers, such as "1848000".

+

Start operation

+

Open a terminal and enter glmark2-es2. This test allows the use of non-root accounts.

+

After entering the command, a new window will appear on your desktop with an active screen.

+

Need to connect HDMI to the monitor, do not execute the command through SSH connection.

+

After the test is completed, the additional activity screen will disappear and the score will be output in the terminal in the form of glmark2 Score: xxx.

+

For example:

+
debian@lpi4a:~/Desktop$ glmark2-es2
+=======================================================
+    glmark2 2021.12
+=======================================================
+    OpenGL Information
+    GL_VENDOR:      Imagination Technologies
+    GL_RENDERER:    PowerVR B-Series BXM-4-64
+    GL_VERSION:     OpenGL ES 3.2 build 1.17@6210866
+    Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=8
+    Surface Size:   800x600 windowed
+=======================================================
+[build] use-vbo=false: FPS: 513 FrameTime: 1.949 ms
+[build] use-vbo=true: FPS: 1367 FrameTime: 0.732 ms
+[texture] texture-filter=nearest: FPS: 1449 FrameTime: 0.690 ms
+[texture] texture-filter=linear: FPS: 1454 FrameTime: 0.688 ms
+[texture] texture-filter=mipmap: FPS: 1453 FrameTime: 0.688 ms
+[shading] shading=gouraud: FPS: 1172 FrameTime: 0.853 ms
+[shading] shading=blinn-phong-inf: FPS: 1180 FrameTime: 0.847 ms
+[shading] shading=phong: FPS: 1002 FrameTime: 0.998 ms
+[shading] shading=cel: FPS: 979 FrameTime: 1.021 ms
+[bump] bump-render=high-poly: FPS: 700 FrameTime: 1.429 ms
+[bump] bump-render=normals: FPS: 1354 FrameTime: 0.739 ms
+[bump] bump-render=height: FPS: 1320 FrameTime: 0.758 ms
+[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1059 FrameTime: 0.944 ms
+[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 381 FrameTime: 2.625 ms
+[pulsar] light=false:quads=5:texture=false: FPS: 1484 FrameTime: 0.674 ms
+[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 349 FrameTime: 2.865 ms
+[desktop] effect=shadow:windows=4: FPS: 736 FrameTime: 1.359 ms
+[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 161 FrameTime: 6.211 ms
+[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 173 FrameTime: 5.780 ms
+[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 242 FrameTime: 4.132 ms
+[ideas] speed=duration: FPS: 593 FrameTime: 1.686 ms
+[jellyfish] <default>: FPS: 572 FrameTime: 1.748 ms
+[terrain] <default>: FPS: 42 FrameTime: 23.810 ms
+[shadow] <default>: FPS: 619 FrameTime: 1.616 ms
+[refract] <default>: FPS: 82 FrameTime: 12.195 ms
+[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1539 FrameTime: 0.650 ms
+[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1238 FrameTime: 0.808 ms
+[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1535 FrameTime: 0.651 ms
+[function] fragment-complexity=low:fragment-steps=5: FPS: 1411 FrameTime: 0.709 ms
+[function] fragment-complexity=medium:fragment-steps=5: FPS: 1050 FrameTime: 0.952 ms
+[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1376 FrameTime: 0.727 ms
+[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1394 FrameTime: 0.717 ms
+[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1379 FrameTime: 0.725 ms
+=======================================================
+                                  glmark2 Score: 950 
+=======================================================
+
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/benchmark/images/chromium_webgl_1.png b/en/benchmark/images/chromium_webgl_1.png new file mode 100644 index 00000000..379bfeb7 Binary files /dev/null and b/en/benchmark/images/chromium_webgl_1.png differ diff --git a/en/benchmark/lmbench/index.html b/en/benchmark/lmbench/index.html new file mode 100644 index 00000000..42c2e0df --- /dev/null +++ b/en/benchmark/lmbench/index.html @@ -0,0 +1,1756 @@ + + + + + + + + + + + + + + + + + + + + + + lmbench - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

lmbench for Lpi4A

+

Software Version

+
+

lmbench for RevyOS

+
+

Test Description

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Bandwidth Measurement ToolLatency Measurement ToolOthers
Read Cache FileContext Switching\
Copy MemoryNetwork: Connection Establishment, Pipe, TCP, UDP, and RPC Hot Potato\
Read MemoryFile System Creation and Deletion\
Write MemoryProcess CreationProcessor Clock Rate Calculation
PipeSignal Handling\
TCPUpper-Level System Calls\
\Memory Read Latency\
+

Test Preparation

+

Download the testing tool:

+
git clone https://github.com/revyos/lmbench3.git
+
+
+

This version has been ported for RevyOS.

+
+

Before starting the tests, you need to install the dependencies:

+
sudo apt install gcc make libntirpc-dev -y
+
+

Test Execution

+

Execute the commands to compile, configure, and test:

+
cd lmbench3
+cd src
+make results
+
+

After compilation, the following options will prompt you to set:

+

The options that do not require changes can be left blank to automatically set default values.

+

MULTIPLE COPIES [default 1]: Sets the number of concurrent instances of lmbench to run. Running more instances may slow down lmbench. The default is 1, so set it to the default value of 1.

+
=====================================================================
+
+If you are running on an MP machine and you want to try running
+multiple copies of lmbench in parallel, you can specify how many here.
+
+Using this option will make the benchmark run 100x slower (sorry).
+
+NOTE:  WARNING! This feature is experimental and many results are 
+    known to be incorrect or random!
+
+MULTIPLE COPIES [default 1]: 
+=====================================================================
+
+

Job placement selection [default 1]: Controls job scheduling methods. The default is 1, which allows job scheduling, so set it to the default value.

+
=====================================================================
+
+Options to control job placement
+1) Allow scheduler to place jobs
+2) Assign each benchmark process with any attendant child processes
+   to its own processor
+3) Assign each benchmark process with any attendant child processes
+   to its own processor, except that it will be as far as possible
+   from other processes
+4) Assign each benchmark and attendant processes to their own
+   processors
+5) Assign each benchmark and attendant processes to their own
+   processors, except that they will be as far as possible from
+   each other and other processes
+6) Custom placement: you assign each benchmark process with attendant
+   child processes to processors
+7) Custom placement: you assign each benchmark and attendant
+   processes to processors
+
+Note: some benchmarks, such as bw_pipe, create attendant child
+processes for each benchmark process.  For example, bw_pipe
+needs a second process to send data down the pipe to be read
+by the benchmark process.  If you have three copies of the
+benchmark process running, then you actually have six processes;
+three attendant child processes sending data down the pipes and 
+three benchmark processes reading data and doing the measurements.
+
+Job placement selection [default 1]: 
+=====================================================================
+
+

Memory: Sets the test memory size. The default is $MB, which is the maximum testable memory calculated by the program, or you can manually define the test value. Here, we will use the default value.

+
=====================================================================
+
+Several benchmarks operate on a range of memory.  This memory should be
+sized such that it is at least 4 times as big as the external cache[s]
+on your system.   It should be no more than 80% of your physical memory.
+
+The bigger the range, the more accurate the results, but larger sizes
+take somewhat longer to run the benchmark.
+
+MB [default 686]: 
+Checking to see if you have 686 MB; please wait for a moment...
+686MB OK
+686MB OK
+686MB OK
+Hang on, we are calculating your cache line size.
+OK, it looks like your cache line is 64 bytes.
+
+=====================================================================
+
+

SUBSET (ALL|HARDWARE|OS|DEVELOPMENT) [default all]: Selects the test set, which includes ALL/HARDWARE/OS/DEVELOPMENT. The default is all, so we will select all.

+
=====================================================================
+
+lmbench measures a wide variety of system performance, and the full suite
+of benchmarks can take a long time on some platforms.  Consequently, we
+offer the capability to run only predefined subsets of benchmarks, one
+for operating system-specific benchmarks and one for hardware-specific
+benchmarks.  We also offer the option of running only selected benchmarks,
+which is useful during operating system development.
+
+Please remember that if you intend to publish the results you either need
+to do a full run or one of the predefined OS or hardware subsets.
+
+SUBSET (ALL|HARDWARE|OS|DEVELOPMENT) [default all]: 
+=====================================================================
+
+

FASTMEM [default no]: Memory latency test. If you want to skip this test, set it to yes. If you do not want to skip it, set it to no. The default is no, so we will keep the default value.

+
=====================================================================
+
+This benchmark measures, by default, memory latency for a number of
+different strides.  That can take a long time and is most useful if you
+are trying to figure out your cache line size or if your cache line size
+is greater than 128 bytes.
+
+If you are planning on sending in these results, please don't do a fast
+run.
+
+Answering yes means that we measure memory latency with a 128-byte stride.  
+
+FASTMEM [default no]: 
+=====================================================================
+
+

SLOWFS [default no]: File system latency test. If you want to skip this test, set it to yes. If you do not want to skip it, set it to no. The default is no, so we will keep the default value.

+
=====================================================================
+
+This benchmark measures, by default, file system latency.  That can
+take a long time on systems with old-style file systems (i.e., UFS,
+FFS, etc.).  Linux' ext2fs and Sun's tmpfs are fast enough that this
+test is not painful.
+
+If you are planning on sending in these results, please don't do a fast
+run.
+
+If you want to skip the file system latency tests, answer "yes" below.
+
+SLOWFS [default no]: 
+=====================================================================
+
+

DISKS [default none]: Disk bandwidth and seek time. You need to specify the disk device path, such as /dev/sda. By default, it does not test (default is none), so we will keep the default value.

+
=====================================================================
+
+This benchmark can measure disk zone bandwidths and seek times.  These can
+be turned into whizzy graphs that pretty much tell you everything you might
+need to know about the performance of your disk.  
+
+This takes a while and requires read access to a disk drive.  
+Write is not measured, see disk.c to see how if you want to do so.
+
+If you want to skip the disk tests, hit return below.
+
+If you want to include disk tests, then specify the path to the disk
+device, such as /dev/sda.  For each disk that is readable, you'll be
+prompted for a one-line description of the drive, i.e., 
+
+    Iomega IDE ZIP
+or
+    HP C3725S 2GB on 10MB/sec NCR SCSI bus
+
+DISKS [default none]: 
+=====================================================================
+
+

REMOTE [default none]: Network testing requires two machines and rsh access. This tests whether the testing machine can rsh into another machine. By default, it does not test (default is none), so we will keep the default value.

+
=====================================================================
+
+If you are running on an idle network and there are other, identically
+configured systems, on the same wire (no gateway between you and them),
+and you have rsh access to them, then you should run the network part
+of the benchmarks to them.  Please specify any such systems as a space
+separated list such as: ether-host fddi-host hippi-host.
+
+REMOTE [default none]: 
+=====================================================================
+
+

Processor mhz [default 999 MHz, 1.0010 nanosec clock]: Tests the CPU frequency. The default is $MHZ, which is the frequency determined by the program. You can also specify it based on your situation, e.g., 3500, in MHz. Here, we will keep the default value.

+
=====================================================================
+
+Calculating mhz, please wait for a moment...
+I think your CPU mhz is 
+
+    999 MHz, 1.0010 nanosec clock
+
+but I am frequently wrong.  If that is the wrong Mhz, type in your
+best guess as to your processor speed.  It doesn't have to be exact,
+but if you know it is around 800, say 800.  
+
+Please note that some processors, such as the P4, have a core which
+is double-clocked, so on those processors the reported clock speed
+will be roughly double the advertised clock rate.  For example, a
+1.8GHz P4 may be reported as a 3592MHz processor.
+
+Processor mhz [default 999 MHz, 1.0010 nanosec clock]: 
+=====================================================================
+
+

FSDIR [default /usr/tmp]: A temporary directory to store test files. You can set your own value; the default is `/usr

+

/tmp`, so we will keep the default value.

+
=====================================================================
+
+We need a place to store a 686 Mbyte file as well as create and delete a
+large number of small files.  We default to /usr/tmp.  If /usr/tmp is a
+memory-resident file system (i.e., tmpfs), pick a different place.
+Please specify a directory that has enough space and is a local file
+system.
+
+FSDIR [default /usr/tmp]: 
+=====================================================================
+
+

Status output file [default /dev/tty]: The directory to store test output information. You can set your own value; the default is /dev/tty, so we will keep the default value.

+
=====================================================================
+
+lmbench outputs status information as it runs various benchmarks.
+By default, this output is sent to /dev/tty, but you may redirect
+it to any file you wish (such as /dev/null...).
+
+Status output file [default /dev/tty]: 
+=====================================================================
+
+

Mail results [default yes]: Whether to email the test results. The default is yes, so we will set it to no.

+
=====================================================================
+
+There is a database of benchmark results that is shipped with new
+releases of lmbench.  Your results can be included in the database
+if you wish.  The more results the better, especially if they include
+remote networking.  If your results are interesting, i.e., for a new
+fast box, they may be made available on the lmbench web page, which is
+
+    http://www.bitmover.com/lmbench
+
+Mail results [default yes]: no
+OK, no results mailed.
+=====================================================================
+
+

After completing the above settings, the tests will start automatically.

+

Test Results

+

Test Notes

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/benchmark/p7zip/index.html b/en/benchmark/p7zip/index.html new file mode 100644 index 00000000..eb7f0d56 --- /dev/null +++ b/en/benchmark/p7zip/index.html @@ -0,0 +1,1458 @@ + + + + + + + + + + + + + + + + + + + + + + p7zip - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

p7zip

+

p7zip test is used to evaluate the decompression performance of the system, visually assess performance through data. The following are the steps to run the 7zip test.

+

Install 7zip

+

First, you need to install p7zip in RevyOS.

+
debian@lpi4a:~/Desktop$ sudo apt update
+debian@lpi4a:~/Desktop$ sudo apt install p7zip-full
+
+

Execute Performance Test

+

To conduct the p7zip test, enter the following command in the terminal to execute:

+
debian@lpi4a:~/Desktop$ 7z b
+
+

The system will begin testing and then output performance data.

+

By following these steps, you can install and test the performance of 7zip on RevyOS.

+

The following are reference test results, using the image version RevyOS20231210 16g version.

+
debian@lpi4a:~/Desktop$ 7z b
+
+7-Zip 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
+p7zip Version 16.02 (locale=C.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs LE)
+
+LE
+CPU Freq: - 64000000 64000000 - - - - - -
+
+RAM size:   15739 MB,  # CPU hardware threads:   4
+RAM usage:    882 MB,  # Benchmark threads:      4
+
+                       Compressing  |                  Decompressing
+Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
+         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS
+
+22:       3252   303   1045   3164  |      75268   394   1628   6422
+23:       3092   307   1025   3151  |      74514   399   1617   6447
+24:       3021   318   1022   3249  |      72017   398   1588   6322
+25:       2945   320   1050   3363  |      67801   395   1529   6034
+----------------------------------  | ------------------------------
+Avr:             312   1036   3232  |              396   1591   6306
+Tot:             354   1313   4769
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/benchmark/reboot/index.html b/en/benchmark/reboot/index.html new file mode 100644 index 00000000..7cb9335b --- /dev/null +++ b/en/benchmark/reboot/index.html @@ -0,0 +1,1479 @@ + + + + + + + + + + + + + + + + + + + + + + reboot-test - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Restart Test

+

Summary

+

Perform a restart test on the entire machine using a script.

+

Test Item Description

+

Check if there are any issues such as freezing when the test machine is restarted.

+

Test Plan

+

Conduct restart tests 500 times.

+

Operating Steps

+

Create a restart script named cycletest.service_ in /lib/system/system:

+
[Unit]
+Description=Reboots unit after 30s
+
+[Service]
+StandardOutput=syslog+console
+ExecStart=/bin/sh -c "\
+test -f /cycle-count || echo 0 > /cycle-count;\
+echo 'starting cycletest';\
+sleep 30;\
+expr `cat /cycle-count` + 1 > /cycle-count;\
+systemctl reboot;\
+"
+
+[Install]
+WantedBy=multi-user.target
+
+

Then install and start the test with the following commands:

+
systemctl daemon-reload
+systemctl enable cycletest.service (enable the service to start on reboot)
+systemctl start cycletest.service (start the service, should reboot in 30s)
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/benchmark/stream/index.html b/en/benchmark/stream/index.html new file mode 100644 index 00000000..12a5dbe0 --- /dev/null +++ b/en/benchmark/stream/index.html @@ -0,0 +1,1466 @@ + + + + + + + + + + + + + + + + + + + + + + stream - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Stream

+

Instructions

+

The STREAM benchmark is a simple synthetic benchmark program that measures sustainable memory bandwidth (in MB/s) and the corresponding computation rate for simple vector kernels.

+

The stream consists of a single file, and to perform the test, you only need to compile stream.c:

+
git clone <https://github.com/microseyuyu/STREAM.git>
+cd STREAM
+gcc -O3 -fopenmp -DN=2000000 -DNTIMES=10 stream.c -o stream
+export OMP_NUM_THREADS=8
+./stream
+
+

Parameter descriptions:

+
    +
  • -O3: Specifies the highest compilation optimization level, that is, 3.
  • +
  • fopenmp: Enables OpenMP, suitable for multi-processor environments, to better achieve the actual maximum memory bandwidth. When enabled, the program defaults to running the number of threads equal to the number of CPU threads.
  • +
+

DN=2000000: Specifies the size of the test arrays a[], b[], and c[] (Array size). This value has a significant impact on the test results (the default value for version 5.9 is 2000000. If stream.c is version 5.10, the parameter name changes to -DSTREAM_ARRAY_SIZE, with a default value of 10000000). Note: the size of the test array must be set much larger than the size of the CPU's highest-level cache (usually L3 Cache), otherwise it tests the throughput performance of the CPU cache, rather than the memory throughput performance. +- -DNTIMES=10: The number of repetitions, from which the optimal value is selected. +- OMP_NUM_THREADS=8: Number of threads.

+

Sample results:

+
debian@lpi4a:~/Desktop/STREAM$ ./stream
+-------------------------------------------------------------
+STREAM version $Revision: 5.10 $
+-------------------------------------------------------------
+This system uses 8 bytes per array element.
+-------------------------------------------------------------
+*****  WARNING: ******
+      It appears that you set the preprocessor variable N when compiling this code.
+      This version of the code uses the preprocesor variable STREAM_ARRAY_SIZE to control the array size
+      Reverting to default value of STREAM_ARRAY_SIZE=10000000
+*****  WARNING: ******
+Array size = 10000000 (elements), Offset = 0 (elements)
+Memory per array = 76.3 MiB (= 0.1 GiB).
+Total memory required = 228.9 MiB (= 0.2 GiB).
+Each kernel will be executed 10 times.
+ The *best* time for each kernel (excluding the first iteration)
+ will be used to compute the reported bandwidth.
+-------------------------------------------------------------
+Number of Threads requested = 8
+Number of Threads counted = 8
+-------------------------------------------------------------
+Your clock granularity/precision appears to be 1 microseconds.
+Each test below will take on the order of 21622 microseconds.
+   (= 21622 clock ticks)
+Increase the size of the arrays if this shows that
+you are not getting at least 20 clock ticks per test.
+-------------------------------------------------------------
+WARNING -- The above is only a rough guideline.
+For best results, please be sure you know the
+precision of your system timer.
+-------------------------------------------------------------
+Function    Best Rate MB/s  Avg time     Min time     Max time
+Copy:            8364.2     0.019258     0.019129     0.019508
+Scale:           8291.0     0.019572     0.019298     0.020162
+Add:             6223.6     0.038835     0.038563     0.040011
+Triad:           6222.5     0.038776     0.038570     0.039470
+-------------------------------------------------------------
+Solution Validates: avg error less than 1.000000e-13 on all three arrays
+-------------------------------------------------------------
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/en/build/debian/Debian\350\275\257\344\273\266\345\214\205\346\236\204\345\273\272\346\265\201\347\250\213/index.html" "b/en/build/debian/Debian\350\275\257\344\273\266\345\214\205\346\236\204\345\273\272\346\265\201\347\250\213/index.html" new file mode 100644 index 00000000..e2e7411a --- /dev/null +++ "b/en/build/debian/Debian\350\275\257\344\273\266\345\214\205\346\236\204\345\273\272\346\265\201\347\250\213/index.html" @@ -0,0 +1,1536 @@ + + + + + + + + + + + + + + + + + + + + + + Debian Software Package Build Process - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Debian Package Build Process

+

Host Debian

+
# Compiling under qemu-user
+sudo apt update
+sudo apt install -y \
+    sbuild buildd qemu-system-misc qemu-user-static binfmt-support \
+    ca-certificates apt-transport-https devscripts mmdebstrap
+
+# Native
+sudo apt install -y \
+    sbuild buildd ca-certificates apt-transport-https devscripts mmdebstrap
+
+# Fix debian-ports certificate issues on the host (may not be necessary at this stage)
+wget https://mirror.sjtu.edu.cn/debian/pool/main/d/debian-ports-archive-keyring/debian-ports-archive-keyring_2023.02.01_all.deb
+sudo dpkg -i ./debian-ports-archive-keyring_2023.02.01_all.deb
+
+# Add current user to sbuild without root
+sudo sbuild-adduser $USER
+
+

Creating the Packaging Environment

+

revyos-c910v

+
export SUFFIX=revyos-c910v-sbuild
+sudo sbuild-createchroot --debootstrap=debootstrap --arch=riscv64 \
+    --chroot-suffix=-$SUFFIX \
+    --keyring='' \
+    --no-deb-src \
+    --include=debian-ports-archive-keyring,ca-certificates,apt-transport-https,eatmydata \
+    --extra-repository="deb [trusted=yes] https://mirror.iscas.ac.cn/revyos/revyos-c910v/ revyos-c910v main contrib non-free" \
+    --extra-repository="deb [trusted=yes] https://mirror.iscas.ac.cn/revyos/revyos-addons/ revyos-addons main" \
+    sid /srv/chroot/sid-riscv64-$SUFFIX \
+    https://mirror.iscas.ac.cn/revyos/revyos-base/
+
+# Fix environment-related issues
+sudo sed -i 's/deb http/deb [trusted=yes] http/g' /srv/chroot/sid-riscv64-$SUFFIX/etc/apt/sources.list
+sudo rm -rf /srv/chroot/sid-riscv64-$SUFFIX/var/lib/apt/lists/*
+echo "command-prefix=eatmydata" | sudo tee -a /etc/schroot/chroot.d/sid-riscv64-$SUFFIX-*
+
+# Adjust source order - to use the c910v repository for the same version
+# Edit sources.list to ensure the following order
+deb [trusted=yes] https://mirror.iscas.ac.cn/revyos/revyos-c910v/ revyos-c910v main contrib non-free
+deb [trusted=yes] https://mirror.iscas.ac.cn/revyos/revyos-addons/ revyos-addons main
+deb [trusted=yes] https://mirror.iscas.ac.cn/revyos/revyos-base/ sid main contrib non-free non-free-firmware
+
+

Build Command

+

revyos-c910v

+
sbuild --arch=riscv64 -d sid -c sid-riscv64-revyos-c910v-sbuild xxx.dsc
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/build/debian/enable_optimization_gcc/index.html b/en/build/debian/enable_optimization_gcc/index.html new file mode 100644 index 00000000..9288ca55 --- /dev/null +++ b/en/build/debian/enable_optimization_gcc/index.html @@ -0,0 +1,1473 @@ + + + + + + + + + + + + + + + + + + + + + + Enable Optimization GCC - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+ + + +
+
+ + + + + + + +

Enable T-Head Optimization GCC

+

This is an experimental feature. If you encounter any issues, you can report an issue.

+
# Add Optimization deb source
+sudo sed -i '1ideb https://mirror.iscas.ac.cn/revyos/revyos-c910v/ revyos-c910v main' /etc/apt/sources.list
+# Update
+sudo apt update && sudo apt upgrade -y
+# Install gcc-10/gcc-13
+sudo apt install -y build-essential gcc-13 g++-13
+# Reboot to avoid other problems
+sudo reboot
+
+

Test gcc-10 (gcc10.4 enable xtheadc+v0p7)

+
gcc -v
+Using built-in specs.
+COLLECT_GCC=gcc
+COLLECT_LTO_WRAPPER=/usr/lib/gcc/riscv64-linux-gnu/10/lto-wrapper
+Target: riscv64-linux-gnu
+Configured with: ../src/configure -v --with-pkgversion='Debian 10.4.0-8revyos2.3' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=riscv64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libsanitizer --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --disable-multilib --with-arch=rv64gcv0p7_zfh_xtheadc --with-abi=lp64d --enable-checking=release --build=riscv64-linux-gnu --host=riscv64-linux-gnu --target=riscv64-linux-gnu
+Thread model: posix
+Supported LTO compression algorithms: zlib zstd
+gcc version 10.4.0 (Debian 10.4.0-8revyos2.3)
+
+

Test gcc-13 (gcc13.2 enable xthead extension)

+
gcc-13 -v
+Using built-in specs.
+COLLECT_GCC=gcc-13
+COLLECT_LTO_WRAPPER=/usr/libexec/gcc/riscv64-linux-gnu/13/lto-wrapper
+Target: riscv64-linux-gnu
+Configured with: ../src/configure -v --with-pkgversion='Debian 13.2.0-1revyos1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=riscv64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --disable-multilib --with-arch=rv64gc_zfh_xtheadba_xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadfmv_xtheadint_xtheadmac_xtheadmemidx_xtheadmempair_xtheadsync --with-abi=lp64d --enable-checking=release --build=riscv64-linux-gnu --host=riscv64-linux-gnu --target=riscv64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=16
+Thread model: posix
+Supported LTO compression algorithms: zlib zstd
+gcc version 13.2.0 (Debian 13.2.0-1revyos1)
+
+

gcc-10/gcc-13 Difference

+

Except for v0p7, all optimizations can use gcc-13 as a replacement for gcc-10.

+

The optimizations in the latter can report issues to the mainline as they are already part of the mainline functionality.

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/en/build/debian/\347\274\226\350\257\221\345\231\250\347\233\270\345\205\263\350\257\264\346\230\216/index.html" "b/en/build/debian/\347\274\226\350\257\221\345\231\250\347\233\270\345\205\263\350\257\264\346\230\216/index.html" new file mode 100644 index 00000000..4ce0daae --- /dev/null +++ "b/en/build/debian/\347\274\226\350\257\221\345\231\250\347\233\270\345\205\263\350\257\264\346\230\216/index.html" @@ -0,0 +1,1568 @@ + + + + + + + + + + + + + + + + + + + + + + Compiler Related Description - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Compiler-related Information

+

RevyOS comes pre-packaged with an optimized compiler that primarily supports rv64gc.

+

General Extensions

+ + + + + + + + + + + + + + + + + + + + + + + +
Supported Optimizationsgcc-10gcc-13clang-17
Zfh
v0p7
+

THead Vendor Extensions

+

xthead Current Version v2.2

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Supported Optimizations1gcc-102gcc-13.2clang-17
XTheadCmo
XTheadSync
XTheadBa
XTheadBb
XTheadBs
XTheadCondMov
XTheadMemIdx
XTheadMemPair
XTheadFMemIdx
XTheadMac
XTheadFmv
XTheadInt
XTHeadVdot3
+

Notes:

+
    +
  1. gcc-11/gcc-12/clang-14/clang-15/clang-16 have insufficient or no xthead extensions, hence they are not listed.
  2. +
  3. gcc-10 uses xtheadc to cover all extensions, and gcc-10 is built using the source code from the thead-gcc project.
  4. +
  5. XTHeadVdot is not supported on c910v/c920.
  6. +
+

Reference Documentation

+ + + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/en/build/other/gcc\347\274\226\350\257\221\350\275\257\344\273\266\350\257\264\346\230\216/index.html" "b/en/build/other/gcc\347\274\226\350\257\221\350\275\257\344\273\266\350\257\264\346\230\216/index.html" new file mode 100644 index 00000000..6241ca35 --- /dev/null +++ "b/en/build/other/gcc\347\274\226\350\257\221\350\275\257\344\273\266\350\257\264\346\230\216/index.html" @@ -0,0 +1,1469 @@ + + + + + + + + + + + + + + + + + + + + + + GCC Tips - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

gcc build programs instructions

+

Installing gcc

+

First, ensure gcc is installed:

+
sudo apt update
+sudo apt install gcc
+
+

Running the program

+

Here's an example of how to compile and run the simplest 'hello, world' program:

+

Compile the following content and name it hello.c:

+
#include <stdio.h>
+
+int main()
+{
+        printf("hello, world\n");
+        return 0;
+}
+
+

Compile and execute:

+
debian@lpi4a:~/test$ gcc -g hello.c -o hello
+
+debian@lpi4a:~/test$ ./hello
+hello, world
+
+

g++ build programs instructions

+

First, ensure g++ is installed:

+
sudo apt update
+sudo apt install g++
+
+

Running the program

+

Here's an example of how to compile and run the simplest 'hello, world' program:

+

Compile the following content and name it hello.cpp:

+
#include <iostream>
+using namespace std;
+
+int main()
+{
+    cout << "Hello, World!\n";
+    return 0;
+}
+
+

Compile and execute:

+
debian@lpi4a:~/test$ g++ -g hello.cpp -o hello
+debian@lpi4a:~/test$ ./hello
+Hello, World!
+
+

These are the simplest examples of compiling and running programs with gcc/g++. For more complex applications, please refer to the corresponding system programming manuals.

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/build/other/manuel_build_kernel/index.html b/en/build/other/manuel_build_kernel/index.html new file mode 100644 index 00000000..4dc1d8ee --- /dev/null +++ b/en/build/other/manuel_build_kernel/index.html @@ -0,0 +1,1410 @@ + + + + + + + + + + + + + + + + + + + + + + Manuel Build Kernel - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Manuel Build Kernel

+

Build Toolchain Download link:

+

https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1663142514282/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1-20220906.tar.gz

+

Assuming Build environment is Ubuntu or Debian

+

Install dependency:

+
sudo apt install -y gdisk dosfstools g++-12-riscv64-linux-gnu build-essential libncurses-dev gawk flex bison openssl libssl-dev tree dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf device-tree-compiler
+
+

Uncompress Toolchain (Assuming install to /opt):

+
tar -xvf Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1-20220906.tar.gz -C /opt
+
+

Setup environment variables (Assuming Toolchain is in /opt):

+
export PATH="/opt/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1/bin:$PATH"
+export CROSS_COMPILE=riscv64-unknown-linux-gnu-
+export ARCH=riscv
+
+

Download code using git:

+
# Kernel repo
+git clone https://github.com/revyos/thead-kernel.git
+
+

Build Kernel:

+
# make install target directory
+mkdir rootfs && mkdir rootfs/boot
+
+# after mkdir, the directory tree should look like this:
+# .. << current workdir
+# |-- rootfs
+#     |-- boot
+# |-- thead-kernel
+#     |-- ...
+
+# enter kernel directory and start build
+cd thead-kernel
+make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv revyos_defconfig
+make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv -j$(nproc)
+make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv -j$(nproc) dtbs
+sudo make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv INSTALL_MOD_PATH=../rootfs/ modules_install -j$(nproc)
+sudo make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv INSTALL_PATH=../rootfs/boot zinstall -j$(nproc)
+# build perf (if needed)
+make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv LDFLAGS=-static NO_LIBELF=1 NO_JVMTI=1 VF=1 -C tools/perf/
+sudo cp -v tools/perf/perf ../rootfs/sbin/perf-thead
+# Install Kernel
+sudo cp -v arch/riscv/boot/Image ../rootfs/boot/
+# Install DTB
+sudo cp -v arch/riscv/boot/dts/thead/light-lpi4a.dtb ../rootfs/boot/
+sudo cp -v arch/riscv/boot/dts/thead/light-lpi4a-dsi0-hdmi.dtb ../rootfs/boot/
+
+

After all build steps, you can copy or override kernel and module files on your board using files in "rootfs", If you replace kernel with new one please make sure you also replace with corresponding kernel module folder.

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/en/build/other/thead-qemu\347\274\226\350\257\221\346\265\201\347\250\213/index.html" "b/en/build/other/thead-qemu\347\274\226\350\257\221\346\265\201\347\250\213/index.html" new file mode 100644 index 00000000..34fa284c --- /dev/null +++ "b/en/build/other/thead-qemu\347\274\226\350\257\221\346\265\201\347\250\213/index.html" @@ -0,0 +1,1401 @@ + + + + + + + + + + + + + + + + + + + + + + T-Head QEMU Build Process - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

T-Head QEMU Compilation Process

+

C910V forced CPU specification patch

+
From 5164bca5a4bcde4534dc1a9aa3a7f619719874cf Mon Sep 17 00:00:00 2001
+From: Han Gao <gaohan@iscas.ac.cn>
+Date: Sun, 23 Apr 2023 22:11:35 +0800
+Subject: [PATCH] qemu-user-riscv64 default cpu is c910v
+
+Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
+---
+ linux-user/riscv/target_elf.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/linux-user/riscv/target_elf.h b/linux-user/riscv/target_elf.h
+index 9dd65652ee45..3195cfa71408 100644
+--- a/linux-user/riscv/target_elf.h
++++ b/linux-user/riscv/target_elf.h
+@@ -9,7 +9,7 @@
+ #define RISCV_TARGET_ELF_H
+ static inline const char *cpu_get_model(uint32_t eflags)
+ {
+-    /* TYPE_RISCV_CPU_ANY */
+-    return "any";
++    /* TYPE_RISCV_CPU_C910V */
++    return "c910v";
+ }
+ #endif
+
+

Compilation process

+
./configure \
+  --prefix=$HOME/qemu-install \
+  --static \
+  --target-list=riscv64-linux-user \
+  --disable-system \
+  --disable-pie \
+  --interp-prefix=/etc/qemu-binfmt/%M
+
+make -j20
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/en/build/\346\236\204\345\273\272\346\226\207\346\241\243/index.html" "b/en/build/\346\236\204\345\273\272\346\226\207\346\241\243/index.html" new file mode 100644 index 00000000..0448f208 --- /dev/null +++ "b/en/build/\346\236\204\345\273\272\346\226\207\346\241\243/index.html" @@ -0,0 +1,1345 @@ + + + + + + + + + + + + + + + + + + Build Documentation - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Build Documentation

+

This section describes the build documentation related to RevyOS

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/changelog/ahead/20230802/index.html b/en/changelog/ahead/20230802/index.html new file mode 100644 index 00000000..85b779b2 --- /dev/null +++ b/en/changelog/ahead/20230802/index.html @@ -0,0 +1,1434 @@ + + + + + + + + + + + + + + + + + + + + + + 20230802 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20230802

+

Test Image

+

Based on lpi4a 20230614 +Add ahead support & mixed 20230820 changes

+

Download

+

https://mirror.iscas.ac.cn/revyos/extra/images/beagle/test/20230802/

+

Other

+ + + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/changelog/lpi4a/20230412/index.html b/en/changelog/lpi4a/20230412/index.html new file mode 100644 index 00000000..48d38dc3 --- /dev/null +++ b/en/changelog/lpi4a/20230412/index.html @@ -0,0 +1,1530 @@ + + + + + + + + + + + + + + + + + + + + + + 20230412 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20230412

+ +

System Version

+

RevyOS 20230412 version

+

Desktop Environment

+
    +
  • The default desktop environment is xfce4
  • +
  • Uses pulseaudio as the audio service
  • +
+

Supported Applications

+
    +
  • LibreOffice: 7.5.2 (7.5.2~rc2-1revyos1)
  • +
  • GIMP: 2.10.34 (2.10.34-1)
  • +
  • VLC: 3.0.18 (3.0.18-2)
  • +
  • Firefox: 111.0 (111.0-1revyos1)
  • +
  • xfce4: 4.18
  • +
  • Debian GCC: 13 (13-20230320-1)
  • +
  • Python3: 3.11.2 (3.11.2-1+b1)
  • +
  • Go: 1.19.8 (1.19.8-2)
  • +
  • Rust: 1.65.0 (1.65.0+dfsg1-1~exp3)
  • +
+

Kernel

+
    +
  • Kernel version number: 5.10.113 (5.10.113-g7b352f5ac2ba)
  • +
+

Hardware

+
    +
  • Maximum CPU frequency: 1.84Ghz
  • +
  • Supports HDMI output
  • +
  • Supports WIFI/BT module RTL8723DS
  • +
+

System Services

+
    +
  • Uses network-manager as the network manager
  • +
  • Preinstalled systemd-timesyncd as NTP service, can automatically synchronize time after connecting to the internet
  • +
+

Current Version Issues

+
    +
  • Due to hardware issues with the Bluetooth part of the Wifi/BT module, the system does not currently support Bluetooth
  • +
  • wpasupplicant needs to be installed manually to connect to wireless networks
  • +
  • The xfce sound control panel cannot display sound devices
  • +
  • The system desktop does not support GPU hardware acceleration
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/changelog/lpi4a/20230425/index.html b/en/changelog/lpi4a/20230425/index.html new file mode 100644 index 00000000..8a5a9623 --- /dev/null +++ b/en/changelog/lpi4a/20230425/index.html @@ -0,0 +1,1549 @@ + + + + + + + + + + + + + + + + + + + + + + 20230425 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+ +
+ + + +
+
+ + + + + + + +

20230425

+ +

System Version

+

RevyOS 20230425 Version

+ +
    +
  • The default desktop environment is xfce4
  • +
  • Uses PulseAudio as the audio service
  • +
  • Uses wpasupplicant as the wireless network service
  • +
+ +
    +
  • LibreOffice: 7.5.2 (7.5.2~rc2-1revyos1)
  • +
  • GIMP: 2.10.34 (2.10.34-1)
  • +
  • VLC: 3.0.18 (3.0.18-2)
  • +
  • Firefox: 111.0 (111.0-1revyos1)
  • +
  • xfce4: 4.18
  • +
  • Debian GCC: 13 (13-20230320-1)
  • +
  • Python3: 3.11.2 (3.11.2-1+b1)
  • +
  • Go: 1.19.8 (1.19.8-2)
  • +
  • Rust: 1.65.0 (1.65.0+dfsg1-1~exp3)
  • +
+ +
    +
  • Kernel Version: 5.10.113 (5.10.113-g7b352f5ac2ba)
  • +
+ +
    +
  • CPU maximum frequency is 1.84GHz
  • +
  • Supports HDMI output
  • +
  • Supports WIFI/BT module RTL8723DS
  • +
+

System Services

+
    +
  • Uses network-manager as the network manager
  • +
  • Pre-installed systemd-timesyncd as NTP service, can automatically synchronize time when connected to the internet
  • +
+

Current Version Issues

+
    +
  • Due to hardware issues in the Bluetooth part of the Wifi/BT module, Bluetooth support is temporarily unavailable
  • +
  • Keyboard input on the character interface terminal shows latency
  • +
+

Fixed Issues

+
    +
  • xfce sound control panel could not display sound devices
  • +
  • System desktop does not support GPU hardware acceleration
  • +
  • Requires manual installation of wpasupplicant to connect to wireless networks
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/changelog/lpi4a/20230511/index.html b/en/changelog/lpi4a/20230511/index.html new file mode 100644 index 00000000..c01d3838 --- /dev/null +++ b/en/changelog/lpi4a/20230511/index.html @@ -0,0 +1,1549 @@ + + + + + + + + + + + + + + + + + + + + + + 20230511 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+ + + +
+
+ + + + + + + +

20230511

+ +

System Version

+

RevyOS 20230511 version

+ +

Added support for the GNOME desktop

+
    +
  • Support for GNOME desktop
  • +
  • Support for XFCE4 desktop
  • +
+

Supported Applications

+
    +
  • GIMP: 2.10.34 (2.10.34-1)
  • +
  • VLC: 3.0.18 (3.0.18-2)
  • +
  • Firefox: 111.0 (111.0-1revyos1)
  • +
  • GNOME: 42.4 (pre-installed in the GNOME version)
  • +
  • XFCE4: 4.18 (pre-installed in the XFCE version)
  • +
  • Python3: 3.11.2 (3.11.2-1+b1)
  • +
  • Go: 1.19.8 (1.19.8-2) not pre-installed
  • +
  • Rust: 1.65.0 (1.65.0+dfsg1-1~exp3) not pre-installed
  • +
  • GCC: 13 (13.1.0) not pre-installed
  • +
  • Chromium not supported (plan in progress)
  • +
+ +
    +
  • Kernel version number: 5.10.113 (5.10.113-gbb4691fe5572)
  • +
  • IOTOP related options enabled
  • +
+ +
    +
  • CPU maximum frequency is 1.84GHz
  • +
  • Supports HDMI output
  • +
  • Supports WIFI/BT module RTL8723DS
  • +
  • Added fan speed adjustment feature, fan speed adjusts according to CPU temperature
  • +
+

System Services

+
    +
  • Added feature to query version timestamp, type 'cat /etc/revyos-release' in the terminal to obtain
  • +
  • Uses NetworkManager as the network manager
  • +
  • Pre-installed systemd-timesyncd as NTP service, can automatically synchronize time when connected to the internet
  • +
+

Current Version Issues

+
    +
  • Due to hardware issues with the Bluetooth part of the Wifi/BT module, the system temporarily has no Bluetooth support
  • +
  • Keyboard input display lag in character interface terminal
  • +
  • Does not support 2K resolution
  • +
+

Fixed Issues

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/changelog/lpi4a/20230614/index.html b/en/changelog/lpi4a/20230614/index.html new file mode 100644 index 00000000..5e997889 --- /dev/null +++ b/en/changelog/lpi4a/20230614/index.html @@ -0,0 +1,1553 @@ + + + + + + + + + + + + + + + + + + + + + + 20230614 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+ + + +
+
+ + + + + + + +

20230614

+ +

System Version

+

RevyOS 20230614 Version

+ +

The current version only provides support for the xfce4 desktop

+
    +
  • Support for xfce4 desktop
  • +
+

Supported Applications

+

Chromium support is provided

+
    +
  • LibreOffice: 7.5.2 (7.5.2~rc2-1revyos1)
  • +
  • GIMP: 2.10.34 (2.10.34-1)
  • +
  • VLC: 3.0.18 (3.0.18-2)
  • +
  • Firefox: 111.0 (111.0-1revyos1)
  • +
  • Chromium: 109.0 (109.0.5414.119-1revyos1)
  • +
  • xfce4: 4.18 (pre-installed in xfce version)
  • +
  • Python3: 3.11.2 (3.11.2-1+b1)
  • +
  • Go not pre-installed: 1.19.8 (1.19.8-2)
  • +
  • Rust not pre-installed: 1.65.0 (1.65.0+dfsg1-1~exp3)
  • +
  • GCC not pre-installed: 13 (13.1.0)
  • +
+ +
    +
  • Kernel version: 5.10.113 (5.10.113-gfac22a756532)
  • +
  • EXFAT support enabled
  • +
  • HDMI audio support added
  • +
+ +
    +
  • Maximum CPU frequency is 1.84GHz
  • +
  • HDMI output supported
  • +
  • Supports WIFI/BT module RTL8723DS, both WIFI and Bluetooth functions are enabled
  • +
  • Fan speed control feature supported
  • +
+

System Services

+
    +
  • Added the version timestamp query function, enter 'cat /etc/revyos-release' in the terminal to get it
  • +
  • Uses network-manager as the network manager
  • +
  • Pre-installed systemd-timesyncd as NTP service, can automatically sync time after connecting to the internet
  • +
+

Current Version Issues

+
    +
  • Does not support 2K resolution
  • +
  • Mouse dragging lag
  • +
+

Fixed Issues

+
    +
  • Fixed WIFI and Bluetooth functionality
  • +
  • Input lag for keyboard entries on character interface terminal
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/changelog/lpi4a/20230810/index.html b/en/changelog/lpi4a/20230810/index.html new file mode 100644 index 00000000..27f9b5b5 --- /dev/null +++ b/en/changelog/lpi4a/20230810/index.html @@ -0,0 +1,1607 @@ + + + + + + + + + + + + + + + + + + + + + + 20230810 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + +

20230810

+

System Version

+

RevyOS 20230810 Version

+

Version Download

+

RevyOS 20230810 lpi4a

+
    +
  • boot-20230810-222415.ext4
  • +
  • root-20230810-222415.ext4
  • +
  • u-boot-with-spl-lpi4a.bin 8G version needs to be flashed
  • +
  • u-boot-with-spl-lpi4a-16g.bin 16G version needs to be flashed
  • +
+

Destructive Update

+

The boot process has been redesigned, so all partitions need to be reflashed.

+

Errors Encountered After Update

+
Retrieving file: /dtbs/linux-image-5.10.113-lpi4a/<NULL>-light-c910.
+Skipping l0r for failure retrieving fdt
+Light LPI4A#
+
+When encountering this situation, you need to execute</br>
+env default -a -f;env save;reset
+
+ +

The current version only provides support for xfce4 desktop.

+

Supported Applications

+
    +
  • LibreOffice: 7.5.2 (7.5.2~rc2-1revyos1)
  • +
  • GIMP: 2.10.34 (2.10.34-1)
  • +
  • VLC: 3.0.18 (3.0.18-2)
  • +
  • Parole: 4.18.0 (4.18.0-1revyos1)
  • +
  • Chromium: 109.0 (109.0.5414.119-1revyos1)
  • +
  • xfce4: 4.18 (pre-installed in xfce version)
  • +
  • Python3: 3.11.2 (3.11.2-1+b1)
  • +
  • Firefox: not pre-installed 114.0 (114.0-1revyos1)
  • +
  • Code-OSS: not pre-installed 1.80.1 (1.80.1-1+electron23)
  • +
  • Go: not pre-installed 1.19.8 (1.19.8-2)
  • +
  • Rust: not pre-installed 1.65.0 (1.65.0+dfsg1-1~exp3)
  • +
  • GCC: not pre-installed 13 (13.1.0)
  • +
+ +

Kernel commit ID: #2023.08.10.02.31+c130cdb21

+
    +
  • Kernel version: 5.10.113 (2023.08.10.02.31+c130cdb21)
  • +
  • Added support for USB serial devices.
  • +
+ +
    +
  • Maximum CPU frequency is 1.84GHz.
  • +
  • Supports HDMI output.
  • +
  • Supports WIFI/BT module RTL8723DS, both WI-FI and Bluetooth functions have been enabled.
  • +
  • Supports fan speed control functions.
  • +
+

System Services

+
    +
  • Version timestamp (/etc/revyos-release) - xfce desktop: 20230810-222415
  • +
+

Current Version Issues

+
    +
  • Does not support 2K resolution.
  • +
  • Mouse dragging lag.
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/changelog/lpi4a/20230916/index.html b/en/changelog/lpi4a/20230916/index.html new file mode 100644 index 00000000..58a0b27f --- /dev/null +++ b/en/changelog/lpi4a/20230916/index.html @@ -0,0 +1,1491 @@ + + + + + + + + + + + + + + + + + + + + + + 20230916 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20230916

+

System Version

+

RevyOS 20230916 Version

+

Version Download

+

RevyOS 20230916 lpi4a

+
    +
  • boot-20230916-231502.ext4
  • +
  • root-20230916-231502.ext4
  • +
  • u-boot-with-spl-lpi4a.bin 8G version needs to be flashed
  • +
  • u-boot-with-spl-lpi4a-16g.bin 16G version needs to be flashed
  • +
+

SBI Timestamp

+
    +
  • U-Boot SPL 2020.01-g8640db84 (Sep 21 2023 - 02:14:36 +0000)
  • +
+

U-Boot Timestamp

+
    +
  • U-Boot 2020.01-g8640db84 (Sep 21 2023 - 02:14:36 +0000)
  • +
+

Kernel Commit ID

+
    +
  • +

    2023.09.11.06.54+b4d73b48a

    +
  • +
+

Version Timestamp (/etc/revyos-release)

+
    +
  • XFCE Desktop: 20230916-231502
  • +
+

System and Desktop

+
    +
  • Supports DebianOS xfce4 Desktop
  • +
+

Hardware Acceleration

+
    +
  • xfce4 Desktop supports GPU acceleration
  • +
+

Supported Applications

+
    +
  • LibreOffice: 7.5.4~rc2-1
  • +
  • Supports GIMP: 2.10.34-1
  • +
  • Supports VLC: 3.0.18 (3.0.18-2)
  • +
  • Supports Parole: 4.18.0 (4.18.0-1revyos1)
  • +
  • Firefox not pre-installed: 114.0 (114.0-1revyos1)
  • +
  • Supports Chromium: 109.0 (109.0.5414.119-1revyos1)
  • +
  • Supports xfce4: 4.18 (pre-installed in xfce version)
  • +
  • Supports Python3: 3.11.2 (3.11.2-1+b1)
  • +
  • Supports apt-get installation source
  • +
  • Go not pre-installed: 1.19 (1.19~1+b1)
  • +
  • Rust not pre-installed: 1.66.0 (1.66.0+dfsg1-1~exp1)
  • +
  • GCC not pre-installed: 13 (13.1.0-1)
  • +
+ +
    +
  • Kernel Version: 5.10.113-lpi4a #2023.09.11.06.54+b4d73b48a
  • +
  • Upgraded DDK version to 1.17
  • +
+ +
    +
  • CPU Maximum Frequency: 1.84Ghz
  • +
  • Only HDMI output is enabled
  • +
  • Supports WIFI/BT module RTL8723DS, with both WIFI and Bluetooth functionality enabled
  • +
  • Supports fan speed control function
  • +
+

Existing Issues

+
    +
  • 2K resolution not supported
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/changelog/lpi4a/20231026/index.html b/en/changelog/lpi4a/20231026/index.html new file mode 100644 index 00000000..10da0c4d --- /dev/null +++ b/en/changelog/lpi4a/20231026/index.html @@ -0,0 +1,1574 @@ + + + + + + + + + + + + + + + + + + + + + + 20231026 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20231026

+

System Version

+

RevyOS 20231026 Version

+

Version Download

+

RevyOS 20231026 lpi4a

+
    +
  • boot-20231026_181638.ext4.zst
  • +
  • root-20231026_181638.ext4.zst
  • +
  • u-boot-with-spl-lpi4a.bin 8GB version flashing
  • +
  • u-boot-with-spl-lpi4a-16g.bin 16GB version flashing
  • +
+

System and Desktop

+
    +
  • Supports DebianOS xfce4 desktop
  • +
+

Hardware Acceleration

+
    +
  • xfce4 desktop supports GPU acceleration
  • +
+

Supported Applications

+
    +
  • LibreOffice: 7.5.4~rc2-1
  • +
  • Supports GIMP: 2.10.34-1
  • +
  • Supports VLC: 3.0.18 (3.0.18-2)
  • +
  • Supports Parole: 4.18.0 (4.18.0-1revyos1)
  • +
  • Firefox not pre-installed: 114.0 (114.0-1revyos1)
  • +
  • Supports Chromium: 109.0 (109.0.5414.119-1revyos1)
  • +
  • Supports xfce4: 4.18 (pre-installed in xfce version)
  • +
  • Supports Python3: 3.11.2 (3.11.2-1+b1)
  • +
  • Supports apt-get installation sources
  • +
  • Go not pre-installed: 1.19 (1.19~1+b1)
  • +
  • Rust not pre-installed: 1.66.0 (1.66.0+dfsg1-1~exp1)
  • +
  • GCC not pre-installed: 13 (13.1.0-1)
  • +
  • Supports mpv: 0.35.1
  • +
+ +
    +
  • Kernel version: 5.10.113-lpi4a
  • +
  • Upgraded DDK version to 1.17
  • +
+ +
    +
  • CPU clock speed up to 1.84GHz
  • +
  • Only HDMI output is enabled
  • +
  • Supports WIFI/BT module RTL8723DS, WI-FI and Bluetooth functions are enabled
  • +
  • Supports fan speed adjustment function
  • +
+

Fixed Issues

+
    +
  • Resolved the issue of HDMI audio popping
  • +
  • Added a temporary solution for mouse pointer offset
  • +
+

Existing Issues

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/changelog/lpi4a/20231210/index.html b/en/changelog/lpi4a/20231210/index.html new file mode 100644 index 00000000..4914d153 --- /dev/null +++ b/en/changelog/lpi4a/20231210/index.html @@ -0,0 +1,1606 @@ + + + + + + + + + + + + + + + + + + + + + + 20231210 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20231210

+

System Version

+

RevyOS 20231210 Version

+

Download Version

+

RevyOS 20231210 lpi4a

+
    +
  • boot-lpi4a-20231210_134926.ext4.zst
  • +
  • root-lpi4a-20231210_134926.ext4.zst
  • +
  • u-boot-with-spl-lpi4a.bin 8g version flashing
  • +
  • u-boot-with-spl-lpi4a-16g.bin 16g version flashing
  • +
+

SBI Timestamp

+
    +
  • U-Boot SPL 2020.01-g8640db84 (Sep 21 2023 - 02:14:36 +0000)
  • +
+

U-Boot Timestamp

+
    +
  • U-Boot 2020.01-g8640db84 (Sep 21 2023 - 02:14:36 +0000)
  • +
+

Kernel Commit ID

+
    +
  • 2023.12.08.03.26+b8c5d3546
  • +
+

Version Timestamp (/etc/revyos-release)

+
    +
  • XFCE Desktop: 20231210-134926
  • +
+

System and Desktop

+
    +
  • Supports DebianOS xfce4 desktop
  • +
+

Hardware Acceleration

+
    +
  • xfce4 desktop supports GPU acceleration and 2D acceleration
  • +
+

Supported Applications

+
    +
  • LibreOffice: 7.5.4~rc2-1
  • +
  • GIMP: 2.10.34-1
  • +
  • VLC: 3.0.18 (3.0.18-2revyos1)
  • +
  • Parole: 4.18.0 (4.18.0-1revyos1)
  • +
  • Not pre-installed Firefox: 118.0 (118.0.2-1revyos1)
  • +
  • Chromium: 109.0 (109.0.5414.119-1revyos2)
  • +
  • Supports xfce4: 4.18 (pre-installed in the xfce version)
  • +
  • Python3: 3.11.4 (3.11.4-1)
  • +
  • Supports apt-get installation source
  • +
  • Not pre-installed Go: 1.19 (1.19~1+b1)
  • +
  • Not pre-installed Rust: 1.70.0 (1.70.0+dfsg1-1)
  • +
  • Not pre-installed GCC: 13 (13.2.0-4revyos1)
  • +
  • Supports mpv: 0.35.1
  • +
+ +
    +
  • Kernel Version: 5.10.113-lpi4a #2023.12.08.03.26+b8c5d3546
  • +
  • Upgraded DDK version to 1.17
  • +
+ +
    +
  • CPU Maximum Frequency: 1.84GHz
  • +
  • Supports single HDMI output or HDMI/DSI dual output
  • +
  • Supports 2D acceleration
  • +
  • Supports WIFI/BT module RTL8723DS, with WIFI and Bluetooth features enabled
  • +
  • Supports fan speed control function
  • +
+

Fixed Issues

+
    +
  • Improved mouse movement delay issue on menu
  • +
+

Existing Issues

+
    +
  • The Bluetooth function of WIFI/BT module AIC8800 is temporarily unavailable
  • +
  • AIC8800 kernel support already exists, but the corresponding device tree and firmware are temporarily unavailable
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/changelog/lpi4a/20240202/index.html b/en/changelog/lpi4a/20240202/index.html new file mode 100644 index 00000000..d14f8b14 --- /dev/null +++ b/en/changelog/lpi4a/20240202/index.html @@ -0,0 +1,1603 @@ + + + + + + + + + + + + + + + + + + + + + + 20240202 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20240202

+

System Version

+

RevyOS 20240202 Version

+

Version Download

+

RevyOS 20240202 lpi4a

+
    +
  • boot-lpi4a-20240202_141632.ext4.zst
  • +
  • root-lpi4a-20240202_141632.ext4.zst
  • +
  • u-boot-with-spl-lpi4a-main.bin 8g version flashing
  • +
  • u-boot-with-spl-lpi4a-16g-main.bin 16g version flashing
  • +
+

SBI Timestamp

+
    +
  • U-Boot SPL 2020.01-g69d7d3cd (Jan 31 2024 - 12:58:20 +0000)
  • +
+

U-Boot Timestamp

+
    +
  • U-Boot 2020.01-g69d7d3cd (Jan 31 2024 - 12:58:20 +0000)
  • +
+

Kernel Commit ID

+
    +
  • lpi4a: #2024.01.31.14.11+384c5e9e2
  • +
  • ahead: #2023.12.08.03.31+62225503f
  • +
+

Version Timestamp (/etc/revyos-release)

+
    +
  • XFCE Desktop: 20240202-141632
  • +
+

System and Desktop

+
    +
  • Supports DebianOS xfce4 desktop
  • +
+

Hardware Acceleration

+
    +
  • xfce4 desktop supports GPU acceleration and 2D acceleration
  • +
+

Supported Applications

+
    +
  • LibreOffice: 7.5.4~rc2-1
  • +
  • Supports GIMP: 2.10.34-1
  • +
  • Supports VLC: 3.0.18 (3.0.18-2revyos1)
  • +
  • Supports Parole: 4.18.0 (4.18.0-1revyos1)
  • +
  • Firefox not pre-installed: 118.0 (118.0.2-1revyos1)
  • +
  • Supports Chromium: 109.0 (109.0.5414.119-1revyos2)
  • +
  • Supports xfce4: 4.18 (pre-installed in xfce version)
  • +
  • Supports Python3: 3.11.4 (3.11.4-1)
  • +
  • Supports apt-get installation sources
  • +
  • Go not pre-installed: 1.19 (1.19~1+b1)
  • +
  • Rust not pre-installed: 1.70.0 (1.70.0+dfsg1-1)
  • +
  • GCC not pre-installed: 13 (13.2.0-4revyos1)
  • +
+ +
    +
  • Kernel version number: 5.10.113-lpi4a #2024.01.31.14.11+384c5e9e2
  • +
  • Kernel version number: 5.10.113-ahead #2024.01.31.14.11+384c5e9e2
  • +
+ +
    +
  • CPU maximum frequency 1.84GHz
  • +
  • Supports single HDMI output or HDMI/DSI dual output
  • +
  • Supports 2D acceleration
  • +
  • Supports WIFI/BT module RTL8723DS, both WI-FI and Bluetooth functions have been enabled
  • +
  • Supports fan speed adjustment function
  • +
+

Fixed Issues

+

Existing Issues

+
    +
  • Bluetooth function of WIFI/BT module RTL8723 is unavailable after reboot/sleep
  • +
  • AIC8800 is temporarily unavailable
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/changelog/lpi4a/20240601/index.html b/en/changelog/lpi4a/20240601/index.html new file mode 100644 index 00000000..d1566576 --- /dev/null +++ b/en/changelog/lpi4a/20240601/index.html @@ -0,0 +1,1615 @@ + + + + + + + + + + + + + + + + + + + + + + 20240601 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20240601

+

System Version

+

RevyOS 20240601 version

+

Version Download

+

RevyOS 20240601 lpi4a

+
    +
  • boot-lpi4a-20240601_180941.ext4.zst
  • +
  • root-lpi4a-20240601_180941.ext4.zst
  • +
  • u-boot-with-spl-lpi4a.bin 8g version flashing
  • +
  • u-boot-with-spl-lpi4a-16g.bin 16g version flashing
  • +
  • sdcard-lpi4a-20240601_180941.img.zst SD card flashing
  • +
+

SBI Timestamp

+
    +
  • U-Boot SPL 2020.01-g96627087 (May 29 2024 - 08:30:59 +0000)
  • +
+

u-boot Timestamp

+
    +
  • U-Boot 2020.01-g96627087 (May 29 2024 - 08:30:59 +0000)
  • +
+

Kernel Commit ID

+
    +
  • lpi4a: #2024.01.31.14.11+384c5e9e2
  • +
+

Version Timestamp (/etc/revyos-release)

+
    +
  • XFCE Desktop: 20240601_180941
  • +
+

RevyOS 20240601 meles

+
    +
  • boot-meles-20240601_180943.ext4.zst
  • +
  • iw-single-line.bin
  • +
  • root-meles-20240601_180943.ext4.zst
  • +
  • sdcard-meles-20240601_180943.img.zst
  • +
  • u-boot-with-spl-meles-4g.bin
  • +
  • u-boot-with-spl-meles.bin
  • +
+

System and Desktop

+
    +
  • Supports DebianOS xfce4 desktop
  • +
+

Hardware Acceleration

+
    +
  • xfce4 desktop supports GPU acceleration and 2D acceleration
  • +
+

Supported Applications

+
    +
  • LibreOffice: 7.5.4~rc2-1
  • +
  • Supports GIMP: 2.10.34-1
  • +
  • Supports VLC: 3.0.21-1revyos1
  • +
  • Supports Parole: 4.18.0 (4.18.0-1revyos1)
  • +
  • Not pre-installed Firefox: 118.0 (118.0.2-1revyos1)
  • +
  • Supports Chromium: 109.0 (109.0.5414.119-1revyos2)
  • +
  • Supports xfce4: 4.18 (pre-installed in xfce version)
  • +
  • Supports Python3: 3.11.2-1+b1
  • +
  • Supports apt-get installation source
  • +
  • Not pre-installed Go: 1.19 (1.19~1+b1)
  • +
  • Not pre-installed Rust: 1.70.0 (1.70.0+dfsg1-1)
  • +
  • Not pre-installed GCC: 13 (13.2.0-23revyos1)
  • +
+ +
    +
  • Kernel Version: 5.10.113-lpi4a #2024.05.31.16.27+2dec14431
  • +
+ +
    +
  • CPU Frequency up to 1.84Ghz
  • +
  • Supports single HDMI output or HDMI/DSI dual output
  • +
  • Supports 2D acceleration
  • +
  • Supports WIFI/BT module RTL8723DS, both WI-FI and Bluetooth functions are enabled
  • +
  • Supports fan speed control
  • +
  • Supports booting from SD card
  • +
+

Fixed Issues

+
    +
  • str part has been fixed
  • +
+

Existing Issues

+
    +
  • There are some issues with std
  • +
  • Bluetooth function of WIFI/BT module RTL8723 is not available after reboot/sleep
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/en/desktop/games/OpenTTD\346\270\270\346\210\217/index.html" "b/en/desktop/games/OpenTTD\346\270\270\346\210\217/index.html" new file mode 100644 index 00000000..c16ee5aa --- /dev/null +++ "b/en/desktop/games/OpenTTD\346\270\270\346\210\217/index.html" @@ -0,0 +1,1432 @@ + + + + + + + + + + + + + + + + + + + + + + OpenTTD Game - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

OpenTTD

+

Status:
+Running, with software rendering for graphics.

+

Resources:
+- OpenTTD Compiling Guide +- Debian Control File

+

Steps

+
# Install dependencies
+sudo apt install libsdl2-dev zlib1g-dev libpng-dev libfreetype-dev libfontconfig-dev libicu-dev liblzo2-dev liblzma-dev libfluidsynth-dev libopengl-dev grfcodec openttd-opengfx cmake
+
+# Download the code & compile
+git clone https://github.com/OpenTTD/OpenTTD.git
+cd OpenTTD
+mkdir build
+cd build
+cmake ..
+make
+
+# Run the game
+./openttd
+
+

The graphics and audio resource files can be downloaded through the in-game functionality, and the game supports Chinese.

+

OpenTTD Screenshot

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/desktop/games/images/openttd_1.png b/en/desktop/games/images/openttd_1.png new file mode 100644 index 00000000..76b400eb Binary files /dev/null and b/en/desktop/games/images/openttd_1.png differ diff --git a/en/desktop/games/images/yquake2_1.png b/en/desktop/games/images/yquake2_1.png new file mode 100644 index 00000000..fba9a2e7 Binary files /dev/null and b/en/desktop/games/images/yquake2_1.png differ diff --git a/en/desktop/games/yquake2/index.html b/en/desktop/games/yquake2/index.html new file mode 100644 index 00000000..f72182fe --- /dev/null +++ b/en/desktop/games/yquake2/index.html @@ -0,0 +1,1451 @@ + + + + + + + + + + + + + + + + + + + + + + yquake2 Game - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

yquake2

+

Status:
+Running with GLES acceleration support.

+

Resources:
+- Installation Guide +- Configuration Guide

+

Installation Steps

+
# Install dependencies
+sudo apt install build-essential libgl1-mesa-dev libsdl2-dev libopenal-dev libcurl4-openssl-dev
+
+# Download the code & compile
+git clone https://github.com/yquake2/yquake2.git
+mkdir build
+cd build
+cmake ..
+make
+
+# Run the game
+# (Make sure to have the original game resource folder baseq2 ready)
+cd ..
+cd release
+cp -r ~/baseq2 .
+./quake2
+
+

Display

+

You need to place the original game resource folder baseq2 in the same directory as the quake2 program (the Steam version works).

+

The resolution and graphics acceleration options can be modified in the in-game settings menu. By default, it uses software rendering, so be sure to change it to “OpenGL ES3” for hardware rendering (see the image below).

+

yquake2 Screenshot

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/desktop/install/index.html b/en/desktop/install/index.html new file mode 100644 index 00000000..9300a7f5 --- /dev/null +++ b/en/desktop/install/index.html @@ -0,0 +1,1407 @@ + + + + + + + + + + + + + + + + + + + + + + Install - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Package Installation

+

In RevyOS, packages can be installed by typing the following command in the terminal:

+
sudo apt install <package-name>
+
+

Here is an example of installing git:

+
debian@lpi4a:~$ sudo apt install git
+[sudo] password for debian: 
+Reading package lists... Done
+Building dependency tree... Done
+Reading state information... Done
+The following additional packages will be installed:
+  git-man liberror-perl patch
+Suggested packages:
+  gettext-base git-daemon-run | git-daemon-sysvinit git-doc git-email git-gui
+  gitk gitweb git-cvs git-mediawiki git-svn ed diffutils-doc
+The following NEW packages will be installed:
+  git git-man liberror-perl patch
+0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
+Need to get 8605 kB of archives.
+After this operation, 39.4 MB of additional disk space will be used.
+Do you want to continue? [Y/n] y
+Get:1 https://mirror.iscas.ac.cn/revyos/revyos-base sid/main riscv64 liberror-perl all 0.17029-2 [29.0 kB]
+Get:2 https://mirror.iscas.ac.cn/revyos/revyos-base sid/main riscv64 git-man all 1:2.40.1-1 [2072 kB]
+Get:3 https://mirror.iscas.ac.cn/revyos/revyos-base sid/main riscv64 git riscv64 1:2.40.1-1 [6390 kB]
+Get:4 https://mirror.iscas.ac.cn/revyos/revyos-base sid/main riscv64 patch riscv64 2.7.6-7+b1 [114 kB]
+Fetched 8605 kB in 1s (6656 kB/s)
+Selecting previously unselected package liberror-perl.
+(Reading database ... 75688 files and directories currently installed.)
+Preparing to unpack .../liberror-perl_0.17029-2_all.deb ...
+Unpacking liberror-perl (0.17029-2) ...
+Selecting previously unselected package git-man.
+Preparing to unpack .../git-man_1%3a2.40.1-1_all.deb ...
+Unpacking git-man (1:2.40.1-1) ...
+Selecting previously unselected package git.
+Preparing to unpack .../git_1%3a2.40.1-1_riscv64.deb ...
+Unpacking git (1:2.40.1-1) ...
+Selecting previously unselected package patch.
+Preparing to unpack .../patch_2.7.6-7+b1_riscv64.deb ...
+Unpacking patch (2.7.6-7+b1) ...
+Setting up liberror-perl (0.17029-2) ...
+Setting up patch (2.7.6-7+b1) ...
+Setting up git-man (1:2.40.1-1) ...
+Setting up git (1:2.40.1-1) ...
+Processing triggers for man-db (2.11.2-2) ...
+
+

After confirming with Y, git and its dependencies are installed and ready for use.

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/desktop/revyos-use-docker/index.html b/en/desktop/revyos-use-docker/index.html new file mode 100644 index 00000000..39fe99ec --- /dev/null +++ b/en/desktop/revyos-use-docker/index.html @@ -0,0 +1,1481 @@ + + + + + + + + + + + + + + + + + + + + + + Docker - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Installing Go and RISC-V Docker

+

Installing Go

+

To install Go, use the following command:

+
sudo apt install golang-go
+
+

Verify the installation:

+
debian@lpi4a:~$ go version
+go version go1.19.8 linux/riscv64
+
+

Installing Docker for RISC-V64

+

A RISC-V64-compatible Docker package is available as docker.io, and can be installed with:

+
sudo apt install docker.io
+
+

Testing Docker

+

To test the installation, try pulling the RISC-V64 Debian image:

+
sudo docker pull riscv64/debian:unstable
+
+

Troubleshooting

+

If the following error occurs when using the docker pull command:

+
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=riscv64%2Fdebian&tag=unstable": dial unix /var/run/docker.sock: connect: permission denied
+
+

resolve it with these commands:

+
# Allow access to the Docker socket
+sudo chmod 666 /var/run/docker.sock
+
+# Start the Docker service
+sudo systemctl start docker
+
+# Run a test container
+sudo docker run hello-world
+
+

This should enable Docker to run with the necessary permissions.

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/desktop/software/Images/ROS2_Gazebo.png b/en/desktop/software/Images/ROS2_Gazebo.png new file mode 100644 index 00000000..1f12f5ee Binary files /dev/null and b/en/desktop/software/Images/ROS2_Gazebo.png differ diff --git a/en/desktop/software/Images/ROS2_RViz.png b/en/desktop/software/Images/ROS2_RViz.png new file mode 100644 index 00000000..9c51f345 Binary files /dev/null and b/en/desktop/software/Images/ROS2_RViz.png differ diff --git a/en/desktop/software/Images/ROS2_TurtleSim.png b/en/desktop/software/Images/ROS2_TurtleSim.png new file mode 100644 index 00000000..f082c0f3 Binary files /dev/null and b/en/desktop/software/Images/ROS2_TurtleSim.png differ diff --git a/en/desktop/software/Images/ROS2_rqt.png b/en/desktop/software/Images/ROS2_rqt.png new file mode 100644 index 00000000..6e90abad Binary files /dev/null and b/en/desktop/software/Images/ROS2_rqt.png differ diff --git a/en/desktop/software/ROS2/index.html b/en/desktop/software/ROS2/index.html new file mode 100644 index 00000000..ce8a0f1a --- /dev/null +++ b/en/desktop/software/ROS2/index.html @@ -0,0 +1,1750 @@ + + + + + + + + + + + + + + + + + + + + + + ROS2 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Robot Operating System (ROS)

+
+

本页的 ROS 指 ROS 2

+
+

状态:可以运行

+

官方资料页:https://ros.org/

+

官方文档: https://docs.ros.org/

+

软件说明

+

ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、函数库、可视化工具、消息传递和软件包管理等诸多功能。ROS遵循BSD开源许可协议。

+

安装

+

添加源

+

假设使用来自 ros.z572.online 的源

+

注意下面应该使用 bookworm

+
sudo sh -c "echo 'deb [trusted=yes] https://ros.z572.online/main bookworm main\ndeb-src [trusted=yes] https://ros.z572.online/main bookworm main' > /etc/apt/sources.list.d/ros.list"
+sudo apt update
+sudo apt upgrade
+
+

安装 ROS

+

目前已经测试 ROS JazzyHumble 版本可用

+

注意:两个版本可能会存在依赖冲突,请不要尝试同时安装两个版本

+

Jazzy:

+
apt install ros-jazzy-desktop-full
+
+

Humble:

+
apt install ros-humble-desktop-full
+
+

安装 rosdep

+
sudo apt install python3-rosdep2
+
+

然后删除 /etc/ros/rosdep/sources.list.d/10-debian.list, +并修改 etc/ros/rosdep/sources.list.d/20-default.list 为下面的内容

+
yaml https://raw.githubusercontent.com/revyos-ros/rosdistro/master/rosdep/base.yaml
+yaml https://raw.githubusercontent.com/revyos-ros/rosdistro/master/rosdep/python.yaml
+yaml https://raw.githubusercontent.com/revyos-ros/rosdistro/master/rosdep/ruby.yaml
+
+

获取 ROS 环境

+

根据安装的 ROS 版本,选择相应的命令

+

Jazzy:

+
source /opt/ros/jazzy/setup.sh
+
+

Humble:

+
source /opt/ros/Humble/setup.sh
+
+

可以将上面的内容加入 .bashrc 或者您使用的 shell profile 中。

+

功能使用

+

rosdep

+
rosdep update
+
+

使用 rosdep 安装外部依赖(以 micro_ros_setup)为例

+

1.设置环境变量 +请根据您安装的版本选择对应的命令

+

Jazzy:

+
AMENT_PACKAGE_PATH=/opt/ros/jazzy
+
+

Humble:

+
AMENT_PACKAGE_PATH=/opt/ros/humble
+
+

2.下载源代码

+
git clone https://github.com/micro-ROS/micro_ros_setup && cd micro_ros_setup
+
+

3.安装依赖

+
rosdep install --from-paths . -y --ignore-src
+
+

colon

+

colon 是一款现代的 ROS 编译工具

+
sudo apt install colcon
+
+

测试编译(依然以 micro_ros_setup)为例

+
git clone https://github.com/micro-ROS/micro_ros_setup && cd micro_ros_setup
+colcon build
+
+

ros2 command

+
    +
  • ros2 pkg 命令用于管理 ROS 2 包。
  • +
  • ros2 run 命令用于运行 ROS 2 包中的特定节点。
  • +
  • ros2 topic 命令用于与 ROS 2 的话题交互。
  • +
  • ros2 param 命令用于管理 ROS 2 参数。
  • +
  • ros2 service 命令用于与 ROS 2 服务交互。
  • +
  • ros2 node 命令用于与 ROS 2 节点交互。
  • +
  • ros2 bag 命令用于记录和回放 ROS 2 数据。
  • +
  • ros2 launch 命令用于启动 ROS 2 启动文件。
  • +
+

已测试的 ROS 2 功能

+
    +
  • +

    Node(C++)
    + 运行 C++ 节点:
    +bash + ros2 run demo_nodes_cpp talker + ros2 run demo_nodes_cpp listener

    +
  • +
  • +

    Node(Python)
    + 运行 Python 节点:
    +bash + ros2 run demo_nodes_py talker + ros2 run demo_nodes_py listener

    +
  • +
  • +

    Add Two Ints Server
    + 测试服务端和客户端:
    +bash + ros2 run demo_nodes_cpp add_two_ints_server + ros2 run demo_nodes_cpp add_two_ints_client

    +
  • +
  • +

    TF2
    + 测试静态变换、监听和监控功能:
    + 发布静态变换并监听:
    +bash + ros2 run tf2_ros static_transform_publisher 1 1 1 0 0 0 /base_link /odom + ros2 run tf2_ros tf2_echo base_link odom
    + 监控变换:
    +bash + ros2 run tf2_ros static_transform_publisher 1 1 1 0 0 0 /base_link /odom + ros2 run tf2_ros tf2_monitor
    + 查看变换框架图(需生成 PDF 文件):
    +bash + ros2 run tf2_ros static_transform_publisher 1 1 1 0 0 0 /base_link /odom + ros2 run tf2_tools view_frames

    +
  • +
  • +

    TurtleSim
    + 需要图形界面支持:
    + 启动 turtlesim 节点:
    +bash + ros2 run turtlesim turtlesim_node
    + 图形界面会弹出一个窗口。
    + 使用键盘控制小乌龟:
    +bash + ros2 run turtlesim turtle_teleop_key

    +
  • +
+

TurtleSim 使用截图

+
    +
  • RQT
    + 需要图形界面支持:
    + 启动 RQT 图形工具:
    +bash + ros2 run rqt_gui rqt_gui
  • +
+

rqt 使用截图

+

rviz2

+

需要使用 sudo switch-gl gl4es 再重启后使用 LIBGL_ALWAYS_SOFTWARE=true rviz2 here 启动,效果如下

+

RViz2 使用截图

+

gazebo

+

使用 sudo apt install gazebo11 安装

+

需要使用 sudo switch-gl gl4es 再重启后使用 LIBGL_ALWAYS_SOFTWARE=true gazebo 启动,效果如下

+

Gazebo 使用截图

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/desktop/software/gimp/index.html b/en/desktop/software/gimp/index.html new file mode 100644 index 00000000..6832986c --- /dev/null +++ b/en/desktop/software/gimp/index.html @@ -0,0 +1,1437 @@ + + + + + + + + + + + + + + + + + + + + + + GIMP Image Editor - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

GIMP Image Processing Software

+

Status:
+Operational on RevyOS.

+

Official Documentation:
+GIMP User Manual

+

Software Overview

+

GIMP, short for the GNU Image Manipulation Program, is a versatile, cross-platform tool for creating and editing images. It supports a wide range of features, from simple drawing to expert-level photo retouching, digital art creation, batch processing, and format conversion. Designed to be extensible, GIMP can be enhanced through plugins and extensions to perform nearly any image manipulation task. Its advanced scripting interface also enables automation, covering everything from basic tasks to complex image processing operations.

+

Usage Instructions

+

GIMP is pre-installed on RevyOS as the default image editing software. To start GIMP, enter the following command in the terminal:

+
gimp
+
+

After loading, the GIMP main interface will appear:

+

GIMP Start Screen

+

For more detailed guidance, refer to the official documentation linked above.

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/desktop/software/iBus/index.html b/en/desktop/software/iBus/index.html new file mode 100644 index 00000000..e930d6f3 --- /dev/null +++ b/en/desktop/software/iBus/index.html @@ -0,0 +1,1433 @@ + + + + + + + + + + + + + + + + + + + + + + iBus Input Method - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

iBus Input Method

+

Status:
+Operational.

+

Resources:
+iBus on Debian Wiki

+

Installation Steps (without using im-config)

+
sudo apt install ibus ibus-libpinyin
+sudo reboot
+
+

After rebooting, manually add the Chinese input method:

+
    +
  1. +

    Right-click the iBus tray icon and select Preferences. + iBus Preferences

    +
  2. +
  3. +

    In the Input Method tab, click Add to open the input selection window. + Input Method Tab

    +
  4. +
  5. +

    Select Chinese -> Intelligent Pinyin and click Add. + Add Intelligent Pinyin

    +
  6. +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/index.html b/en/index.html new file mode 100644 index 00000000..bb839a66 --- /dev/null +++ b/en/index.html @@ -0,0 +1,1595 @@ + + + + + + + + + + + + + + + + + + + + Home - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

RevyOS

+

Introduction

+

RevyOS is a Debian based custom distribution developed and maintained by the RevyOS team under RuyiSDK, specifically optimized for the XuanTie chip ecosystem.

+

RevyOS is part of RuyiSDK, an open-source project initiated by PLCT Lab, aimed at providing a convenient and comprehensive development environment for RISC-V developers. It offers the latest hardware information and software support, such as details about supported hardware devices and software components like OS images (e.g., RevyOS), toolchains, and package managers.

+

RevyOS provides complete and thorough support for XuanTie chips including XuanTie C906, C910, C920, C908, with default integration of the XuanTie extended instruction sets and the GCC toolchain supporting RVV 1.0. It also features Glibc and Kernel optimized with RVV 1.0 instruction set.

+

Currently, RevyOS meets basic user needs in office work, web browsing, and video watching.

+

Based on these customizations and optimizations, RevyOS delivers excellent performance and a great experience on hardware platforms like Lichee Pi 4A, BeagleV-Ahead, and Milk-V Pioneer.

+

Image Download and Flashing

+

The user version images of RevyOS are currently updated on the ISCAS (Institute of Software, Chinese Academy of Sciences) / Felix Finland Source open-source mirror sites.

+

If you want to obtain the latest version of RevyOS, please select the corresponding device to get the appropriate U-Boot, boot partition, and root partition files:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Supported DevicesImage Download (Latest Version)Flashing TutorialSD Card Support
Lichee Pi 4A20241229Flashing TutorialSupported
Lichee Cluster 4A20240720Flashing Tutorial
Lichee Console 4A20240720Flashing Tutorial
Lichee Book 4A20240720Flashing Tutorial
Milk-V Pioneer20241230Flashing TutorialSupported
Milk-V Meles20241229Supported
Beagle-Ahead20231210
Huiwei Book20240617
+

How to Enable T-Head Optimized GCC

+

For more details, see this document: How to Enable Optimized GCC.

+

Changelog

+

After each update to the image version, we will publish the supported features for the current version. To view the changelog, please click RevyOS Version Change Log and select the version you want to check.

+

Issues

+

If you encounter any issues during use, you can report them by creating an issue.

+

User Documentation

+

In this documentation, we provide guides for reference on building, adapting, and also system testing. This would help users get onboard easier with RevyOS.

+

User Group

+

RevyOS has its own Telegram group: Invitation Link

+

Internship Recruitment

+

We are currently recruiting test interns. For more information, visit: RevyOS Team Test Intern Recruitment (Chinese only)

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/en/issue/index.html b/en/issue/index.html new file mode 100644 index 00000000..10079600 --- /dev/null +++ b/en/issue/index.html @@ -0,0 +1,1480 @@ + + + + + + + + + + + + + + + + + + + + issue - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

提交问题与已知问题

+

感谢使用 RevyOS!如果在使用过程中遇到问题或发现了 Bug,可以按照以下步骤操作:

+

提交新的 Issue

+
    +
  • 访问 GitHub Issue 页面:RevyOS-Issue
  • +
  • 点击页面右侧的 New Issue 按钮。
  • +
  • 在提交 Issue 时,请尽可能提供以下信息:
  • +
  • 问题描述:清晰简洁地描述问题是什么。
  • +
  • 复现步骤:列出导致问题的操作步骤。
  • +
  • 预期行为:说明期望程序如何运行。
  • +
  • 实际行为:描述实际发生了什么。
  • +
  • 环境信息:包括 RevyOS 镜像版本、镜像刷写文件获取地址,硬件版本。
  • +
  • 请尽量附上相关的日志或截图,以帮助更快定位问题。
  • +
+

查看已知问题

+

在提交新的 Issue 之前,建议先查看我们的已知问题记录:

+
    +
  • 访问 Discussions 页面:已知兼容性问题
  • +
  • 检查是否已经有人报告了相同或类似的问题。
  • +
+

如果问题已存在,您可以选择:

+
    +
  • 在对应的 Issue 或 Discussion 中添加评论,提供更多信息。
  • +
+

提示

+
    +
  • 请确保您的问题未被重复提交。
  • +
  • 提供完整详细的信息有助于我们更快地解决问题。
  • +
+

联系我们

+

如果您想交流使用过程中的问题,可以通过以下方式联系我们:

+ + + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..fd025bf1 --- /dev/null +++ b/index.html @@ -0,0 +1,1594 @@ + + + + + + + + + + + + + + + + + + + + RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

RevyOS

+

简介

+

RevyOS是由 RuyiSDK 团队的 RevyOS 小队支持开发的一款针对 XuanTie 芯片生态的 Debian 优化定制发行版。

+

RevyOS 是 RuyiSDK 的一部分。RuyiSDK 是一个由 PLCT Lab 所启动的开源项目,该项目旨在为 RISC-V 开发者提供一个便捷、完善的开发环境,其提供了相关最新的硬件信息、软件支持,例如在支持的设备中有提供相关支持硬件情况;软件层面提供了镜像(如 RevyOS)、工具链、包管理器等。

+

RevyOS 围绕玄铁 C906、C910、C920、C908 等芯片提供了完整而全面的适配和优化支持,默认集成支持玄铁扩展指令集和 RVV 1.0 的 GCC 工具链,并搭载使用 RVV 1.0 指令集优化过的 Glibc 和 Kernel。

+

目前,RevyOS 在办公、网页浏览、观看视频等方面已经能满足用户的基本使用需求。

+

基于上述定制和优化的 RevyOS,在 Lichee RV,Lichee Pi 4A 等硬件平台上,能够提供优秀的性能和极佳的体验。

+

镜像下载及刷写

+

RevyOS 的用户版镜像目前在 ISCAS(中国科学院软件研究所)开源镜像站进行更新。如您想获取 RevyOS 最新版镜像请访问镜像下载目录,根据所使用设备来获取对应镜像。

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
支持设备镜像下载(最新版本)刷写教程SD 卡支持
Lichee Pi 4A20241229镜像刷写支持
Lichee Cluster 4A20240720镜像刷写
Lichee Console 4A20240720镜像刷写
Lichee Book 4A20240720镜像刷写
Milk-V Pioneer20241230镜像刷写支持
Milk-V Meles20241229支持
Beagle-Ahead20231210
Huiwei book20240617
+

如何启用 T-Head 优化 GCC

+

详见这篇文档如何启用优化 GCC

+

更新日志

+

镜像版本更新后我们会公布当前版本镜像支持内容,如您想查看镜像支持内容请点击RevyOS 版本更新日志后选择您所需要的版本进行查看。

+

issue 相关

+

如果您在使用过程中遇到问题,可以进行issue 申报

+

用户文档

+

在本 DOCS 中,我们拥有相关的使用构建与适配文档以及测试文档方便让用户对部分内容进行参考,完善的文档支持加快了用户对于系统的上手时间。

+

用户群组

+

RevyOS 有自己的 Telegram 群组:邀请链接

+

实习生招聘

+

现在正在招聘测试实习生,详情请看:RevyOS 小队测试实习生招聘

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/issue/index.html b/issue/index.html new file mode 100644 index 00000000..c0913f35 --- /dev/null +++ b/issue/index.html @@ -0,0 +1,1480 @@ + + + + + + + + + + + + + + + + + + + + issue - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

提交问题与已知问题

+

感谢使用 RevyOS!如果在使用过程中遇到问题或发现了 Bug,可以按照以下步骤操作:

+

提交新的 Issue

+
    +
  • 访问 GitHub Issue 页面:RevyOS-Issue
  • +
  • 点击页面右侧的 New Issue 按钮。
  • +
  • 在提交 Issue 时,请尽可能提供以下信息:
  • +
  • 问题描述:清晰简洁地描述问题是什么。
  • +
  • 复现步骤:列出导致问题的操作步骤。
  • +
  • 预期行为:说明期望程序如何运行。
  • +
  • 实际行为:描述实际发生了什么。
  • +
  • 环境信息:包括 RevyOS 镜像版本、镜像刷写文件获取地址,硬件版本。
  • +
  • 请尽量附上相关的日志或截图,以帮助更快定位问题。
  • +
+

查看已知问题

+

在提交新的 Issue 之前,建议先查看我们的已知问题记录:

+
    +
  • 访问 Discussions 页面:已知兼容性问题
  • +
  • 检查是否已经有人报告了相同或类似的问题。
  • +
+

如果问题已存在,您可以选择:

+
    +
  • 在对应的 Issue 或 Discussion 中添加评论,提供更多信息。
  • +
+

提示

+
    +
  • 请确保您的问题未被重复提交。
  • +
  • 提供完整详细的信息有助于我们更快地解决问题。
  • +
+

联系我们

+

如果您想交流使用过程中的问题,可以通过以下方式联系我们:

+ + + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 00000000..69897ad8 --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,339 @@ + + + + None./ + 2025-01-07 + daily + + + + + + Noneissue/ + 2025-01-07 + daily + + + + + + NoneInstallation/licheebook/ + 2025-01-07 + daily + + + + + + NoneInstallation/licheeconsole4a/ + 2025-01-07 + daily + + + + + + NoneInstallation/licheepi4a/ + 2025-01-07 + daily + + + + + + NoneInstallation/milkv-meles/ + 2025-01-07 + daily + + + + + + NoneInstallation/milkv-pioneer/ + 2025-01-07 + daily + + + + + + NoneInstallation/%E5%9C%A8%20macOS%20%E4%B8%8A%E5%88%B7%E5%86%99%20RevyOS%20%E9%95%9C%E5%83%8F%E5%88%B0%20lpi4a/ + 2025-01-07 + daily + + + + + + Noneadaptation/GStreamer-pipeline-example-with-thead-omxil-lib/ + 2025-01-07 + daily + + + + + + Noneadaptation/GStreamer%E6%92%AD%E6%94%BE%E5%99%A8%E9%80%82%E9%85%8D/ + 2025-01-07 + daily + + + + + + Nonebenchmark/Chromium%E9%B1%BC%E7%BC%B8GPU%E6%B5%8B%E8%AF%95/ + 2025-01-07 + daily + + + + + + Nonebenchmark/coremark/ + 2025-01-07 + daily + + + + + + Nonebenchmark/glmark2/ + 2025-01-07 + daily + + + + + + Nonebenchmark/lmbench/ + 2025-01-07 + daily + + + + + + Nonebenchmark/p7zip/ + 2025-01-07 + daily + + + + + + Nonebenchmark/reboot/ + 2025-01-07 + daily + + + + + + Nonebenchmark/stream/ + 2025-01-07 + daily + + + + + + Nonebuild/%E6%9E%84%E5%BB%BA%E6%96%87%E6%A1%A3/ + 2025-01-07 + daily + + + + + + Nonebuild/debian/Debian%E8%BD%AF%E4%BB%B6%E5%8C%85%E6%9E%84%E5%BB%BA%E6%B5%81%E7%A8%8B/ + 2025-01-07 + daily + + + + + + Nonebuild/debian/enable_optimization_gcc/ + 2025-01-07 + daily + + + + + + Nonebuild/debian/%E7%BC%96%E8%AF%91%E5%99%A8%E7%9B%B8%E5%85%B3%E8%AF%B4%E6%98%8E/ + 2025-01-07 + daily + + + + + + Nonebuild/other/gcc%E7%BC%96%E8%AF%91%E8%BD%AF%E4%BB%B6%E8%AF%B4%E6%98%8E/ + 2025-01-07 + daily + + + + + + Nonebuild/other/manuel_build_kernel/ + 2025-01-07 + daily + + + + + + Nonebuild/other/thead-qemu%E7%BC%96%E8%AF%91%E6%B5%81%E7%A8%8B/ + 2025-01-07 + daily + + + + + + Nonechangelog/ahead/20230802/ + 2025-01-07 + daily + + + + + + Nonechangelog/lpi4a/20230412/ + 2025-01-07 + daily + + + + + + Nonechangelog/lpi4a/20230425/ + 2025-01-07 + daily + + + + + + Nonechangelog/lpi4a/20230511/ + 2025-01-07 + daily + + + + + + Nonechangelog/lpi4a/20230614/ + 2025-01-07 + daily + + + + + + Nonechangelog/lpi4a/20230810/ + 2025-01-07 + daily + + + + + + Nonechangelog/lpi4a/20230916/ + 2025-01-07 + daily + + + + + + Nonechangelog/lpi4a/20231026/ + 2025-01-07 + daily + + + + + + Nonechangelog/lpi4a/20231210/ + 2025-01-07 + daily + + + + + + Nonechangelog/lpi4a/20240202/ + 2025-01-07 + daily + + + + + + Nonechangelog/lpi4a/20240601/ + 2025-01-07 + daily + + + + + + Nonedesktop/install/ + 2025-01-07 + daily + + + + + + Nonedesktop/revyos-use-docker/ + 2025-01-07 + daily + + + + + + Nonedesktop/games/OpenTTD%E6%B8%B8%E6%88%8F/ + 2025-01-07 + daily + + + + + + Nonedesktop/games/yquake2/ + 2025-01-07 + daily + + + + + + Nonedesktop/software/ROS2/ + 2025-01-07 + daily + + + + + + Nonedesktop/software/gimp/ + 2025-01-07 + daily + + + + + + Nonedesktop/software/iBus/ + 2025-01-07 + daily + + + + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 00000000..30356ecd Binary files /dev/null and b/sitemap.xml.gz differ diff --git a/zh/CNAME b/zh/CNAME new file mode 100644 index 00000000..bfc04088 --- /dev/null +++ b/zh/CNAME @@ -0,0 +1 @@ +docs.revyos.dev diff --git a/zh/Installation/image for flash/lpi4a1.png b/zh/Installation/image for flash/lpi4a1.png new file mode 100644 index 00000000..ebf51a88 Binary files /dev/null and b/zh/Installation/image for flash/lpi4a1.png differ diff --git a/zh/Installation/image for flash/lpi4a2.png b/zh/Installation/image for flash/lpi4a2.png new file mode 100644 index 00000000..2c119464 Binary files /dev/null and b/zh/Installation/image for flash/lpi4a2.png differ diff --git a/zh/Installation/image for flash/lpi4a3.png b/zh/Installation/image for flash/lpi4a3.png new file mode 100644 index 00000000..f8904a6a Binary files /dev/null and b/zh/Installation/image for flash/lpi4a3.png differ diff --git a/zh/Installation/image for flash/lpi4a4.png b/zh/Installation/image for flash/lpi4a4.png new file mode 100644 index 00000000..3fa5ccae Binary files /dev/null and b/zh/Installation/image for flash/lpi4a4.png differ diff --git a/zh/Installation/image for flash/lpi4a5.png b/zh/Installation/image for flash/lpi4a5.png new file mode 100644 index 00000000..32cd4461 Binary files /dev/null and b/zh/Installation/image for flash/lpi4a5.png differ diff --git a/zh/Installation/image for flash/lpi4a6.png b/zh/Installation/image for flash/lpi4a6.png new file mode 100644 index 00000000..9c63cc5b Binary files /dev/null and b/zh/Installation/image for flash/lpi4a6.png differ diff --git a/zh/Installation/image for flash/lpi4a7.png b/zh/Installation/image for flash/lpi4a7.png new file mode 100644 index 00000000..5b2e27a6 Binary files /dev/null and b/zh/Installation/image for flash/lpi4a7.png differ diff --git a/zh/Installation/image for flash/pioneer-image-dir.png b/zh/Installation/image for flash/pioneer-image-dir.png new file mode 100644 index 00000000..710fad98 Binary files /dev/null and b/zh/Installation/image for flash/pioneer-image-dir.png differ diff --git a/zh/Installation/licheebook/index.html b/zh/Installation/licheebook/index.html new file mode 100644 index 00000000..275696ca --- /dev/null +++ b/zh/Installation/licheebook/index.html @@ -0,0 +1,1339 @@ + + + + + + + + + + + + + + + + + + Licheebook - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Licheebook

+ +

施工中

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/Installation/licheeconsole4a/index.html b/zh/Installation/licheeconsole4a/index.html new file mode 100644 index 00000000..4715f2b5 --- /dev/null +++ b/zh/Installation/licheeconsole4a/index.html @@ -0,0 +1,1339 @@ + + + + + + + + + + + + + + + + + + Licheeconsole4a - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Licheeconsole4a

+ +

施工中

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/Installation/licheepi4a/index.html b/zh/Installation/licheepi4a/index.html new file mode 100644 index 00000000..d65414e7 --- /dev/null +++ b/zh/Installation/licheepi4a/index.html @@ -0,0 +1,1799 @@ + + + + + + + + + + + + + + + + + + + + + + Lichee Pi 4A - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + +

LicheePi4A镜像刷写教程

+

LicheePi4A支持从 SD card 启动和从 eMMC 启动。以下分别介绍这两种启动方式下该如何刷写RevyOS镜像。

+

演示环境:Ubuntu22.04

+

从SD card 启动

+

注意!从sd卡启动不需要改变拨码开关!按照eMMC拨码开关进行设置!

+

准备工作

+

硬件准备

+

准备MicroSD 读卡器和一张MicroSD 卡

+

烧录相关工具

+

安装zstd用于解压镜像文件

+
apt install zstd
+
+

获取镜像

+

从以下链接下载 LicheePi4A 以 sdcard- 为前缀的 SD card 启动系统镜像:RevyOS0720

+

解压镜像压缩包得到sdcard-lpi4a-20240720_171951.img文件

+
unzstd sdcard-lpi4a-20240720_171951.img.zst
+
+

使用BalenaEtcher写入镜像到 MicroSD 卡

+

从官网获取烧录工具 BalenaEtcher https://etcher.balena.io/

+

把 SD 卡插入读卡器,并将其插入电脑。

+

运行 BalenaEtcher用于写入镜像到SD 卡。 +在 BalenaEtcher 窗口中, 首先点击 "Flash from file" 来选择镜像文件。 + +选择完镜像文件后在第二栏选择需要写入的设备。 + +两项都选择完以后点击"Flash"写入镜像。 + +在等待一段时间后会显示烧录已完成。 +

+

使用dd写入镜像

+

在刷写前请保证您在 of= 设置了正确的设备

+
# sudo dd if=./sdcard-lpi4a-20240720_171951.img of=<Target Device> status=progress
+# sync
+
+

等待完成即可使用

+

系统启动

+

在写入镜像完成后将SD 卡插入如图所示卡槽中。 + +连接hdmi线与电源线后可直接启动。

+

从eMMC启动

+

从eMMC启动镜像时,刷写镜像的途径分为连接串口与不连接串口两种情况,其中进行的操作有些许区别,在此将两种方式一起进行介绍。 +从eMMC启动应当先取出 SD Card

+

准备工作

+

从eMMC启动需要将u-boot文件、boot文件以及root文件通过fastboot刷入eMMC中,所以需要保证已安装fastboot。

+

Ubuntu可直接通过apt安装

+
apt install fastboot 
+
+

通过串口连接时需要串口控制台进行监控,在Ubuntu下选择使用minicom。

+
apt install minicom
+
+

获取镜像

+

从以下链接下载 LicheePi4A 的系统镜像:RevyOS0720

+

其中u-boot文件需要根据自己的板卡规格进行选择,请注意提前了解自己的板卡规格后进行下载。

+

下载后使用 unzstd 解压 root 和 boot 镜像

+
unzstd boot-lpi4a-20240720_171951.ext4.zst
+unzstd root-lpi4a-20240720_171951.ext4.zst
+
+

写入镜像到eMMC(不接入串口)

+

按住板卡上的BOOT键后,接入电脑。板卡会进入刷写模式

+

写入镜像到eMMC(接入串口)

+

首先从终端打开minicom,进入串口控制台。

+
sudo minicom
+
+

如图所示将串口与板卡进行连接,usb端接入电脑。板卡上的Type-C接口通过USB-Type-C线连接到电脑。

+

连接串口,红色圈内(从左往右第一排第二个)为 GND,黄色圈内(第一排第五个)为 TX,绿色圈内(第二排第五个)为 RX。与主机应遵循TX到RX,RX到TX,GND到GND的接线。

+

+

在接入后在串口控制台中按任意按键打断,在串口控制台窗口中输入

+
fastboot usb 0
+
+

随后另起一个窗口进行镜像刷写。

+

正式刷写

+

以下命令均为在镜像文件下载文件夹路径内,注意文件路径和文件名。

+

使设备进入 u-boot fastboot

+

如果 lsusb 结果不是 ID 1234:8888 Brain Actuated Technologies USB download gadget,运行下面的命令

+
fastboot flash ram u-boot-with-spl-lpi4a-16g.bin # 替换为您的型号对应的 uboot 镜像
+fastboot reboot
+sleep 1
+
+

刷写镜像

+
fastboot flash uboot u-boot-with-spl-lpi4a-16g.bin
+fastboot flash boot boot-lpi4a-20240720_171951.ext4
+fastboot flash root root-lpi4a-20240720_171951.ext4
+
+

fastboot 会显示刷写进度,如果连接了串口,在串口控制台中可以看到具体进度(下图以刷写 +boot,大小为 92886476 Bytes为例,可在 cmd_parameter: boot, imagesize: 92886476 处查看刷入的内容)。

+

+

刷写完成后拔掉电脑与板卡连接的USB-Type-C线,接入电源线便可直接启动进入系统。

+

可能出现的问题

+

如果 lsusb 中存在 download 设备,但fastboot 命令仍然卡在 < waiting for any device > ,可以尝试使用 sudo 运行 fastboot 命令。

+

用户登录

+
    +
  • 登录账户:debian
  • +
  • 账户密码:debian
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/Installation/milkv-meles/index.html b/zh/Installation/milkv-meles/index.html new file mode 100644 index 00000000..10b1b611 --- /dev/null +++ b/zh/Installation/milkv-meles/index.html @@ -0,0 +1,1339 @@ + + + + + + + + + + + + + + + + + + Milkv meles - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Milkv meles

+ + + + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/Installation/milkv-pioneer/index.html b/zh/Installation/milkv-pioneer/index.html new file mode 100644 index 00000000..a75f7982 --- /dev/null +++ b/zh/Installation/milkv-pioneer/index.html @@ -0,0 +1,1686 @@ + + + + + + + + + + + + + + + + + + + + + + Milk-V Pioneer - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

在 Milk-V pioneer 上安装 RevyOS

+

1.准备工作

+

工具准备

+
    +
  • MicroSD卡
  • +
  • MicroSD读卡器
  • +
  • NVMe SSD读卡器
  • +
+

镜像下载

+

RevyOS 镜像目录:镜像下载

+

目前最新镜像版本为:20240819

+

以下以20240819镜像目录为例:

+

+

RevyOS 镜像刷写遵循固件文件+系统文件的方式,因此会用到以下文件

+

固件文件:

+
    +
  • firmware_single_sg2042-v6.6-lts-v0p7.bin(刷写进SPI Flash中)
  • +
  • firmware_single_sg2042-v6.6-lts-v0p7.img(刷写进SD卡中)
  • +
+

系统文件:

+
    +
  • revyos-pioneer-20240819-154656.img.zst
  • +
+

2.固件刷写

+

刷写说明

+

根据镜像下载中的说明,固件文件可以存放于 SPI Flash 或 SD卡中,因此下面将会进行分类说明。

+

将固件刷写到SD卡中

+

操作环境:Ubuntu 22.04

+

使用 BalenaEtcher 写入

+

1、选择文件 firmware_single_sg2042-v6.6-lts-v0p7.img +2、选择目标SD卡 +3、点击烧录

+

通过命令行写入

+

将SD卡插入读卡器并连接至电脑,确认是否正确连接以及设备路径

+

在存放firmware_single_sg2042-v6.6-lts-v0p7.img文件的目录下时,使用dd命令将文件刷写到SD卡中

+

sudo dd if=firmware_single_sg2042-v6.6-lts-v0p7.img of=/dev/sda bs=4M status=progress

+

of=/dev/sda 此项请根据设备路径进行更改

+

刷写完成后请使用sync命令,确保数据写入到 SD 卡中。

+

将固件刷写到 SPI Flash 中

+

操作环境:RevyOS0819

+

注意事项:首次使用时推荐使用SD卡存放固件

+

通过命令行写入

+

此方法是将.bin文件写入到mtd中,所以需要安装相关软件包以及加载相关模块

+
sudo apt install mtd-utils
+sudo modprobe mtdblock
+
+

然后下载文件

+
wget https://mirror.iscas.ac.cn/revyos/extra/images/sg2042/20240819/firmware_single_sg2042-v6.6-lts-v0p7.bin
+
+

下载完成后切换到 firmware_single_sg2042-v6.6-lts-v0p7.bin 的下载目录下,执行以下命令

+
sudo flashcp -v firmware_single_sg2042-v6.6-lts-v0p7.bin /dev/mtd1
+
+

至此刷写完成

+

3.镜像刷写

+

操作环境:Ubuntu 22.04

+

通过命令行写入

+

首先需要解压revyos-pioneer-20240819-154656.img.zst文件

+
unzstd revyos-pioneer-20240819-154656.img.zst
+
+

得到revyos-pioneer-20240819-154656.img文件

+

将NVMe SSD插入读卡器并连接至电脑,确认是否正确连接以及设备路径

+

在存放revyos-pioneer-20240819-154656.img文件的目录下时,使用dd命令将文件刷写到NVMe SSD中

+

sudo dd if=revyos-pioneer-20240819-154656.img of=/dev/nvme0n1 bs=4M status=progress

+

of=/dev/nvme0n1 此项请根据设备路径进行更改

+

刷写完成后请使用sync命令,确保数据写入到NVMe SSD中。

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/zh/Installation/\345\234\250 macOS \344\270\212\345\210\267\345\206\231 RevyOS \351\225\234\345\203\217\345\210\260 lpi4a/index.html" "b/zh/Installation/\345\234\250 macOS \344\270\212\345\210\267\345\206\231 RevyOS \351\225\234\345\203\217\345\210\260 lpi4a/index.html" new file mode 100644 index 00000000..c1a3d034 --- /dev/null +++ "b/zh/Installation/\345\234\250 macOS \344\270\212\345\210\267\345\206\231 RevyOS \351\225\234\345\203\217\345\210\260 lpi4a/index.html" @@ -0,0 +1,1412 @@ + + + + + + + + + + + + + + + + + + 在 macOS 上刷写 RevyOS 镜像到 lip4a - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

在 macOS 上刷写 RevyOS 镜像到 lip4a

+

一、 前置准备

+
    +
  • 使用 brew 或其他方式安装 android-platform-tools
  • +
  • 下载对应硬件的 uboot 以及镜像
  • +
  • 确保您的开发版通过串口以及 usb 连接 Mac
  • +
  • 确保您的开发版有通过 12V 供电
  • +
+

开始下载 uboot 以及镜像:

+

访问该网站,并且确保您进入的是最新日期的文件夹,这里以 20240720 为例:

+

下载以下文件:

+
+

确保您下载的文件与您的硬件相符,荔枝派 4a 分为 8G 以及 16G 版本,对应的 uboot 也不相同。

+
+

接着,使用 brew 安装 android-platform-tools:

+

brew intsall android-platform-tools

+

确定 fastboot 指令能够正常使用:

+
yuiyuuhayashi@MacBook-Air ~ % fastboot usb 0
+< waiting for any device >
+
+

二、开始安装

+

首先, 让你的荔枝派在启动阶段进入 xx 模式。 +输入 fastboot usb 0,并且确定您已经通过 type C 接口正确连接到您的 Mac 以及接入 12V 供电 +在 Mac 上输入如下指令:

+
fastboot flash uboot <filename>
+
+

正确刷写后,使用 fastboot reboot 进行重启

+
+

若没有开发版没有正确重启,请手动断电重启

+
+

同样的进入 xx 模式,在 macOS 上执行如下指令:

+
fastboot flash root <filename>
+
+

同样的,使用 fastboot reboot 进行重启

+

三、进入系统

+

在进入系统后,请输入如下账号密码:

+
debian
+debian
+
+

成功进入系统后,可使用 neofetch 等方式查看系统版本等信息。

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/_static/js/extra.js b/zh/_static/js/extra.js new file mode 100644 index 00000000..f93faf74 --- /dev/null +++ b/zh/_static/js/extra.js @@ -0,0 +1,5 @@ +// We love spaces. See https://github.com/vinta/pangu.js/ +document.addEventListener('DOMContentLoaded', () => { + // listen to any DOM change and automatically perform spacing via MutationObserver() + pangu.autoSpacingPage(); +}); diff --git a/zh/adaptation/GStreamer-pipeline-example-with-thead-omxil-lib/index.html b/zh/adaptation/GStreamer-pipeline-example-with-thead-omxil-lib/index.html new file mode 100644 index 00000000..c9eb1c60 --- /dev/null +++ b/zh/adaptation/GStreamer-pipeline-example-with-thead-omxil-lib/index.html @@ -0,0 +1,2246 @@ + + + + + + + + + + + + + + + + + + + + + + GStreamer pipeline - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

GStreamer pipeline examples with thead OpenMax-IL lib

+

Some GStreamer pipeline command-line examples with omxil library on TH1520, RevyOS

+

Get ready

+

In this section, the grammer of the gstreamer command-line pipeline and some usefule debug tips are introduced. They have been moved to the end of the article.

+

Pipeline samples

+

Basically, you neet to install gstreamer1.0-plugins-base, gstreamer1.0-plugins-good, gstreamer1.0-plugins-bad, gstreamer1.0-omx-generic, gstreamer1.0-omx-bellagio-config,gstreamer1.0-tools.

+

Test

+

videotestsrc

+
# videotestsrc
+gst-launch-1.0 videotestsrc ! autovideosink
+
+# specify the video stream format
+gst-launch-1.0 videotestsrc ! video/x-raw, format=NV12, width=960, height=540, framerate=60/1 ! autovideosink
+
+

fpsdisplaysink

+
# display framerate
+gst-launch-1.0 videotestsrc ! fpsdisplaysink
+
+# no need to sync on the clock - used to test the performance of the pipeline
+gst-launch-1.0 videotestsrc ! fpsdisplaysink sync=false
+
+# stop display on the screen, but redirect the output to stdout
+gst-launch-1.0 videotestsrc ! fpsdisplaysink text-overlay=false -v 2>&1
+
+# specify which sink to use
+gst-launch-1.0 videotestsrc ! fpsdisplaysink sink=glimagesink
+
+# combine the previous examples
+gst-launch-1.0 videotestsrc ! fpsdisplaysink sink=glimagesink sync=false text-overlay=false -v 2>&1
+
+

audiotestsrc

+
# audiotestsrc
+gst-launch-1.0 audiotestsrc ! autoaudiosink
+
+# change volume (0 to 1)
+gst-launch-1.0 audiotestsrc volume=0.1 ! autoaudiosink
+
+# change waveform
+# could be selected among square, silence, pink-noise, etc.
+gst-launch-1.0 audiotestsrc wave=pink-noise ! autoaudiosink
+
+# set fix frequency, such as "do" (262 Hz)
+gst-launch-1.0 audiotestsrc freq=262 ! autoaudiosink
+
+

fakesink

+
# a dummy sink that swallows everything
+gst-launch-1.0 videotestsrc ! fakesink
+
+

Decode

+

Video decode

+
# let decodebin choose which decoder to use,
+# and autovideosink choose which video-sink to use (not recommended)
+gst-launch-1.0 filesrc location=fire.mp4 ! decodebin ! autovideosink
+
+# h264 software decode without opengl display
+gst-launch-1.0 filesrc location=fire.mp4 ! qtdemux ! h264parse ! avdec_h264 ! xvimagesink
+
+# h264 hardware decode with opengl display
+gst-launch-1.0 filesrc location=fire.mp4 ! qtdemux ! h264parse ! omxh264dec ! glimagesink
+
+# h265 hardware decode
+gst-launch-1.0 filesrc location=fire.mp4 ! qtdemux ! h265parse ! omxh265dec ! glimagesink
+
+# vp9 hardware decode 
+gst-launch-1.0 filesrc location=fire.webm ! matroskademux ! omxvp9dec ! glimagesink
+
+# mpeg4 hardware decode 
+gst-launch-1.0 filesrc location=fire.mp4 ! qtdemux ! queue ! mpeg4videoparse ! omxmpeg4videodec ! glimagesink
+
+# play mkv/webm file
+gst-launch-1.0 filesrc location=fire.mkv ! matroskademux ! decodebin ! glimagesink
+
+# todo 10-bit h264/h265 decode
+
+

Audio decode

+
# there is no hardware decoder on th1520
+
+# let autoaudiosink choose which audio-sink to use
+gst-launch-1.0 filesrc location=blade.mp3 ! decodebin ! audioconvert ! autoaudiosink
+
+# mp3 decode
+gst-launch-1.0 filesrc location=blade.mp3 ! mpegaudioparse ! avdec_mp3 ! audioconvert ! autoaudiosink
+
+# aac decode
+gst-launch-1.0 filesrc location=blade.aac ! aacparse ! avdec_aac ! audioconvert ! autoaudiosink
+gst-launch-1.0 filesrc location=blade.aac ! aacparse ! faad ! audioconvert ! autoaudiosink
+## faad works well without aacparse
+gst-launch-1.0 filesrc location=blade.aac ! faad ! audioconvert ! autoaudiosink
+
+# opus decode
+## ogg file must be demuxed by oggdemux first
+gst-launch-1.0 filesrc location=blade.ogg ! oggdemux ! opusparse ! opusdec ! audioconvert ! autoaudiosink
+gst-launch-1.0 filesrc location=blade.ogg ! oggdemux ! opusparse ! avdec_opus ! audioconvert ! autoaudiosink
+
+# wav decode
+gst-launch-1.0 filesrc location=test.wav ! wavparse ! audioresample ! audioconvert ! autoaudiosink
+
+# use specific audiosink
+gst-launch-1.0 filesrc location=blade.mp3 ! decodebin ! audioconvert ! pulsesink
+
+# specify the output device by using alsasink with device property
+gst-launch-1.0 filesrc location=blade.mp3 ! decodebin ! audioconvert ! alsasink device=hw:0,2
+
+

demux and decode

+

We play media file in this section.

+
# play mp4 file with both audio and video
+gst-launch-1.0 filesrc location=fire.mp4 ! qtdemux name=demux \
+  demux.video_0 ! queue  ! decodebin ! videoconvert ! autovideosink \
+  demux.audio_0 ! queue ! decodebin ! audioconvert !  autoaudiosink
+
+

Encode to file

+

Video encode

+
# h264 encode test
+# before import video stream to omxh264dec, data should be transformed to frame with rawvideoparse
+# property and pad of rawvideoparse should be set to the same, so we use 'use-sink-caps=true' here
+gst-launch-1.0 videotestsrc ! videoconvert \
+  ! video/x-raw, format=NV12, width=640, height=480 \
+  ! rawvideoparse use-sink-caps=true ! omxh264enc ! fakesink
+
+# h264 hardware encode to file
+## todo: encoded h264 file has seek problem
+gst-launch-1.0 videotestsrc ! videoconvert \
+  ! video/x-raw, format=NV12, width=640, height=480 \
+  ! rawvideoparse use-sink-caps=true ! omxh264enc \
+  ! h264parse ! qtmux ! mp4mux ! filesink location=test.mp4
+
+# h264 hardware encode to file with specific bitrate(bit per second)
+gst-launch-1.0 videotestsrc ! videoconvert \
+  ! video/x-raw, format=NV12, width=640, height=480 \
+  ! rawvideoparse use-sink-caps=true  \
+  ! omxh264enc target-bitrate=3000000 \
+  ! h264parse ! filesink location=test.mp4
+
+
+# h265 hardware encode to file
+## this pipeline produces h265 stream only
+## qtdemux is not needed while decoding
+gst-launch-1.0 videotestsrc ! videoconvert \
+  ! video/x-raw, format=NV12, width=640, height=480 \
+  ! rawvideoparse use-sink-caps=true ! omxh265enc \
+  ! h265parse ! filesink location=test.h265
+
+# h264 hardware encode from camera to file
+gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert \
+  ! video/x-raw, format=NV12,width=640,height=480 \
+  ! rawvideoparse use-sink-caps=true \
+  ! omxh264enc ! h264parse ! filesink location=test.mp4 -e
+
+

Audio encode

+
# There is no hardware audio encoder on th1520
+
+# encode aac stream with adts container(.aac file)
+## the unit of the bitrate is 'bit/sec'
+gst-launch-1.0 audiotestsrc ! voaacenc bitrate=128000 ! avmux_adts ! filesink location=test.aac
+
+
+# todo: encode aac stream with adif container(.m4a file)
+
+# encode to mp3 file
+## the unit of the bitrate is 'kbit/sec'
+gst-launch-1.0 audiotestsrc ! lamemp3enc quality=2 target=bitrate bitrate=192 cbr=true ! id3v2mux ! filesink location=test.mp3
+
+# encode opus stream to .ogg file
+gst-launch-1.0 audiotestsrc ! opusenc ! oggmux ! filesink location=test.opus
+
+
+# todo: encode pcm stream to .wav file
+
+

mux and encode

+

This part has been removed to Video + audio transcode section.

+

Media file transcode

+

Video transcode

+

Since omx...dec cannot fulfill qtdemux and mp4mux, and gst-omx is no longer maintained, it is hard to mux mp4 file with these two plugins. To mux stream from omxh264dec, use avmux_mp4 instead. But there is no h265 or vp9 muxer available for omx...dec

+

The raw video stream should be processed by rawvideoparse before sent to encoder. Because itself cannot scale frame or change framerate, rawvideoparse need to get the stream info of its sink pad(src pad of the backward element). Therefore use-sink-caps must be set to true.

+

To change width and height, set properties output-width and output-height of omx...dec. To modify bitrate and bitrate control method, set properties control-rate and target-bitrate of omx...enc. To change framerate, set properties of videorate.

+
# h265 to h264
+gst-launch-1.0 filesrc location=test_h265.mp4 ! qtdemux ! h265parse ! omxh265dec \
+  ! rawvideoparse use-sink-caps=true \
+  ! omxh264enc ! h264parse ! avmux_mp4 ! filesink location=t_h264.mp4
+
+# vp9 to h264
+gst-launch-1.0 filesrc location=test_vp9.webm ! matroskademux ! omxvp9dec \
+  ! rawvideoparse use-sink-caps=true \
+  ! omxh264enc ! h264parse ! avmux_mp4 ! filesink location=t_h264.mp4
+
+# arbitrary input to h264
+gst-launch-1.0 filesrc location=test_h264.mp4 ! decodebin \
+  ! rawvideoparse use-sink-caps=true \
+  ! omxh264enc ! h264parse ! filesink location=t_h264.mp4
+
+# h264 to h264, with more options
+## set the video width and height to 1280×720, framerate to 15fps, bitrate mode to constant and bitrate to 5Mbps
+gst-launch-1.0 filesrc location=test_h264.mp4 ! qtdemux ! h264parse \
+  ! omxh264dec output-width=1280 output-height=720 \
+  ! videorate ! video/x-raw, framerate=15/1 \
+  ! rawvideoparse use-sink-caps=true  \
+  ! omxh264enc control-rate=constant target-bitrate=5000000 ! h264parse ! filesink location=t_h264.mp4
+
+## there is no vp9 encoder in th1520 omxil lib
+
+

Audio transcode

+
# aac to mp3
+gst-launch-1.0 filesrc location=test.aac ! aacparse ! avdec_aac ! audioconvert ! lamemp3enc quality=2 target=bitrate bitrate=192 cbr=true ! id3v2mux ! filesink location=t.mp3
+
+# mp3 to aac
+gst-launch-1.0 filesrc location=test.mp3 ! mpegaudioparse ! avdec_mp3 ! audioconvert ! voaacenc bitrate=128000 ! avmux_adts ! filesink location=t.aac
+
+# wav to mp3
+gst-launch-1.0 filesrc location=test.wav ! wavparse ! audioresample ! audioconvert ! lamemp3enc quality=2 target=bitrate bitrate=192 cbr=true ! id3v2mux ! filesink location=t.mp3
+
+# mp3 to wav
+gst-launch-1.0 filesrc location=test.mp3 ! mpegaudioparse ! avdec_mp3 ! audioresample ! audioconvert \
+  ! audio/x-raw, rate=44100, format=S16LE ! wavenc ! filesink location=t.wav
+
+

Video + audio remux and transcode

+
# mux test
+gst-launch-1.0 audiotestsrc ! autoaudiosink videotestsrc ! autovideosink
+
+# mux the test video and audio stream to a mp4 file
+## be aware that '-e' must be set to this pipeline,
+## and there is no '!' before audiotestsrc
+gst-launch-1.0 -e videotestsrc ! videoconvert \
+  ! video/x-raw, format=NV12, width=960, height=540 \
+  ! rawvideoparse use-sink-caps=true ! omxh264enc ! h264parse \
+  ! avmux_mp4 name=mux ! filesink location=t_h264.mp4 \
+  audiotestsrc ! lamemp3enc ! mux.
+
+# change container from mkv to mp4 with h264 stream
+## this means demux a mkv file then mux video and audio stream to mp4 file
+gst-launch-1.0 filesrc location=test_h264.mkv \
+  ! matroskademux name=demux mp4mux force-create-timecode-trak=true name=mux ! filesink location=t_h264.mp4 \
+  demux.video_0 ! queue ! video/x-h264 ! mux. \
+  demux.audio_0 ! queue ! audio/mpeg ! mux.
+
+

Media mixing

+

Camera capture

+

You can use command v4l2-ctl, which is included in package v4l-utils to get information of your camera.

+

For more information, read this article

+
# h264 hardware encode from camera to file
+gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert \
+  ! video/x-raw, format=NV12,width=640,height=480 \
+  ! rawvideoparse format=nv12 width=640 height=480 \
+  ! omxh264enc ! h264parse ! filesink location=test.mp4 -e
+
+
+

Stream transfer

+
# capture camera and stream to other machine
+
+## source
+gst-launch-1.0 v4l2src device=/dev/video0 !  videoconvert ! videorate \
+  ! video/x-raw,  format=NV12,width=640,height=480,framerate=20/1 \
+  ! rawvideoparse format=nv12 width=640 height=480  framerate=20/1 \
+  ! omxh264enc ! h264parse config-interval=1 ! video/x-h264,stream-format=byte-stream,alignment=nal \
+  ! rtph264pay ! udpsink  host=192.168.31.27 port=5600
+
+## destination
+gst-launch-1.0 udpsrc port=5600 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' \
+  ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink
+
+

Other tools

+

gst-inspect-1.0

+

gst-inspect-1.0 is a tool to print info about a GStreamer element(factory), which is included in gstreamer1.0-tools.

+
# print the GStreamer element list with a 'less' like paing filter.
+gst-inspect-1.0
+
+# print info of the element
+gst-inspect-1.0 <element_name>
+
+

gst-discover1.0

+

gst-discover-1.0 is a tool to show info about the media file, which is inclucded in gstreamer1.0-plugins-base-apps.

+
gst-discoverer-1.0 -v test.mp4
+
+

gst-play-1.0

+

If you are tired of manually build pipeline for playback by hand. You can use gst-play-1.0 as an alternative, which is included in gstreamer1.0-plugins-base-apps.

+
# play media file
+gst-play-1.0 test.mp4
+
+# play media file with specific sink
+gst-play-1.0 --videosink=glimagesink --audiosink=alsasink
+
+

Left button and right button can be used to seek. For more info, please read this article.

+

Other examples

+

Get ready

+

Debug tips

+

To get the cap info or property of an element, you may need to run gst-inspect-1.0 <element_name>. If gst-inspect-1.0 command not found, install gstreamer1.0-tools.

+

If you want to debug GStreamer, refer to the articles below. +https://gstreamer.freedesktop.org/documentation/tutorials/basic/debugging-tools.html +https://gstreamer.freedesktop.org/documentation/gstreamer/running.html?gi-language=c

+

Grammer

+

Here is a simple command-line pipeline.

+
gst-launch-1.0 videotestsrc ! autovideosink
+
+

! represent a link. The established pipeline looks like

+
videotestsrc => autovideosink
+
+

There are several properties in videotestsrc, which could be lookup by gst-inspect-1.0 videotestsrc.Set some properties:

+
gst-launch-1.0 videotestsrc pattern=ball flip=true ! autovideosink
+
+

NAME=VALUE is a property. pattern and flip are properties of videotestsrc.

+

Sometimes we need to control the behavior of gst-launch-1.0.

+
GST_DEBUG=3 gst-launch-1.0 videotestsrc pattern=ball flip=true ! autovideosink
+gst-launch-1.0 videotestsrc pattern=ball flip=true ! autovideosink --gst-debug-level=3
+
+

There are two ways to achieve this goal. One is setting environment variable. Another one is passing command-line argument to gst-launch-1.0. GST_DEBUG=3 and --gst-debug-level=3 have the same meaning.

+

In most video decoding cases, there is a video-stream and an audio stream. We need to use demuxer to seperate them. Demuxer usually have several src pad. Here is an example.

+
gst-launch-1.0 filesrc location=test-video.mp4 ! qtdemux name=demux demux. ! queue ! h264parse ! omxh264dec ! glimagesink demux. ! queue ! aacparse ! avdec_aac ! audioconvert !  alsasink
+
+

It is hard to read. Add some word wrap:

+
gst-launch-1.0 filesrc location=test-video.mp4 ! qtdemux name=demux \
+  demux. ! queue ! h264parse ! omxh264dec ! glimagesink \
+  demux. ! queue ! aacparse ! avdec_aac ! audioconvert ! pulsesink
+
+

Here we use a demuxer to seperate video and audio, the grammer is:

+
... demuxer name=DEMUXER_NAME \
+DEMUXER_NAME.PIPELINE_NAME_1 ! queue ! ...(the remaining part of pipeline 1) \
+DEMUXER_NAME.PIPELINE_NAME_2 ! queue ! ...(the remaining part of pipeline 2)
+
+

Sometimes we need to set certain properties of the stream at certain nodes in the pipeline, e.g set resolution of the videostream of the videotestsrc.

+
gst-launch-1.0 videotestsrc ! video/x-raw, width=800, height=600 ! glimagesink
+
+

We negotiated the pad properties between videotestsrc and glimagesink. The property names and values must be supported by both element. You can find them in Pad Templates section of gst-inspect-1.0.

+

Reference

+
    +
  1. GStreamer pipeline grammar - StackOverflow
  2. +
  3. GStreamer pipeline samples - GitHub
  4. +
  5. gst-launch-1.0 - GStreamer doc
  6. +
  7. How to display fps of streaming video in gsteramer? - StackOverflow
  8. +
  9. Storing AAC Audio and Retrieving - StackOverflow
  10. +
  11. Accelerated GStreamer User Guide - NVIDIA
  12. +
  13. Storing AAC Audio and Retrieving - StackOverflow
  14. +
  15. Play an opus file with gstreamer and pulseaudio - StackOverflow
  16. +
  17. mp4mux not working with omxh264enc
  18. +
  19. omxh264enc makes qtmux error out with "Buffer has no PTS." - FreeDesktop - Gitlab
  20. +
  21. gst-omx: Retire the whole package - FreeDesktop - Gitlab
  22. +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/zh/adaptation/GStreamer\346\222\255\346\224\276\345\231\250\351\200\202\351\205\215/index.html" "b/zh/adaptation/GStreamer\346\222\255\346\224\276\345\231\250\351\200\202\351\205\215/index.html" new file mode 100644 index 00000000..756977cb --- /dev/null +++ "b/zh/adaptation/GStreamer\346\222\255\346\224\276\345\231\250\351\200\202\351\205\215/index.html" @@ -0,0 +1,2122 @@ + + + + + + + + + + + + + + + + + + + + + + GStreamer 播放器适配 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + +

支持 PTG omxil 库的 GStreamer 播放器适配文档

+

适用SDK v1.1.2

+

概述

+

PTG 的 OpenMAX IL 库(下称 vpu-omxil)可使 LicheePi 4A 能够流畅硬解码 4k 60fps 的视频,那么具体应该如何使用该库呢?本文将主要介绍 LicheePi 4A 开发板上 Parole 播放器的集成与使用,用户可根据本文来了解在 LicheePi 4A 上的适配过程 +以 h264 的硬解为例,视频硬解的工作流程如图所示

+
                +-------------------------------------------+
+                |    +------------+       +------------+    |   +--------+
+video stream----+--->| omxh264dec +------>| video-sink +----+-->| player |
+                |    +------+-----+       +------------+    |   +--------+
+                |           |     GStreamer                 |
+                +-----------+-------------------------------+
+                            |
+                      +-----v-----+
+                      | vpu-omxil |
+                      +-----+-----+
+                            |
+                            |
+                    +-------v-------+
+                    | kernel module |
+                    |    (driver)   |
+                    +-------+-------+
+                            |
+                            v
+                        hardware
+
+
    +
  1. 视频流(video stream)由 GStreamer 读入后经过一系列预处理,送到 GStreamer 的解码器omxh264dec
  2. +
  3. omxh264dec 调用动态库,即 PTG 提供的 vpu-omxil 库,该库通过驱动访问硬件(kernel module)进行硬解
  4. +
  5. 解码后的流传输到 GStreamer 的 video-sink 中,并由播放器(player)呈现
  6. +
+

A. GStreamer omxh264dec 解码测试

+

将 omxh264 解码的部分单独拎出来,大体的结构如下

+
  +---+------------+----+
+  |   +------------+    |
+  |   | omxh264dec |    |
+  |   +------------+    |
+  |      GStreamer      |
+  +----------+----------+
+             |
+  +----+-----v-----+----+
+  |    +-----------+    |
+  |    | vpu-omxil |    |
+  |    +-----------+    |
+  |  libomxil-bellagio  |
+  +----------+----------+
+             |
++------------v------------+
+|  - memalloc   - vc8000  |
+|  - hantrodec  - vidmem  |
+|      kernel modules     |
++------------+------------+
+             |
+             v
+          hardware
+
+

我们依照自底向上的顺序构建图示的链条。 +本节的主要目的是使 omxh264dec 解码器能够运行,并不涉及到输出屏幕等内容。

+

1. 驱动编译、安装以及硬件访问权限的设置

+

硬解码需要访问硬件,而访问硬件又需要驱动,所以需要编译并安装驱动

+

1.1 编译驱动

+

PTG 提供的驱动源:

+

https://github.com/revyos/vpu-vc8000e-kernel

+

https://github.com/revyos/vpu-vc8000d-kernel

+

https://github.com/revyos/video_memory

+
1.1.1替代方案
+

revyos/thead-kernel 已经合并了上述三个内核模块, 使用revyos_defconfig 可以无需编译上述内核模块

+

1.2 安装驱动

+
# depmod 分析可载入模块的依赖关系,在 /lib/modules/<kernel-version>中添加modules.dep文件,以便后续 modprobe 使用
+sudo depmod -a
+sudo modprobe vidmem vc8000 hantrodec memalloc
+
+## 如果 modprobe 安装有问题的话,可以尝试使用 insmod 安装
+#cd /usr/lib/modules/$(uname -r)
+#sudo insmod $(find . -name *vidmem.ko*)
+#sudo insmod $(find . -name *vc8000.ko*)
+#sudo insmod $(find . -name *hantrodec.ko*)
+#sudo insmod $(find . -name *memalloc.ko*)
+
+# 可选:设置开机加载模块
+echo -e "\nvidmem\nhantrodec\nmemalloc\nvc8000\n" | sudo tee -a /etc/modules > /dev/null
+
+

1.3 设置硬件访问权限

+

安装内核模块后,/dev 目录下会出现 hantrodec vidmem vc8000 三个设备文件。默认情况下,用户对其没有访问权限,如果不修改权限的话,非 root 用户在打开 omxil 库时会报错。

+
# 生效一次
+cd /dev
+sudo chmod 666 hantrodec vidmem vc8000
+
+# 长期生效
+cat << EOF | sudo tee /lib/udev/rules.d/70-hantro.rules > /dev/null
+KERNEL=="vidmem", MODE="0666"
+KERNEL=="hantrodec", MODE="0666"
+KERNEL=="vc8000", MODE="0666"
+EOF
+
+

RevyOS 适配记录

+

如果要获取 RevyOS 特定版本的内核模块,可进入 revyos/thead-kernel ,并在 GitHub CI 中下载 artifacts

+

2. 安装 vpu-omxil 并调整配置

+

首先,请将 vpu-omxil 下载并解压到 /usr/lib/omxil/中 +vpu-omxil_1.2.1.tar.gz +如下图所示, 需要

+
    +
  1. vpu-omxil 中的 OpenMax 组件注册到 libomxil-bellagio
  2. +
  3. gst-omx(该包提供了 omxh264dec 解码器) 调用 libomxil-bellagio 的时候也需要知道调用的组件名称
  4. +
+
+---------+   +-------------------+   +-----------+
+| gst-omx +-->| libomxil-bellagio +-->| vpu-omxil |
++---------+   +-------------------+   +-----------+
+
+

2.1 将 vpu-omxil 中的组件注册到 libomxil-bellagio

+
sudo apt install libomxil-bellagio-bin libomxil-bellagio0
+# 注册组件
+omxregister-bellagio -v /usr/lib/omxil/
+
+

使用 omxregister-bellagio 生成注册文件,默认路径为 ~/.omxregister

+
2.1.1 RevyOS/Debian 注册组件
+

th1520-vpu 利用了 debian 在 usr/lib/riscv64-linux-gnu/libomxil-bellagio0 安装之后 +触发自动注册行为 结果如下

+
cat /var/lib/libomxil-bellagio0/registry
+/usr/lib/riscv64-linux-gnu/libomxil-bellagio0/libOMX.hantro.H2.video.encoder.so
+ ==> OMX.hantro.H2.video.encoder ==> OMX.hantro.H2.video.encoder.avc:OMX.hantro.H2.video.encoder.hevc:
+/usr/lib/riscv64-linux-gnu/libomxil-bellagio0/libOMX.hantro.VC8000D.image.decoder.so
+ ==> OMX.hantro.VC8000D.image.decoder ==> OMX.hantro.VC8000D.image.decoder.jpeg:
+/usr/lib/riscv64-linux-gnu/libomxil-bellagio0/libOMX.hantro.H2.image.encoder.so
+ ==> OMX.hantro.H2.image.encoder ==> OMX.hantro.H2.image.encoder.jpeg:
+/usr/lib/riscv64-linux-gnu/libomxil-bellagio0/libOMX.hantro.VC8000D.video.decoder.so
+ ==> OMX.hantro.VC8000D.video.decoder ==> OMX.hantro.VC8000D.video.decoder.mpeg4:OMX.hantro.VC8000D.video.decoder.avc:OMX.hantro.VC8000D.video.decoder.avs:OMX.hantro.VC8000D.video.decoder.h263:OMX.hantro.VC8000D.video.decoder.wmv:OMX.hantro.VC8000D.video.decoder.vp6:OMX.hantro.VC8000D.video.decoder.vp8:OMX.hantro.VC8000D.video.decoder.jpeg:OMX.hantro.VC8000D.video.decoder.hevc:OMX.hantro.VC8000D.video.decoder.vp9:OMX.hantro.VC8000D.video.decoder.avs2:
+
+

2.2 调整 gstomx.conf 的设置

+

调整 gstomx.conf 的设置以使解码器 omxh264dec 调用正确的组件,具体请查看针对 gst-omx 的补丁

+

gst-omx-01-add-libomxil-config.patch

+

3. 添加 dmabuf 补丁

+

请查看 PTG 提供的针对 gst-omx 的 dmabuf 补丁 +gst-omx-02-set-dec-out-port-dmabuf.patch

+

4. GStreamer 解码初步测试

+
sudo apt install gstreamer1.0-omx-generic gstreamer1.0-omx-bellagio-config gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-gl gstreamer1.0-plugins-good gstreamer1.0-tools
+
+# 1 基本解码
+gst-launch-1.0 filesrc location=<test.mp4> ! qtdemux !  h264parse ! omxh264dec  ! videoconvert ! fakesink  sync=false
+# 2 在终端中显示 fps
+# 参考:https://stackoverflow.com/questions/73948308
+gst-launch-1.0 filesrc location=<test.mp4> ! qtdemux !  h264parse ! omxh264dec  ! videoconvert ! fpsdisplaysink video-sink=fakesink  text-overlay=false sync=false -v 2>&1
+
+

fakesink会把前面的视频流全部吞掉,不输出画面(因而不会在 video-sink 这一环节损失性能),但是结合fpsdisplaysink可以读取到解码的速度。正常日志如下:

+
Setting pipeline to PAUSED ...[DBGT]
+vc8kdec compiled without trace support (ENABLE_DBGT_TRACE switch not enabled)
+Pipeline is PREROLLING ...
+Redistribute latency...
+OMX  ! decoder_get_parameter OMX_ErrorNoMore (2)
+Pipeline is PREROLLED ...
+Setting pipeline to PLAYING ...
+New clock: GstSystemClockRedistribute latency...
+0:01:39.5 / 0:01:49.4 (90.9 %)
+
+

【TIP】如果有 [omxh264dec-omxh264dec0: Could not initialize supporting library.](https://gist.github.com/Sakura286/015fae6792e160268db7ad8a697dd2df) 等字样的报错,可以安装gst-omxlibomxil-bellagiolibc6相关的 debug-symbol 包,使用 gdb 启动上述命令进行调试。调试时,先断DWLInit,然后再断open,具体看是打开哪个地方的时候出错了。

+

RevyOS 适配记录

+

RevyOS 适配过程中对于初始化动态库失败找到了如下三种原因:

+
    +
  1. 编译 vpu-omxil 时使用的工具链与当前系统不兼容
  2. +
  3. 未使用omxregister-bellagio注册 vpu-omxil
  4. +
  5. 未调整 /dev 目录下 hantrodec vc8000 vidmem 等设备的权限
  6. +
+

B. 选用合适的 GStreamer video-sink

+

video-sink 是视频流在整个 GStreamer pipeline 中的最后一步,其作用一般是将视频流输出到屏幕上。 +前文中fakesink只是测试解码器是否正常工作的特殊 video-sink可选的 video-sink非常多,常见的有 autovideosinkximagesinkxvimagesinkfbdevsinkwaylandsinkglimagesinkgtkglsink等,它们各在不同的插件包里,需要酌情安装:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
video-sink所属包名
waylandsinkgstreamer1.0-plugins-bad
fbdevsinkgstreamer1.0-plugins-bad
autovideosinkgstreamer1.0-plugins-good
gtkglsinkgstreamer1.0-plugins-good
ximagesink | xvimagesinkgstreamer1.0-plugins-base
glimagesinkgstreamer1.0-plugins-base | gstreamer1.0-gl
+

【TIP】使用 gst-inspect-1.0 <video-sink-name> 来查看对应 video-sink 可用的选项 +【TIP】添加 --gst-debug-level=<lv> 来获得更多的输出日志,其中 <lv> 代表了从 1 到 6,啰嗦程度从低到高,建议在等级 4 及以下,否则日志会非常长 +请尝试不同的 video-sink ,并尝试不同的插件参数,以及给予不同的环境变量,直至找到可以流畅硬解 H264 的那一个。

+

RevyOS 适配记录

+
    +
  • **waylandsink**:由于现在(20230720)RevyOS 采用了 Xfce 桌面,不可能支持 Wayland,故 waylandsink从原理上无法使用
  • +
  • **fbdevsink****ximagesink**:无法使用
  • +
  • **xvimagesink**:通过流水线图以及日志可以确定,playbin 或 autovideosink 会自动调用 xvimagesink,使用 perf 分析后可以发现,使用xvimagesink 不可避免地会进行大量的 memcpy 操作,严重降低解码性能;该问题在获得PTG的 dmabuf 补丁后依然存在,故无法使用
  • +
  • **gtkglsink**GTK3 不支持 EGL on X11,而 RevyOS 目前基于 x11,且只支持 EGL,故无法使用
  • +
+

剩下的只有glimagesink,根据 Running and debugging GStreamer Applications,并观察其他使用到 glimagesink 的例子,可以猜测需要明确指定环境变量 GST_GL_APIGST_GL_PLATFORM +由于 RevyOS 使用了 gles2+egl 的组合,使用如下的命令,成功硬解。

+
GST_GL_API=gles2 GST_GL_PLATFORM=egl gst-launch-1.0 filesrc location=<test.mp4> ! qtdemux !  h264parse ! omxh264dec  ! videoconvert ! fpsdisplaysink video-sink=glimagesink sync=false
+
+

然而 GStreamer 被播放器调用时是无法通过环境变量来传递参数的,所以构建 gst-plugins-base 时应当传递额外的 meson 编译参数:

+
-Dgl_api=[\'gles2\'] -Dgl_platform=[\'egl\']
+
+

C. 播放器支持

+

GStreamer 的 pipeline 没有问题之后,就需要使播放器支持。不同播放器会使用到不同的 video-sink,同样对 gstreamer 有着不同程度的依赖。 +适配播放器时,最重要的工作便是①使播放器适配已验证的 video-sink,或者②使 gstreamer pipeline 支持播放器指定的 video-sink,此次 RevyOS 适配过程采用了①方案。

+
                +-------------------------------------------+
+                |    +------------+       +------------+    |   +--------+
+video stream----+--->| omxh264dec +------>| video-sink +----+-->| player |
+                |    +------------+       +------------+    |   +--------+
+                |                GStreamer                  |
+                +-------------------------------------------+
+
+

RevyOS 适配记录

+

根据 https://gstreamer.freedesktop.org/apps/ 进行简单的排查

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
是否可用是否更新应用名备注
GnashFlash 播放器
GEntransDebian 未收录
20230226Kaffeine❌ 需要大量 KDE 相关组件
✔️ 存在于riscv64 仓库
❌ 在 Debian amd64 Gnome 上,播放窗口与控制窗口分离,且默认调用了 VLC 进行播放
LcdgriloDebian 未收录
✔️20230218Parole✔️ For XFCE
❓ 不支持 Wayland,仅支持 x11
✔️ Debian amd64 Gnome 验证通过
✔️ 存在于riscv64 仓库
SongbirdDebian 未收录
SnappyDebian 未收录
Totem需要 GTK3,然而 GTK3 不支持 EGL on X11
+

最初选择的播放器是 Totem,但是发现 Totem 无法指定除了 gtkglsink 以外的 video-sink,且由于 RevyOS 不支持 gtkglsink,所以支持 Totem 播放器的难度较大。 +对支持 GStreamer 的播放器进行排查后发现了 Parole , Parole 由 GObject 编写,与常见的面向对象编程略有区别。寻找其构建 parole_gst 对象时的方法 parole_gst_constructed,将 video-sink 属性设置为前文已验证的 glimagesink,补丁:

+

parole-01-add-glimagesink-support.patch

+

至此,粗略的适配工作完成。

+

总结:RevyOS 适配工作

+
    +
  1. 编译驱动模块至内核,设置启动加载,设置设备权限
  2. +
  3. 将 PTG 提供的 omxil 二进制动态库文件打包为 th1520-vpu
  4. +
  5. 修改 th1520-vpu 的依赖,使其依赖 gst-omx 、libomxil-bellagio 等包
  6. +
  7. 设置了一些 postinstall 操作,例如使用 omxregister-bellagio 注册组件等
  8. +
  9. 修改 gst-omx
  10. +
  11. 增加 config 中对 vpu-omxil 组件的支持
  12. +
  13. 应用 dmabuf 补丁
  14. +
  15. 增加对 h265 vp9 的支持
  16. +
  17. 修改 gst-base 编译时的 gl 支持,限制为 gles2+egl
  18. +
  19. 修改 parole 以支持 glimagesink
  20. +
+

本文所用资源

+

补丁集合:

+

https://gist.github.com/Sakura286/26777ea8204c1819885e093806a4f7ca

+

PTG omxil 库

+

https://drive.google.com/file/d/1pYgCVI7WltfpskltJ-RqzVUCEC21FS56

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/zh/benchmark/Chromium\351\261\274\347\274\270GPU\346\265\213\350\257\225/index.html" "b/zh/benchmark/Chromium\351\261\274\347\274\270GPU\346\265\213\350\257\225/index.html" new file mode 100644 index 00000000..7ff2002a --- /dev/null +++ "b/zh/benchmark/Chromium\351\261\274\347\274\270GPU\346\265\213\350\257\225/index.html" @@ -0,0 +1,1347 @@ + + + + + + + + + + + + + + + + + + Chromium WebGL 测试 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Chromium WebGL 测试

+

测试网站地址:https://webglsamples.org/aquarium/aquarium.html

+

直接打开即可,左侧数字是渲染的鱼的数量,数量越多越占性能

+

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/benchmark/coremark/index.html b/zh/benchmark/coremark/index.html new file mode 100644 index 00000000..09d32e1a --- /dev/null +++ b/zh/benchmark/coremark/index.html @@ -0,0 +1,1679 @@ + + + + + + + + + + + + + + + + + + + + + + coremark - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

coremark

+

摘要

+

CoreMark是一个综合基准,用于测量嵌入式系统中使用的中央处理器(CPU)的性能。它是在2009由eembc的shay gal-on开发的,旨在成为一个行业标准,取代过时的dehrystone基准。代码用C编写,包含以下算法:列表处理(增删改查和排序)、矩阵操作(公共矩阵操作)、状态机(确定输入流是否包含有效数字)和CRC。用户可以自由的下载Coremark,并移植到自己的平台上运行,随后就可以看到分数。

+

测试项介绍

+

文件介绍

+
├── barebones    --移植到裸机环境下需要修改的目录
+│   ├── core_portme.c       --移植的目标平台配置信息
+│   ├── core_portme.h       --计时以及板级初始化实现
+│   ├── core_portme.mak     --该子目录的makefile
+│   ├── cvt.c
+│   └── ee_printf.c         --打印函数串口发送实现
+├── core_list_join.c    --列表操作程序
+├── core_main.c         --主程序
+├── coremark.h          --项目配置与数据结构的定义头文件
+├── coremark.md5        
+├── core_matrix.c       --矩阵运算程序
+├── core_state.c        --状态机控制程序
+├── core_util.c         --CRC计算程序
+├── cygwin              --x86 cygwin和gcc 3.4(四核,双核和单核系统)的测试代码
+│   ├── core_portme.c
+│   ├── core_portme.h
+│   └── core_portme.mak
+├── freebsd             --以下同理,是在不同操作系统下的测试代码
+│   ├── ...
+├── LICENSE.md
+├── linux
+│   ├── ...
+├── linux64
+│   ├── ...
+├── macos
+│   ├── ...
+├── Makefile            
+├── README.md           --自述文件,CoreMark项目的基本介绍
+├── rtems
+│   ├── ...
+└── simple
+    ├── ...
+    └──
+
+

make 目标

+
    +
  • run - 默认目标,创建 run1.log 和 run2.log
  • +
  • run1.log - 用性能参数运行基准测试,并输出到 run1.log
  • +
  • run2.log - 用验证参数运行基准测试,并输出到 run2.log
  • +
  • run3.log - 用配置文件生成参数运行基准测试,并输出到 run3.log
  • +
  • compile - 编译基准测试可执行文件
  • +
  • link - 链接基准测试可执行文件
  • +
  • check - 测试可能未修改的源文件的 MD5
  • +
  • clean - 清理临时文件
  • +
+

编译/使用

+

根据 README 说法,只需要在 coremark 文件夹下执行 make 即可进行编译与测试。测试结果会出现在 Results 文件夹中,其中 run1.log 是测试结果。

+

测试计划

+

coremark 总体测试时间较短。 +计划同时测试 10 次取平均数值。

+

操作步骤

+
$ git clone https://github.com/eembc/coremark.git
+$ cd coremark
+$ make
+
+

测试结果

+
2K performance run parameters for coremark.
+CoreMark Size    : 666
+Total ticks      : 12915
+Total time (secs): 12.915000
+Iterations/Sec   : 8517.228029
+Iterations       : 110000
+Compiler version : GCC13.1.0
+Compiler flags   : -O2 -DPERFORMANCE_RUN=1  -lrt
+Memory location  : Please put data memory location here
+            (e.g. code in flash, data on heap etc)
+seedcrc          : 0xe9f5
+[0]crclist       : 0xe714
+[0]crcmatrix     : 0x1fd7
+[0]crcstate      : 0x8e3a
+[0]crcfinal      : 0x33ff
+Correct operation validated. See README.md for run and reporting rules.
+CoreMark 1.0 : 8517.228029 / GCC13.1.0 -O2 -DPERFORMANCE_RUN=1  -lrt / Heap
+
+
+

GCC 10.4 + xtheadc

+
make XCFLAGS="-march=rv64gv0p7_zfh_xtheadc -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns  -msignedness-cmpiv -fno-code-hoisting -mno-thread-jumps1 -mno-iv-adjust-addr-cost -mno-expand-split-imm"
+
+
2K performance run parameters for coremark.
+CoreMark Size    : 666
+Total ticks      : 15129
+Total time (secs): 15.129000
+Iterations/Sec   : 13219.644392
+Iterations       : 200000
+Compiler version : GCC10.4.0
+Compiler flags   : -O2 -march=rv64gv0p7_zfh_xtheadc -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns  -msignedness-cmpiv -fno-code-hoisting -mno-thread-jumps1 -mno-iv-adjust-addr-cost -mno-expand-split-imm -DPERFORMANCE_RUN=1  -lrt
+Memory location  : Please put data memory location here
+                        (e.g. code in flash, data on heap etc)
+seedcrc          : 0xe9f5
+[0]crclist       : 0xe714
+[0]crcmatrix     : 0x1fd7
+[0]crcstate      : 0x8e3a
+[0]crcfinal      : 0x4983
+Correct operation validated. See README.md for run and reporting rules.
+CoreMark 1.0 : 13219.644392 / GCC10.4.0 -O2 -march=rv64gv0p7_zfh_xtheadc -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns  -msignedness-cmpiv -fno-code-hoisting -mno-thread-jumps1 -mno-iv-adjust-addr-cost -mno-expand-split-imm -DPERFORMANCE_RUN=1  -lrt / Heap
+
+

GCC 13.1 + xthead matrix

+
make XCFLAGS="-march=rv64imafd_xtheadba_xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadfmv_xtheadint_xtheadmac_xtheadmemidx_xtheadmempair_xtheadsync -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns -fno-code-hoisting -mno-thread-jumps"
+
+
2K performance run parameters for coremark.
+CoreMark Size    : 666
+Total ticks      : 11897
+Total time (secs): 11.897000
+Iterations/Sec   : 9246.028411
+Iterations       : 110000
+Compiler version : GCC13.1.0
+Compiler flags   : -O2 -march=rv64imafd_xtheadba_xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadfmv_xtheadint_xtheadmac_xtheadmemidx_xtheadmempair_xtheadsync -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns -fno-code-hoisting -DPERFORMANCE_RUN=1  -lrt
+Memory location  : Please put data memory location here
+            (e.g. code in flash, data on heap etc)
+seedcrc          : 0xe9f5
+[0]crclist       : 0xe714
+[0]crcmatrix     : 0x1fd7
+[0]crcstate      : 0x8e3a
+[0]crcfinal      : 0x33ff
+Correct operation validated. See README.md for run and reporting rules.
+CoreMark 1.0 : 9246.028411 / GCC13.1.0 -O2 -march=rv64imafd_xtheadba_xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadfmv_xtheadint_xtheadmac_xtheadmemidx_xtheadmempair_xtheadsync -O3 -funroll-all-loops -finline-limit=500 -fgcse-sm -fno-schedule-insns -fno-code-hoisting -DPERFORMANCE_RUN=1  -lrt / Heap
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/benchmark/glmark2/index.html b/zh/benchmark/glmark2/index.html new file mode 100644 index 00000000..68b11645 --- /dev/null +++ b/zh/benchmark/glmark2/index.html @@ -0,0 +1,1486 @@ + + + + + + + + + + + + + + + + + + + + + + glmark2 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

glmark2

+

glmark2 是基于 OpenGL 2.0 以及 ES 2.0 的一个性能测试.

+

此处我们只使用 glmark2-es2 ,软件包已经预装在RevyOS中,用于 x11-glesv2 的测试.

+

th1520 只支持 glmark-es2.

+

准备步骤

+

开始之前我们需要调整芯片进入高性能模式,在终端中执行下述命令即可,需要使用 sudo 或者root账户.

+
echo performance >  /sys/devices/system/cpu/cpufreq/policy0/scaling_governor 
+
+cat /sys/devices/system/cpu/cpufreq/policy0/cpuinfo_cur_freq
+
+

如果在执行之后看到 "1848000" 数字,则表明已经调整至性能模式,可以继续向下操作.

+

开始运行

+

使用任意账户登陆系统,打开终端输入 glmark2-es2,需要将HDMI连接到显示器,请勿通过SSH连接执行.

+

输入命令后,桌面上会出现一个有图形活动的新窗口。

+

测试完成后,额外窗口会消失,分数会以 glmark2 Score: xxx 的形式输出在终端中。

+

测试示例:

+
debian@lpi4a:~/Desktop$ glmark2-es2
+=======================================================
+    glmark2 2021.12
+=======================================================
+    OpenGL Information
+    GL_VENDOR:      Imagination Technologies
+    GL_RENDERER:    PowerVR B-Series BXM-4-64
+    GL_VERSION:     OpenGL ES 3.2 build 1.17@6210866
+    Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=8
+    Surface Size:   800x600 windowed
+=======================================================
+[build] use-vbo=false: FPS: 513 FrameTime: 1.949 ms
+[build] use-vbo=true: FPS: 1367 FrameTime: 0.732 ms
+[texture] texture-filter=nearest: FPS: 1449 FrameTime: 0.690 ms
+[texture] texture-filter=linear: FPS: 1454 FrameTime: 0.688 ms
+[texture] texture-filter=mipmap: FPS: 1453 FrameTime: 0.688 ms
+[shading] shading=gouraud: FPS: 1172 FrameTime: 0.853 ms
+[shading] shading=blinn-phong-inf: FPS: 1180 FrameTime: 0.847 ms
+[shading] shading=phong: FPS: 1002 FrameTime: 0.998 ms
+[shading] shading=cel: FPS: 979 FrameTime: 1.021 ms
+[bump] bump-render=high-poly: FPS: 700 FrameTime: 1.429 ms
+[bump] bump-render=normals: FPS: 1354 FrameTime: 0.739 ms
+[bump] bump-render=height: FPS: 1320 FrameTime: 0.758 ms
+[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1059 FrameTime: 0.944 ms
+[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 381 FrameTime: 2.625 ms
+[pulsar] light=false:quads=5:texture=false: FPS: 1484 FrameTime: 0.674 ms
+[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 349 FrameTime: 2.865 ms
+[desktop] effect=shadow:windows=4: FPS: 736 FrameTime: 1.359 ms
+[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 161 FrameTime: 6.211 ms
+[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 173 FrameTime: 5.780 ms
+[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 242 FrameTime: 4.132 ms
+[ideas] speed=duration: FPS: 593 FrameTime: 1.686 ms
+[jellyfish] <default>: FPS: 572 FrameTime: 1.748 ms
+[terrain] <default>: FPS: 42 FrameTime: 23.810 ms
+[shadow] <default>: FPS: 619 FrameTime: 1.616 ms
+[refract] <default>: FPS: 82 FrameTime: 12.195 ms
+[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1539 FrameTime: 0.650 ms
+[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1238 FrameTime: 0.808 ms
+[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1535 FrameTime: 0.651 ms
+[function] fragment-complexity=low:fragment-steps=5: FPS: 1411 FrameTime: 0.709 ms
+[function] fragment-complexity=medium:fragment-steps=5: FPS: 1050 FrameTime: 0.952 ms
+[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1376 FrameTime: 0.727 ms
+[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1394 FrameTime: 0.717 ms
+[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1379 FrameTime: 0.725 ms
+=======================================================
+                                  glmark2 Score: 950 
+=======================================================
+
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/benchmark/images/chromium_webgl_1.png b/zh/benchmark/images/chromium_webgl_1.png new file mode 100644 index 00000000..379bfeb7 Binary files /dev/null and b/zh/benchmark/images/chromium_webgl_1.png differ diff --git a/zh/benchmark/lmbench/index.html b/zh/benchmark/lmbench/index.html new file mode 100644 index 00000000..cb5d9a67 --- /dev/null +++ b/zh/benchmark/lmbench/index.html @@ -0,0 +1,1755 @@ + + + + + + + + + + + + + + + + + + + + + + lmbench - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

lmbench for Lpi4A

+

软件版本

+
+

lmbench for revyOS

+
+

测试说明

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
带宽测评工具反应时间测评工具其他
读取缓存文件上下文切换\
拷贝内存网络:连接的建立,管道,TCP,UDP 和RPC hot potato\
读内存文件系统的建立和删除\
写内存进程创建处理器时钟比率计算
管道信号处理\
TCP上层的系统调用\
\内存读入反应时间\
+

测试准备

+

下载测试工具:

+
git clone https://github.com/revyos/lmbench3.git
+
+
+

该版本为已为 RevyOS 移植版本。

+
+

在开始测试前,需要先安装依赖:

+
sudo apt install gcc make libntirpc-dev -y
+
+

测试执行

+

执行命令进行编译,配置,并测试

+
cd lmbench3
+cd src
+make results
+
+

编译完成后会有以下选项提示需要设置:

+

以下不需要更改的项目直接回车,会自动设置默认值。

+

MULTIPLE COPIES [default 1]: 设置同时运行 lmbench 的份数,份数多会使 lmbench 运行缓慢,默认是 1,这里设置为默认值 1。

+
=====================================================================
+
+If you are running on an MP machine and you want to try running
+multiple copies of lmbench in parallel, you can specify how many here.
+
+Using this option will make the benchmark run 100x slower (sorry).
+
+NOTE:  WARNING! This feature is experimental and many results are 
+    known to be incorrect or random!
+
+MULTIPLE COPIES [default 1]: 
+=====================================================================
+
+

Job placement selection [default 1]: 作业调度控制方法,默认值是 1,表示允许作业调度,这里设置为默认值。

+
=====================================================================
+
+Options to control job placement
+1) Allow scheduler to place jobs
+2) Assign each benchmark process with any attendent child processes
+   to its own processor
+3) Assign each benchmark process with any attendent child processes
+   to its own processor, except that it will be as far as possible
+   from other processes
+4) Assign each benchmark and attendent processes to their own
+   processors
+5) Assign each benchmark and attendent processes to their own
+   processors, except that they will be as far as possible from
+   each other and other processes
+6) Custom placement: you assign each benchmark process with attendent
+   child processes to processors
+7) Custom placement: you assign each benchmark and attendent
+   processes to processors
+
+Note: some benchmarks, such as bw_pipe, create attendent child
+processes for each benchmark process.  For example, bw_pipe
+needs a second process to send data down the pipe to be read
+by the benchmark process.  If you have three copies of the
+benchmark process running, then you actually have six processes;
+three attendent child processes sending data down the pipes and 
+three benchmark processes reading data and doing the measurements.
+
+Job placement selection [default 1]: 
+=====================================================================
+
+

Memory: 设置测试内存大小,默认是 $MB , 即为程序计算出来的最大可测试内存,也可以手动定义测试值,这里设置为这里使用默认值。

+
=====================================================================
+
+Several benchmarks operate on a range of memory.  This memory should be
+sized such that it is at least 4 times as big as the external cache[s]
+on your system.   It should be no more than 80% of your physical memory.
+
+The bigger the range, the more accurate the results, but larger sizes
+take somewhat longer to run the benchmark.
+
+MB [default 686]: 
+Checking to see if you have 686 MB; please wait for a moment...
+686MB OK
+686MB OK
+686MB OK
+Hang on, we are calculating your cache line size.
+OK, it looks like your cache line is 64 bytes.
+
+=====================================================================
+
+

SUBSET (ALL|HARWARE|OS|DEVELOPMENT) [default all]: 要运行的测试集,包含 ALL/HARWARE/OS/DEVELOPMENT,默认选 all,这里选 all

+
=====================================================================
+
+lmbench measures a wide variety of system performance, and the full suite
+of benchmarks can take a long time on some platforms.  Consequently, we
+offer the capability to run only predefined subsets of benchmarks, one
+for operating system specific benchmarks and one for hardware specific
+benchmarks.  We also offer the option of running only selected benchmarks
+which is useful during operating system development.
+
+Please remember that if you intend to publish the results you either need
+to do a full run or one of the predefined OS or hardware subsets.
+
+SUBSET (ALL|HARWARE|OS|DEVELOPMENT) [default all]: 
+=====================================================================
+
+

FASTMEM [default no]: 内存 latency 测试,如果跳过该测试,则设置为 yes,如果不跳过则设置为 no,默认是 no,这里设置为默认值。

+
=====================================================================
+
+This benchmark measures, by default, memory latency for a number of
+different strides.  That can take a long time and is most useful if you
+are trying to figure out your cache line size or if your cache line size
+is greater than 128 bytes.
+
+If you are planning on sending in these results, please don't do a fast
+run.
+
+Answering yes means that we measure memory latency with a 128 byte stride.  
+
+FASTMEM [default no]: 
+=====================================================================
+
+

SLOWFS [default no]: 文件系统 latency 测试,如果跳过值设置为 yes,不跳过设置为 no,默认 no,这里设置为默认值。

+
=====================================================================
+
+This benchmark measures, by default, file system latency.  That can
+take a long time on systems with old style file systems (i.e., UFS,
+FFS, etc.).  Linux' ext2fs and Sun's tmpfs are fast enough that this
+test is not painful.
+
+If you are planning on sending in these results, please don't do a fast
+run.
+
+If you want to skip the file system latency tests, answer "yes" below.
+
+SLOWFS [default no]: 
+=====================================================================
+
+

DISKS [default none]: 硬盘带宽和 seek time,需要设置测试硬盘的盘符,例如 /dev/sda,默认不测试(默认 none ),这里设置为默认值。

+
=====================================================================
+
+This benchmark can measure disk zone bandwidths and seek times.  These can
+be turned into whizzy graphs that pretty much tell you everything you might
+need to know about the performance of your disk.  
+
+This takes a while and requires read access to a disk drive.  
+Write is not measured, see disk.c to see how if you want to do so.
+
+If you want to skip the disk tests, hit return below.
+
+If you want to include disk tests, then specify the path to the disk
+device, such as /dev/sda.  For each disk that is readable, you'll be
+prompted for a one line description of the drive, i.e., 
+
+    Iomega IDE ZIP
+or
+    HP C3725S 2GB on 10MB/sec NCR SCSI bus
+
+DISKS [default none]: 
+=====================================================================
+
+

REMOTE [default none]: 网络测试,需要 2 台机器并设置 rsh,是测试机器能 rsh 访问另一台,默认不测试(默认 none ),这里设置为默认值。

+
=====================================================================
+
+If you are running on an idle network and there are other, identically
+configured systems, on the same wire (no gateway between you and them),
+and you have rsh access to them, then you should run the network part
+of the benchmarks to them.  Please specify any such systems as a space
+separated list such as: ether-host fddi-host hippi-host.
+
+REMOTE [default none]: 
+=====================================================================
+
+

Processor mhz [default 999 MHz, 1.0010 nanosec clock]: 测试 cpu,默认 $MHZ,即为程序判断出的频率,也可以根据情况自己设定,例如 3500,单位 MHz,这里设置为默认值。

+
=====================================================================
+
+Calculating mhz, please wait for a moment...
+I think your CPU mhz is 
+
+    999 MHz, 1.0010 nanosec clock
+
+but I am frequently wrong.  If that is the wrong Mhz, type in your
+best guess as to your processor speed.  It doesn't have to be exact,
+but if you know it is around 800, say 800.  
+
+Please note that some processors, such as the P4, have a core which
+is double-clocked, so on those processors the reported clock speed
+will be roughly double the advertised clock rate.  For example, a
+1.8GHz P4 may be reported as a 3592MHz processor.
+
+Processor mhz [default 999 MHz, 1.0010 nanosec clock]: 
+=====================================================================
+
+

FSDIR [default /usr/tmp]: 临时目录用来存放测试文件,可以自己设定,默认 /usr/tmp,这里设置为默认值。

+
=====================================================================
+
+We need a place to store a 686 Mbyte file as well as create and delete a
+large number of small files.  We default to /usr/tmp.  If /usr/tmp is a
+memory resident file system (i.e., tmpfs), pick a different place.
+Please specify a directory that has enough space and is a local file
+system.
+
+FSDIR [default /usr/tmp]: 
+=====================================================================
+
+

Status output file [default /dev/tty]: 测试输出信息文件存放目录,可以自己设定,默认 /dev/tty

+
=====================================================================
+
+lmbench outputs status information as it runs various benchmarks.
+By default this output is sent to /dev/tty, but you may redirect
+it to any file you wish (such as /dev/null...).
+
+Status output file [default /dev/tty]: 
+=====================================================================
+
+

Mail results [default yes]: 是否将测试结果邮件发出来,默认是 yes,这里设置为 no

+
=====================================================================
+
+There is a database of benchmark results that is shipped with new
+releases of lmbench.  Your results can be included in the database
+if you wish.  The more results the better, especially if they include
+remote networking.  If your results are interesting, i.e., for a new
+fast box, they may be made available on the lmbench web page, which is
+
+    http://www.bitmover.com/lmbench
+
+Mail results [default yes]: no
+OK, no results mailed.
+=====================================================================
+
+

以上项目设置完成后,开始自动执行测试。

+

测试结果

+

测试说明

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/benchmark/p7zip/index.html b/zh/benchmark/p7zip/index.html new file mode 100644 index 00000000..3df700c6 --- /dev/null +++ b/zh/benchmark/p7zip/index.html @@ -0,0 +1,1458 @@ + + + + + + + + + + + + + + + + + + + + + + p7zip - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

p7zip

+

p7zip 测试是用于测试系统解压性能,通过数据直观评估性能,以下是运行 7pzip 测试的操作步骤

+

安装 7zip

+

首先需要在 RevyOS 中 安装 p7zip

+
debian@lpi4a:~/Desktop$ sudo apt update
+debian@lpi4a:~/Desktop$ sudo apt install p7zip-full
+
+

执行性能测试

+

进行 p7zip 测试需要在终端中输入以下命令来执行:

+
debian@lpi4a:~/Desktop$ 7z b
+
+

系统会开始进行测试然后输出性能数据。

+

通过以上步骤,可以在 RevyOS 上安装并测试 7zip 的性能。

+

以下是测试结果参考,使用镜像版本为RevyOS2023121016g版本

+
debian@lpi4a:~/Desktop$ 7z b
+
+7-Zip 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
+p7zip Version 16.02 (locale=C.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs LE)
+
+LE
+CPU Freq: - 64000000 64000000 - - - - - -
+
+RAM size:   15739 MB,  # CPU hardware threads:   4
+RAM usage:    882 MB,  # Benchmark threads:      4
+
+                       Compressing  |                  Decompressing
+Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
+         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS
+
+22:       3252   303   1045   3164  |      75268   394   1628   6422
+23:       3092   307   1025   3151  |      74514   399   1617   6447
+24:       3021   318   1022   3249  |      72017   398   1588   6322
+25:       2945   320   1050   3363  |      67801   395   1529   6034
+----------------------------------  | ------------------------------
+Avr:             312   1036   3232  |              396   1591   6306
+Tot:             354   1313   4769
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/benchmark/reboot/index.html b/zh/benchmark/reboot/index.html new file mode 100644 index 00000000..8d1dabd8 --- /dev/null +++ b/zh/benchmark/reboot/index.html @@ -0,0 +1,1479 @@ + + + + + + + + + + + + + + + + + + + + + + reboot-test - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

重启测试

+

摘要

+

使用脚本对整机进行重启测试。

+

测试项说明

+

测试机器重启会不会出现死机等问题。

+

测试计划

+

进行重启测试 500 次。

+

操作步骤

+

在 /lib/system/system 下创建名为 cycletest.service_ 重启脚本:

+
[Unit]
+Description=Reboots unit after 30s
+
+[Service]
+StandardOutput=syslog+console
+ExecStart=/bin/sh -c "\
+test -f /cycle-count || echo 0 > /cycle-count;\
+echo 'starting cycletest';\
+sleep 30;\
+expr `cat /cycle-count` + 1 > /cycle-count;\
+systemctl reboot;\
+"
+
+[Install]
+WantedBy=multi-user.target
+
+

后根据以下指令安装并开始测试:

+
systemctl daemon-reload
+systemctl enable cycletest.service (enable the service to start on reboot)
+systemctl start cycletest.service (start the service, should reboot in 30s)
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/benchmark/stream/index.html b/zh/benchmark/stream/index.html new file mode 100644 index 00000000..d097d056 --- /dev/null +++ b/zh/benchmark/stream/index.html @@ -0,0 +1,1466 @@ + + + + + + + + + + + + + + + + + + + + + + stream - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Stream

+

使用说明

+

STREAM 基准测试是一个简单的综合基准测试程序,它测量可持续内存带宽(以 MB/s 为单位)和简单向量内核的相应计算速率。

+

stream 仅有单个文件,在进行测试时只需要对 stream.c 进行编译即可:

+
git clone <https://github.com/microseyuyu/STREAM.git>
+cd STREAM
+gcc -O3 -fopenmp -DN=2000000 -DNTIMES=10 stream.c -o stream
+export OMP_NUM_THREADS=8
+./stream
+
+

参数说明:

+
    +
  • -O3:指定最高编译优化级别,即 3。
  • +
  • fopenmp:启用OpenMP,适应多处理器环境,更能得到内存带宽实际最大值。开启后,程序默认运行线程为CPU线程数
  • +
+

DN=2000000:指定测试数组a[]、b[]、c[]的大小(Array size)。该值对测试结果影响较大(5.9版本默认值2000000,。若stream.c为5.10版本,参数名变为-DSTREAM_ARRAY_SIZE,默认值10000000)。注意:必须设置测试数组大小远大于CPU 最高级缓存(一般为L3 Cache)的大小,否则就是测试CPU缓存的吞吐性能,而非内存吞吐性能。 +- -DNTIMES=10:执行的次数,并从这些结果中选最优值。 +- OMP_NUM_THREADS=8 线程数量。

+

参考结果:

+
debian@lpi4a:~/Desktop/STREAM$ ./stream
+-------------------------------------------------------------
+STREAM version $Revision: 5.10 $
+-------------------------------------------------------------
+This system uses 8 bytes per array element.
+-------------------------------------------------------------
+*****  WARNING: ******
+      It appears that you set the preprocessor variable N when compiling this code.
+      This version of the code uses the preprocesor variable STREAM_ARRAY_SIZE to control the array size
+      Reverting to default value of STREAM_ARRAY_SIZE=10000000
+*****  WARNING: ******
+Array size = 10000000 (elements), Offset = 0 (elements)
+Memory per array = 76.3 MiB (= 0.1 GiB).
+Total memory required = 228.9 MiB (= 0.2 GiB).
+Each kernel will be executed 10 times.
+ The *best* time for each kernel (excluding the first iteration)
+ will be used to compute the reported bandwidth.
+-------------------------------------------------------------
+Number of Threads requested = 8
+Number of Threads counted = 8
+-------------------------------------------------------------
+Your clock granularity/precision appears to be 1 microseconds.
+Each test below will take on the order of 21622 microseconds.
+   (= 21622 clock ticks)
+Increase the size of the arrays if this shows that
+you are not getting at least 20 clock ticks per test.
+-------------------------------------------------------------
+WARNING -- The above is only a rough guideline.
+For best results, please be sure you know the
+precision of your system timer.
+-------------------------------------------------------------
+Function    Best Rate MB/s  Avg time     Min time     Max time
+Copy:            8364.2     0.019258     0.019129     0.019508
+Scale:           8291.0     0.019572     0.019298     0.020162
+Add:             6223.6     0.038835     0.038563     0.040011
+Triad:           6222.5     0.038776     0.038570     0.039470
+-------------------------------------------------------------
+Solution Validates: avg error less than 1.000000e-13 on all three arrays
+-------------------------------------------------------------
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/zh/build/debian/Debian\350\275\257\344\273\266\345\214\205\346\236\204\345\273\272\346\265\201\347\250\213/index.html" "b/zh/build/debian/Debian\350\275\257\344\273\266\345\214\205\346\236\204\345\273\272\346\265\201\347\250\213/index.html" new file mode 100644 index 00000000..3f009d4a --- /dev/null +++ "b/zh/build/debian/Debian\350\275\257\344\273\266\345\214\205\346\236\204\345\273\272\346\265\201\347\250\213/index.html" @@ -0,0 +1,1537 @@ + + + + + + + + + + + + + + + + + + + + + + Debian 软件包构建流程 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Debian 软件包构建流程

+

宿主 debian

+
# qemu-user 下编译
+sudo apt update
+sudo apt install -y \
+    sbuild buildd qemu-system-misc qemu-user-static binfmt-support \
+    ca-certificates apt-transport-https devscripts mmdebstrap
+
+# native
+sudo apt install -y \
+    sbuild buildd ca-certificates apt-transport-https devscripts mmdebstrap
+
+# 修正宿主的debian-ports证书相关问题 现阶段可能不需要了
+wget https://mirror.sjtu.edu.cn/debian/pool/main/d/debian-ports-archive-keyring/debian-ports-archive-keyring_2023.02.01_all.deb
+sudo dpkg -i ./debian-ports-archive-keyring_2023.02.01_all.deb
+
+
+# sbuild 增加当前用户免root
+sudo sbuild-adduser $USER
+
+

创建打包环境

+

revyos-c910v

+
export SUFFIX=revyos-c910v-sbuild
+sudo sbuild-createchroot --debootstrap=debootstrap --arch=riscv64 \
+    --chroot-suffix=-$SUFFIX \
+    --keyring='' \
+    --no-deb-src \
+    --include=debian-ports-archive-keyring,ca-certificates,apt-transport-https,eatmydata \
+    --extra-repository="deb [trusted=yes] https://mirror.iscas.ac.cn/revyos/revyos-c910v/ revyos-c910v main contrib non-free" \
+    --extra-repository="deb [trusted=yes] https://mirror.iscas.ac.cn/revyos/revyos-addons/ revyos-addons main" \
+    sid /srv/chroot/sid-riscv64-$SUFFIX \
+    https://mirror.iscas.ac.cn/revyos/revyos-base/
+
+# 修正环境相关问题
+sudo sed -i 's/deb http/deb [trusted=yes] http/g' /srv/chroot/sid-riscv64-$SUFFIX/etc/apt/sources.list
+sudo rm -rf /srv/chroot/sid-riscv64-$SUFFIX/var/lib/apt/lists/*
+echo "command-prefix=eatmydata" | sudo tee -a /etc/schroot/chroot.d/sid-riscv64-$SUFFIX-*
+
+# 调整source顺序 - 目的是同版本使用c910v仓库的
+# 编辑sources.list 确保以下顺序
+deb [trusted=yes] https://mirror.iscas.ac.cn/revyos/revyos-c910v/ revyos-c910v main contrib non-free
+deb [trusted=yes] https://mirror.iscas.ac.cn/revyos/revyos-addons/ revyos-addons main
+deb [trusted=yes] https://mirror.iscas.ac.cn/revyos/revyos-base/ sid main contrib non-free non-free-firmware
+
+

构建命令

+

revyos-c910v

+
sbuild --arch=riscv64 -d sid -c sid-riscv64-revyos-c910v-sbuild xxx.dsc
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/build/debian/enable_optimization_gcc/index.html b/zh/build/debian/enable_optimization_gcc/index.html new file mode 100644 index 00000000..b62a96a2 --- /dev/null +++ b/zh/build/debian/enable_optimization_gcc/index.html @@ -0,0 +1,1473 @@ + + + + + + + + + + + + + + + + + + + + + + 如何启用优化GCC - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + +

如何启用 T-Head 优化 GCC

+

实验性 feature 如果发现问题可以进行issue申报

+
# 增加优化源
+sudo sed -i '1ideb https://mirror.iscas.ac.cn/revyos/revyos-c910v/ revyos-c910v main' /etc/apt/sources.list
+# 更新软件
+sudo apt update && sudo apt upgrade -y
+# 安装 gcc-10/gcc-13
+sudo apt install -y build-essential gcc-13 g++-13
+# 重启避免其他问题
+sudo reboot
+
+

测试 gcc-10 (gcc10.4 启用xtheadc+v0p7)

+
gcc -v
+Using built-in specs.
+COLLECT_GCC=gcc
+COLLECT_LTO_WRAPPER=/usr/lib/gcc/riscv64-linux-gnu/10/lto-wrapper
+Target: riscv64-linux-gnu
+Configured with: ../src/configure -v --with-pkgversion='Debian 10.4.0-8revyos2.3' --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=riscv64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libsanitizer --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --disable-multilib --with-arch=rv64gcv0p7_zfh_xtheadc --with-abi=lp64d --enable-checking=release --build=riscv64-linux-gnu --host=riscv64-linux-gnu --target=riscv64-linux-gnu
+Thread model: posix
+Supported LTO compression algorithms: zlib zstd
+gcc version 10.4.0 (Debian 10.4.0-8revyos2.3)
+
+

测试 gcc-13 (gcc13.2 启用xthead extension)

+
gcc-13 -v
+Using built-in specs.
+COLLECT_GCC=gcc-13
+COLLECT_LTO_WRAPPER=/usr/libexec/gcc/riscv64-linux-gnu/13/lto-wrapper
+Target: riscv64-linux-gnu
+Configured with: ../src/configure -v --with-pkgversion='Debian 13.2.0-1revyos1' --with-bugurl=file:///usr/share/doc/gcc-13/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-13 --program-prefix=riscv64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/libexec --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --disable-werror --disable-multilib --with-arch=rv64gc_zfh_xtheadba_xtheadbb_xtheadbs_xtheadcmo_xtheadcondmov_xtheadfmemidx_xtheadfmv_xtheadint_xtheadmac_xtheadmemidx_xtheadmempair_xtheadsync --with-abi=lp64d --enable-checking=release --build=riscv64-linux-gnu --host=riscv64-linux-gnu --target=riscv64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=16
+Thread model: posix
+Supported LTO compression algorithms: zlib zstd
+gcc version 13.2.0 (Debian 13.2.0-1revyos1)
+
+

gcc-10/gcc-13 区别

+

除了v0p7 其他优化都可以用 gcc-13 代替 gcc-10

+

后者的优化可以主线报问题 是已经主线化的功能

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/zh/build/debian/\347\274\226\350\257\221\345\231\250\347\233\270\345\205\263\350\257\264\346\230\216/index.html" "b/zh/build/debian/\347\274\226\350\257\221\345\231\250\347\233\270\345\205\263\350\257\264\346\230\216/index.html" new file mode 100644 index 00000000..9de10af7 --- /dev/null +++ "b/zh/build/debian/\347\274\226\350\257\221\345\231\250\347\233\270\345\205\263\350\257\264\346\230\216/index.html" @@ -0,0 +1,1568 @@ + + + + + + + + + + + + + + + + + + + + + + 编译器相关说明 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

编译器相关说明

+

RevyOS 会预制相关优化编译器 基本支持rv64gc

+

常规扩展

+ + + + + + + + + + + + + + + + + + + + + + + +
支持的优化gcc-10gcc-13clang-17
Zfh
v0p7
+

THead 厂商扩展

+

xthead 当前版本 v2.2

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
支持的优化1gcc-102gcc-13.2clang-17
XTheadCmo
XTheadSync
XTheadBa
XTheadBb
XTheadBs
XTheadCondMov
XTheadMemIdx
XTheadMemPair
XTheadFMemIdx
XTheadMac
XTheadFmv
XTheadInt
XTHeadVdot3
+

注:

+
    +
  1. gcc-11/gcc-12/clang-14/clang15/clang16 xthead 扩展太少或无 所以未列出
  2. +
  3. gcc-10 使用 xtheadc 覆盖所有的扩展 gcc-10 使用了 thead-gcc 的源码
  4. +
  5. XTHeadVdot c910v/c920 不支持
  6. +
+

参考文档

+ + + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/zh/build/other/gcc\347\274\226\350\257\221\350\275\257\344\273\266\350\257\264\346\230\216/index.html" "b/zh/build/other/gcc\347\274\226\350\257\221\350\275\257\344\273\266\350\257\264\346\230\216/index.html" new file mode 100644 index 00000000..f1fa6e98 --- /dev/null +++ "b/zh/build/other/gcc\347\274\226\350\257\221\350\275\257\344\273\266\350\257\264\346\230\216/index.html" @@ -0,0 +1,1472 @@ + + + + + + + + + + + + + + + + + + + + + + gcc 编译软件软件说明 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

gcc build programs 说明

+

安装gcc

+

首先确保安装gcc:

+
sudo apt update
+sudo apt install gcc
+
+

运行程序

+

下面以最简单的 'hello,world' 程序为例演示如何编译并运行:

+

编译以下内容并命名为 hello.c:

+
#include <stdio.h>
+
+int main()
+{
+        printf("hello, world\n");
+        return 0;
+}
+
+

编译并执行:

+
debian@lpi4a:~/test$ gcc -g hello.c -o hello
+
+debian@lpi4a:~/test$ ./hello
+hello, world
+
+
+

g++ build programs 说明

+

首先确保安装g++:

+
sudo apt update
+sudo apt install g++
+
+

运行程序

+

下面以最简单的 'hello,world' 程序为例演示如何编译并运行:

+

编译以下内容并命名为 hello.cpp:

+
#include <iostream>
+using namespace std;
+
+int main()
+{
+    cout << "Hello, World!\n";
+    return 0;
+}
+
+
+

编译并执行:

+
debian@lpi4a:~/test$ g++ -g hello.cpp -o hello
+debian@lpi4a:~/test$ ./hello
+Hello, World!
+
+

以上就是gcc/g++ 编译程序并运行的最简单实例,更复杂的应用案例可以参考相应的 +系统编程手册。

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/build/other/manuel_build_kernel/index.html b/zh/build/other/manuel_build_kernel/index.html new file mode 100644 index 00000000..e3b405de --- /dev/null +++ b/zh/build/other/manuel_build_kernel/index.html @@ -0,0 +1,1410 @@ + + + + + + + + + + + + + + + + + + + + + + 手动编译内核 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

手动编译内核

+

内核工具链下载地址:

+

https://occ-oss-prod.oss-cn-hangzhou.aliyuncs.com/resource//1663142514282/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1-20220906.tar.gz

+

这里假设编译环境为 UbuntuDebian

+

安装依赖:

+
sudo apt install -y gdisk dosfstools g++-12-riscv64-linux-gnu build-essential libncurses-dev gawk flex bison openssl libssl-dev tree dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf device-tree-compiler
+
+

解压工具链(这里解压到/opt):

+
tar -xvf Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1-20220906.tar.gz -C /opt
+
+

设置环境变量,将工具链加入环境变量中(假设工具链放在/opt中):

+
export PATH="/opt/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.1/bin:$PATH"
+export CROSS_COMPILE=riscv64-unknown-linux-gnu-
+export ARCH=riscv
+
+

使用git下载内核代码:

+
# 内核仓库
+git clone https://github.com/revyos/thead-kernel.git
+
+

编译内核:

+
# 创建安装目标目录
+mkdir rootfs && mkdir rootfs/boot
+
+# 目录创建完成后,目录结构应该看起来是这样:
+# .. << 当前工作路径
+# |-- rootfs
+#     |-- boot
+# |-- thead-kernel
+#     |-- ...
+
+# 进入内核代码目录,开始构建
+cd thead-kernel
+make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv revyos_defconfig
+make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv -j$(nproc)
+make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv -j$(nproc) dtbs
+sudo make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv INSTALL_MOD_PATH=../rootfs/ modules_install -j$(nproc)
+sudo make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv INSTALL_PATH=../rootfs/boot zinstall -j$(nproc)
+# 构建perf(如果需要的话)
+make CROSS_COMPILE=riscv64-unknown-linux-gnu- ARCH=riscv LDFLAGS=-static NO_LIBELF=1 NO_JVMTI=1 VF=1 -C tools/perf/
+sudo cp -v tools/perf/perf ../rootfs/sbin/perf-thead
+# 安装内核到安装目标目录
+sudo cp -v arch/riscv/boot/Image ../rootfs/boot/
+# 安装设备树到安装目标目录
+sudo cp -v arch/riscv/boot/dts/thead/light-lpi4a.dtb ../rootfs/boot/
+sudo cp -v arch/riscv/boot/dts/thead/light-lpi4a-dsi0-hdmi.dtb ../rootfs/boot/
+
+

之后只需要把rootfs中内容拷贝或覆盖到对应目录即可,注意内核Image和内核module目录一定要对应,不然会因缺失内核模块导致外设功能失效。

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/zh/build/other/thead-qemu\347\274\226\350\257\221\346\265\201\347\250\213/index.html" "b/zh/build/other/thead-qemu\347\274\226\350\257\221\346\265\201\347\250\213/index.html" new file mode 100644 index 00000000..b212b270 --- /dev/null +++ "b/zh/build/other/thead-qemu\347\274\226\350\257\221\346\265\201\347\250\213/index.html" @@ -0,0 +1,1401 @@ + + + + + + + + + + + + + + + + + + + + + + T-Head QEMU 编译流程 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

T-Head QEMU 编译流程

+

C910V强制cpu指定补丁

+
From 5164bca5a4bcde4534dc1a9aa3a7f619719874cf Mon Sep 17 00:00:00 2001
+From: Han Gao <gaohan@iscas.ac.cn>
+Date: Sun, 23 Apr 2023 22:11:35 +0800
+Subject: [PATCH] qemu-user-riscv64 default cpu is c910v
+
+Signed-off-by: Han Gao <gaohan@iscas.ac.cn>
+---
+ linux-user/riscv/target_elf.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/linux-user/riscv/target_elf.h b/linux-user/riscv/target_elf.h
+index 9dd65652ee45..3195cfa71408 100644
+--- a/linux-user/riscv/target_elf.h
++++ b/linux-user/riscv/target_elf.h
+@@ -9,7 +9,7 @@
+ #define RISCV_TARGET_ELF_H
+ static inline const char *cpu_get_model(uint32_t eflags)
+ {
+-    /* TYPE_RISCV_CPU_ANY */
+-    return "any";
++    /* TYPE_RISCV_CPU_C910V */
++    return "c910v";
+ }
+ #endif
+
+

编译流程

+
./configure \
+  --prefix=$HOME/qemu-install \
+  --static \
+  --target-list=riscv64-linux-user \
+  --disable-system \
+  --disable-pie \
+  --interp-prefix=/etc/qemu-binfmt/%M
+
+make -j20
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/zh/build/\346\236\204\345\273\272\346\226\207\346\241\243/index.html" "b/zh/build/\346\236\204\345\273\272\346\226\207\346\241\243/index.html" new file mode 100644 index 00000000..8650d2ec --- /dev/null +++ "b/zh/build/\346\236\204\345\273\272\346\226\207\346\241\243/index.html" @@ -0,0 +1,1345 @@ + + + + + + + + + + + + + + + + + + 构建文档 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

构建文档

+

这里描述了 RevyOS 相关的构建文档

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/changelog/ahead/20230802/index.html b/zh/changelog/ahead/20230802/index.html new file mode 100644 index 00000000..05e42b2f --- /dev/null +++ b/zh/changelog/ahead/20230802/index.html @@ -0,0 +1,1434 @@ + + + + + + + + + + + + + + + + + + + + + + 20230802 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20230802

+

测试版镜像

+

基于 lpi4a 20230614 版本 +增加 ahead 支持 混合新 20230820 改动

+

下载地址

+

https://mirror.iscas.ac.cn/revyos/extra/images/beagle/test/20230802/

+

其余参见

+ + + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/changelog/lpi4a/20230412/index.html b/zh/changelog/lpi4a/20230412/index.html new file mode 100644 index 00000000..68bd2fd3 --- /dev/null +++ b/zh/changelog/lpi4a/20230412/index.html @@ -0,0 +1,1530 @@ + + + + + + + + + + + + + + + + + + + + + + 20230412 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20230412

+ +

系统版本

+

RevyOS 20230412 版本

+

桌面环境相关

+
    +
  • 默认桌面环境为xfce4桌面
  • +
  • 使用pulseaudio作为音频服务
  • +
+

支持应用相关

+
    +
  • LibreOffice:7.5.2 (7.5.2~rc2-1revyos1)
  • +
  • GIMP:2.10.34 (2.10.34-1)
  • +
  • VLC:3.0.18 (3.0.18-2)
  • +
  • Firefox:111.0 (111.0-1revyos1)
  • +
  • xfce4: 4.18
  • +
  • Debian GCC:13 (13-20230320-1)
  • +
  • Python3:3.11.2 (3.11.2-1+b1)
  • +
  • Go:1.19.8 (1.19.8-2)
  • +
  • Rust:1.65.0 (1.65.0+dfsg1-1~exp3)
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113 (5.10.113-g7b352f5ac2ba)
  • +
+

硬件相关

+
    +
  • CPU主频最高为1.84Ghz
  • +
  • 支持 HDMI 输出
  • +
  • 支持 WIFI/BT 模块 RTL8723DS
  • +
+

系统服务

+
    +
  • 使用 network-manager 作为网络管理器
  • +
  • 预装 systemd-timesyncd 作为NTP服务,联网后可以自动同步时间
  • +
+

当前版本存在问题

+
    +
  • 因 Wifi/BT 模块蓝牙部分存在硬件问题,系统暂时没有蓝牙支持
  • +
  • 需要手动安装 wpasupplicant 才可连接无线网
  • +
  • xfce声音控制面板无法显示声音设备
  • +
  • 系统桌面不支持GPU硬件加速
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/changelog/lpi4a/20230425/index.html b/zh/changelog/lpi4a/20230425/index.html new file mode 100644 index 00000000..60393e6f --- /dev/null +++ b/zh/changelog/lpi4a/20230425/index.html @@ -0,0 +1,1549 @@ + + + + + + + + + + + + + + + + + + + + + + 20230425 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+ + + +
+
+ + + + + + + +

20230425

+ +

系统版本

+

RevyOS 20230425 版本

+

桌面环境相关

+
    +
  • 默认桌面环境为xfce4桌面
  • +
  • 使用pulseaudio作为音频服务
  • +
  • 使用wpasupplicant作为无线网络服务
  • +
+

支持应用相关

+
    +
  • LibreOffice:7.5.2 (7.5.2~rc2-1revyos1)
  • +
  • GIMP:2.10.34 (2.10.34-1)
  • +
  • VLC:3.0.18 (3.0.18-2)
  • +
  • Firefox:111.0 (111.0-1revyos1)
  • +
  • xfce4: 4.18
  • +
  • Debian GCC:13 (13-20230320-1)
  • +
  • Python3:3.11.2 (3.11.2-1+b1)
  • +
  • Go:1.19.8 (1.19.8-2)
  • +
  • Rust:1.65.0 (1.65.0+dfsg1-1~exp3)
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113 (5.10.113-g7b352f5ac2ba)
  • +
+

硬件相关

+
    +
  • CPU主频最高为1.84Ghz
  • +
  • 支持 HDMI 输出
  • +
  • 支持WIFI/BT模块RTL8723DS
  • +
+

系统服务

+
    +
  • 使用 network-manager 作为网络管理器
  • +
  • 预装 systemd-timesyncd 作为NTP服务,联网后可以自动同步时间
  • +
+

当前版本存在问题

+
    +
  • 因 Wifi/BT 模块蓝牙部分存在硬件问题,系统暂时没有蓝牙支持
  • +
  • 字符界面终端键盘输入的内容显示滞后
  • +
+

已修复的问题

+
    +
  • xfce声音控制面板无法显示声音设备
  • +
  • 系统桌面不支持GPU硬件加速
  • +
  • 需要手动安装 wpasupplicant 才可连接无线网
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/changelog/lpi4a/20230511/index.html b/zh/changelog/lpi4a/20230511/index.html new file mode 100644 index 00000000..163f8781 --- /dev/null +++ b/zh/changelog/lpi4a/20230511/index.html @@ -0,0 +1,1549 @@ + + + + + + + + + + + + + + + + + + + + + + 20230511 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+ + + +
+
+ + + + + + + +

20230511

+ +

系统版本

+

RevyOS 20230511 版本

+

桌面环境相关

+

添加了gnome桌面支持

+
    +
  • 支持gnome 桌面
  • +
  • 支持xfce4 桌面
  • +
+

支持应用相关

+
    +
  • GIMP:2.10.34 (2.10.34-1)
  • +
  • VLC:3.0.18 (3.0.18-2)
  • +
  • Firefox:111.0 (111.0-1revyos1)
  • +
  • GNOME: 42.4 (预装在 gnome版本)
  • +
  • xfce4: 4.18 (预装在 xfce版本)
  • +
  • Python3:3.11.2 (3.11.2-1+b1)
  • +
  • 未预装 Go:1.19.8 (1.19.8-2)
  • +
  • 未预装 Rust:1.65.0 (1.65.0+dfsg1-1~exp3)
  • +
  • 未预装 GCC:13 (13.1.0)
  • +
  • 未支持 chromium(计划推进中)
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113 (5.10.113-gbb4691fe5572)
  • +
  • 打开了 iotop 相关选项
  • +
+

硬件相关

+
    +
  • CPU主频最高为1.84Ghz
  • +
  • 支持 HDMI 输出
  • +
  • 支持 WIFI/BT 模块RTL8723DS
  • +
  • 加入风扇调速功能,风扇转速随CPU温度调整
  • +
+

系统服务

+
    +
  • 添加了查询版本时间戳功能,在终端输入'cat /etc/revyos-release' 即可获取
  • +
  • 使用 network-manager 作为网络管理器
  • +
  • 预装 systemd-timesyncd 作为NTP服务,联网后可以自动同步时间
  • +
+

当前版本存在问题

+
    +
  • 因 Wifi/BT 模块蓝牙部分存在硬件问题,系统暂时没有蓝牙支持
  • +
  • 字符界面终端键盘输入的内容显示滞后
  • +
  • 不支持2K分辨率
  • +
+

已修复的问题

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/changelog/lpi4a/20230614/index.html b/zh/changelog/lpi4a/20230614/index.html new file mode 100644 index 00000000..bb597399 --- /dev/null +++ b/zh/changelog/lpi4a/20230614/index.html @@ -0,0 +1,1553 @@ + + + + + + + + + + + + + + + + + + + + + + 20230614 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+ + + +
+
+ + + + + + + +

20230614

+ +

系统版本

+

RevyOS 20230614 版本

+

桌面环境相关

+

当前版本只提供xfce4桌面支持

+
    +
  • 支持xfce4 桌面
  • +
+

支持应用相关

+

提供了chromium支持

+
    +
  • LibreOffice:7.5.2 (7.5.2~rc2-1revyos1)
  • +
  • GIMP:2.10.34 (2.10.34-1)
  • +
  • VLC:3.0.18 (3.0.18-2)
  • +
  • Firefox:111.0 (111.0-1revyos1)
  • +
  • Chromium:109.0 (109.0.5414.119-1revyos1)
  • +
  • xfce4: 4.18 (预装在 xfce版本)
  • +
  • Python3:3.11.2 (3.11.2-1+b1)
  • +
  • 未预装 Go:1.19.8 (1.19.8-2)
  • +
  • 未预装 Rust:1.65.0 (1.65.0+dfsg1-1~exp3)
  • +
  • 未预装 GCC:13 (13.1.0)
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113 (5.10.113-gfac22a756532)
  • +
  • 打开exfat支持
  • +
  • 加入了HDMI音频支持
  • +
+

硬件相关

+
    +
  • CPU主频最高为1.84Ghz
  • +
  • 支持HDMI输出
  • +
  • 支持WIFI/BT模块RTL8723DS,WI-FI和蓝牙功能都已启用
  • +
  • 支持风扇调速功能
  • +
+

系统服务

+
    +
  • 添加了查询版本时间戳功能,在终端输入'cat /etc/revyos-release' 即可获取
  • +
  • 使用 network-manager 作为网络管理器
  • +
  • 预装 systemd-timesyncd 作为NTP服务,联网后可以自动同步时间
  • +
+

当前版本存在问题

+
    +
  • 不支持2K分辨率
  • +
  • 鼠标拖动滞后
  • +
+

已修复的问题

+
    +
  • 修复了WI-FI和蓝牙功能
  • +
  • 字符界面终端键盘输入的内容显示滞后
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/changelog/lpi4a/20230810/index.html b/zh/changelog/lpi4a/20230810/index.html new file mode 100644 index 00000000..408c14c4 --- /dev/null +++ b/zh/changelog/lpi4a/20230810/index.html @@ -0,0 +1,1607 @@ + + + + + + + + + + + + + + + + + + + + + + 20230810 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+ +
+
+ + + +
+
+ + + + + + + +

20230810

+

系统版本

+

RevyOS 20230810 版本

+

版本下载

+

RevyOS 20230810 lpi4a

+
    +
  • boot-20230810-222415.ext4
  • +
  • root-20230810-222415.ext4
  • +
  • u-boot-with-spl-lpi4a.bin 8g版本需要刷写
  • +
  • u-boot-with-spl-lpi4a-16g.bin 16g版本需要刷写
  • +
+

破坏性更新

+

重新设计了启动流程 所以需要重新刷写所有分区

+

更新之后启动遇到错误

+
Retrieving file: /dtbs/linux-image-5.10.113-lpi4a/<NULL>-light-c910.
+Skipping l0r for failure retrieving fdt
+Light LPI4A#
+
+遇见这种情况需要执行</br>
+env default -a -f;env save;reset
+
+

桌面环境相关

+

当前版本只提供xfce4桌面支持

+

支持应用相关

+
    +
  • LibreOffice:7.5.2 (7.5.2~rc2-1revyos1)
  • +
  • GIMP:2.10.34 (2.10.34-1)
  • +
  • VLC:3.0.18 (3.0.18-2)
  • +
  • Parole:4.18.0 (4.18.0-1revyos1)
  • +
  • Chromium:109.0 (109.0.5414.119-1revyos1)
  • +
  • xfce4: 4.18 (预装在 xfce版本)
  • +
  • Python3:3.11.2 (3.11.2-1+b1)
  • +
  • 未预装 firefox:114.0 (114.0-1revyos1)
  • +
  • 未预装 code-oss: 1.80.1 (1.80.1-1+electron23)
  • +
  • 未预装 Go:1.19.8 (1.19.8-2)
  • +
  • 未预装 Rust:1.65.0 (1.65.0+dfsg1-1~exp3)
  • +
  • 未预装 GCC:13 (13.1.0)
  • +
+

内核相关

+

内核 commit ID: #2023.08.10.02.31+c130cdb21

+
    +
  • 内核版本号:5.10.113 (2023.08.10.02.31+c130cdb21)
  • +
  • 加入对USB串口设备的支持
  • +
+

硬件相关

+
    +
  • CPU主频最高为1.84Ghz
  • +
  • 支持HDMI输出
  • +
  • 支持WIFI/BT模块RTL8723DS,WI-FI和蓝牙功能都已启用
  • +
  • 支持风扇调速功能
  • +
+

系统服务

+
    +
  • 版本时间戳(/etc/revyos-release)- xfce 桌面: 20230810-222415
  • +
+

当前版本存在问题

+
    +
  • 不支持2K分辨率
  • +
  • 鼠标拖动滞后
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/changelog/lpi4a/20230916/index.html b/zh/changelog/lpi4a/20230916/index.html new file mode 100644 index 00000000..fa948ecc --- /dev/null +++ b/zh/changelog/lpi4a/20230916/index.html @@ -0,0 +1,1491 @@ + + + + + + + + + + + + + + + + + + + + + + 20230916 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20230916

+

系统版本

+

RevyOS 20230916 版本

+

版本下载

+

RevyOS 20230916 lpi4a

+
    +
  • boot-20230916-231502.ext4
  • +
  • root-20230916-231502.ext4
  • +
  • u-boot-with-spl-lpi4a.bin 8g版本需要刷写
  • +
  • u-boot-with-spl-lpi4a-16g.bin 16g版本需要刷写
  • +
+

SBI 时间戳

+
    +
  • U-Boot SPL 2020.01-g8640db84 (Sep 21 2023 - 02:14:36 +0000)
  • +
+

u-boot 时间戳

+
    +
  • U-Boot 2020.01-g8640db84 (Sep 21 2023 - 02:14:36 +0000)
  • +
+

内核 commit ID

+
    +
  • +

    2023.09.11.06.54+b4d73b48a

    +
  • +
+

版本时间戳(/etc/revyos-release)

+
    +
  • XFCE桌面:20230916-231502
  • +
+

系统和桌面

+
    +
  • 支持DebianOS xfce4 桌面
  • +
+

硬件加速

+
    +
  • xfce4 桌面支持GPU加速
  • +
+

支持应用

+
    +
  • LibreOffice:7.5.4~rc2-1
  • +
  • 支持 GIMP:2.10.34-1
  • +
  • 支持 VLC:3.0.18 (3.0.18-2)
  • +
  • 支持 Parole:4.18.0 (4.18.0-1revyos1)
  • +
  • 未预装 Firefox:114.0 (114.0-1revyos1)
  • +
  • 支持 Chromium:109.0 (109.0.5414.119-1revyos1)
  • +
  • 支持 xfce4: 4.18 (预装在 xfce版本)
  • +
  • 支持 Python3:3.11.2 (3.11.2-1+b1)
  • +
  • 支持 apt-get 安装源
  • +
  • 未预装 Go:1.19 (1.19~1+b1)
  • +
  • 未预装 Rust:1.66.0 (1.66.0+dfsg1-1~exp1)
  • +
  • 未预装 GCC:13 (13.1.0-1)
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113-lpi4a #2023.09.11.06.54+b4d73b48a
  • +
  • 升级DDK版本到1.17
  • +
+

硬件相关

+
    +
  • CPU主频最高1.84Ghz
  • +
  • 只开启了HDMI输出
  • +
  • 支持WIFI/BT模块RTL8723DS,WI-FI和蓝牙功能都已启用
  • +
  • 支持风扇调速功能
  • +
+

存在问题

+
    +
  • 不支持2K分辨率
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/changelog/lpi4a/20231026/index.html b/zh/changelog/lpi4a/20231026/index.html new file mode 100644 index 00000000..251b0f6d --- /dev/null +++ b/zh/changelog/lpi4a/20231026/index.html @@ -0,0 +1,1574 @@ + + + + + + + + + + + + + + + + + + + + + + 20231026 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20231026

+

系统版本

+

RevyOS 20231026 版本

+

版本下载

+

RevyOS 20231026 lpi4a

+
    +
  • boot-20231026_181638.ext4.zst
  • +
  • root-20231026_181638.ext4.zst
  • +
  • u-boot-with-spl-lpi4a.bin 8g版本刷写
  • +
  • u-boot-with-spl-lpi4a-16g.bin 16g版本刷写
  • +
+

系统和桌面

+
    +
  • 支持DebianOS xfce4 桌面
  • +
+

硬件加速

+
    +
  • xfce4 桌面支持GPU加速
  • +
+

支持应用

+
    +
  • LibreOffice:7.5.4~rc2-1
  • +
  • 支持 GIMP:2.10.34-1
  • +
  • 支持 VLC:3.0.18 (3.0.18-2)
  • +
  • 支持 Parole:4.18.0 (4.18.0-1revyos1)
  • +
  • 未预装 Firefox:114.0 (114.0-1revyos1)
  • +
  • 支持 Chromium:109.0 (109.0.5414.119-1revyos1)
  • +
  • 支持 xfce4: 4.18 (预装在 xfce版本)
  • +
  • 支持 Python3:3.11.2 (3.11.2-1+b1)
  • +
  • 支持 apt-get 安装源
  • +
  • 未预装 Go:1.19 (1.19~1+b1)
  • +
  • 未预装 Rust:1.66.0 (1.66.0+dfsg1-1~exp1)
  • +
  • 未预装 GCC:13 (13.1.0-1)
  • +
  • 支持 mpv:0.35.1
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113-lpi4a
  • +
  • 升级DDK版本到1.17
  • +
+

硬件相关

+
    +
  • CPU主频最高1.84Ghz
  • +
  • 只开启了HDMI输出
  • +
  • 支持WIFI/BT模块RTL8723DS,WI-FI和蓝牙功能都已启用
  • +
  • 支持风扇调速功能
  • +
+

已修复的问题

+
    +
  • 解决了HDMI音频爆音的问题
  • +
  • 添加了鼠标指针偏移的临时解决方案
  • +
+

存在问题

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/changelog/lpi4a/20231210/index.html b/zh/changelog/lpi4a/20231210/index.html new file mode 100644 index 00000000..f754ea29 --- /dev/null +++ b/zh/changelog/lpi4a/20231210/index.html @@ -0,0 +1,1606 @@ + + + + + + + + + + + + + + + + + + + + + + 20231210 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20231210

+

系统版本

+

RevyOS 20231210 版本

+

版本下载

+

RevyOS 20231210 lpi4a

+
    +
  • boot-lpi4a-20231210_134926.ext4.zst
  • +
  • root-lpi4a-20231210_134926.ext4.zst
  • +
  • u-boot-with-spl-lpi4a.bin 8g版本刷写
  • +
  • u-boot-with-spl-lpi4a-16g.bin 16g版本刷写
  • +
+

SBI 时间戳

+
    +
  • U-Boot SPL 2020.01-g8640db84 (Sep 21 2023 - 02:14:36 +0000)
  • +
+

u-boot 时间戳

+
    +
  • U-Boot 2020.01-g8640db84 (Sep 21 2023 - 02:14:36 +0000)
  • +
+

内核 commit ID

+
    +
  • 2023.12.08.03.26+b8c5d3546
  • +
+

版本时间戳(/etc/revyos-release)

+
    +
  • XFCE桌面:20231210-134926
  • +
+

系统和桌面

+
    +
  • 支持DebianOS xfce4 桌面
  • +
+

硬件加速

+
    +
  • xfce4 桌面支持GPU加速和2D加速
  • +
+

支持应用

+
    +
  • LibreOffice:7.5.4~rc2-1
  • +
  • 支持 GIMP:2.10.34-1
  • +
  • 支持 VLC:3.0.18 (3.0.18-2revyos1)
  • +
  • 支持 Parole:4.18.0 (4.18.0-1revyos1)
  • +
  • 未预装 Firefox:118.0 (118.0.2-1revyos1)
  • +
  • 支持 Chromium:109.0 (109.0.5414.119-1revyos2)
  • +
  • 支持 xfce4: 4.18 (预装在 xfce版本)
  • +
  • 支持 Python3:3.11.4 (3.11.4-1)
  • +
  • 支持 apt-get 安装源
  • +
  • 未预装 Go:1.19 (1.19~1+b1)
  • +
  • 未预装 Rust:1.70.0 (1.70.0+dfsg1-1)
  • +
  • 未预装 GCC:13 (13.2.0-4revyos1)
  • +
  • 支持 mpv:0.35.1
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113-lpi4a #2023.12.08.03.26+b8c5d3546
  • +
  • 升级DDK版本到1.17
  • +
+

硬件相关

+
    +
  • CPU主频最高1.84Ghz
  • +
  • 支持单HDMI输出或者HDMI/DSI双输出
  • +
  • 支持2D加速
  • +
  • 支持WIFI/BT模块RTL8723DS,WI-FI和蓝牙功能都已启用
  • +
  • 支持风扇调速功能
  • +
+

已修复的问题

+
    +
  • 改善了在menu上鼠标移动有延迟的问题
  • +
+

存在问题

+
    +
  • WIFI/BT模块AIC8800的蓝牙功能暂不可用
  • +
  • AIC8800内核支持已经存在,但对应设备树和固件暂时没有
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/changelog/lpi4a/20240202/index.html b/zh/changelog/lpi4a/20240202/index.html new file mode 100644 index 00000000..9fb5ad0b --- /dev/null +++ b/zh/changelog/lpi4a/20240202/index.html @@ -0,0 +1,1603 @@ + + + + + + + + + + + + + + + + + + + + + + 20240202 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20240202

+

系统版本

+

RevyOS 20240202 版本

+

版本下载

+

RevyOS 20240202 lpi4a

+
    +
  • boot-lpi4a-20240202_141632.ext4.zst
  • +
  • root-lpi4a-20240202_141632.ext4.zst
  • +
  • u-boot-with-spl-lpi4a-main.bin 8g版本刷写
  • +
  • u-boot-with-spl-lpi4a-16g-main.bin 16g版本刷写
  • +
+

SBI 时间戳

+
    +
  • U-Boot SPL 2020.01-g69d7d3cd (Jan 31 2024 - 12:58:20 +0000)
  • +
+

u-boot 时间戳

+
    +
  • U-Boot 2020.01-g69d7d3cd (Jan 31 2024 - 12:58:20 +0000)
  • +
+

内核 commit ID

+
    +
  • lpi4a:#2024.01.31.14.11+384c5e9e2
  • +
  • ahead:#2023.12.08.03.31+62225503f
  • +
+

版本时间戳(/etc/revyos-release)

+
    +
  • XFCE桌面:20240202-141632
  • +
+

系统和桌面

+
    +
  • 支持DebianOS xfce4 桌面
  • +
+

硬件加速

+
    +
  • xfce4 桌面支持GPU加速和2D加速
  • +
+

支持应用

+
    +
  • LibreOffice:7.5.4~rc2-1
  • +
  • 支持 GIMP:2.10.34-1
  • +
  • 支持 VLC:3.0.18 (3.0.18-2revyos1)
  • +
  • 支持 Parole:4.18.0 (4.18.0-1revyos1)
  • +
  • 未预装 Firefox:118.0 (118.0.2-1revyos1)
  • +
  • 支持 Chromium:109.0 (109.0.5414.119-1revyos2)
  • +
  • 支持 xfce4: 4.18 (预装在 xfce版本)
  • +
  • 支持 Python3:3.11.4 (3.11.4-1)
  • +
  • 支持 apt-get 安装源
  • +
  • 未预装 Go:1.19 (1.19~1+b1)
  • +
  • 未预装 Rust:1.70.0 (1.70.0+dfsg1-1)
  • +
  • 未预装 GCC:13 (13.2.0-4revyos1)
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113-lpi4a #2024.01.31.14.11+384c5e9e2
  • +
  • 内核版本号:5.10.113-ahead #2024.01.31.14.11+384c5e9e2
  • +
+

硬件相关

+
    +
  • CPU主频最高1.84Ghz
  • +
  • 支持单HDMI输出或者HDMI/DSI双输出
  • +
  • 支持2D加速
  • +
  • 支持WIFI/BT模块RTL8723DS,WI-FI和蓝牙功能都已启用
  • +
  • 支持风扇调速功能
  • +
+

已修复的问题

+

存在问题

+
    +
  • WIFI/BT模块RTL8723的蓝牙功能在重启/睡眠后不可用
  • +
  • AIC8800暂时不可用
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/changelog/lpi4a/20240601/index.html b/zh/changelog/lpi4a/20240601/index.html new file mode 100644 index 00000000..1f7acc51 --- /dev/null +++ b/zh/changelog/lpi4a/20240601/index.html @@ -0,0 +1,1615 @@ + + + + + + + + + + + + + + + + + + + + + + 20240601 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

20240601

+

系统版本

+

RevyOS 20240601 版本

+

版本下载

+

RevyOS 20240601 lpi4a

+
    +
  • boot-lpi4a-20240601_180941.ext4.zst
  • +
  • root-lpi4a-20240601_180941.ext4.zst
  • +
  • u-boot-with-spl-lpi4a.bin 8g版本刷写
  • +
  • u-boot-with-spl-lpi4a-16g.bin 16g版本刷写
  • +
  • sdcard-lpi4a-20240601_180941.img.zst SD卡刷写
  • +
+

SBI 时间戳

+
    +
  • U-Boot SPL 2020.01-g96627087 (May 29 2024 - 08:30:59 +0000)
  • +
+

u-boot 时间戳

+
    +
  • U-Boot 2020.01-g96627087 (May 29 2024 - 08:30:59 +0000)
  • +
+

内核 commit ID

+
    +
  • lpi4a:#2024.01.31.14.11+384c5e9e2
  • +
+

版本时间戳(/etc/revyos-release)

+
    +
  • XFCE桌面:20240601_180941
  • +
+

RevyOS 20240601 meles

+
    +
  • boot-meles-20240601_180943.ext4.zst
  • +
  • iw-single-line.bin
  • +
  • root-meles-20240601_180943.ext4.zst
  • +
  • sdcard-meles-20240601_180943.img.zst
  • +
  • u-boot-with-spl-meles-4g.bin
  • +
  • u-boot-with-spl-meles.bin
  • +
+

系统和桌面

+
    +
  • 支持DebianOS xfce4 桌面
  • +
+

硬件加速

+
    +
  • xfce4 桌面支持GPU加速和2D加速
  • +
+

支持应用

+
    +
  • LibreOffice:7.5.4~rc2-1
  • +
  • 支持 GIMP:2.10.34-1
  • +
  • 支持 VLC:3.0.21-1revyos1
  • +
  • 支持 Parole:4.18.0 (4.18.0-1revyos1)
  • +
  • 未预装 Firefox:118.0 (118.0.2-1revyos1)
  • +
  • 支持 Chromium:109.0 (109.0.5414.119-1revyos2)
  • +
  • 支持 xfce4: 4.18 (预装在 xfce版本)
  • +
  • 支持 Python3:3.11.2-1+b1
  • +
  • 支持 apt-get 安装源
  • +
  • 未预装 Go:1.19 (1.19~1+b1)
  • +
  • 未预装 Rust:1.70.0 (1.70.0+dfsg1-1)
  • +
  • 未预装 GCC:13 (13.2.0-23revyos1)
  • +
+

内核相关

+
    +
  • 内核版本号:5.10.113-lpi4a #2024.05.31.16.27+2dec14431
  • +
+

硬件相关

+
    +
  • CPU主频最高1.84Ghz
  • +
  • 支持单HDMI输出或者HDMI/DSI双输出
  • +
  • 支持2D加速
  • +
  • 支持WIFI/BT模块RTL8723DS,WI-FI和蓝牙功能都已启用
  • +
  • 支持风扇调速功能
  • +
  • 支持从sd卡启动
  • +
+

已修复的问题

+
    +
  • str部分已修复
  • +
+

存在问题

+
    +
  • std存在部分问题
  • +
  • WIFI/BT模块RTL8723的蓝牙功能在重启/睡眠后不可用
  • +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/zh/desktop/games/OpenTTD\346\270\270\346\210\217/index.html" "b/zh/desktop/games/OpenTTD\346\270\270\346\210\217/index.html" new file mode 100644 index 00000000..ce43b0c2 --- /dev/null +++ "b/zh/desktop/games/OpenTTD\346\270\270\346\210\217/index.html" @@ -0,0 +1,1432 @@ + + + + + + + + + + + + + + + + + + + + + + OpenTTD 游戏 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

OpenTTD

+

状态: +可以运行,软解图形

+

资料: +https://github.com/OpenTTD/OpenTTD/blob/master/COMPILING.md +https://salsa.debian.org/openttd-team/openttd/-/blob/master/debian/control

+

步骤

+
# 安装依赖
+sudo apt install libsdl2-dev zlib1g-dev libpng-dev libfreetype-dev libfontconfig-dev libicu-dev liblzo2-dev liblzma-dev libfluidsynth-dev libopengl-dev grfcodec openttd-opengfx cmake
+
+# 下载代码&编译
+git clone https://github.com/OpenTTD/OpenTTD.git
+cd OpenTTD
+mkdir build
+cd build
+cmake ..
+make
+
+# 运行
+./openttd
+
+

图形和音频资源文件通过游戏内功能下载,支持中文

+

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/desktop/games/images/openttd_1.png b/zh/desktop/games/images/openttd_1.png new file mode 100644 index 00000000..76b400eb Binary files /dev/null and b/zh/desktop/games/images/openttd_1.png differ diff --git a/zh/desktop/games/images/yquake2_1.png b/zh/desktop/games/images/yquake2_1.png new file mode 100644 index 00000000..fba9a2e7 Binary files /dev/null and b/zh/desktop/games/images/yquake2_1.png differ diff --git a/zh/desktop/games/yquake2/index.html b/zh/desktop/games/yquake2/index.html new file mode 100644 index 00000000..455eb4a6 --- /dev/null +++ b/zh/desktop/games/yquake2/index.html @@ -0,0 +1,1451 @@ + + + + + + + + + + + + + + + + + + + + + + yquake2 游戏 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

yquake2

+

状态: +可以运行,支持GLES加速

+

资料: +https://github.com/yquake2/yquake2/blob/master/doc/020_installation.md +https://github.com/yquake2/yquake2/blob/master/doc/030_configuration.md

+

安装步骤

+
# 安装依赖
+sudo apt install build-essential libgl1-mesa-dev libsdl2-dev libopenal-dev libcurl4-openssl-dev
+
+# 下载代码&编译
+git clone https://github.com/yquake2/yquake2.git
+mkdir build
+cd build
+cmake ..
+make
+
+# 运行
+#(需要准备好游戏原始资源文件夹baseq2)
+cd ..
+cd release
+cp -r ~/baseq2 .
+./quake2
+
+

展示

+

需要将原始游戏资源文件夹baseq2放到和quake2程序同一个目录中(Steam版可用)

+

分辨率和图形加速选项在游戏内设置菜单修改,不修改默认是软渲染,硬渲染设置请改为“OpenGL ES3”(参见下图)

+

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/desktop/install/index.html b/zh/desktop/install/index.html new file mode 100644 index 00000000..6186b381 --- /dev/null +++ b/zh/desktop/install/index.html @@ -0,0 +1,1407 @@ + + + + + + + + + + + + + + + + + + + + + + 安装 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

包安装

+

在RevyOS中安装包只需要在 terminal 中输入

+
apt install + 包名
+
+

即可安装

+

以下以安装 git作为演示

+
debian@lpi4a:~$ sudo apt install git
+[sudo] password for debian: 
+Reading package lists... Done
+Building dependency tree... Done
+Reading state information... Done
+The following additional packages will be installed:
+  git-man liberror-perl patch
+Suggested packages:
+  gettext-base git-daemon-run | git-daemon-sysvinit git-doc git-email git-gui
+  gitk gitweb git-cvs git-mediawiki git-svn ed diffutils-doc
+The following NEW packages will be installed:
+  git git-man liberror-perl patch
+0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
+Need to get 8605 kB of archives.
+After this operation, 39.4 MB of additional disk space will be used.
+Do you want to continue? [Y/n] y
+Get:1 https://mirror.iscas.ac.cn/revyos/revyos-base sid/main riscv64 liberror-perl all 0.17029-2 [29.0 kB]
+Get:2 https://mirror.iscas.ac.cn/revyos/revyos-base sid/main riscv64 git-man all 1:2.40.1-1 [2072 kB]
+Get:3 https://mirror.iscas.ac.cn/revyos/revyos-base sid/main riscv64 git riscv64 1:2.40.1-1 [6390 kB]
+Get:4 https://mirror.iscas.ac.cn/revyos/revyos-base sid/main riscv64 patch riscv64 2.7.6-7+b1 [114 kB]
+Fetched 8605 kB in 1s (6656 kB/s)
+Selecting previously unselected package liberror-perl.
+(Reading database ... 75688 files and directories currently installed.)
+Preparing to unpack .../liberror-perl_0.17029-2_all.deb ...
+Unpacking liberror-perl (0.17029-2) ...
+Selecting previously unselected package git-man.
+Preparing to unpack .../git-man_1%3a2.40.1-1_all.deb ...
+Unpacking git-man (1:2.40.1-1) ...
+Selecting previously unselected package git.
+Preparing to unpack .../git_1%3a2.40.1-1_riscv64.deb ...
+Unpacking git (1:2.40.1-1) ...
+Selecting previously unselected package patch.
+Preparing to unpack .../patch_2.7.6-7+b1_riscv64.deb ...
+Unpacking patch (2.7.6-7+b1) ...
+Setting up liberror-perl (0.17029-2) ...
+Setting up patch (2.7.6-7+b1) ...
+Setting up git-man (1:2.40.1-1) ...
+Setting up git (1:2.40.1-1) ...
+Processing triggers for man-db (2.11.2-2) ...
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/desktop/revyos-use-docker/index.html b/zh/desktop/revyos-use-docker/index.html new file mode 100644 index 00000000..762141fd --- /dev/null +++ b/zh/desktop/revyos-use-docker/index.html @@ -0,0 +1,1394 @@ + + + + + + + + + + + + + + + + + + + + + + docker - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

安装 riscv64 docker

+

源中已有 riscv64 的docker安装包,名为 docker.io,可以直接使用:

+
sudo apt install docker.io
+
+

测试 docker

+
sudo docker pull riscv64/debian:unstable
+
+

技巧

+

Rootless Docker

+

如果需要不以 root 权限运行 docker, 即如果不用 sudo, 出现了下面的错误:

+
debian@lpi4a:~$ docker pull riscv64/debian:unstable
+Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=riscv64%2Fdebian&tag=unstable": dial unix /var/run/docker.sock: connect: permission denied
+
+
+

需要执行以下命令将用户加入 docker 用户组中:

+
sudo usermod -aG docker $USER # 或换成需要免root运行docker的用户名
+
+

重新登陆,如果出现下面的结果即可免特权运行docker

+
$ id
+uid=1000(debian) gid=1000(debian) groups=1000(debian),4(adm),7(lp),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),105(netdev),106(bluetooth),112(docker),996(input) # 这里出现了 docker 用户组即可
+
+

为 Docker 配置代理

+

编辑 /usr/lib/systemd/system/docker.service,在 [Service] 下加入代理,docker只读取下面三个变量

+
[Service]
+...
+Environment="HTTP_PROXY=http://proxy.example.com:8080/"
+Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
+Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
+
+

添加完成后重加载 systemd units,然后重启 docker 即可

+
sudo systemctl daemon-reload 
+sudo systemctl restart docker
+
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/desktop/software/Images/ROS2_Gazebo.png b/zh/desktop/software/Images/ROS2_Gazebo.png new file mode 100644 index 00000000..1f12f5ee Binary files /dev/null and b/zh/desktop/software/Images/ROS2_Gazebo.png differ diff --git a/zh/desktop/software/Images/ROS2_RViz.png b/zh/desktop/software/Images/ROS2_RViz.png new file mode 100644 index 00000000..9c51f345 Binary files /dev/null and b/zh/desktop/software/Images/ROS2_RViz.png differ diff --git a/zh/desktop/software/Images/ROS2_TurtleSim.png b/zh/desktop/software/Images/ROS2_TurtleSim.png new file mode 100644 index 00000000..f082c0f3 Binary files /dev/null and b/zh/desktop/software/Images/ROS2_TurtleSim.png differ diff --git a/zh/desktop/software/Images/ROS2_rqt.png b/zh/desktop/software/Images/ROS2_rqt.png new file mode 100644 index 00000000..6e90abad Binary files /dev/null and b/zh/desktop/software/Images/ROS2_rqt.png differ diff --git a/zh/desktop/software/ROS2/index.html b/zh/desktop/software/ROS2/index.html new file mode 100644 index 00000000..13a53fb6 --- /dev/null +++ b/zh/desktop/software/ROS2/index.html @@ -0,0 +1,1750 @@ + + + + + + + + + + + + + + + + + + + + + + ROS2 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Robot Operating System (ROS)

+
+

本页的 ROS 指 ROS 2

+
+

状态:可以运行

+

官方资料页:https://ros.org/

+

官方文档: https://docs.ros.org/

+

软件说明

+

ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、函数库、可视化工具、消息传递和软件包管理等诸多功能。ROS遵循BSD开源许可协议。

+

安装

+

添加源

+

假设使用来自 ros.z572.online 的源

+

注意下面应该使用 bookworm

+
sudo sh -c "echo 'deb [trusted=yes] https://ros.z572.online/main bookworm main\ndeb-src [trusted=yes] https://ros.z572.online/main bookworm main' > /etc/apt/sources.list.d/ros.list"
+sudo apt update
+sudo apt upgrade
+
+

安装 ROS

+

目前已经测试 ROS JazzyHumble 版本可用

+

注意:两个版本可能会存在依赖冲突,请不要尝试同时安装两个版本

+

Jazzy:

+
apt install ros-jazzy-desktop-full
+
+

Humble:

+
apt install ros-humble-desktop-full
+
+

安装 rosdep

+
sudo apt install python3-rosdep2
+
+

然后删除 /etc/ros/rosdep/sources.list.d/10-debian.list, +并修改 etc/ros/rosdep/sources.list.d/20-default.list 为下面的内容

+
yaml https://raw.githubusercontent.com/revyos-ros/rosdistro/master/rosdep/base.yaml
+yaml https://raw.githubusercontent.com/revyos-ros/rosdistro/master/rosdep/python.yaml
+yaml https://raw.githubusercontent.com/revyos-ros/rosdistro/master/rosdep/ruby.yaml
+
+

获取 ROS 环境

+

根据安装的 ROS 版本,选择相应的命令

+

Jazzy:

+
source /opt/ros/jazzy/setup.sh
+
+

Humble:

+
source /opt/ros/Humble/setup.sh
+
+

可以将上面的内容加入 .bashrc 或者您使用的 shell profile 中。

+

功能使用

+

rosdep

+
rosdep update
+
+

使用 rosdep 安装外部依赖(以 micro_ros_setup)为例

+

1.设置环境变量 +请根据您安装的版本选择对应的命令

+

Jazzy:

+
AMENT_PACKAGE_PATH=/opt/ros/jazzy
+
+

Humble:

+
AMENT_PACKAGE_PATH=/opt/ros/humble
+
+

2.下载源代码

+
git clone https://github.com/micro-ROS/micro_ros_setup && cd micro_ros_setup
+
+

3.安装依赖

+
rosdep install --from-paths . -y --ignore-src
+
+

colon

+

colon 是一款现代的 ROS 编译工具

+
sudo apt install colcon
+
+

测试编译(依然以 micro_ros_setup)为例

+
git clone https://github.com/micro-ROS/micro_ros_setup && cd micro_ros_setup
+colcon build
+
+

ros2 command

+
    +
  • ros2 pkg 命令用于管理 ROS 2 包。
  • +
  • ros2 run 命令用于运行 ROS 2 包中的特定节点。
  • +
  • ros2 topic 命令用于与 ROS 2 的话题交互。
  • +
  • ros2 param 命令用于管理 ROS 2 参数。
  • +
  • ros2 service 命令用于与 ROS 2 服务交互。
  • +
  • ros2 node 命令用于与 ROS 2 节点交互。
  • +
  • ros2 bag 命令用于记录和回放 ROS 2 数据。
  • +
  • ros2 launch 命令用于启动 ROS 2 启动文件。
  • +
+

已测试的 ROS 2 功能

+
    +
  • +

    Node(C++)
    + 运行 C++ 节点:
    +bash + ros2 run demo_nodes_cpp talker + ros2 run demo_nodes_cpp listener

    +
  • +
  • +

    Node(Python)
    + 运行 Python 节点:
    +bash + ros2 run demo_nodes_py talker + ros2 run demo_nodes_py listener

    +
  • +
  • +

    Add Two Ints Server
    + 测试服务端和客户端:
    +bash + ros2 run demo_nodes_cpp add_two_ints_server + ros2 run demo_nodes_cpp add_two_ints_client

    +
  • +
  • +

    TF2
    + 测试静态变换、监听和监控功能:
    + 发布静态变换并监听:
    +bash + ros2 run tf2_ros static_transform_publisher 1 1 1 0 0 0 /base_link /odom + ros2 run tf2_ros tf2_echo base_link odom
    + 监控变换:
    +bash + ros2 run tf2_ros static_transform_publisher 1 1 1 0 0 0 /base_link /odom + ros2 run tf2_ros tf2_monitor
    + 查看变换框架图(需生成 PDF 文件):
    +bash + ros2 run tf2_ros static_transform_publisher 1 1 1 0 0 0 /base_link /odom + ros2 run tf2_tools view_frames

    +
  • +
  • +

    TurtleSim
    + 需要图形界面支持:
    + 启动 turtlesim 节点:
    +bash + ros2 run turtlesim turtlesim_node
    + 图形界面会弹出一个窗口。
    + 使用键盘控制小乌龟:
    +bash + ros2 run turtlesim turtle_teleop_key

    +
  • +
+

TurtleSim 使用截图

+
    +
  • RQT
    + 需要图形界面支持:
    + 启动 RQT 图形工具:
    +bash + ros2 run rqt_gui rqt_gui
  • +
+

rqt 使用截图

+

rviz2

+

需要使用 sudo switch-gl gl4es 再重启后使用 LIBGL_ALWAYS_SOFTWARE=true rviz2 here 启动,效果如下

+

RViz2 使用截图

+

gazebo

+

使用 sudo apt install gazebo11 安装

+

需要使用 sudo switch-gl gl4es 再重启后使用 LIBGL_ALWAYS_SOFTWARE=true gazebo 启动,效果如下

+

Gazebo 使用截图

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/desktop/software/gimp/index.html b/zh/desktop/software/gimp/index.html new file mode 100644 index 00000000..23231104 --- /dev/null +++ b/zh/desktop/software/gimp/index.html @@ -0,0 +1,1435 @@ + + + + + + + + + + + + + + + + + + + + + + GIMP 图像编辑工具 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

GIMP图像处理软件

+

状态:可以运行

+

官方资料页:https://docs.gimp.org/2.10/en/

+

软件说明

+

GIMP 是一个多平台工具,用于创建和编辑各种图像。 GIMP 是 GNU Image Manipulation Program 的首字母缩写。 GIMP 有很多功能。它可以用作简单的绘画程序、专家级的照片修饰程序、创建数字艺术的工具、在线批处理系统、批量生产的图像渲染器、图像格式转换器等。 GIMP 是可扩展和可扩展的。它旨在通过插件和扩展来增强以执行任何操作。先进的脚本界面允许从最简单的任务到最复杂的图像处理程序的所有内容都可以轻松编写脚本。

+

使用说明

+

GIMP是 RevyOS 预安装图形处理软件,如想使用 GIMP,在terminal中输入

+
gimp
+
+

在等待资源加载后就会弹出 GIMP 主界面

+

+

使用功能参考官方资料页

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/desktop/software/iBus/index.html b/zh/desktop/software/iBus/index.html new file mode 100644 index 00000000..513fe29f --- /dev/null +++ b/zh/desktop/software/iBus/index.html @@ -0,0 +1,1423 @@ + + + + + + + + + + + + + + + + + + + + + + iBus 输入法 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

iBus 输入法

+

状态:可以运行

+

资料:https://wiki.debian.org/I18n/ibus

+

步骤(没有使用im-config)

+
sudo apt install ibus ibus-libpinyin
+sudo reboot
+
+

重启后需要手动将中文输入法添加到输入选项中:

+

托盘图标->右击->Preference +

+

点击选项卡Input Method->Add,打开下图窗口 +

+

点击Chinese->Intelligent Pinyin->Add +

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/index.html b/zh/index.html new file mode 100644 index 00000000..2d7d78ad --- /dev/null +++ b/zh/index.html @@ -0,0 +1,1594 @@ + + + + + + + + + + + + + + + + + + + + 主页 - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

RevyOS

+

简介

+

RevyOS是由 RuyiSDK 团队的 RevyOS 小队支持开发的一款针对 XuanTie 芯片生态的 Debian 优化定制发行版。

+

RevyOS 是 RuyiSDK 的一部分。RuyiSDK 是一个由 PLCT Lab 所启动的开源项目,该项目旨在为 RISC-V 开发者提供一个便捷、完善的开发环境,其提供了相关最新的硬件信息、软件支持,例如在支持的设备中有提供相关支持硬件情况;软件层面提供了镜像(如 RevyOS)、工具链、包管理器等。

+

RevyOS 围绕玄铁 C906、C910、C920、C908 等芯片提供了完整而全面的适配和优化支持,默认集成支持玄铁扩展指令集和 RVV 1.0 的 GCC 工具链,并搭载使用 RVV 1.0 指令集优化过的 Glibc 和 Kernel。

+

目前,RevyOS 在办公、网页浏览、观看视频等方面已经能满足用户的基本使用需求。

+

基于上述定制和优化的 RevyOS,在 Lichee RV,Lichee Pi 4A 等硬件平台上,能够提供优秀的性能和极佳的体验。

+

镜像下载及刷写

+

RevyOS 的用户版镜像目前在 ISCAS(中国科学院软件研究所)开源镜像站进行更新。如您想获取 RevyOS 最新版镜像请访问镜像下载目录,根据所使用设备来获取对应镜像。

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
支持设备镜像下载(最新版本)刷写教程SD 卡支持
Lichee Pi 4A20241229镜像刷写支持
Lichee Cluster 4A20240720镜像刷写
Lichee Console 4A20240720镜像刷写
Lichee Book 4A20240720镜像刷写
Milk-V Pioneer20241230镜像刷写支持
Milk-V Meles20241229支持
Beagle-Ahead20231210
Huiwei book20240617
+

如何启用 T-Head 优化 GCC

+

详见这篇文档如何启用优化 GCC

+

更新日志

+

镜像版本更新后我们会公布当前版本镜像支持内容,如您想查看镜像支持内容请点击RevyOS 版本更新日志后选择您所需要的版本进行查看。

+

issue 相关

+

如果您在使用过程中遇到问题,可以进行issue 申报

+

用户文档

+

在本 DOCS 中,我们拥有相关的使用构建与适配文档以及测试文档方便让用户对部分内容进行参考,完善的文档支持加快了用户对于系统的上手时间。

+

用户群组

+

RevyOS 有自己的 Telegram 群组:邀请链接

+

实习生招聘

+

现在正在招聘测试实习生,详情请看:RevyOS 小队测试实习生招聘

+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/zh/issue/index.html b/zh/issue/index.html new file mode 100644 index 00000000..b8504d54 --- /dev/null +++ b/zh/issue/index.html @@ -0,0 +1,1480 @@ + + + + + + + + + + + + + + + + + + + + issue - RevyOS Docs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + 跳转至 + + +
+
+ +
+ + + + + + +
+ + + + + + + +
+ +
+ + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

提交问题与已知问题

+

感谢使用 RevyOS!如果在使用过程中遇到问题或发现了 Bug,可以按照以下步骤操作:

+

提交新的 Issue

+
    +
  • 访问 GitHub Issue 页面:RevyOS-Issue
  • +
  • 点击页面右侧的 New Issue 按钮。
  • +
  • 在提交 Issue 时,请尽可能提供以下信息:
  • +
  • 问题描述:清晰简洁地描述问题是什么。
  • +
  • 复现步骤:列出导致问题的操作步骤。
  • +
  • 预期行为:说明期望程序如何运行。
  • +
  • 实际行为:描述实际发生了什么。
  • +
  • 环境信息:包括 RevyOS 镜像版本、镜像刷写文件获取地址,硬件版本。
  • +
  • 请尽量附上相关的日志或截图,以帮助更快定位问题。
  • +
+

查看已知问题

+

在提交新的 Issue 之前,建议先查看我们的已知问题记录:

+
    +
  • 访问 Discussions 页面:已知兼容性问题
  • +
  • 检查是否已经有人报告了相同或类似的问题。
  • +
+

如果问题已存在,您可以选择:

+
    +
  • 在对应的 Issue 或 Discussion 中添加评论,提供更多信息。
  • +
+

提示

+
    +
  • 请确保您的问题未被重复提交。
  • +
  • 提供完整详细的信息有助于我们更快地解决问题。
  • +
+

联系我们

+

如果您想交流使用过程中的问题,可以通过以下方式联系我们:

+ + + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + + \ No newline at end of file