# ruyiSDK v0.2 Test **Repository Path**: yunxiangluo/ruyi-sdk-v0.2-test ## Basic Information - **Project Name**: ruyiSDK v0.2 Test - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2023-11-24 - **Last Updated**: 2023-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RuyiSDK v0.2 测试报告 修订记录 | 日期 | 修订版本 | 修改 章节 | 修改描述 | 作者 | | --------- | ----- | ------ | ---- | --------------- | | 2023-12-8 | 1.0.0 | | 初稿 | PLCT Lab 第三测试小队 | 目 录 1. 概述 2. 测试策略 3. 开发中的测试 4. Round1 测试 5. Round2 测试 6. 历史缺陷列表 ## 1. 概述 如意SDK旨在为 RISC-V 开发者提供一个一体化集成开发环境。为普通 RISC-V 用户提供相同的开发流程,让用户可以在不同的开源工具和制造商定制的工具链之间轻松切换。对于用户购买到的任何一款如意 SDK支持的 RISC-V 开发板或模组,都可通过如意 SDK 系统获得硬件资料说明、固件和软件更新、系统性开发环境支持、软硬件调试支持。开发者可以轻松获取任何常用的 RISC-V 扩展指令集架构组合的系统软件支持,通过如意 SDK 系统便捷地生成客户所需的操作系统、工具链、语言执行环境(运行时或虚拟机)、计算库和应用框架。如意SDK支持和持续维护 RISC-V Vector 0.7.1和 RVP 0.5.2 等已经大规模硅化的草案标准和一些厂商定制扩展。 如意 SDK V1.0主要聚焦 RuyiSDK 基础框架的实现与主体环节的打通,发布内容主要包含6个方面,如图1。 1. Toolchain:GNU 工具链对 RISC-V 扩展指令集的多版本支持和系统适配 2. Sysroot:openEuler,RevyOS 在内的2种操作系统的交叉环境和本地环境支持 3. 模拟器:整合了 Xuantie CPUs 的扩展实现,并模拟了 LicheeRV 和 LicheePi4A 的硬件环境 4. 硬件镜像:提供 Lichee RV,Lichee Pi 4A ,Milk-V Pioneer 等多平台配套镜像 5. 辅助工具:提供了自动化构建与便捷交互使用工具 6. RuyiSDK 文档:介绍了工具链,模拟器,镜像和辅助工具的构建与使用方法 ![figure_1](./images/figure_1.png) 图1. RuyiSDK基础框架 详细参考: https://github.com/ruyisdk/ 和 https://github.com/ruyisdk/ruyi 根据RuyiSDK发展路线,如图2,2023年12月推出首个版本v0.2。 ![figure_2](./images/figure_2.png) 图2. RuyiSDK发展路线图 ## 2. 测试策略 RuyiSDK v0.2 版本测试按照RuyiSDK团队制定的版本发布计划规划相应的测试活动,测试以用户的视角,基于[RuyiSDK v0.2版本用户手册](https://github.com/ruyisdk/doc4test/),测试检验每个功能是否能正常使用。RuyiSDK详细文档见[https://ruyisdk.github.io/docs/zh/](https://ruyisdk.github.io/docs/zh/introduction/),本测试只验证Ruyi工具的使用,不涉及使用GCC、LLVM等具体工具链的使用。 ### 2.1 测试计划 测试分为开发中的测试,Round1测试,缺陷修复,Round2测试四个过程,如表1。 表1. RuyiSDK v0.2 测试计划 | 测试阶段 | 起始时间 | 结束时间 | Days | 备注 | | ------ | --------- | ---------------------- | ---- | ------ | | 开发中的测试 | 2023.11.1 | RuyiSDK v0.2开发完成 12.04 |
| 单元测试启动 | | Round1 | 12.04 | 12.11 | 7 | 版本启动测试 | | 缺陷修复 | 12.12 | 12.19 | 7 | 缺陷修复 | | Round2 | 12.20 | 12.27 | 7 | 发布测试 | ### 2.2 测试重点 单元测试:单元测试在RuyiSDK v0.2开发完成前(12.04)进行,协助开发人员完成开发过程中的缺陷发现和修复。 Round1 测试:RuyiSDK v0.2开发完成后(12.04)进行,根据[RuyiSDK v0.2版本用户手册](https://github.com/ruyisdk/doc4test/)验证功能的正确性。 Round2 测试:Round1缺陷修复后,根据[RuyiSDK v0.2版本用户手册](https://github.com/ruyisdk/doc4test/)验证功能的正确性。 ### 2.3 入口标准 1. 上个阶段无 block 问题遗留。 2. 转测版本的冒烟无阻塞性问题。 3. 满足各阶段版本转测检查项。 ### 2.4 出口标准 1. 策略规划的测试活动涉及的测试用例已执行完毕。 2. 发布特性满足版本规划目标。 3. 版本无阻塞问题遗留,其它严重问题有相应规避措施或说明。 ## 3. 开发中的测试 测试目的:开发中的测试在RuyiSDK v0.2开发完成前(12.04)进行,协助开发人员完成开发过程中的缺陷发现和修复。 测试环境: 1. QEMU openEuler 2309 x86_64 2. QEMU openEuler 2309 riscv64 3. QEMU Ubuntu 22.04 LTS x86_64 4. QEMU Fedora 38 x86_64 5. LicheePi 4A RevyOS 20231009 riscv64 测试方法:单一功能的测试(用于验证Ruyi工具的功能点),功能点参考[RuyiSDK v0.2版本用户手册](https://github.com/ruyisdk/doc4test/) 1. Mugen测试:根据功能点,开发mugen测试套和测试用例,验证实际输出和预期输出的一致性。 2. openQA测试:针对硬件开发板平台和GUI图像化应用使用,根据功能点,开发openQA测试程序,验证实际命令行和图形化输出和预期输出的一致性。 3. 问题单回归 正确判定标准:按照[RuyiSDK v0.2版本用户手册](https://github.com/ruyisdk/doc4test/),实际输出和预期输出的一致。 测试结果: 1. [pre_round1测试报告](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/tree/master/pre_round1) 2. [pre_round2测试报告](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/tree/master/pre_round2) 3. [pre_round3测试报告](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/tree/master/pre_round3) 4. [pre_round4测试报告](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/tree/master/pre_round4) 5. [pre_round5测试报告](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/tree/master/pre_round5) ## 4. Round1 测试 测试目的:RuyiSDK v0.2开发完成后(12.04)进行,根据[RuyiSDK v0.2版本用户手册](https://github.com/ruyisdk/doc4test/)验证功能的正确性。 测试环境: Ruyi 1. QEMU openEuler 2309 x86_64 2. QEMU Ubuntu 22.04 LTS x86_64 3. QEMU Fedora 38 x86_64 4. QEMU openEuler 2309 riscv64(独立xfce发行版) 5. LicheePi 4A openEuler 2309 riscv64(独立xfce发行版) 6. LicheePi 4A RevyOS 20231009 riscv64 7. SG2042 Milkv pioneer box v1.1 openEuler 2309 riscv64(独立xfce发行版) 8. SG2042 Milkv pioneer box v1.1 Fedora 39 riscv64(milkv 官网版本) 测试方法:基于[RuyiSDK v0.2版本用户手册](https://github.com/ruyisdk/doc4test/),开发mugen测试套和测试用例,自动化验证功能的正确性。 1. Mugen测试:根据功能点,开发mugen测试套和测试用例,验证实际输出和预期输出的一致性。 2. openQA测试:针对硬件开发板平台和GUI图像化应用使用,根据功能点,开发openQA测试程序,验证实际命令行和图形化输出和预期输出的一致性。(无GUI环境,此测试不用进行) 3. 问题单全量回归 4. 编译器测试(用于验证安装成功的编译环境功能和手动安装的环境功能一致,AnghaBench、csmith、dejagnu,RuyiSDK会议确认此测试不用进行)。 5. 文档测试(对安装文档和部分操作文档进行验证) 正确判定标准:按照[RuyiSDK v0.2版本用户手册](https://github.com/ruyisdk/doc4test/),实际输出和预期输出的一致。 测试结果: 1. [SG2042 测试报告 ](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/blob/master/round1/RUYI%20%E5%8C%85%E7%AE%A1%E7%90%86%2020231204%20%E7%89%88%E6%9C%AC%20SG2042%20%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.md) 测试环境1:Milk-V Pioneer v1.1 + Fedora 38 测试环境2:Milk-V Pioneer v1.1 + openEuler 23.09 RISC-V preview V1 2. [Lichee Pi 4A openEuler 测试报告](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/blob/master/round1/RUYI%20%E5%8C%85%E7%AE%A1%E7%90%86%2020231204%20%E7%89%88%E6%9C%AC%20LPi4A%20%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.md) 测试环境:Lichee Pi 4A + openEuler 2309 riscv64 preview V1 3. [ LicheePi 4A RevyOS 测试报告 ](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/blob/master/round1/RUYI%20%E5%8C%85%E7%AE%A1%E7%90%86%2020231204%20%E7%89%88%E6%9C%AC%20RevyOS%2020231009%20riscv64%20%E5%AE%B9%E5%99%A8%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.md) 测试环境:LicheePi 4A + RevyOS 20231009 riscv64 4. [QEMU openEuler23.09 x86_64 测试报告 ](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/blob/master/round1/RUYI%20%E5%8C%85%E7%AE%A1%E7%90%86%2020231204%20%E7%89%88%E6%9C%AC%20QEMU%20openEuler23.09%20x86_64%20%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.md) 测试环境:QEMU + openEuler23.09 x86_64 5. [QEMU Ubuntu22.04 x86_64 测试报告](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/blob/master/round1/RUYI%20%E5%8C%85%E7%AE%A1%E7%90%86%2020231204%20%E7%89%88%E6%9C%AC%20QEMU%20Ubuntu22.04%20x86_64%20%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.md) 测试环境:QEMU + Ubuntu22.04 x86_64 6. [QEMU Fedora38 x86_64 测试报告](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/blob/master/round1/RUYI%20%E5%8C%85%E7%AE%A1%E7%90%86%2020231204%20%E7%89%88%E6%9C%AC%20QEMU%20Fedora38%20x86_64%20%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.md) 测试环境:QEMU + Fedora38 x86_64 7. [QEMU openEuler23.09 riscv64 测试报告](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/blob/master/round1/RUYI%20%E5%8C%85%E7%AE%A1%E7%90%86%2020231204%20%E7%89%88%E6%9C%AC%20QEMU%20openEuler23.09%20riscv64%20%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.md) 测试环境:QEMU + openEuler23.09 riscv64 缺陷列表: 1. [xthead 工具链构建产物无法在 RevyOS 运行](https://github.com/ruyisdk/ruyi/issues/22) 2. [plct-xthead 工具链构建 C 程序无法运行](https://github.com/ruyisdk/ruyi/issues/21) 3. [任何编译链都可以配置lpi4a环境,使用该环境编译GCC项目报错](https://github.com/ruyisdk/ruyi/issues/20) 4. [ruyi install slug:llvm-upstream-20231121 找不到软件包](https://github.com/ruyisdk/ruyi/issues/19) 5. [gdb 依赖 libpython3.8.so.1.0](https://github.com/ruyisdk/ruyi/issues/24) 6. [clang-cl: warning: unknown argument ignored in clang-cl](https://github.com/ruyisdk/ruyi/issues/27) ## 5. Round2 测试 测试目的:RuyiSDK v0.2 round1 测试缺陷修复后进行,根据[RuyiSDK v0.2版本用户手册](https://github.com/ruyisdk/doc4test/)验证功能的正确性,重点回归测试round1测试发现的缺陷。 测试环境: Ruyi 1. QEMU openEuler 2309 x86_64 2. QEMU Ubuntu 22.04 LTS x86_64 3. QEMU Fedora 38 x86_64 4. QEMU openEuler 2309 riscv64(独立xfce发行版) 5. LicheePi 4A openEuler 2309 riscv64(独立xfce发行版) 6. LicheePi 4A RevyOS 20231210 riscv64 7. SG2042 Milkv pioneer box v1.1 openEuler 2309 riscv64(独立xfce发行版) 8. SG2042 Milkv pioneer box v1.1 Fedora 39 riscv64(milkv 官网版本) 测试方法:基于[RuyiSDK v0.2版本用户手册](https://github.com/ruyisdk/doc4test/),开发mugen测试套和测试用例,自动化验证功能的正确性。 1. Mugen测试:根据功能点,开发mugen测试套和测试用例,验证实际输出和预期输出的一致性。 2. openQA测试:针对硬件开发板平台和GUI图像化应用使用,根据功能点,开发openQA测试程序,验证实际命令行和图形化输出和预期输出的一致性。(无GUI环境,此测试不用进行) 3. 问题单全量回归 4. 编译器测试(用于验证安装成功的编译环境功能和手动安装的环境功能一致,AnghaBench、csmith、dejagnu,RuyiSDK会议确认此测试不用进行)。 5. 文档测试(对安装文档和部分操作文档进行验证) 正确判定标准:按照[RuyiSDK v0.2版本用户手册](https://github.com/ruyisdk/doc4test/),实际输出和预期输出的一致。 测试结果: 1. [RUYI 包管理 20231211 版本工具链可用性测试结果](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/blob/master/round2/RUYI%20%E5%8C%85%E7%AE%A1%E7%90%86%2020231211%20%E7%89%88%E6%9C%AC%E5%B7%A5%E5%85%B7%E9%93%BE%E5%8F%AF%E7%94%A8%E6%80%A7%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.md) 2. [SG2042 测试报告](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/blob/master/round2/RUYI%20%E5%8C%85%E7%AE%A1%E7%90%86%2020231211%20%E7%89%88%E6%9C%AC%20SG2042%20%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.md) 测试环境1:Milk-V Pioneer v1.1 + Fedora 38 测试环境2:Milk-V Pioneer v1.1 + openEuler 23.09 RISC-V preview V1 3. [Lichee Pi 4A openEuler 测试报告](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/blob/master/round2/RUYI%20%E5%8C%85%E7%AE%A1%E7%90%86%2020231211%20%E7%89%88%E6%9C%AC%20LPi4A%20%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.md) 测试环境1:Lichee Pi 4A + openEuler 2309 riscv64 preview V1 测试环境2:LicheePi 4A + RevyOS 20231210 riscv64 5. [RevyOS 20231210 riscv64 容器测试报告](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/blob/master/round2/RUYI%20%E5%8C%85%E7%AE%A1%E7%90%86%2020231211%20%E7%89%88%E6%9C%AC%20RevyOS%2020231210%20riscv64%20%E5%AE%B9%E5%99%A8%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.md) 6. [QEMU openEuler23.09 x86_64 测试报告](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/blob/master/round2/RUYI%20%E5%8C%85%E7%AE%A1%E7%90%86%2020231211%20%E7%89%88%E6%9C%AC%20QEMU%20openEuler23.09%20x86_64%20%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.md) 测试环境:QEMU + openEuler23.09 x86_64 7. [QEMU Ubuntu22.04 x86_64 测试报告](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/blob/master/round2/RUYI%20%E5%8C%85%E7%AE%A1%E7%90%86%2020231211%20%E7%89%88%E6%9C%AC%20QEMU%20Ubuntu22.04%20x86_64%20%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.md) 测试环境:QEMU + Ubuntu22.04 x86_64 8. [QEMU Fedora38 x86_64 测试报告](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/blob/master/round2/RUYI%20%E5%8C%85%E7%AE%A1%E7%90%86%2020231211%20%E7%89%88%E6%9C%AC%20QEMU%20Fedora38%20x86_64%20%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.md) 测试环境:QEMU + Fedora38 x86_64 9. [QEMU openEuler23.09 riscv64 测试报告](https://gitee.com/yunxiangluo/ruyi-sdk-v0.2-test/blob/master/round2/RUYI%20%E5%8C%85%E7%AE%A1%E7%90%86%2020231211%20%E7%89%88%E6%9C%AC%20QEMU%20openEuler23.09%20riscv64%20%E6%B5%8B%E8%AF%95%E7%BB%93%E6%9E%9C.md) 测试环境:QEMU + openEuler23.09 riscv64 测试结论:ruiyiSDK功能与文档功能描述一致。 ## 6. 工具链与预置配置组合 Ruyi 包管理在建立编译环境之前会检查该环境是否合法,但是并不保证建立成功的环境一定可用于构建。 这里列出了经过测试可用的配置组合: | 工具链 | sysroot | 预置配置 | |:---------------:|:------------:|:------------:| | gnu-upstream | 自带 | generic | | gnu-plct | 自带 | generic | | gnu-plct | 自带 | milkv-duo | | gnu-plct-xthead | 自带 | sipeed-lpi4a | | llvm-upstream | gnu-upstream | generic | | llvm-upstream | gnu-plct | generic | ## 7. 常见问题 1. clang-cl 命令出现有未知参数警告。 ```bash $ ruyi venv -t llvm-upstream --sysroot-from gnu-plct generic venv $ . venv/bin/ruyi-activate «Ruyi venv» $ clang-cl /help clang-cl: warning: unknown argument ignored in clang-cl: '--gcc-install-dir=/home/hachi/.local/share/ruyi/binaries/x86_64/gnu-plct-0.20231118.0/lib/gcc/riscv64-plct-linux-gnu/13.1.0' [-Wunknown-argument] clang-cl: warning: unknown argument ignored in clang-cl: '-mabi=lp64d' [-Wunknown-argument] clang-cl: warning: unknown argument ignored in clang-cl: '--sysroot' [-Wunknown-argument] OVERVIEW: clang LLVM compiler USAGE: clang-17 [options] file... ``` 解答:此 clang 别名是用来兼容 Windows MSVC 编译器的,而目前 Windows 没有 RISC-V 支持,因此预计的用户使用场景不会涉及该命令。 2. xthead 工具链构建产物无法在 RevyOS 运行。 ```bash $ file xx xx: ELF 64-bit LSB executable, UCB RISC-V, RVC, double-float ABI, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-riscv64xthead-lp64d.so.1, BuildID[sha1]=ecead183d362b63010ce986ecc1c1fe2fa3ba703, for GNU/Linux 4.15.0, with debug_info, not stripped ``` 解答:multilib布局问题是为了兼容rv32/rv64各种玄铁组合 revyos无此需求 所以没有做支持。 3. ruyi install slug:llvm-upstream-20231121 找不到软件包。 解答:slug 的设计是最早没有完善的 repo、包版本匹配机制时,为了仍然能方便定位到唯一包,而投机取巧的产物。后续 slug 只会用于为超常用的软件包特定版本提供短名称,其他包默认都不会有 slug。 4. ruyi venv 命令的输出在硬盘空间不足时会导致产生大量日志。 解答:不是功能缺陷,计划在v0.3版本进行完善。 ## 8. 历史缺陷列表 [历史缺陷列表](https://github.com/ruyisdk/ruyi/issues?q=is%3Aissue+is%3Aall) ## 附件 - [RuyiSDK v0.2版本用户手册](https://github.com/ruyisdk/doc4test/) - [RuyiSDK详细文档](https://ruyisdk.github.io/docs/zh/introduction/)