diff --git a/README.md b/README.md index b1efecc2..cd7ba51f 100644 --- a/README.md +++ b/README.md @@ -8,14 +8,12 @@ docs仓库采用vitepress技术将Markdown格式的文档自动生成为web页面,结合github-pages 设置,能够自动将文档更新进行发布。 - ### 仓库目录介绍 - docs : Markdown文档;采用分级管理。 - .vitepress/config.mts : 目录索引定义。 - build :根据Markdown文档构建的html网页。 - ### 贡献文档 欢迎大家一起参与RUYISDK文档贡献。贡献方法: @@ -24,9 +22,8 @@ docs仓库采用vitepress技术将Markdown格式的文档自动生成为web页 2. 在docs/docs/zh 目录下按需新建目录和markdown文档,或者修改已有的markdown文档; 3. 修改docs/docs/.vitepress/config.mts 文档调整目录; 4. 提交修改并创建pull request将文档贡献提交到docs仓库,等待仓库管理员审核合入; -5. pr被合入后大约几十秒或几分钟后,访问 https://ruyisdk.github.io/docs/zh 检查网页是否更新。 - +5. pr被合入后大约几十秒或几分钟后,访问 https://ruyisdk.github.io/docs 检查网页是否更新。 ## 访问docs网站 -https://ruyisdk.github.io/docs/zh +网址:https://ruyisdk.github.io/docs diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 2a79769d..541791a4 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -15,9 +15,13 @@ export default defineConfig({ { text: '文档', link: '/zh/introduction/' } ], sidebar: [ - { text: '介绍', link: '/zh/introduction/' }, - { - text: '工具', + { text: '介绍', + items: [ + { text: 'RUYISDK 简介', link: '/zh/introduction/' }, + { text: '版本规划路线图', link: '/zh/plan/' }, + ] + }, + { text: '工具', items: [ { text: 'RUYI 包管理器', @@ -49,6 +53,24 @@ export default defineConfig({ } ] }, + { text: 'RuyiSDK', + items: [ + { + text: 'GNU', + link: '/zh/sdk/gnu/', + items: [ + { text: 'GNU Upstream', link: '/zh/sdk/gnu/' }, + ] + }, + { + text: 'LLVM', + link: '/zh/sdk/llvm/', + items: [ + { text: 'LLVM Upstream', link: '/zh/sdk/llvm/' }, + ] + } + ] + } ], } }, diff --git a/docs/zh/plan/index.md b/docs/zh/plan/index.md index 3c1e48fd..e0866651 100644 --- a/docs/zh/plan/index.md +++ b/docs/zh/plan/index.md @@ -11,7 +11,7 @@ RUYISDK 目前以每半年为一个里程碑版本周期来推动RUYISDK的不 * V0.3 (计划发布时间:2024年6月) * V0.4 (计划发布时间:2024年12月) * V1.0 (计划发布时间:2025年6月) - +* V2.0 (计划发布时间:2025年12月) ## RUYISDK 路线图 @@ -19,4 +19,4 @@ RUYISDK 目前以每半年为一个里程碑版本周期来推动RUYISDK的不 ### IDE -### 开发者社区 \ No newline at end of file +### 开发者社区 diff --git a/docs/zh/sdk/gnu/index.md b/docs/zh/sdk/gnu/index.md new file mode 100644 index 00000000..eb3b58b0 --- /dev/null +++ b/docs/zh/sdk/gnu/index.md @@ -0,0 +1,63 @@ +# RUYISDK GCC 工具链介绍 + +RUYISDK GCC 工具链是专门用于 RISC-V 架构的 GNU 工具链,它包括一系列工具,如编译器、汇编器、链接器等,用于开发和构建 RISC-V 架构的软件。 + +## 模块介绍 + +### GCC(GNU Compiler Collection) + +**功能:** RISC-V GNU Toolchain 的核心组件之一,用于将高级编程语言(如 C、C++)的源代码翻译成 RISC-V 架构的目标代码。 + +**支持:** 提供对不同 RISC-V 位长的支持,包括 RV32(32 位)和 RV64(64 位),以及不同RISC-V 指令集扩展的支持。 + +**详细使用说明参考:** https://gcc.gnu.org/onlinedocs/gcc-13.2.0/gcc/ + +### GNU Binutils + +包含工具: 汇编器(as)、链接器(ld)、目标文件工具(objdump、objcopy 等),性能分析工具(gprof)。 + +**功能:** 用于处理生成 RISC-V 架构的目标文件,执行汇编和链接,反汇编等操作。 + +**详细使用说明参考:** https://sourceware.org/binutils/docs-2.41/ + +### GDB(GNU Debugger) + +**功能:** 提供调试功能,允许开发人员在 RISC-V 目标上调试他们的程序。 + +### Glibc(GNU C Library) + +**功能:** C 语言运行时库,提供许多标准 C 库函数的实现,以支持在 RISC-V 上运行的程序。 + +### Newlib + +**功能:** 一个小型的 C 库,适用于嵌入式系统和其他资源受限的环境。对于一些嵌入式RISC-V 系统,选择使用 Newlib 而不是 Glibc 可以更高效的利用有限的系统资源。 + +### Libgcc + +**功能:** 包含一些与编译**功能:**器紧密相关的支持函数,例如用于浮点数乘除法的模拟运算函数。 + +目前 RUYISDK 包含三种工具链版本,分别为 GNU upstream 版本,Xuantie 版本以及RUYISDK 版本,不同版本支持的 RISC-V 指令集有所不同。 + +GNU upstream 工具链适合面向最新 RISC-V 特性的开发者,Xuantie 工具链侧重于使用 Xuantie 系列 CPU 芯片的硬件,RUYISDK 工具链侧重于提供稳定的工具链环境,尽可能的继承目前 RISC-V 的各个扩展与新特性。 + +## 使用说明 + +工具链中各个工具的使用方法请参考其使用说明文档,下面重点介绍 RISC-V 架构的一些常见用法: + +* -march 选项可以控制工具链开启的 RISC-V 扩展,其默认参数在 64 位工具链中为 `rv64gc`, 32 位工具链中为 `rv32gc`, 若要开启其他扩展,则需利用该选项重新向工具链指定想要开启的扩展,例如打开 V 扩展可以使用-march=rv64gcv,打开 b 扩展可以使用 `-march=rv64gc_zba_zbb_zbc_zbs,` + RUYISDK 中不同扩展的工具链已经在-march 中配置了其对应参数,方便用户直接使用,用户可以根据自身需求调整-march 输入,控制不同扩展的使用。 +* -mabi 选项主要控制工具链中所使用的寄存器组,其默认参数在 64 位工具链中为 `lp64d`,32 位工具链中为 `ilp32d`,嵌入式设备中为 `lp64e`, `ilp32e`, 无浮点硬件中为 `lp64`, `ilp32`, 用户可以根据自身硬件和使用场景进行选择。 + 使用 RVV 向量扩展时,请务必同时使用 `-O3` 选项,在编译器中开启 RVV 的向量化特性,一些 RVV 使用示例请参考:https://gcc.gnu.org/git/?p=gcc.git;a=tree;f=gcc/testsuite/gcc.target/riscv/rvv + +下面我们来介绍 RVV 使用时的两个常用参数: + +* --param=riscv-autovec-preference=用于告知编译器输入向量的长度,有已知固定向量长度的 `fixed-vlmax`输入与可伸缩向量不固定长度的 `scalable`输入,用户可以更具自己的程序进行调整,以获得更高的程序性能。 +* --param=riscv-autovec-lmul=用于指定一个循环迭代中处理的向量元素的数量,其输入参数可以参考 riscv-v-spec 手册,包括”dynamic,m1,m2,m4,m8”等,对于不熟悉参数的用户,建议使用 `dynamic`选项,由编译器自动配置选取合适的处理数量。 + +## 扩展支持 + +| 工具链版本 | 扩展名称 | +| ---------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Upstream | i, m, a, f, d, c, v, e(注意指定对应的 eABI)`
` zicsr, zifencei, zicond, zawrs, zba, zbb, zbc, zbs `
`zfinx, zdinx, zhinx, zhinxmin(注意指定的 ABI 为 lp64 或 ilp32, 与 f/d 扩展不兼容)`
`zbkb, zbkc, zbkx, zknd, zkne, zknh, zkr, zksed, zksh, zkt `
`zihintntl, zihintpause, zicboz, zicbom, zicbop `
`zfh, zfhmin, zvfh, zvfhmin, zvbb, zvbc, zvkg, zvkned, zvknha, zvknhb, zvksed, zvksh `
`zvknc, zvksc, zvkt, zfa, zmmul, zca, zcb, zce, zcf(仅 RV32)`
`zcd, zcmp(与 zcd 不兼容), zcmt, ztso `
`svinval, svnapot, `
`xcvmac, xcvalu, `
`xtheadba, xtheadbb, xtheadbs, xtheadcmo, xtheadcondmov, xtheadfmv, `
`xtheadint, xtheadmac, xtheadmemidx, xtheadfmemidx, `
`xtheadmempair, xtheadsync, xventanacondops | +| Xuantie | 对 xtheadba, xtheadbb, xtheadbs, xtheadcmo, xtheadcondmov, xtheadfmv,`
`xtheadint, xtheadmac, xtheadmemidx,`
`xtheadfmemidx, xtheadmempair, xtheadsync, xventanacondops `
`有特定优化,不支持 Zfinx, K, V, Zc, Xcv 等系列扩展 | +| RUYISDK | 额外支持 RV64-ILP32, Profiles(RV20/22), zpn, zpsfoperand, zbpbo | diff --git a/docs/zh/sdk/llvm/index.md b/docs/zh/sdk/llvm/index.md new file mode 100644 index 00000000..f423fd11 --- /dev/null +++ b/docs/zh/sdk/llvm/index.md @@ -0,0 +1,3 @@ +# RUYISDK LLVM 工具链介绍 + +> todo