diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index d9e60c72..74989a8e 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -15,74 +15,54 @@ export default defineConfig({ { text: '文档', link: '/zh/introduction/' } ], sidebar: [ - { text: '介绍', - items: [ - { text: 'RuyiSDK 简介', link: '/zh/introduction/' }, - { text: '集成的RISC-V设备', link: '/zh/devices/' }, - ] - }, - { text: '开始使用', link: '/zh/usedirection/', - items: [ - { text: '开发环境', - items: [ - { text: '准备RISC-V开发环境', link: '/zh/usedirection/developmentside/' }, - { text: '编译器类型', link: '/zh/usedirection/developmentside/typeselection/' }, - { text: '编译环境', link: '/zh/usedirection/developmentside/environments/' }, - { text: '源码包构建', link: '/zh/usedirection/developmentside/sources/coremark/' }, - ] + { + text: '欢迎', + items: [ + { text: '介绍', link: '/doc/Introduction/index' }, + ], + }, + { + text: 'RuyiSDK', + items:[ + { + text:'ruyi 包管理器', + items:[ + {text:'功能介绍',link:'/doc/Package-Manager/index'}, + {text:'安装',link:'/doc/Package-Manager/installation'}, + {text:'环境',link:'/doc/Package-Manager/Enviroment'}, + {text:'编译',link:'/doc/Package-Manager/Complie'}, + ], }, - { text: '运行环境', - items: [ - { text: '准备RISC-V运行环境', link: '/zh/usedirection/operationside/' }, + { + text:'IDE', + items:[ + {text:'TODO',link:'/doc/IDE/TODO'}, ] }, - { text: '使用案例', link: '/zh/usecase/' , - items: [ - { text: 'amd上编译并模拟运行', link: '/zh/usecase/x86pc/' }, - { text: '为RISC-V开发板安装系统镜像', link: '/zh/usecase/setupos/' }, - { text: '在Licheepi4A上编译运行', link: '/zh/usecase/rvbook/' }, + { + text:'使用案例', + items:[ + {text:'使用编译环境进行 Coremark 构建',link:'/doc/RuyiSDK/case1'}, + {text:'为 RISC-V 开发板安装操作系统',link:'/doc/RuyiSDK/case2'}, + {text:'在 Licheepi 4A 上编译运行',link:'/doc/RuyiSDK/case3'}, ] }, - ] - }, - { text: '工具', - items: [ { - text: 'RUYI 包管理器', link: '/zh/ruyi/' , - items: [ - { text: '开始', link: '/zh/ruyi/getstarted/' }, - { - text: '版本更新', - collapsed: true, - items: [ - { text: 'v0.3.0 版本新增特性', link: '/zh/ruyi/updates/0.3.0' }, - { text: 'v0.4.0 版本新增特性', link: '/zh/ruyi/updates/0.4.0' }, - { text: 'v0.5.0 版本新增特性', link: '/zh/ruyi/updates/0.5.0' }, - { text: 'v0.6.0 版本新增特性', link: '/zh/ruyi/updates/0.6.0' }, - { text: 'v0.7.0 版本新增特性', link: '/zh/ruyi/updates/0.7.0' }, - { text: 'v0.8.1 版本新增特性', link: '/zh/ruyi/updates/0.8.1' }, - { text: 'v0.9.0 版本新增特性', link: '/zh/ruyi/updates/0.9.0' }, - { text: 'v0.10.0 版本新增特性', link: '/zh/ruyi/updates/0.10.0' }, - { text: 'v0.11.0 版本新增特性', link: '/zh/ruyi/updates/0.11.0' }, - { text: 'v0.12.0 版本新增特性', link: '/zh/ruyi/updates/0.12.0' }, - { text: 'v0.13.0 版本新增特性', link: '/zh/ruyi/updates/0.13.0' } - ] - } + text:'社区', + items:[ + {text:'关于我们',link:'/doc/Community/About-us'}, + {text:'社区守则',link:'/doc/Community/Rules'}, ] - } - ] - }, - { text: 'RuyiSDK', - items: [ - { - text: 'GNU', link: '/zh/sdk/gnu/', }, - { - text: 'LLVM', link: '/zh/sdk/llvm/', - } + ], + }, + { + text:'其他说明', + items:[ + {text:'RuyiSDK 编译工具',link:'/doc/Other/GNU-type'} ] - } - ], + }, + ], } }, en: { @@ -100,7 +80,6 @@ export default defineConfig({ base: '/docs/', themeConfig: { i18nRouting: true, - // https://vitepress.dev/reference/default-theme-config search: { provider: 'local' }, diff --git a/docs/zh/Community/About-us.md b/docs/zh/Community/About-us.md new file mode 100644 index 00000000..a09a9228 --- /dev/null +++ b/docs/zh/Community/About-us.md @@ -0,0 +1,21 @@ + +# 关于我们 + +## 简介 + +- RuyiSDK 社区旨在建设一个开放、友善、多样化、包容、健康社区。 + +- 在参与社区讨论前,请先查阅[社区守则](../Community/Rules.md)以便更好的在社区内交流。 + +- 如果您有更好的建议请通过以下的联系方式与我们取得联系,谢谢! + + + +## 联系 + +你可以通过以下方式加入我们的社区: + +- 关注微信公众号:RUYISDK +- 微信交流群:添加小助手 ruyisdk_helper +- 发送邮件至 [contact@ruyisdk.cn](mailto:contact@ruyisdk.cn) +- 加入 [Telegram](https://t.me/ruyisdk) 进行进一步讨论 diff --git a/docs/zh/Community/Rules.md b/docs/zh/Community/Rules.md new file mode 100644 index 00000000..607b1268 --- /dev/null +++ b/docs/zh/Community/Rules.md @@ -0,0 +1,89 @@ + +# 贡献者公约 + +## 我们的承诺 + +身为社区成员、贡献者和领袖,我们承诺使社区参与者不受骚扰,无论其年龄、体型、可见或不可见的缺陷、族裔、性征、性别认同和表达、经验水平、教育程度、社会与经济地位、国籍、相貌、种族、种姓、肤色、宗教信仰、性倾向或性取向如何。 + +我们承诺以有助于建立开放、友善、多样化、包容、健康社区的方式行事和互动。 + +## 我们的准则 + +有助于为我们的社区创造积极环境的行为例子包括但不限于: + +* 表现出对他人的同情和善意 +* 尊重不同的主张、观点和感受 +* 提出和大方接受建设性意见 +* 承担责任并向受我们错误影响的人道歉 +* 注重社区共同诉求,而非个人得失 + +不当行为例子包括: + +* 使用情色化的语言或图像,及性引诱或挑逗 +* 嘲弄、侮辱或诋毁性评论,以及人身或政治攻击 +* 公开或私下的骚扰行为 +* 未经他人明确许可,公布他人的私人信息,如物理或电子邮件地址 +* 其他有理由认定为违反职业操守的不当行为 + +## 责任和权力 + +社区领袖有责任解释和落实我们所认可的行为准则,并妥善公正地对他们认为不当、威胁、冒犯或有害的任何行为采取纠正措施。 + +社区领导有权力和责任删除、编辑或拒绝或拒绝与本行为准则不相符的评论(comment)、提交(commits)、代码、维基(wiki)编辑、议题(issues)或其他贡献,并在适当时机知采取措施的理由。 + +## 适用范围 + +本行为准则适用于所有社区场合,也适用于在公共场所代表社区时的个人。 + +代表社区的情形包括使用官方电子邮件地址、通过官方社交媒体帐户发帖或在线上或线下活动中担任指定代表。 + +## 监督 + +辱骂、骚扰或其他不可接受的行为可通过 [插入联系方式] 向负责监督的社区领袖报告。 +所有投诉都将得到及时和公平的审查和调查。 + +所有社区领袖都有义务尊重任何事件报告者的隐私和安全。 + +## 处理方针 + +社区领袖将遵循下列社区处理方针来明确他们所认定违反本行为准则的行为的处理方式: + +### 1. 纠正 + +**社区影响**:使用不恰当的语言或其他在社区中被认定为不符合职业道德或不受欢迎的行为。 + +**处理意见**:由社区领袖发出非公开的书面警告,明确说明违规行为的性质,并解释举止如何不妥。或将要求公开道歉。 + +### 2. 警告 + +**社区影响**:单个或一系列违规行为。 + +**处理意见**:警告并对连续性行为进行处理。在指定时间内,不得与相关人员互动,包括主动与行为准则执行者互动。这包括避免在社区场所和外部渠道中的互动。违反这些条款可能会导致临时或永久封禁。 + +### 3. 临时封禁 + +**社区影响**: 严重违反社区准则,包括持续的不当行为。 + +**处理意见**: 在指定时间内,暂时禁止与社区进行任何形式的互动或公开交流。在此期间,不得与相关人员进行公开或私下互动,包括主动与行为准则执行者互动。违反这些条款可能会导致永久封禁。 + +### 4. 永久封禁 + +**社区影响**:行为模式表现出违反社区准则,包括持续的不当行为、骚扰个人或攻击或贬低某个类别的个体。 + +**处理意见**:永久禁止在社区内进行任何形式的公开互动。 + +## 参见 + +本行为准则改编自 [Contributor Covenant][homepage] 2.1 版, 参见 [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]。 + +社区处理方针灵感来源于 [Mozilla's code of conduct enforcement ladder][Mozilla CoC]。 + +有关本行为准则的常见问题的答案,参见 [https://www.contributor-covenant.org/faq][FAQ]。 +其他语言翻译参见 [https://www.contributor-covenant.org/translations][translations]。 + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations + diff --git a/docs/zh/IDE/TODO.md b/docs/zh/IDE/TODO.md new file mode 100644 index 00000000..30404ce4 --- /dev/null +++ b/docs/zh/IDE/TODO.md @@ -0,0 +1 @@ +TODO \ No newline at end of file diff --git a/docs/zh/Other/GNU-type.md b/docs/zh/Other/GNU-type.md new file mode 100644 index 00000000..54b27553 --- /dev/null +++ b/docs/zh/Other/GNU-type.md @@ -0,0 +1,34 @@ +# RuyiSDK 编译工具 + +### RuyiSDK 提供的编译工具链 + +RuyiSDK 提供了多种类型的编译工具链,适用于不同的 RISC-V 开发板和应用场景。 + +| 编译工具链类型 | 说明 | 相关链接 | +| -------------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | +| **GNU 工具链** | | [仓库](https://github.com/RuyiSDK/riscv-gnu-toolchain) | +| gnu-upstream | 标准 GNU 工具链 | | +| gnu-plct | 支持香山南湖微架构 'gnu-plct(==0.20240324.0)' | | +| gnu-plct-xthead | 适用于玄铁 | | +| gnu-plct-rv64ilp32-elf | 非通用工具链,支持 rv64ilp32 的裸机工具链,目标代码格式是 elf | [仓库](https://github.com/RuyiSDK/riscv-gnu-toolchain-rv64ilp32)
[文章](https://mp.weixin.qq.com/s/argIGP4_rUKDm9IRIB-YTg) | +| **LLVM 工具链** | | | +| llvm-upstream | | | +| **QEMU 模拟器** | | [仓库](https://github.com/ruyisdk/qemu) | +| qemu-system-riscv-upstream | | | +| qemu-user-riscv-upstream | | | +| qemu-user-riscv-xthead | | | + + +### 编译工具链的多样性 + +如上表, 目前 RuyiSDK 编译工具链由于能够实现不同扩展指令集,进而有了不同版本的情况,这也就使得编译工具链具有多样性。 +原因有以下几点: + +1. **处理器架构发展**:处理器架构在不断更新迭代的过程中会引进新的指令集扩展以满足不同的需求,为使得这部分新的指令集扩展能够充分运用,编译工具链也会随之进行更新,出现不同的版本。 +2. **厂商定制优化**:不同的厂商会针对同一个指令集进行不同程度的定制化,进而对编译工具链进行定制化。 +3. **标准和规范的演进**:扩展指令集虽被规范化,但不同版本的工具链在相同标准下也会体现出不同的性能、稳定性以及兼容性。 +4. **特定应用需求**:不同的应用领域对扩展指令集有不同的需求,如嵌入式系统、机器学习、图像处理等,不同版本编译工具链会针对特定领域进行优化。 + +上述原因使得编译工具链出现了多样化,这样的多样化为开发者提供了更多的选择,满足更加复杂的开发场景。 + + diff --git a/docs/zh/Package-Manager/Complie.md b/docs/zh/Package-Manager/Complie.md new file mode 100644 index 00000000..ef896175 --- /dev/null +++ b/docs/zh/Package-Manager/Complie.md @@ -0,0 +1,76 @@ +# 编译工具链安装 + +通过前置步骤,你已经可以正确使用 ruyi 包管理器,在这个模块中我们更进一步的安装 RISC-V 上相关的编译器。 + +目前 ruyi 包管理器提供了不同组织所发布的 GNU 以及 LLVM 编译工具链,你可以通过 `ruyi list` 轻松的查看。 + +若要安装特定的安装包,请使用 `ruyi install` 或 `ruyi i` 完成安装。 + +### 其他说明 + +编译工具链的版本选择参考[RuyiSDK 编译工具](../Other/GNU-type)。 + +## 编译 + +### 代码准备 + +当正确获取了编译工具链后,可以通过 `git` 等任何方式获取源码到本地,同时,RuyiSDK 为新用户提供了一些代码示例,方便用户可以直接从 Ruyi Repo 的软件源中获取源码,可以通过如下指令实现: + +```bash +# 从软件源下载并解压指定的源码包 + +ruyi extract + +``` +获取源码后,RuyiSDK 包管理器提供了虚拟环境技术,用户可以在系统中创建独立的环境,以确保对于不同版本编译工具链以及库文件进行环境隔离。 +保证了用户在同以开发环境中能够安装使用不同的编译工具链版本,提供更好的环境隔离,保证开发过程的高效性。 + +我们建议在虚拟环境中进行编译操作,步骤如下: + + +```bash +# 开始编译 +# 为隔离化编译创建虚拟环境,使用 ruyi venv -h 查看如何使用 + +ruyi venv + +# 举例:创建一个叫 venv1 的虚拟环境,并指定编译工具链为 gnu-upstream,sysroot 为 generic 类型,使用 qemu-user-riscv-upstream 模拟器 + +ruyi venv -t gnu-upstream -e qemu-user-riscv-upstream generic venv1 + + +# 激活虚拟环境 + +. venv1/bin/ruyi-activate + +# 编译需要编译的程序源代码 +# 此部分没有统一规范,按照待编译程序自身的编译说明执行,这里以 coremark 为例: + +#(1)设置 coremark 源码中的编译配置信息 +sed -i 's/\bgcc\b/riscv64-unknown-linux-gnu-gcc/g' linux64/core_portme.mak + +#(2)执行交叉编译和构建,得到可执行程序 coremark.exe +make PORT_DIR=linux64 link + +#(3)查看 rv64 可执行程序文件属性信息,初步检验可执行程序是否 RISC-V 架构 +file coremark.exe +``` + +### 模拟运行 + +在进入该步骤前,请确保已经安装了编译所需的编译工具链、模拟器,并在虚拟环境中配置了 qemu 模拟器。 + +为确保 RISC-V 目标可执行程序的正确性,通过模拟器工具(如 qemu)模拟运行环境: + +```bash +# qemu user 模式下执行 rv64 coremark 可执行程序 +ruyi-qemu coremark.exe + +# 在编译和运行结束后,退出虚拟环境 +ruyi-deactivate + +``` + +### 调试 + +> TODO diff --git a/docs/zh/Package-Manager/Enviroment.md b/docs/zh/Package-Manager/Enviroment.md new file mode 100644 index 00000000..c12ab06c --- /dev/null +++ b/docs/zh/Package-Manager/Enviroment.md @@ -0,0 +1,230 @@ +# ruyi 编译环境 + +与 python 的虚拟环境类似,ruyi 包管理器工具使用 `venv` 命令应用配置到指定的工具链以建立编译环境。 + +ruyi 包管理预置的配置可以使用 `ruyi list profiles` 命令查看: + +```bash +$ ruyi list profiles +generic +baremetal-rv64ilp32 (needs flavor(s): {'rv64ilp32'}) +sipeed-lpi4a (needs flavor(s): {'xthead'}) +milkv-duo +``` + +## 工具链与预置配置组合 + +ruyi 包管理在建立编译环境之前会检查该环境是否合法,但是并不保证建立成功的环境一定可用于构建。 + +这里列出了经过测试可用的配置组合: + +| 工具链(toolchain) | sysroot | 预置配置(profile) | +| :--------------------: | :----------: | :-----------------: | +| gnu-upstream | 自带 | generic | +| gnu-plct | 自带 | generic | +| gnu-plct | 自带 | milkv-duo | +| gnu-plct | 自带 | xiangshan-nanhu | +| gnu-plct-xthead | 自带 | sipeed-lpi4a | +| gnu-plct-rv64ilp32-elf | 无 | baremetal-rv64ilp32 | +| llvm-upstream | gnu-upstream | generic | +| llvm-upstream | gnu-plct | generic | + +## 创建虚拟环境 + +ruyiSDK 包管理器工具可使用 `ruyi venv` 创建虚拟环境,具体的使用方法可通过 `help` 命令获得: + +```bash +$ ruyi venv -h +usage: ruyi venv [-h] [--name NAME] [--toolchain TOOLCHAIN] [--emulator EMULATOR] [--with-sysroot] [--without-sysroot] + [--sysroot-from SYSROOT_FROM] + profile dest + +positional arguments: + profile Profile to use for the environment + dest Path to the new virtual environment + +options: + -h, --help show this help message and exit + --name NAME, -n NAME Override the venv's name + --toolchain TOOLCHAIN, -t TOOLCHAIN + Specifier (atom) of the toolchain package to use + --emulator EMULATOR, -e EMULATOR + Specifier (atom) of the emulator package to use + --with-sysroot Provision a fresh sysroot inside the new virtual environment (default) + --without-sysroot Do not include a sysroot inside the new virtual environment + --sysroot-from SYSROOT_FROM + Specifier (atom) of the sysroot package to use, in favor of the toolchain-included one if applicable + +``` + +参考上表代入具体的参数,不同的虚拟环境创建如下: + +```bash +# 使用 GNU 上游工具链配置 RISC-V 编译环境: +$ ruyi venv -t gnu-upstream generic ./generic-venv + +# 使用 PLCT 工具链配置 Milkv-Duo 编译环境: +$ ruyi venv -t gnu-plct milkv-duo ./milkv-venv + +# 使用 PLCT 工具链配置香山南湖编译环境: +$ ruyi venv -t gnu-plct xiangshan-nanhu ./nanhu-venv + +# 使用 LLVM 上游工具链配置 RISC-V 编译环境: +$ ruyi venv -t llvm-upstream --sysroot-from gnu-upstream generic ./llvm-venv + +# 使用平头哥工具链配置荔枝派 4A 编译环境: +$ ruyi venv -t gnu-plct-xthead-20231212 sipeed-lpi4a ./sipeed-venv + +# 使用上游 QEMU 模拟器运行交叉编译的 RISC-V 二进制 +$ ruyi venv -t gnu-plct generic -e qemu-user-riscv-upstream ./qemu-venv + +# 使用平头哥 QEMU 模拟器运行交叉编译的 RISC-V 二进制 +$ ruyi venv -t gnu-plct-xthead sipeed-lpi4a -e qemu-user-riscv-xthead ./xthead-qemu-venv +``` + +## 在虚拟环境下编译 + +在创建虚拟环境之前,需要先 `ruyi install` 安装虚拟环境中使用的编译工具链、模拟器等所需的工具。 + +下面以任一个编译工具链在虚拟环境中编译程序一般的操作说明操作步骤: + +1. 安装编译工具链 + +```bash +$ ruyi install gnu-upstream +``` + +3. 建立编译环境 + +```bash +$ ruyi venv -t gnu-upstream generic venv + +# -t gnu-upstream 指定了编译工具链的类型和版本(版本除非指定,默认最新);generic 表示 generic 类型的 profile;venv是自定义的虚拟环境名(相对路径目录名) + +``` + +4. 查看可用的工具链二进制 + +```bash +$ ls ./venv/bin/ +riscv64-unknown-linux-gnu-addr2line riscv64-unknown-linux-gnu-gcc riscv64-unknown-linux-gnu-gfortran riscv64-unknown-linux-gnu-ranlib +riscv64-unknown-linux-gnu-ar riscv64-unknown-linux-gnu-gcc-ar riscv64-unknown-linux-gnu-gprof riscv64-unknown-linux-gnu-readelf +riscv64-unknown-linux-gnu-as riscv64-unknown-linux-gnu-gcc-nm riscv64-unknown-linux-gnu-ld riscv64-unknown-linux-gnu-size +riscv64-unknown-linux-gnu-c++ riscv64-unknown-linux-gnu-gcc-ranlib riscv64-unknown-linux-gnu-ld.bfd riscv64-unknown-linux-gnu-strings +riscv64-unknown-linux-gnu-cc riscv64-unknown-linux-gnu-gcov riscv64-unknown-linux-gnu-ldd riscv64-unknown-linux-gnu-strip +riscv64-unknown-linux-gnu-c++filt riscv64-unknown-linux-gnu-gcov-dump riscv64-unknown-linux-gnu-lto-dump ruyi-activate +riscv64-unknown-linux-gnu-cpp riscv64-unknown-linux-gnu-gcov-tool riscv64-unknown-linux-gnu-nm +riscv64-unknown-linux-gnu-elfedit riscv64-unknown-linux-gnu-gdb riscv64-unknown-linux-gnu-objcopy +riscv64-unknown-linux-gnu-g++ riscv64-unknown-linux-gnu-gdb-add-index riscv64-unknown-linux-gnu-objdump +``` + +除了 `ruyi-activate` 为激活编译环境用的脚本,其他均为工具链二进制。 + +5. 激活构建环境,激活方式与 python 虚拟环境类似,并且改变提示符以提示当前进入编译环境中: + +```bash +$ . venv/bin/ruyi-activate +«Ruyi venv» $ +``` + +也可以使用 `source` 命令: + +```bash +$ source venv/bin/ruyi-activate +«Ruyi venv» $ +``` + +6. 调用工具链: + +```bash +«Ruyi venv» $ riscv64-unknown-linux-gnu-gcc --version +riscv64-unknown-linux-gnu-gcc (RuyiSDK 20231212 Upstream-Sources) 13.2.0 +Copyright (C) 2023 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +``` + +7. 编译 + 可按需对指定程序执行编译操作。这里跳过具体事例。 +8. 退出编译环境 + 在编译或者运行验证完毕后,可以执行如下命令退出编译环境,退出后环境将被还原。 + +```bash +«Ruyi venv» $ ruyi-deactivate +$ +``` + +> 实际操作中请注意将上述例子中的参数替换为正确的值。 + +## 模拟运行 + +在 x86-64 环境下使用平头哥工具链配置带 QEMU 支持的荔枝派 4A 编译环境,并使用平头哥 QEMU 运行构建出的 RISC-V 二进制 的操作参考如下: + +1. 安装编译工具链 + +```bash +$ ruyi install gnu-plct-xthead qemu-user-riscv-xthead +``` + +2. 建立编译环境: + +```bash +$ ruyi venv -t gnu-plct-xthead sipeed-lpi4a -e qemu-user-riscv-xthead ./qemu_venv + +``` + +3. 查看可用的二进制: + +```bash +$ ls qemu_venv/bin/ +riscv64-plctxthead-linux-gnu-addr2line riscv64-plctxthead-linux-gnu-gcc-ranlib riscv64-plctxthead-linux-gnu-nm +riscv64-plctxthead-linux-gnu-ar riscv64-plctxthead-linux-gnu-gcov riscv64-plctxthead-linux-gnu-objcopy +riscv64-plctxthead-linux-gnu-as riscv64-plctxthead-linux-gnu-gcov-dump riscv64-plctxthead-linux-gnu-objdump +riscv64-plctxthead-linux-gnu-c++ riscv64-plctxthead-linux-gnu-gcov-tool riscv64-plctxthead-linux-gnu-ranlib +riscv64-plctxthead-linux-gnu-cc riscv64-plctxthead-linux-gnu-gdb riscv64-plctxthead-linux-gnu-readelf +riscv64-plctxthead-linux-gnu-c++filt riscv64-plctxthead-linux-gnu-gdb-add-index riscv64-plctxthead-linux-gnu-size +riscv64-plctxthead-linux-gnu-cpp riscv64-plctxthead-linux-gnu-gfortran riscv64-plctxthead-linux-gnu-strings +riscv64-plctxthead-linux-gnu-elfedit riscv64-plctxthead-linux-gnu-gprof riscv64-plctxthead-linux-gnu-strip +riscv64-plctxthead-linux-gnu-g++ riscv64-plctxthead-linux-gnu-ld ruyi-activate +riscv64-plctxthead-linux-gnu-gcc riscv64-plctxthead-linux-gnu-ld.bfd ruyi-qemu +riscv64-plctxthead-linux-gnu-gcc-ar riscv64-plctxthead-linux-gnu-ldd +riscv64-plctxthead-linux-gnu-gcc-nm riscv64-plctxthead-linux-gnu-lto-dump +``` + +可以看到 QEMU 模拟器的命令为 `ruyi-qemu` 。 + +4. 进入编译环境: + +```bash +$ . qemu_venv/bin/ruyi-activate +«Ruyi qemu_venv» $ +``` + +5. 编译一个简单的 C 程序并使用 QEMU 运行: + +```bash +«Ruyi qemu_venv» $ cd qemu_venv/ +«Ruyi qemu_venv» $ cat > test.c << EOF +#include + +int main() +{ + printf("hello, ruyi"); + putchar('\n'); + + return 0; +} +EOF +«Ruyi qemu_venv» $ riscv64-plctxthead-linux-gnu-gcc -O3 test.c -o test +«Ruyi qemu_venv» $ ruyi-qemu ./test +hello, ruyi +``` + +6. 退出编译环境: + +```bash +«Ruyi qemu_venv» $ ruyi-deactivate +$ +``` + diff --git a/docs/zh/Package-Manager/index.md b/docs/zh/Package-Manager/index.md new file mode 100644 index 00000000..f4329afe --- /dev/null +++ b/docs/zh/Package-Manager/index.md @@ -0,0 +1,204 @@ +# ruyi 包管理器功能说明 + +ruyi 包管理器提供以下功能。 + +## 命令查询 + +| 命令 | 含义 | 注意事项 | +| -------------------------------------------------------------------------------------------- | --------------------------- | ----------------------------------- | +| `ruyi update` | 更新软件包缓存,使用默认镜像。 | 软件包缓存将存放在用户目录中,通常为 `~/.cache/ruyi`。 | +| `ruyi news list -h` | 查看新闻命令的帮助信息。 | | +| `ruyi news list` | 列出所有新闻。 | | +| `ruyi news list --new` | 仅列出未读新闻。 | | +| `ruyi news read -h` | 查看新闻阅读命令的帮助信息。 | | +| `ruyi news read 1` | 读取特定序号的新闻。 | 1 为要读取的新闻条目的序号或 ID。 | +| `ruyi news read` | 读取下一条新闻。 | | +| `ruyi news read --quiet` | 标记新闻为已读,不输出任何信息。 | 不输出任何东西,只标记为已读。 | +| `ruyi list` | 列出所有可用软件包。 | | +| `ruyi list -v` | 列出所有软件包的详细信息。 | | +| `ruyi list profiles` | 查看预置的编译环境配置。 | 与 Python 虚拟环境类似。 | +| `ruyi install gnu-upstream` | 安装最新的 GNU 上游工具链。 | 默认安装最新版本的 gnu-upstream。 | +| `ruyi install 'gnu-upstream(0.20231118.0)'` | 安装指定版本的 GNU 上游工具链。 | 通过指定版本号安装历史版本。 | +| `ruyi install 'gnu-upstream(==0.20231118.0)'` | 安装特定版本的 GNU 上游工具链。 | 版本匹配格式应为 ``。 | +| `ruyi install --reinstall gnu-upstream` | 重新安装 GNU 上游工具链。 | | +| `ruyi extract ruyisdk-demo` | 下载并解包ruyisdk-demo 源码包。 | 解包到当前目录。 | +| `ruyi venv --toolchain gnu-upstream --emulator qemu-user-riscv-upstream generic ./ruyi_venv` | 在指定目录建立包含工具链和模拟器的编译环境。 | 使用预置的 generic 配置。 | +| `ruyi self uninstall` | 卸载 ruyi 包管理器。 | 命令会询问确认操作。 | +| `ruyi self uninstall -y` | 无需确认直接卸载 ruyi 包管理器。 | 无需确认直接执行。 | +| `ruyi self uninstall --purge` | 彻底卸载 ruyi 包管理器,包括缓存和安装的软件包。 | 包括缓存和已安装的软件包。 | +| `ruyi self uninstall --purge -y` | 无需确认彻底卸载 ruyi 包管理器。 | 无需确认直接执行。 | +| `ruyi device provision` | 下载所需系统镜像,并为设备安装系统。 | 按照引导进行系统安装。 | + +---- +> 以下内容为表格内容详细说明。 +## 刷新软件包缓存 + +更新软件包缓存,使用默认镜像即可: + +```bash +$ ruyi update +``` + +软件包缓存将存放在用户目录中,通常为 ``~/.cache/ruyi`` ;在 ``XDG_CACHE_HOME`` 环境变量被设置时,目录为 ``$XDG_CACHE_HOME/ruyi`` 。 +在本文档中家目录为 ``/home/myon`` 。 + +## 查询包管理器更新内容 + +查看 ruyi 包管理器的更新信息、阅读新闻或将信息设置为已读: + +```bash +$ ruyi news list -h +$ ruyi news list +$ ruyi news list --new # 仅列出未读新闻 + +$ ruyi news read -h +$ ruyi news read 1 # 1为要读取的新闻条目的序号或ID +$ ruyi news read # 读取下一条新闻 +$ ruyi news read --quiet # 不输出任何东西,只标记为已读 +``` + +## 查询可用软件包 + +查看可用的软件包,该命令将列出所有可用的软件包: + +```bash +$ ruyi list +List of available packages: + +* source/ruyisdk-demo + - 0.20231114.0 (latest) +* source/coremark + - 1.0.2-pre.20230125 (prerelease, latest-prerelease) + - 1.0.1 (latest) +* emulator/qemu-user-riscv-xthead + - 6.1.0-ruyi.20231207+g03813c9fe8 (latest) +* emulator/qemu-user-riscv-upstream + - 8.1.2-ruyi.20231121 (latest) +* toolchain/gnu-plct + - 0.20231212.0 (latest) slug: gnu-plct-20231212 + - 0.20231118.0 () slug: gnu-plct-20231118 +* toolchain/gnu-plct-xthead + - 0.20231212.0 (latest) slug: gnu-plct-xthead-20231212 + - 0.20231118.0 () slug: gnu-plct-xthead-20231118 +* toolchain/gnu-upstream + - 0.20231212.0 (latest) slug: gnu-upstream-20231212 + - 0.20231118.0 () slug: gnu-upstream-20231118 +* toolchain/llvm-upstream + - 17.0.5-ruyi.20231121 (latest) slug: llvm-upstream-20231121 +``` + +软件包前缀表示分类,其中 ``source`` 代表软件源码包, ``toolchain`` 代表工具链二进制包, ``emulator`` 代表模拟器二进制包,`board-image` 代表开发板镜像,`analyzer` 代表分析工具。 + +如果软件包显示 “no binary for current host” 则该软件包的当前版本不支持本机架构。 + +列出所有软件包的详细信息: + +```bash +$ ruyi list -v +``` + +## 查询可用编译环境 + +与python 的虚拟环境类似,RUYI 包管理器工具使用 ``venv`` 命令应用配置到指定的工具链以建立编译环境。 + +RUYI 包管理预置的配置可以使用 ``ruyi list profiles`` 命令查看: + +```bash +$ ruyi list profiles +generic +baremetal-rv64ilp32 (needs flavor(s): {'rv64ilp32'}) +sipeed-lpi4a (needs flavor(s): {'xthead'}) +milkv-duo +``` + +## 安装软件包 + +使用 ``install`` 命令安装软件包,如 GNU 上游工具链: + +```bash +$ ruyi install gnu-upstream +``` + +上述通过指定软件包名安装的方式默认会安装 latest 的 gnu-upstream,如果想安装某个历史版本的 gnu-upstream,则可以通过指定版本来安装: + +```bash +$ ruyi install 'gnu-upstream(0.20231118.0)' +$ ruyi install 'gnu-upstream(==0.20231118.0)' + +# match_expr parameter should be in format ``, where `` is one of ['<', '>', '==', '<=', '>=', '!=']. +``` + +若希望重装一个软件包,则可以加上 ``--reinstall`` 参数: + +```bash +$ ruyi install --reinstall gnu-upstream +``` + +## 安装源码包 + +ruyi 包管理器同时管理一些源码包,使用 ``extract`` 命令下载一个源码包并解包到当前目录: + +```bash +$ ruyi extract ruyisdk-demo +$ ls +README.md rvv-autovec +``` + +## 搭建编译环境 + +已经安装的工具链与模拟器需要在 ruyi 编译环境中使用,这和 python 的虚拟环境十分类似。 +这是由 ``venv`` 命令实现的: + +```bash +$ ruyi venv --toolchain gnu-upstream --emulator qemu-user-riscv-upstream generic ./ruyi_venv +``` + +这个命令使用预置的 generic 配置,在 ``./ruyi_venv`` 目录建立包含 gnu-upstream 工具链和 + qemu-user-riscv-upstream 模拟器的编译环境。 + +具体使用参见“编译环境”与“具有 QEMU 支持的编译环境”章节。 + +## 卸载软件包 + +注意 ruyi 包管理器没有实现卸载 ruyi 软件包的功能。若您强制中断 ruyi 软件包安装进程或做了其他非预期操作 +而会导致软件包功能异常时,请使用 ``install --reinstall`` 以尝试重试安装该软件包。 + +## 卸载 RUYI 包管理器 + +使用下面的命令卸载 Ruyi 包管理器: + +```bash +$ ruyi self uninstall +``` + +这个命令将会询问您以二次确认该操作,如果希望 Ruyi 包管理不询问而直接执行: + +```bash +$ ruyi self uninstall -y +``` + +上面的命令只是删除 Ruyi 本身,并不会删除软件包缓存和安装的 Ruyi 软件包。 + +如果希望删除所有缓存和安装了的软件包以实现干净的卸载: + +```bash +$ ruyi self uninstall --purge +``` + +同样的这个命令将会询问您以二次确认该操作,如果希望 Ruyi 包管理不询问而直接执行: + +```bash +$ ruyi self uninstall --purge -y +``` + +实现 Ruyi 包管理自身的升级可能会需要 `sudo`,而 Ruyi 包管理被设计为避免进行需要超级用户权限的操作。 +故在需要升级 Ruyi 包管理时您需要手动进行该操作,即首先卸载 Ruyi 包管理器,再执行安装 Ruyi 包管理器的过程, +这个过程中您可以自主选择是否保留旧的软件包缓存和 Ruyi 软件包。 + +## 镜像信息的维护与下载、开发板系统的安装引导 + +执行如下命令并按照引导执行即可下载所需系统镜像,为设备安装系统: + +```bash +$ ruyi device provision +``` diff --git a/docs/zh/Package-Manager/installation.md b/docs/zh/Package-Manager/installation.md new file mode 100644 index 00000000..91ad4992 --- /dev/null +++ b/docs/zh/Package-Manager/installation.md @@ -0,0 +1,74 @@ +# ruyi 包管理器安装 + +让我们从 RuyiSDK 包管理器的安装开始: + +## 获取 ruyi 包管理器 + +目前 RuyiSDK 包管理器工具目前能在 **amd64**、**arm64**、**riscv64** 三种架构在 **Linux** 系统下运行,可以从如下链接中下载: + +- [ruyi GitHub Releases](https://github.com/RuyiSDK/ruyi/releases/) +- [ISCAS 镜像源](https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/) + +你可以首先使用 `ruyi update` 从配置的软件源中获得本地软件包缓存的更新,再使用 `ruyi list` 查看目前所支持的包。 + +> 若还有其余相关问题可以访问 ruyi 包管理器[仓库文档](https://github.com/RuyiSDK/ruyi)(目前仅支持英文)参阅。 + +## amd64 架构示例 + +```bash +$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/testing/ruyi.amd64.20231211 +$ chmod +x ./ruyi.amd64.20231211 +$ sudo cp ruyi.amd64.20231211 /usr/local/bin/ruyi +$ ruyi version +Ruyi 0.2.0-beta.20231211 +Copyright (C) 2023 Institute of Software, Chinese Academy of Sciences (ISCAS). +All rights reserved. +License: Apache-2.0 +``` + +> ``ruyi version`` 应当可以正常打印版本信息。**注意二进制的文件名必须为** ruyi。 + +列出帮助信息: + +```bash +$ ruyi --help + +RuyiSDK Package Manager 0.2.0-beta.20231211 + +options: + -h, --help show this help message and exit + -V, --version Print version information + +subcommands: + {extract,install,i,list,update,venv,admin,self,version} + extract Fetch package(s) then extract to current directory + install (i) Install package from configured repository + list List available packages in configured repository + update Update RuyiSDK repo and packages + venv Generate a virtual environment adapted to the chosen toolchain and profile + admin (NOT FOR REGULAR USERS) Subcommands for managing Ruyi Repos + self Manage this Ruyi installation + version Print version information + + +``` + + +### 其他说明 + +1. 由于目前软件包索引信息托管于 GitHub 仓库,国内访问可能会产生不稳定等问题,若出现 `ruyi update` 执行时连续报错,可将仓库更换成 [备用仓库](https://mirror.iscas.ac.cn/git/ruyisdk/packages-index.git)。 + +2. 具体操作:参考 ruyi [仓库文档](https://github.com/RuyiSDK/ruyi)在 ruyi 包管理工具默认的配置目录 `~/.config/ruyi` 下通过 `config.toml` 文件配置(不同linux发行版可能不同,如果无可自己创建)。 + +## 总结 + +以上场景介绍了 ruyi 包管理器和工具的基本使用,包括: +- 安装 `ruyi` +- 使用 `ruyi list` `ruyi update` `ruyi install` 功能 +- 若出现网络不稳定的备用方案 + +ruyi 包管理器相关的更多命令以及命令具体使用方法请参阅[功能介绍](../Package-Manager/index.md)。 + +### 使用案例 + +目前有一些简单的使用案例提供参考,请参阅使用案例栏目。 diff --git a/docs/zh/RuyiSDK/case1.md b/docs/zh/RuyiSDK/case1.md new file mode 100644 index 00000000..50d99949 --- /dev/null +++ b/docs/zh/RuyiSDK/case1.md @@ -0,0 +1,100 @@ +# 使用编译环境进行 Coremark 构建 + +本文使用 Milkv-Duo 编译环境,构建 coremark 。 + +首先进入编译环境: + +```bash +$ . milkv-venv/bin/ruyi-activate +«Ruyi milkv-venv» $ +``` + +coremark 源码可以直接从 Ruyi 软件仓库中下载: + +```bash +«Ruyi milkv-venv» $ mkdir coremark +«Ruyi milkv-venv» $ cd coremark +«Ruyi milkv-venv» $ ruyi extract coremark +info: downloading https://mirror.iscas.ac.cn/RuyiSDK/dist/coremark-1.01.tar.gz to /home/myon/.cache/ruyi/distfiles/coremark-1.01.tar.gz + % Total % Received % Xferd Average Speed Time Time Time Current + Dload Upload Total Spent Left Speed +100 391k 100 391k 0 0 1400k 0 --:--:-- --:--:-- --:--:-- 1404k +info: extracting coremark-1.01.tar.gz for package coremark-1.0.1 +info: package coremark-1.0.1 extracted to current working directory +``` + +这个操作将从 Ruyi 软件源中下载 coremark 源码并解包到**当前目录**。 + +由于使用的工具链为 ``riscv64-plct-linux-gnu-gcc`` ,需要编辑构建脚本: + +```bash +«Ruyi milkv-venv» $ sed -i 's/\bgcc\b/riscv64-plct-linux-gnu-gcc/g' linux64/core_portme.mak +``` + +构建 coremark: + +```bash +«Ruyi milkv-venv» $ make PORT_DIR=linux64 link +riscv64-plct-linux-gnu-gcc -O2 -Ilinux64 -I. -DFLAGS_STR=\""-O2 -lrt"\" -DITERATIONS=0 core_list_join.c core_main.c core_matrix.c core_state.c core_util.c linux64/core_portme.c -o ./coremark.exe -lrt +Link performed along with compile +«Ruyi milkv-venv» $ file coremark.exe +coremark.exe: ELF 64-bit LSB executable, UCB RISC-V, RVC, double-float ABI, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-riscv64-lp64d.so.1, BuildID[sha1]=d9dbc7115d07d1953087dd2c1e5d46adc2ab0d4f, for GNU/Linux 4.15.0, with debug_info, not stripped +``` + +可以看到成功构建 RISC-V 架构的二进制。注意这整个过程如果在 riscv64 环境则不是交叉编译。 + +退出虚拟环境 + +```bash +«Ruyi milkv-venv» $ ruyi-deactivate +$ +``` + +## 在最新的 Milkv Duo 镜像上运行 + +传送 coremark 二进制的 Milkv Duo, Milkv Duo 的 IP 地址请按实际情况更改。 + +```bash +$ scp -O ./coremark.exe root@192.168.42.1:~ +``` + +在 Milkv Duo 上运行 + +```bash +[root@milkv-duo]~# ./coremark.exe +-sh: ./coremark.exe: not found +``` + +若出现这样的错误,则需要静态链接的二进制。 + +```bash +«Ruyi milkv-venv» $ make PORT_DIR=linux64 LFLAGS_END=-static link +riscv64-plct-linux-gnu-gcc -O2 -Ilinux64 -I. -DFLAGS_STR=\""-O2 -static"\" -DITERATIONS=0 core_list_join.c core_main.c core_matrix.c core_state.c core_util.c linux64/core_portme.c -o ./coremark.exe -static +Link performed along with compile +«Ruyi milkv-venv» $ file coremark.exe +coremark.exe: ELF 64-bit LSB executable, UCB RISC-V, RVC, double-float ABI, version 1 (SYSV), statically linked, BuildID[sha1]=1548f6b30560e1ca6f3fa8ba3ef6aea4188feacf, for GNU/Linux 4.15.0, with debug_info, not stripped +``` + +重新上传后运行 + +```bash +[root@milkv-duo]~# ./coremark.exe +2K performance run parameters for coremark. +CoreMark Size : 666 +Total ticks : 14911 +Total time (secs): 14.911000 +Iterations/Sec : 2011.937496 +Iterations : 30000 +Compiler version : GCC13.1.0 +Compiler flags : -O2 -static +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 : 0x5275 +Correct operation validated. See readme.txt for run and reporting rules. +CoreMark 1.0 : 2011.937496 / GCC13.1.0 -O2 -static / Heap +``` + diff --git a/docs/zh/RuyiSDK/case2.md b/docs/zh/RuyiSDK/case2.md new file mode 100644 index 00000000..b94fcd1a --- /dev/null +++ b/docs/zh/RuyiSDK/case2.md @@ -0,0 +1,100 @@ +# 为 RISC-V 开发板安装操作系统 + +目前 ruyi 包管理器提供了更为简便的操作系统安装方式,通过以下步骤以及相关引导即可完成安装。 + +## 环境 + +本文基于以下环境进行操作: +- 硬件:x86_64 PC +- 软件:Ubuntu 22.04 + +#### 其他说明 + +- 在任意 Linux 系统下皆可完成下文操作 + +连接方式,以下任选: +1. RISC-V 开发板以 USB 连接线接入 PC(若可以连接,推荐该方式) +2. 将 RISC-V 开发板 SD 卡通过读卡器接入 PC + +## 安装操作系统 + +在确保已安装 ruyi 包管理器,并且测试 `ruyi -V` 正常输出版本相关信息后,请继续以下操作。 + +ruyi 包管理器提供了为 RISC-V 开发板安装操作系统的功能,为任一型号的 RISC-V 开发板安装镜像都只需要执行: + +```bash +ruyi device provision +``` + +该命令将会返回工具目前所支持的 RISC-V 开发板,选择开发板后将返回所有支持指定开发板的操作系统: + +``` +RuyiSDK Device Provisioning Wizard + +This is a wizard intended to help you install a system on your device for your +development pleasure, all with ease. + +You will be asked some questions that help RuyiSDK understand your device and +your intended configuration, then packages will be downloaded and flashed onto +the device's storage, that you should somehow make available on this host +system beforehand. + +Note that, as Ruyi does not run as root, but raw disk access is most likely +required to flash images, you should arrange to allow your user account sudo +access to necessary commands such as dd. Flashing will fail if the sudo +configuration does not allow so. + +Continue? (y/N) y + +The following devices are currently supported by the wizard. Please pick your device: + +1. Allwinner Nezha D1 +2. Canaan Kendryte K230 +3. Milk-V Duo +4. Milk-V Pioneer Box +5. SiFive HiFive Unmatched +6. Sipeed Lichee RV +7. Sipeed LicheePi 4A +8. StarFive VisionFive +9. StarFive VisionFive2 + +Choice? (1-9) + +``` + +以上,以 Sipeed LicheePi 4A 为例,需要为其安装镜像,只需要输入对应的序号:`7` + + +``` +Choice? (1-9) 7 + +The device has the following variants. Please choose the one corresponding to your hardware at hand: + + 1. Sipeed LicheePi 4A (8G RAM) + 2. Sipeed LicheePi 4A (16G RAM) + +Choice? (1-2) 2 + +The following system configurations are supported by the device variant you have chosen. Please pick the one you want +to put on the device: + + 1. openEuler RISC-V (headless) for Sipeed LicheePi 4A (16G RAM) + 2. openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (16G RAM) + 3. RevyOS for Sipeed LicheePi 4A (16G RAM) + +Choice? (1-3) 3 + +We are about to download and install the following packages for your device: + + * board-image/revyos-sipeed-lpi4a + * board-image/uboot-revyos-sipeed-lpi4a-16g + +Proceed? (y/N) + +``` + +您只需要按照引导提示一步步执行即可。 + +## 其他说明 + +相关的系统刷写问题可以访问对应开发板官网以获取针对性的帮助。 diff --git a/docs/zh/RuyiSDK/case3.md b/docs/zh/RuyiSDK/case3.md new file mode 100644 index 00000000..11bd4be7 --- /dev/null +++ b/docs/zh/RuyiSDK/case3.md @@ -0,0 +1,118 @@ +# 使用示例 + +以开源基准测试程序 coremark 为例,展示从 ruyi 包管理器安装到使用 ruyi 包管理器搭建 RISC-V 的编译、模拟环境,完成 coremark 源码本地编译并在 Licheepi 4A 开发板上运行的过程。 + +## 环境说明 + +- 硬件环境:Licheepi 4A 开发板(th1520) +- 软件环境:Debian/openEuler for RISC-V + +## ruyi 包管理器的安装 + +1. [可选] 清除当前已经安装的 ruyi 包管理器及其所有数据。 + +```bash +ruyi self uninstall --purge +``` + +2. 下载 `ruyi` 工具并为其赋可执行权限并配置到环境变量中:从[ruyi GitHub Releases](https://github.com/RuyiSDK/ruyi/releases/) 或 [ISCAS 镜像源](https://mirror.iscas.ac.cn/RuyiSDK/ruyi/releases/)下载最新的 `ruyi` 工具。 + +```bash +# 下载 riscv64 版本的 ruyi 包管理器,将其放到 path 路径下,并赋予其可执行权限 +wget https://github.com/RuyiSDK/ruyi/releases/download/0.5.0/ruyi-0.5.0.riscv64 +sudo cp ruyi-0.5.0.riscv64 /usr/local/bin/ruyi +sudo chmod +x ruyi +cd +``` + +3. 验证 ruyi 包管理器可否使用 + +```bash +ruyi --version +``` + +4. 更新最新的软件源索引 + +```bash +ruyi update +``` + +详细请见[此处](../Package-Manager/installation.md) + +## 使用 ruyi 包管理器部署开发环境: + +5. 查看软件仓软件包索引信息 + +```bash +ruyi list +``` + +6. 安装 gnu:ruyi install `` + +```bash +#安装适用于 Licheepi 4A 的编译工具链 gnu-plct-xthead +ruyi install gnu-plct-xthead +``` + +7. 查看预置编译环境 + +```bash +ruyi list profiles +``` + +8. 由指定的工具链、模拟器配置建立 Ruyi 虚拟环境 venv-sipeed。 + > 注意在虚拟环境创建时,需要指定正确的编译器版本和 sysroot 类型。 + +```bash +ruyi venv -h + +##创建虚拟环境 venv-sipeed +ruyi venv -t gnu-plct-xthead sipeed-lpi4a venv-sipeed + +#查看编译环境中得工具 +ls venv-sipeed/bin/ + +#激活虚拟环境(虚拟环境可以理解成一个容器,实现运行环境隔离的设计,激活后,在 venv-sipeed 这个环境中,使用的就是 gnu-plct-xthead 版本工具链。不创建虚拟环境也可以为 /home/sipeed/.local/share/ruyi/binaries/riscv64/gnu-plct-xthead-2.8.0-ruyi.20240222/bin 配置环境变量,直接使用环境变量指定的gcc编译) +. venv-sipeed/bin/ruyi-activate + +#查看当前虚拟环境下的 gcc 是否可用 +«Ruyi venv-sipeed» sipeed@lpi4a1590:~$ riscv64-plctxthead-linux-gnu-gcc --version +``` + +9. 下载解压 coremark 源码作为编译对象 + +```bash +mkdir coremark && cd coremark +ruyi extract coremark +ls -al +``` + +## 交叉编译 coremark + +10. 设置 coremark 源码中的编译配置信息(参考 coremark 仓库自述文档) + +```bash +sed -i 's/\bgcc\b/riscv64-plctxthead-linux-gnu-gcc/g' linux64/core_portme.mak +``` + +11. 执行交叉编译和构建,得到可执行程序 coremark.exe + +```bash +make PORT_DIR=linux64 link +ls -al #新增可执行程序coremark.exe +``` +12. 查看 rv64 可执行程序文件属性信息。 + +```bash +file coremark.exe +# 命令回显信息显示了文件的架构相关信息 +``` + +## 运行验证 + +13. 直接运行 riscv64 coremark 可执行程序 + +```bash +./coremark.exe +``` + diff --git a/docs/zh/introduction/img/RuyiSDK.png b/docs/zh/introduction/img/RuyiSDK.png new file mode 100644 index 00000000..463dc75a Binary files /dev/null and b/docs/zh/introduction/img/RuyiSDK.png differ diff --git a/docs/zh/introduction/image/requirement/1703147196780.png b/docs/zh/introduction/img/Structure-RuyiSDK.png similarity index 100% rename from docs/zh/introduction/image/requirement/1703147196780.png rename to docs/zh/introduction/img/Structure-RuyiSDK.png diff --git a/docs/zh/introduction/index.md b/docs/zh/introduction/index.md index 6f48b249..c34b836b 100644 --- a/docs/zh/introduction/index.md +++ b/docs/zh/introduction/index.md @@ -1,28 +1,31 @@ -## Hello Ruyi +# Hello Ruyi 欢迎来到 [RuyiSDK](https://github.com/ruyisdk) 相关介绍内容,以下是本文相关内容: -> 1. [什么是 RuyiSDK](##介绍) -> 2. [为什么会有 RuyiSDK](##背景) -> 3. [RuyiSDK 有什么用](##功能) -> 4. [我可以在什么设备上运行](##支持的设备) -> 5. [RuyiSDK 的原理是什么](##RuyiSDK-架构示意图) -> 6. [我该从何开始](##让我们开始吧!) + +> 1. 什么是 RuyiSDK -> 介绍 +> 2. 为什么会有 RuyiSDK -> 背景 +> 3. RuyiSDK 有什么用 -> 功能 +> 4. 我可以在什么设备上运行 -> 支持的设备 +> 5. RuyiSDK 的原理是什么 -> RuyiSDK-架构示意图 +> 6. 我该从何开始 -> 让我们开始吧! ## 介绍 -RuyiSDK 是一个由中科院软件所(ISCAS)所启动的开源项目,该项目旨在为 RISC-V 开发者提供一个便捷、完善的开发环境。其提供了相关最新的硬件信息、软件支持,例如在[支持的设备](## 支持的设备)中有提供相关支持硬件情况;软件层面提供了镜像(如 [RevyOS](https://github.com/ruyisdk/revyos))、工具链、包管理器等。 +RuyiSDK 是一个由 [PLCT Lab](https://plctlab.org/) 所启动的开源项目,该项目旨在为 RISC-V 开发者提供一个便捷、完善的开发环境。其提供了相关最新的硬件信息、软件支持,例如在支持的设备中有提供相关支持硬件情况;软件层面提供了镜像(如 [RevyOS](https://github.com/ruyisdk/revyos))、工具链、包管理器等。 其最终目标是希望为 RISC-V 开发者提供一个完善、便捷的开发环境,使得 RISC-V 成为主流架构,以及建设并运营一个完善的社区以便开发者交流。最终希望 RuyiSDK 可以走向国际化,为全球的 RISC-V 开发者提供开发的便捷。 ## 背景 -RISC-V 是第五代精简指令集,由加州伯克利分校所发起的一个开源项目,相比 Cisc 而言更具精简性,指令执行效率更高。开源使其能够更加方便的运用在不同的领域,目前在 IoT、智能家居、芯片设计、操作系统、软件开发等领域都有应用。 +RISC-V 是第五代精简指令集,由加州伯克利分校所发起的一个开源项目,相比 CISC 而言更具精简性,指令执行效率更高。开源使其能够更加方便的运用在不同的领域,目前在 IoT、智能家居、芯片设计、操作系统、软件开发等领域都有应用。 而在过往针对 RISC-V 的开发面临的问题在于相关资讯没有统一的平台,使得开发者从最开始的学习、再到开发应用的效率大幅降低,而 RuyiSDK 的出现就是为了解决这些问题。 ## 功能 +![RuyiSDK](./img/RuyiSDK.png) + RuyiSDK 分为以下三个部分: -### Ruyi 包管理器 +### [ruyi 包管理器](../Package-Manager/index.md) 该包管理器是一个在线的软件源,在该包管理器中,我们提供了如下内容: @@ -37,12 +40,12 @@ RuyiSDK 分为以下三个部分: 8. GUI(TODO) ``` -### Ruyi IDE +### [Ruyi IDE](../IDE/TODO.md) -该 IDE 是一个为 RISC-V 架构设计的开发工具箱,开发者可以轻松的通过 Ruyi 包管理器获取,可以对于实际的开发场景对于代码的编写以及调试。 +该 IDE 是一个为 RISC-V 架构设计的开发工具箱,开发者可以轻松的通过 ruyi 包管理器获取,可以对于实际的开发场景对于代码的编写以及调试。 使用包管理器开发者可以获取该工具箱中的编译工具链、调试工具和模拟器,开发者可以使用模拟器或者在 RISC-V 开发板上对自身的程序进行编写以及调试。 -### Community +### [Community](../Community/About-us.md) 在我们的社区当中,提供了大量的相关技术文章、代码、教程视频,以及我们会举办一定的线下活动获得来自用户的反馈,在线上也会有相应的论坛提供给开发者进行技术交流。 @@ -50,38 +53,46 @@ RuyiSDK 分为以下三个部分: RuyiSDK 对 RISC-V 设备的集成和支持主要包括以下几个方面: -1. RISC-V 开发板镜像相关信息以及下载、安装教程,便于开发者获取相关镜像(换而言之提供一个镜像站),其中涵盖多种操作系统(如基于 Debian 的 RevyOS、openEuler riscv64等)提供给开发者使用。 +1. RISC-V 开发板镜像相关信息以及下载、安装教程,便于开发者获取相关镜像(换而言之提供一个镜像站),其中涵盖多种操作系统(如基于 Debian 的 RevyOS、openEuler RISC-V 等)提供给开发者使用。 2. 提供 RISC-V 开发板对应的演示程序、开发资料和相关工具(含适用的编译工具链、模拟器等)的信息维护和下载,方便 RISC-V 开发者快速上手。 3. 在集成开发环境中增加 RISC-V 设备专有向导页面、实现开发环境和运行环境的文件传输、支持在 RISC-V 设备上调试应用程序等。 ## 支持的设备 -目前 RuyiSDK 支持的设备如下: - -1. [Allwinner Nezha D1](https://d1.docs.aw-ol.com/d1_dev/):适用于入门级开发和教育用途。 -2. [Canaan Kendryte K230](https://www.canaan-creative.com/product/k230/):专为 AI 应用设计。 -3. [Milk-V Duo](https://milkv.io/zh/duo):小巧灵活,适合嵌入式应用。 -4. [Milk-V Duo S](https://milkv.io/zh/duo-s):提供更强的处理能力。 -5. [Milk-V Mars](https://milkv.io/zh/mars):适合物联网应用。 -6. [Milk-V Mars CM](https://milkv.io/zh/mars-cm):集成多种通信接口。 -7. [Milk-V Meles](https://milkv.io/zh/meles):高性能嵌入式开发。 -8. [Milk-V Pioneer Box](https://milkv.io/zh/pioneer):适用于边缘计算。 -9. [Milk-V Vega](https://milkv.io/zh/vega):高性能计算设备。 -10. [SiFive HiFive Unmatched](https://www.sifive.com/boards/hifive-unmatched):适合高性能开发和研究。 -11. [Sipeed Lichee RV](https://wiki.sipeed.com/hardware/en/lichee/RV/RV.html):适合入门和教育。 -12. [Sipeed LicheePi 4A](https://wiki.sipeed.com/hardware/en/lichee/th1520/lpi4a/1_intro.html):提供更高的性能和更多的接口。 -13. [StarFive VisionFive](https://www.starfivetech.com/site/boards):支持多种 AI 和物联网应用。 -14. [StarFive VisionFive2](https://www.starfivetech.com/site/boards):升级版,提供更强的计算能力。 - -> 文档可能更新不及时,查看最新支持的设备请通过指令`ruyi device provision`查询。 +目前 RuyiSDK [支持的设备](https://github.com/ruyisdk/support-matrix)如下: + +| 型号 | | | | +| ----------------------------- | -------------------- | ------------------------ | ------------------- | +| 100ASK-V853-PRO | AllWinner V853 | BananaPi BPI-F3 | BeagleV-Ahead | +| BeagleV-Fire | CanMV K230 | Canaan K510-CRB-V1.2 KIT | CH32V103-EVT | +| CH32V203-EVT | CH32V208-EVT | CH32V303-EVT | CH32V305-EVT | +| CH32V307-EVT | CH573F-EVT | CH582F-EVT | CH592X-EVT | +| D1s NeZha | DongshanPI-Nezha STU | DongShanPI D1s | HiFive Unmatched | +| Lichee Cluster 4A | Lichee Console 4A | LicheePi 4A | LicheeRV/AWOL Nezha | +| LicheeRV Nano | Longan Nano | MangoPi MQ | MangoPi MQ Pro | +| Milk-V Duo 64M | Milk-V Duo 256M | Milk-V Duo S | Milk-V Mars | +| Milk-V Meles | Milk-V Vega | Nuclei DDR200T | Pioneer Box | +| PolarFire FPGA SoC Icicle Kit | RV-STAR | Sipeed Maix-Bit | Sipeed M0 sense | +| Sipeed M0P Dock | Sipeed M0s Dock | Sipeed M1s Dock | Star64 | +| Tang Mega 138K | TinyVision | VisionFive | VisionFive 2 | +| YuzukiHD-Lizard | | | | + + +> 文档可能更新不及时,查看最新支持的设备请通过指令 `ruyi device provision` 查询。 ## RuyiSDK-架构示意图 -![image](../../assets/images/ruyisdk.png) +![Structure-RuyiSDK.png](./img/Structure-RuyiSDK.png) + ## 让我们开始吧! 从 RuyiSDK 开始使用设备! -### 获取并安装OS + +### 获取并安装 ruyi + +具体请参考[这里](../Package-Manager/installation.md) + +### 获取并安装 OS 开始的第一步: @@ -89,4 +100,6 @@ RuyiSDK 对 RISC-V 设备的集成和支持主要包括以下几个方面: $ ruyi device provision ``` -该指令会识别硬件信息,并且开始自动执行对应程序为用户自动部署 RISC-V 开发环境,按照引导信息一步步执行即可。 \ No newline at end of file +> 该指令会识别硬件信息,并且开始自动执行对应程序为用户自动部署 RISC-V 开发环境,按照引导信息一步步执行即可。 + +具体请参考这里[这里](../RuyiSDK/case2.md) diff --git a/docs/zh/devices/index.md b/docs/zh/old/devices/index.md similarity index 100% rename from docs/zh/devices/index.md rename to docs/zh/old/devices/index.md diff --git a/docs/zh/old/introduction/image/requirement/1703147196780.png b/docs/zh/old/introduction/image/requirement/1703147196780.png new file mode 100644 index 00000000..80db4184 Binary files /dev/null and b/docs/zh/old/introduction/image/requirement/1703147196780.png differ diff --git a/docs/zh/old/introduction/index.md b/docs/zh/old/introduction/index.md new file mode 100644 index 00000000..6f48b249 --- /dev/null +++ b/docs/zh/old/introduction/index.md @@ -0,0 +1,92 @@ +## Hello Ruyi + +欢迎来到 [RuyiSDK](https://github.com/ruyisdk) 相关介绍内容,以下是本文相关内容: +> 1. [什么是 RuyiSDK](##介绍) +> 2. [为什么会有 RuyiSDK](##背景) +> 3. [RuyiSDK 有什么用](##功能) +> 4. [我可以在什么设备上运行](##支持的设备) +> 5. [RuyiSDK 的原理是什么](##RuyiSDK-架构示意图) +> 6. [我该从何开始](##让我们开始吧!) +## 介绍 + +RuyiSDK 是一个由中科院软件所(ISCAS)所启动的开源项目,该项目旨在为 RISC-V 开发者提供一个便捷、完善的开发环境。其提供了相关最新的硬件信息、软件支持,例如在[支持的设备](## 支持的设备)中有提供相关支持硬件情况;软件层面提供了镜像(如 [RevyOS](https://github.com/ruyisdk/revyos))、工具链、包管理器等。 + +其最终目标是希望为 RISC-V 开发者提供一个完善、便捷的开发环境,使得 RISC-V 成为主流架构,以及建设并运营一个完善的社区以便开发者交流。最终希望 RuyiSDK 可以走向国际化,为全球的 RISC-V 开发者提供开发的便捷。 + +## 背景 + +RISC-V 是第五代精简指令集,由加州伯克利分校所发起的一个开源项目,相比 Cisc 而言更具精简性,指令执行效率更高。开源使其能够更加方便的运用在不同的领域,目前在 IoT、智能家居、芯片设计、操作系统、软件开发等领域都有应用。 + +而在过往针对 RISC-V 的开发面临的问题在于相关资讯没有统一的平台,使得开发者从最开始的学习、再到开发应用的效率大幅降低,而 RuyiSDK 的出现就是为了解决这些问题。 + +## 功能 + +RuyiSDK 分为以下三个部分: +### Ruyi 包管理器 + +该包管理器是一个在线的软件源,在该包管理器中,我们提供了如下内容: + +``` +1. 工具链 +2. 调试工具 +3. 模拟器 +4. 运行环境 +5. 文档 +6. 源码 +7. 工具、系统镜像 +8. GUI(TODO) +``` + +### Ruyi IDE + +该 IDE 是一个为 RISC-V 架构设计的开发工具箱,开发者可以轻松的通过 Ruyi 包管理器获取,可以对于实际的开发场景对于代码的编写以及调试。 +使用包管理器开发者可以获取该工具箱中的编译工具链、调试工具和模拟器,开发者可以使用模拟器或者在 RISC-V 开发板上对自身的程序进行编写以及调试。 + +### Community + +在我们的社区当中,提供了大量的相关技术文章、代码、教程视频,以及我们会举办一定的线下活动获得来自用户的反馈,在线上也会有相应的论坛提供给开发者进行技术交流。 + +---- + +RuyiSDK 对 RISC-V 设备的集成和支持主要包括以下几个方面: + +1. RISC-V 开发板镜像相关信息以及下载、安装教程,便于开发者获取相关镜像(换而言之提供一个镜像站),其中涵盖多种操作系统(如基于 Debian 的 RevyOS、openEuler riscv64等)提供给开发者使用。 +2. 提供 RISC-V 开发板对应的演示程序、开发资料和相关工具(含适用的编译工具链、模拟器等)的信息维护和下载,方便 RISC-V 开发者快速上手。 +3. 在集成开发环境中增加 RISC-V 设备专有向导页面、实现开发环境和运行环境的文件传输、支持在 RISC-V 设备上调试应用程序等。 + +## 支持的设备 + +目前 RuyiSDK 支持的设备如下: + +1. [Allwinner Nezha D1](https://d1.docs.aw-ol.com/d1_dev/):适用于入门级开发和教育用途。 +2. [Canaan Kendryte K230](https://www.canaan-creative.com/product/k230/):专为 AI 应用设计。 +3. [Milk-V Duo](https://milkv.io/zh/duo):小巧灵活,适合嵌入式应用。 +4. [Milk-V Duo S](https://milkv.io/zh/duo-s):提供更强的处理能力。 +5. [Milk-V Mars](https://milkv.io/zh/mars):适合物联网应用。 +6. [Milk-V Mars CM](https://milkv.io/zh/mars-cm):集成多种通信接口。 +7. [Milk-V Meles](https://milkv.io/zh/meles):高性能嵌入式开发。 +8. [Milk-V Pioneer Box](https://milkv.io/zh/pioneer):适用于边缘计算。 +9. [Milk-V Vega](https://milkv.io/zh/vega):高性能计算设备。 +10. [SiFive HiFive Unmatched](https://www.sifive.com/boards/hifive-unmatched):适合高性能开发和研究。 +11. [Sipeed Lichee RV](https://wiki.sipeed.com/hardware/en/lichee/RV/RV.html):适合入门和教育。 +12. [Sipeed LicheePi 4A](https://wiki.sipeed.com/hardware/en/lichee/th1520/lpi4a/1_intro.html):提供更高的性能和更多的接口。 +13. [StarFive VisionFive](https://www.starfivetech.com/site/boards):支持多种 AI 和物联网应用。 +14. [StarFive VisionFive2](https://www.starfivetech.com/site/boards):升级版,提供更强的计算能力。 + +> 文档可能更新不及时,查看最新支持的设备请通过指令`ruyi device provision`查询。 + +## RuyiSDK-架构示意图 + +![image](../../assets/images/ruyisdk.png) +## 让我们开始吧! + +从 RuyiSDK 开始使用设备! +### 获取并安装OS + +开始的第一步: + +```bash +$ ruyi device provision +``` + +该指令会识别硬件信息,并且开始自动执行对应程序为用户自动部署 RISC-V 开发环境,按照引导信息一步步执行即可。 \ No newline at end of file diff --git a/docs/zh/introduction/requirement.md b/docs/zh/old/introduction/requirement.md similarity index 100% rename from docs/zh/introduction/requirement.md rename to docs/zh/old/introduction/requirement.md diff --git a/docs/zh/plan/index.md b/docs/zh/old/plan/index.md similarity index 100% rename from docs/zh/plan/index.md rename to docs/zh/old/plan/index.md diff --git a/docs/zh/ruyi/getstarted/index.md b/docs/zh/old/ruyi/getstarted/index.md similarity index 100% rename from docs/zh/ruyi/getstarted/index.md rename to docs/zh/old/ruyi/getstarted/index.md diff --git a/docs/zh/ruyi/index.md b/docs/zh/old/ruyi/index.md similarity index 100% rename from docs/zh/ruyi/index.md rename to docs/zh/old/ruyi/index.md diff --git a/docs/zh/ruyi/updates/0.10.0.md b/docs/zh/old/ruyi/updates/0.10.0.md similarity index 100% rename from docs/zh/ruyi/updates/0.10.0.md rename to docs/zh/old/ruyi/updates/0.10.0.md diff --git a/docs/zh/ruyi/updates/0.11.0.md b/docs/zh/old/ruyi/updates/0.11.0.md similarity index 100% rename from docs/zh/ruyi/updates/0.11.0.md rename to docs/zh/old/ruyi/updates/0.11.0.md diff --git a/docs/zh/ruyi/updates/0.12.0.md b/docs/zh/old/ruyi/updates/0.12.0.md similarity index 100% rename from docs/zh/ruyi/updates/0.12.0.md rename to docs/zh/old/ruyi/updates/0.12.0.md diff --git a/docs/zh/ruyi/updates/0.13.0.md b/docs/zh/old/ruyi/updates/0.13.0.md similarity index 100% rename from docs/zh/ruyi/updates/0.13.0.md rename to docs/zh/old/ruyi/updates/0.13.0.md diff --git a/docs/zh/ruyi/updates/0.3.0.md b/docs/zh/old/ruyi/updates/0.3.0.md similarity index 100% rename from docs/zh/ruyi/updates/0.3.0.md rename to docs/zh/old/ruyi/updates/0.3.0.md diff --git a/docs/zh/ruyi/updates/0.4.0.md b/docs/zh/old/ruyi/updates/0.4.0.md similarity index 100% rename from docs/zh/ruyi/updates/0.4.0.md rename to docs/zh/old/ruyi/updates/0.4.0.md diff --git a/docs/zh/ruyi/updates/0.5.0.md b/docs/zh/old/ruyi/updates/0.5.0.md similarity index 100% rename from docs/zh/ruyi/updates/0.5.0.md rename to docs/zh/old/ruyi/updates/0.5.0.md diff --git a/docs/zh/ruyi/updates/0.6.0.md b/docs/zh/old/ruyi/updates/0.6.0.md similarity index 100% rename from docs/zh/ruyi/updates/0.6.0.md rename to docs/zh/old/ruyi/updates/0.6.0.md diff --git a/docs/zh/ruyi/updates/0.7.0.md b/docs/zh/old/ruyi/updates/0.7.0.md similarity index 100% rename from docs/zh/ruyi/updates/0.7.0.md rename to docs/zh/old/ruyi/updates/0.7.0.md diff --git a/docs/zh/ruyi/updates/0.8.1.md b/docs/zh/old/ruyi/updates/0.8.1.md similarity index 100% rename from docs/zh/ruyi/updates/0.8.1.md rename to docs/zh/old/ruyi/updates/0.8.1.md diff --git a/docs/zh/ruyi/updates/0.9.0.md b/docs/zh/old/ruyi/updates/0.9.0.md similarity index 100% rename from docs/zh/ruyi/updates/0.9.0.md rename to docs/zh/old/ruyi/updates/0.9.0.md diff --git a/docs/zh/sdk/gnu/index.md b/docs/zh/old/sdk/gnu/index.md similarity index 100% rename from docs/zh/sdk/gnu/index.md rename to docs/zh/old/sdk/gnu/index.md diff --git a/docs/zh/sdk/llvm/index.md b/docs/zh/old/sdk/llvm/index.md similarity index 100% rename from docs/zh/sdk/llvm/index.md rename to docs/zh/old/sdk/llvm/index.md diff --git a/docs/zh/usecase/index.md b/docs/zh/old/usecase/index.md similarity index 100% rename from docs/zh/usecase/index.md rename to docs/zh/old/usecase/index.md diff --git a/docs/zh/usecase/rvbook/index.md b/docs/zh/old/usecase/rvbook/index.md similarity index 100% rename from docs/zh/usecase/rvbook/index.md rename to docs/zh/old/usecase/rvbook/index.md diff --git a/docs/zh/usecase/setupos/index.md b/docs/zh/old/usecase/setupos/index.md similarity index 100% rename from docs/zh/usecase/setupos/index.md rename to docs/zh/old/usecase/setupos/index.md diff --git a/docs/zh/usecase/x86pc/index.md b/docs/zh/old/usecase/x86pc/index.md similarity index 100% rename from docs/zh/usecase/x86pc/index.md rename to docs/zh/old/usecase/x86pc/index.md diff --git a/docs/zh/usedirection/developmentside/environments/index.md b/docs/zh/old/usedirection/developmentside/environments/index.md similarity index 100% rename from docs/zh/usedirection/developmentside/environments/index.md rename to docs/zh/old/usedirection/developmentside/environments/index.md diff --git a/docs/zh/usedirection/developmentside/index.md b/docs/zh/old/usedirection/developmentside/index.md similarity index 100% rename from docs/zh/usedirection/developmentside/index.md rename to docs/zh/old/usedirection/developmentside/index.md diff --git a/docs/zh/usedirection/developmentside/sources/coremark/index.md b/docs/zh/old/usedirection/developmentside/sources/coremark/index.md similarity index 100% rename from docs/zh/usedirection/developmentside/sources/coremark/index.md rename to docs/zh/old/usedirection/developmentside/sources/coremark/index.md diff --git a/docs/zh/usedirection/developmentside/typeselection/index.md b/docs/zh/old/usedirection/developmentside/typeselection/index.md similarity index 100% rename from docs/zh/usedirection/developmentside/typeselection/index.md rename to docs/zh/old/usedirection/developmentside/typeselection/index.md diff --git a/docs/zh/usedirection/index.md b/docs/zh/old/usedirection/index.md similarity index 100% rename from docs/zh/usedirection/index.md rename to docs/zh/old/usedirection/index.md diff --git a/docs/zh/usedirection/operationside/index.md b/docs/zh/old/usedirection/operationside/index.md similarity index 100% rename from docs/zh/usedirection/operationside/index.md rename to docs/zh/old/usedirection/operationside/index.md