diff --git a/404.html b/404.html index a4fac636..513738b2 100644 --- a/404.html +++ b/404.html @@ -8,14 +8,14 @@ - +
- + \ No newline at end of file diff --git a/assets/app.DVa6porj.js b/assets/app.CHv18bq0.js similarity index 95% rename from assets/app.DVa6porj.js rename to assets/app.CHv18bq0.js index baac8090..f1bc6ac7 100644 --- a/assets/app.DVa6porj.js +++ b/assets/app.CHv18bq0.js @@ -1 +1 @@ -import{U as o,a4 as p,a5 as u,a6 as l,a7 as c,a8 as f,a9 as d,aa as m,ab as h,ac as g,ad as A,d as P,u as v,y,x as C,ae as b,af as w,ag as E,ah as R}from"./chunks/framework.D4PmY8Hg.js";import{t as S}from"./chunks/theme.Cl2_Pwlj.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),_=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),E(),s.setup&&s.setup(),()=>R(s.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=D(),a=x();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function x(){return h(_)}function D(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{T as createApp}; +import{U as o,a4 as p,a5 as u,a6 as l,a7 as c,a8 as f,a9 as d,aa as m,ab as h,ac as g,ad as A,d as P,u as v,y,x as C,ae as b,af as w,ag as E,ah as R}from"./chunks/framework.D4PmY8Hg.js";import{t as S}from"./chunks/theme.CGoF92O7.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(S),_=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&b(),w(),E(),s.setup&&s.setup(),()=>R(s.Layout)}});async function T(){globalThis.__VITEPRESS__=!0;const e=D(),a=x();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function x(){return h(_)}function D(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&T().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{T as createApp}; diff --git a/assets/chunks/@localSearchIndexroot.DwSe3cuN.js b/assets/chunks/@localSearchIndexroot.DwSe3cuN.js new file mode 100644 index 00000000..c88189a5 --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.DwSe3cuN.js @@ -0,0 +1 @@ +const t='{"documentCount":127,"nextId":127,"documentIds":{"0":"/docs/zh/devices/#ruyisdk集成的risc-v设备","1":"/docs/zh/devices/#支持的risc-v设备","2":"/docs/zh/devices/#从ruyisdk开始使用设备","3":"/docs/zh/devices/#获取并安装os","4":"/docs/zh/introduction/#hello-ruyi","5":"/docs/zh/introduction/#介绍","6":"/docs/zh/introduction/#背景","7":"/docs/zh/introduction/#功能","8":"/docs/zh/introduction/#ruyi-包管理器","9":"/docs/zh/introduction/#ruyi-ide","10":"/docs/zh/introduction/#community","11":"/docs/zh/introduction/#支持的设备","12":"/docs/zh/introduction/#ruyisdk-架构示意图","13":"/docs/zh/introduction/#让我们开始吧","14":"/docs/zh/introduction/#获取并安装os","15":"/docs/zh/introduction/requirement.html#介绍","16":"/docs/zh/introduction/requirement.html#ruyisdk-的目标","17":"/docs/zh/introduction/requirement.html#ruyisdk-架构示意图","18":"/docs/zh/introduction/requirement.html#ruyisdk-模块需求说明","19":"/docs/zh/introduction/requirement.html#ruyi-包管理器","20":"/docs/zh/introduction/requirement.html#ruyi在线软件源-ruyi-repo","21":"/docs/zh/introduction/requirement.html#ruyi包管理工具-ruyi","22":"/docs/zh/introduction/requirement.html#ruyi-ide","23":"/docs/zh/introduction/requirement.html#开发者社区","24":"/docs/zh/plan/#版本规划路线图","25":"/docs/zh/plan/#ruyisdk-版本计划","26":"/docs/zh/plan/#里程碑版本","27":"/docs/zh/plan/#敏捷开发版本计划","28":"/docs/zh/plan/#ruyisdk-规划","29":"/docs/zh/plan/#_2024目标","30":"/docs/zh/plan/#敏捷开发版本排期","31":"/docs/zh/ruyi/getstarted/#开始","32":"/docs/zh/ruyi/getstarted/#安装依赖软件","33":"/docs/zh/ruyi/getstarted/#安装-ruyi-包管理器","34":"/docs/zh/ruyi/getstarted/#刷新软件包缓存","35":"/docs/zh/ruyi/getstarted/#查询包管理器更新内容","36":"/docs/zh/ruyi/getstarted/#查询可用软件包","37":"/docs/zh/ruyi/getstarted/#查询可用编译环境","38":"/docs/zh/ruyi/getstarted/#安装软件包","39":"/docs/zh/ruyi/getstarted/#安装源码包","40":"/docs/zh/ruyi/getstarted/#搭建编译环境","41":"/docs/zh/ruyi/getstarted/#卸载软件包","42":"/docs/zh/ruyi/getstarted/#卸载-ruyi-包管理器","43":"/docs/zh/ruyi/getstarted/#镜像信息的维护与下载、开发板系统的安装引导","44":"/docs/zh/ruyi/#ruyi-包管理器","45":"/docs/zh/ruyi/#支持的发行版平台","46":"/docs/zh/ruyi/#命令","47":"/docs/zh/ruyi/#附-外部链接","48":"/docs/zh/ruyi/updates/0.10.0.html#v0-10-0-版本新增特性","49":"/docs/zh/ruyi/updates/0.10.0.html#安装-v0-10-0","50":"/docs/zh/ruyi/updates/0.10.0.html#i18n-支持","51":"/docs/zh/ruyi/updates/0.10.0.html#板卡镜像刷写","52":"/docs/zh/ruyi/updates/0.11.0.html#v0-11-0-版本新增特性","53":"/docs/zh/ruyi/updates/0.11.0.html#安装-v0-11-0","54":"/docs/zh/ruyi/updates/0.11.0.html#板卡镜像刷写","55":"/docs/zh/ruyi/updates/0.12.0.html#v0-12-0-版本新增特性","56":"/docs/zh/ruyi/updates/0.12.0.html#安装-v0-12-0","57":"/docs/zh/ruyi/updates/0.3.0.html#v0-3-0-版本新增特性","58":"/docs/zh/ruyi/updates/0.3.0.html#安装-v0-3-0","59":"/docs/zh/ruyi/updates/0.3.0.html#ruyi-新闻","60":"/docs/zh/ruyi/updates/0.3.0.html#板卡镜像刷写","61":"/docs/zh/ruyi/updates/0.4.0.html#v0-4-0-版本新增特性","62":"/docs/zh/ruyi/updates/0.4.0.html#安装-v0-4-0","63":"/docs/zh/ruyi/updates/0.4.0.html#板卡镜像刷写","64":"/docs/zh/ruyi/updates/0.5.0.html#v0-5-0-版本新增特性","65":"/docs/zh/ruyi/updates/0.5.0.html#安装-v0-5-0","66":"/docs/zh/ruyi/updates/0.5.0.html#板卡镜像刷写","67":"/docs/zh/ruyi/updates/0.5.0.html#镜像源换源支持","68":"/docs/zh/ruyi/updates/0.6.0.html#v0-6-0-版本新增特性","69":"/docs/zh/ruyi/updates/0.6.0.html#安装-v0-6-0","70":"/docs/zh/ruyi/updates/0.6.0.html#依赖变化","71":"/docs/zh/ruyi/updates/0.6.0.html#板卡镜像刷写","72":"/docs/zh/ruyi/updates/0.7.0.html#v0-7-0-版本新增特性","73":"/docs/zh/ruyi/updates/0.7.0.html#安装-v0-7-0","74":"/docs/zh/ruyi/updates/0.7.0.html#板卡镜像刷写","75":"/docs/zh/ruyi/updates/0.8.1.html#v0-8-1-版本新增特性","76":"/docs/zh/ruyi/updates/0.8.1.html#安装-v0-8-1","77":"/docs/zh/ruyi/updates/0.8.1.html#板卡镜像刷写","78":"/docs/zh/ruyi/updates/0.9.0.html#v0-9-0-版本新增特性","79":"/docs/zh/ruyi/updates/0.9.0.html#安装-v0-9-0","80":"/docs/zh/ruyi/updates/0.9.0.html#板卡镜像刷写","81":"/docs/zh/sdk/gnu/#ruyisdk-gcc-工具链介绍","82":"/docs/zh/sdk/gnu/#模块介绍","83":"/docs/zh/sdk/gnu/#gcc-gnu-compiler-collection","84":"/docs/zh/sdk/gnu/#gnu-binutils","85":"/docs/zh/sdk/gnu/#gdb-gnu-debugger","86":"/docs/zh/sdk/gnu/#glibc-gnu-c-library","87":"/docs/zh/sdk/gnu/#newlib","88":"/docs/zh/sdk/gnu/#libgcc","89":"/docs/zh/sdk/gnu/#使用说明","90":"/docs/zh/sdk/gnu/#扩展支持","91":"/docs/zh/sdk/llvm/#ruyisdk-llvm-工具链介绍","92":"/docs/zh/usecase/#ruyisdk使用示例","93":"/docs/zh/usecase/rvbook/#使用示例","94":"/docs/zh/usecase/rvbook/#环境说明","95":"/docs/zh/usecase/rvbook/#ruyi工具的安装","96":"/docs/zh/usecase/rvbook/#使用ruyi工具部署开发环境","97":"/docs/zh/usecase/rvbook/#交叉编译coremark","98":"/docs/zh/usecase/rvbook/#运行验证","99":"/docs/zh/usecase/setupos/#为risc-v开发板安装操作系统","100":"/docs/zh/usecase/setupos/#环境说明","101":"/docs/zh/usecase/setupos/#安装操作系统","102":"/docs/zh/usecase/x86pc/#使用示例","103":"/docs/zh/usecase/x86pc/#环境说明","104":"/docs/zh/usecase/x86pc/#ruyi工具的安装","105":"/docs/zh/usecase/x86pc/#使用ruyi工具部署开发环境","106":"/docs/zh/usecase/x86pc/#交叉编译coremark","107":"/docs/zh/usecase/x86pc/#qemu-user-模式下运行-riscv64-coremark-可执行程序","108":"/docs/zh/usedirection/developmentside/environments/#ruyi-编译环境","109":"/docs/zh/usedirection/developmentside/environments/#工具链与预置配置组合","110":"/docs/zh/usedirection/developmentside/environments/#创建虚拟环境","111":"/docs/zh/usedirection/developmentside/environments/#在虚拟环境下编译","112":"/docs/zh/usedirection/developmentside/environments/#模拟运行","113":"/docs/zh/usedirection/developmentside/#准备risc-v开发环境","114":"/docs/zh/usedirection/developmentside/#安装-ruyi-包管理工具","115":"/docs/zh/usedirection/developmentside/#安装编译工具链","116":"/docs/zh/usedirection/developmentside/#准备代码","117":"/docs/zh/usedirection/developmentside/#编译","118":"/docs/zh/usedirection/developmentside/#模拟运行","119":"/docs/zh/usedirection/developmentside/#调试","120":"/docs/zh/usedirection/developmentside/sources/coremark/#使用编译环境进行-coremark-构建","121":"/docs/zh/usedirection/developmentside/sources/coremark/#在最新的-milkv-duo-镜像上运行","122":"/docs/zh/usedirection/developmentside/typeselection/#ruyisdk中编译工具链类型简介","123":"/docs/zh/usedirection/#使用ruyisdk","124":"/docs/zh/usedirection/operationside/#准备risc-v运行环境","125":"/docs/zh/usedirection/operationside/#为risc-v开发板安装操作系统","126":"/docs/zh/usedirection/operationside/#运行risc-v目标程序"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,22],"1":[2,2,36],"2":[1,2,1],"3":[1,3,8],"4":[2,1,11],"5":[1,1,30],"6":[1,1,23],"7":[1,1,3],"8":[2,1,22],"9":[2,1,15],"10":[1,1,37],"11":[1,1,54],"12":[2,1,1],"13":[2,1,4],"14":[1,2,12],"15":[1,1,11],"16":[2,1,36],"17":[2,1,76],"18":[2,1,5],"19":[2,2,1],"20":[4,4,40],"21":[3,4,38],"22":[2,2,278],"23":[1,2,84],"24":[1,1,11],"25":[2,1,1],"26":[1,3,17],"27":[1,3,26],"28":[2,1,1],"29":[1,3,10],"30":[1,3,51],"31":[1,1,1],"32":[1,1,29],"33":[3,1,124],"34":[1,1,20],"35":[1,1,21],"36":[1,1,60],"37":[1,1,24],"38":[1,1,44],"39":[1,1,16],"40":[1,1,33],"41":[1,1,12],"42":[3,1,29],"43":[2,1,7],"44":[2,1,22],"45":[1,2,24],"46":[1,2,35],"47":[2,2,13],"48":[4,1,8],"49":[4,4,82],"50":[2,4,11],"51":[1,4,182],"52":[4,1,17],"53":[4,4,82],"54":[1,4,185],"55":[4,1,28],"56":[4,4,82],"57":[4,1,7],"58":[4,4,53],"59":[2,4,87],"60":[1,4,118],"61":[4,1,4],"62":[4,4,57],"63":[1,4,70],"64":[4,1,5],"65":[4,4,53],"66":[1,4,83],"67":[1,4,58],"68":[4,1,12],"69":[4,4,56],"70":[1,4,12],"71":[1,4,81],"72":[4,1,11],"73":[4,4,52],"74":[1,4,96],"75":[4,1,17],"76":[4,4,83],"77":[1,4,103],"78":[4,1,17],"79":[4,4,82],"80":[1,4,124],"81":[3,1,15],"82":[1,3,1],"83":[5,4,34],"84":[2,4,27],"85":[4,4,7],"86":[5,4,10],"87":[1,4,14],"88":[1,4,27],"89":[1,3,94],"90":[1,3,118],"91":[3,1,2],"92":[1,1,24],"93":[1,1,16],"94":[1,1,11],"95":[1,1,43],"96":[2,1,70],"97":[1,1,32],"98":[1,1,6],"99":[2,1,6],"100":[1,2,13],"101":[1,2,171],"102":[1,1,18],"103":[1,1,8],"104":[1,1,41],"105":[2,1,51],"106":[1,1,32],"107":[6,1,9],"108":[2,1,24],"109":[1,2,27],"110":[1,2,103],"111":[1,2,121],"112":[1,2,100],"113":[2,1,1],"114":[3,2,49],"115":[1,2,15],"116":[1,2,15],"117":[1,2,70],"118":[1,2,18],"119":[1,2,12],"120":[3,1,147],"121":[4,3,153],"122":[1,1,73],"123":[1,1,38],"124":[2,1,1],"125":[2,2,8],"126":[2,2,7]},"averageFieldLength":[1.9763779527559064,2.05511811023622,42.354330708661415],"storedFields":{"0":{"title":"RuyiSDK集成的RISC-V设备","titles":[]},"1":{"title":"支持的RISC-V设备","titles":["RuyiSDK集成的RISC-V设备"]},"2":{"title":"从RuyiSDK开始使用设备","titles":["RuyiSDK集成的RISC-V设备"]},"3":{"title":"获取并安装OS","titles":["RuyiSDK集成的RISC-V设备","从RuyiSDK开始使用设备"]},"4":{"title":"Hello Ruyi","titles":[]},"5":{"title":"介绍","titles":[]},"6":{"title":"背景","titles":[]},"7":{"title":"功能","titles":[]},"8":{"title":"Ruyi 包管理器","titles":["功能"]},"9":{"title":"Ruyi IDE","titles":["功能"]},"10":{"title":"Community","titles":["功能"]},"11":{"title":"支持的设备","titles":[]},"12":{"title":"RuyiSDK-架构示意图","titles":[]},"13":{"title":"让我们开始吧!","titles":[]},"14":{"title":"获取并安装OS","titles":["让我们开始吧!"]},"15":{"title":"介绍","titles":[]},"16":{"title":"RuyiSDK 的目标","titles":[]},"17":{"title":"RuyiSDK 架构示意图","titles":[]},"18":{"title":"RuyiSDK 模块需求说明","titles":[]},"19":{"title":"RUYI 包管理器","titles":["RuyiSDK 模块需求说明"]},"20":{"title":"RUYI在线软件源(Ruyi Repo)","titles":["RuyiSDK 模块需求说明","RUYI 包管理器"]},"21":{"title":"RUYI包管理工具(ruyi)","titles":["RuyiSDK 模块需求说明","RUYI 包管理器"]},"22":{"title":"Ruyi IDE","titles":["RuyiSDK 模块需求说明"]},"23":{"title":"开发者社区","titles":["RuyiSDK 模块需求说明"]},"24":{"title":"版本规划路线图","titles":[]},"25":{"title":"RUYISDK 版本计划","titles":["版本规划路线图"]},"26":{"title":"里程碑版本","titles":["版本规划路线图","RUYISDK 版本计划"]},"27":{"title":"敏捷开发版本计划","titles":["版本规划路线图","RUYISDK 版本计划"]},"28":{"title":"RUYISDK 规划","titles":["版本规划路线图"]},"29":{"title":"2024目标","titles":["版本规划路线图","RUYISDK 规划"]},"30":{"title":"敏捷开发版本排期","titles":["版本规划路线图","RUYISDK 规划"]},"31":{"title":"开始","titles":[]},"32":{"title":"安装依赖软件","titles":["开始"]},"33":{"title":"安装 RUYI 包管理器","titles":["开始"]},"34":{"title":"刷新软件包缓存","titles":["开始"]},"35":{"title":"查询包管理器更新内容","titles":["开始"]},"36":{"title":"查询可用软件包","titles":["开始"]},"37":{"title":"查询可用编译环境","titles":["开始"]},"38":{"title":"安装软件包","titles":["开始"]},"39":{"title":"安装源码包","titles":["开始"]},"40":{"title":"搭建编译环境","titles":["开始"]},"41":{"title":"卸载软件包","titles":["开始"]},"42":{"title":"卸载 RUYI 包管理器","titles":["开始"]},"43":{"title":"镜像信息的维护与下载、开发板系统的安装引导","titles":["开始"]},"44":{"title":"RUYI 包管理器","titles":[]},"45":{"title":"支持的发行版平台","titles":["RUYI 包管理器"]},"46":{"title":"命令","titles":["RUYI 包管理器"]},"47":{"title":"附:外部链接","titles":["RUYI 包管理器"]},"48":{"title":"v0.10.0 版本新增特性","titles":[]},"49":{"title":"安装 v0.10.0","titles":["v0.10.0 版本新增特性"]},"50":{"title":"i18n 支持","titles":["v0.10.0 版本新增特性"]},"51":{"title":"板卡镜像刷写","titles":["v0.10.0 版本新增特性"]},"52":{"title":"v0.11.0 版本新增特性","titles":[]},"53":{"title":"安装 v0.11.0","titles":["v0.11.0 版本新增特性"]},"54":{"title":"板卡镜像刷写","titles":["v0.11.0 版本新增特性"]},"55":{"title":"v0.12.0 版本新增特性","titles":[]},"56":{"title":"安装 v0.12.0","titles":["v0.12.0 版本新增特性"]},"57":{"title":"v0.3.0 版本新增特性","titles":[]},"58":{"title":"安装 v0.3.0","titles":["v0.3.0 版本新增特性"]},"59":{"title":"RUYI 新闻","titles":["v0.3.0 版本新增特性"]},"60":{"title":"板卡镜像刷写","titles":["v0.3.0 版本新增特性"]},"61":{"title":"v0.4.0 版本新增特性","titles":[]},"62":{"title":"安装 v0.4.0","titles":["v0.4.0 版本新增特性"]},"63":{"title":"板卡镜像刷写","titles":["v0.4.0 版本新增特性"]},"64":{"title":"v0.5.0 版本新增特性","titles":[]},"65":{"title":"安装 v0.5.0","titles":["v0.5.0 版本新增特性"]},"66":{"title":"板卡镜像刷写","titles":["v0.5.0 版本新增特性"]},"67":{"title":"镜像源换源支持","titles":["v0.5.0 版本新增特性"]},"68":{"title":"v0.6.0 版本新增特性","titles":[]},"69":{"title":"安装 v0.6.0","titles":["v0.6.0 版本新增特性"]},"70":{"title":"依赖变化","titles":["v0.6.0 版本新增特性"]},"71":{"title":"板卡镜像刷写","titles":["v0.6.0 版本新增特性"]},"72":{"title":"v0.7.0 版本新增特性","titles":[]},"73":{"title":"安装 v0.7.0","titles":["v0.7.0 版本新增特性"]},"74":{"title":"板卡镜像刷写","titles":["v0.7.0 版本新增特性"]},"75":{"title":"v0.8.1 版本新增特性","titles":[]},"76":{"title":"安装 v0.8.1","titles":["v0.8.1 版本新增特性"]},"77":{"title":"板卡镜像刷写","titles":["v0.8.1 版本新增特性"]},"78":{"title":"v0.9.0 版本新增特性","titles":[]},"79":{"title":"安装 v0.9.0","titles":["v0.9.0 版本新增特性"]},"80":{"title":"板卡镜像刷写","titles":["v0.9.0 版本新增特性"]},"81":{"title":"RuyiSDK GCC 工具链介绍","titles":[]},"82":{"title":"模块介绍","titles":["RuyiSDK GCC 工具链介绍"]},"83":{"title":"GCC(GNU Compiler Collection)","titles":["RuyiSDK GCC 工具链介绍","模块介绍"]},"84":{"title":"GNU Binutils","titles":["RuyiSDK GCC 工具链介绍","模块介绍"]},"85":{"title":"GDB(GNU Debugger)","titles":["RuyiSDK GCC 工具链介绍","模块介绍"]},"86":{"title":"Glibc(GNU C Library)","titles":["RuyiSDK GCC 工具链介绍","模块介绍"]},"87":{"title":"Newlib","titles":["RuyiSDK GCC 工具链介绍","模块介绍"]},"88":{"title":"Libgcc","titles":["RuyiSDK GCC 工具链介绍","模块介绍"]},"89":{"title":"使用说明","titles":["RuyiSDK GCC 工具链介绍"]},"90":{"title":"扩展支持","titles":["RuyiSDK GCC 工具链介绍"]},"91":{"title":"RuyiSDK LLVM 工具链介绍","titles":[]},"92":{"title":"RuyiSDK使用示例","titles":[]},"93":{"title":"使用示例","titles":[]},"94":{"title":"环境说明","titles":["使用示例"]},"95":{"title":"ruyi工具的安装","titles":["使用示例"]},"96":{"title":"使用ruyi工具部署开发环境:","titles":["使用示例"]},"97":{"title":"交叉编译coremark","titles":["使用示例"]},"98":{"title":"运行验证","titles":["使用示例"]},"99":{"title":"为RISC-V开发板安装操作系统","titles":[]},"100":{"title":"环境说明","titles":["为RISC-V开发板安装操作系统"]},"101":{"title":"安装操作系统","titles":["为RISC-V开发板安装操作系统"]},"102":{"title":"使用示例","titles":[]},"103":{"title":"环境说明","titles":["使用示例"]},"104":{"title":"ruyi工具的安装","titles":["使用示例"]},"105":{"title":"使用ruyi工具部署开发环境:","titles":["使用示例"]},"106":{"title":"交叉编译coremark","titles":["使用示例"]},"107":{"title":"qemu-user 模式下运行 riscv64 coremark 可执行程序","titles":["使用示例"]},"108":{"title":"RUYI 编译环境","titles":[]},"109":{"title":"工具链与预置配置组合","titles":["RUYI 编译环境"]},"110":{"title":"创建虚拟环境","titles":["RUYI 编译环境"]},"111":{"title":"在虚拟环境下编译","titles":["RUYI 编译环境"]},"112":{"title":"模拟运行","titles":["RUYI 编译环境"]},"113":{"title":"准备RISC-V开发环境","titles":[]},"114":{"title":"安装 ruyi 包管理工具","titles":["准备RISC-V开发环境"]},"115":{"title":"安装编译工具链","titles":["准备RISC-V开发环境"]},"116":{"title":"准备代码","titles":["准备RISC-V开发环境"]},"117":{"title":"编译","titles":["准备RISC-V开发环境"]},"118":{"title":"模拟运行","titles":["准备RISC-V开发环境"]},"119":{"title":"调试","titles":["准备RISC-V开发环境"]},"120":{"title":"使用编译环境进行 Coremark 构建","titles":[]},"121":{"title":"在最新的 Milkv Duo 镜像上运行","titles":["使用编译环境进行 Coremark 构建"]},"122":{"title":"RuyiSDK中编译工具链类型简介","titles":[]},"123":{"title":"使用RuyiSDK","titles":[]},"124":{"title":"准备RISC-V运行环境","titles":[]},"125":{"title":"为RISC-V开发板安装操作系统","titles":["准备RISC-V运行环境"]},"126":{"title":"运行RISC-V目标程序","titles":["准备RISC-V运行环境"]}},"dirtCount":0,"index":[["但是一些高性能的risc",{"2":{"123":1}}],["但是并不保证建立成功的环境一定可用于构建",{"2":{"109":1}}],["仓库",{"2":{"122":1}}],["仓库文档在",{"2":{"114":1}}],["非通用工具链",{"2":{"122":1}}],["图像处理等领域可能需要针对特定指令集的优化和定制",{"2":{"122":1}}],["机器学习",{"2":{"122":1}}],["嵌入式系统",{"2":{"122":1}}],["嵌入式设备中为",{"2":{"89":1}}],["某些特定的应用领域可能对扩展指令集有特殊的需求",{"2":{"122":1}}],["某些扩展指令集是由标准和规范定义的",{"2":{"122":1}}],["特定应用需求",{"2":{"122":1}}],["特性的开发者",{"2":{"88":1}}],["稳定性或兼容性",{"2":{"122":1}}],["然而",{"2":{"122":1}}],["然后在文本编辑器中完成对代码的编辑",{"2":{"17":1}}],["针对自己的处理器架构实现了特定版本的编译工具链",{"2":{"122":1}}],["针对risc",{"2":{"22":2}}],["添加特定的硬件加速器等方式",{"2":{"122":1}}],["添加自定义功能",{"2":{"22":1}}],["优化编译器生成的代码",{"2":{"122":1}}],["更多的功能和更好的能效",{"2":{"122":1}}],["更新最新的软件源索引",{"2":{"95":1}}],["更新软件包缓存",{"2":{"34":1}}],["更新",{"2":{"21":1}}],["更新和管理软件包",{"2":{"17":1}}],["处理器架构不断演进和改进",{"2":{"122":1}}],["处理器架构的发展",{"2":{"122":1}}],["随着时间的推移",{"2":{"122":1}}],["随着版本的更新和发布",{"2":{"20":1}}],["厂商定制和优化",{"2":{"122":2}}],["厂商定制扩展",{"2":{"16":1}}],["重新上传后运行",{"2":{"121":1}}],["重构工具",{"2":{"22":1}}],["地址请按实际情况更改",{"2":{"121":1}}],["传送",{"2":{"121":1}}],["首先进入编译环境",{"2":{"120":1}}],["首先创建项目",{"2":{"17":1}}],["构建",{"0":{"120":1},"1":{"121":1},"2":{"120":2}}],["此外",{"2":{"119":1}}],["此部分没有统一规范",{"2":{"117":1}}],["初步检验可执行程序是否risc",{"2":{"117":1}}],["举例",{"2":{"117":1}}],["前提",{"2":{"117":1,"118":1}}],["大致操作步骤如下",{"2":{"117":1}}],["允许用户在系统中创建独立的环境",{"2":{"117":1}}],["允许开发人员在",{"2":{"85":1}}],["准备代码",{"0":{"116":1},"2":{"123":1}}],["准备risc",{"0":{"113":1,"124":1},"1":{"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"125":1,"126":1},"2":{"123":1}}],["保证ruyi",{"2":{"114":1}}],["获取最新缓存才能获取软件仓库最新的软件包资源",{"2":{"114":1}}],["获取并查看更新信息",{"2":{"46":1}}],["获取并安装os",{"0":{"3":1,"14":1}}],["路径下就可以开始了",{"2":{"114":1}}],["三种架构平台下的安装程序",{"2":{"114":1}}],["三架构支持",{"2":{"21":1,"22":1}}],["程序并使用",{"2":{"112":1}}],["进入编译环境",{"2":{"112":1}}],["进行代码的协作开发和团队协作",{"2":{"22":1}}],["进行例如图像识别应用程序的开发时",{"2":{"22":1}}],["实际操作中请注意将上述例子中的参数替换为正确的值",{"2":{"111":1}}],["实现运行环境隔离的设计",{"2":{"96":1}}],["实现",{"2":{"42":1}}],["实现一套图形用户界面",{"2":{"21":1}}],["实现一套命令行接口",{"2":{"21":1}}],["实现开发环境和运行环境的文件传输",{"2":{"0":1,"10":1}}],["退出后环境将被还原",{"2":{"111":1}}],["退出编译环境",{"2":{"111":1,"112":1}}],["退出虚拟环境",{"2":{"107":1,"118":1,"120":1}}],["调用工具链",{"2":{"111":1}}],["调试技巧等方面的内容",{"2":{"23":1}}],["调试支持",{"2":{"22":1}}],["调试支持等功能",{"2":{"22":1}}],["调试支持等",{"2":{"16":1}}],["调试",{"0":{"119":1},"2":{"17":1,"123":1}}],["调试工具等等",{"2":{"123":1}}],["调试工具和模拟器",{"2":{"9":1}}],["调试工具",{"2":{"8":1,"17":2,"20":1}}],["表示",{"2":{"111":1}}],["建立编译环境",{"2":{"111":1,"112":1}}],["建议使用最新版本",{"2":{"114":1}}],["建议使用",{"2":{"89":1}}],["无",{"2":{"109":1}}],["无浮点硬件中为",{"2":{"89":1}}],["预置配置",{"2":{"109":1}}],["预期每",{"2":{"27":1}}],["展示在x86",{"2":{"102":1}}],["展示从",{"2":{"93":1}}],["您只需要按照引导提示一步步执行即可",{"2":{"101":1}}],["您可用",{"2":{"59":4}}],["直接运行即可",{"2":{"126":1}}],["直接运行riscv64",{"2":{"98":1}}],["直接使用环境变量指定的gcc编译",{"2":{"96":1}}],["得到可执行程序coremark",{"2":{"97":1,"106":1,"117":1}}],["参考上表代入具体的参数",{"2":{"110":1}}],["参考coremark仓库自述文档",{"2":{"97":1,"106":1}}],["参数",{"2":{"38":1,"67":1}}],["参数列表",{"2":{"22":2}}],["激活方式与",{"2":{"111":1}}],["激活构建环境",{"2":{"111":1}}],["激活后",{"2":{"96":1}}],["激活虚拟环境",{"2":{"96":1,"105":1,"117":1}}],["激活和管理虚拟环境",{"2":{"22":1}}],["创建一个叫venv1的虚拟环境",{"2":{"117":1}}],["创建一个新的c",{"2":{"22":1}}],["创建虚拟环境",{"0":{"110":1},"2":{"110":1}}],["创建虚拟环境venv",{"2":{"96":1}}],["验证ruyi可否使用",{"2":{"95":1,"104":1}}],["清除当前已经安装的",{"2":{"95":1,"104":1}}],["硬件环境",{"2":{"94":1,"103":1}}],["环境则不是交叉编译",{"2":{"120":1}}],["环境下使用平头哥工具链配置带",{"2":{"112":1}}],["环境说明",{"0":{"94":1,"100":1,"103":1}}],["环境变量被无视的问题",{"2":{"55":1}}],["环境变量被设置时",{"2":{"34":1}}],["环境变量",{"2":{"52":1}}],["接入risc",{"2":{"92":1}}],["接着对项目进行编译构建获得risc",{"2":{"17":1}}],["案例三",{"2":{"92":1}}],["案例二",{"2":{"92":1}}],["案例一",{"2":{"92":1}}],["案例研究和实践经验",{"2":{"23":1}}],["希望通过一些小场景让大家更多的了解ruyisdk的使用",{"2":{"92":1}}],["额外支持",{"2":{"90":1}}],["手册",{"2":{"89":1}}],["有特定优化",{"2":{"90":1}}],["有已知固定向量长度的",{"2":{"89":1}}],["有什么用",{"2":{"4":1}}],["请注意关注版本信息",{"2":{"114":1}}],["请务必同时使用",{"2":{"89":1}}],["请使用更新的版本",{"2":{"69":1}}],["请使用",{"2":{"41":1}}],["向量扩展时",{"2":{"89":1}}],["控制不同扩展的使用",{"2":{"89":1}}],["输入",{"2":{"89":1}}],["zpsfoperand",{"2":{"90":1}}],["zpn",{"2":{"90":1}}],["ztso",{"2":{"90":1}}],["zc",{"2":{"90":1}}],["zcmt",{"2":{"90":1}}],["zcmp",{"2":{"90":1}}],["zcd",{"2":{"90":2}}],["zcf",{"2":{"90":1}}],["zce",{"2":{"90":1}}],["zcb",{"2":{"90":1}}],["zca",{"2":{"90":1}}],["zmmul",{"2":{"90":1}}],["zvkt",{"2":{"90":1}}],["zvksc",{"2":{"90":1}}],["zvksh",{"2":{"90":1}}],["zvksed",{"2":{"90":1}}],["zvknc",{"2":{"90":1}}],["zvknhb",{"2":{"90":1}}],["zvknha",{"2":{"90":1}}],["zvkned",{"2":{"90":1}}],["zvkg",{"2":{"90":1}}],["zvbc",{"2":{"90":1}}],["zvbb",{"2":{"90":1}}],["zvfhmin",{"2":{"90":1}}],["zvfh",{"2":{"90":1}}],["zfa",{"2":{"90":1}}],["zfhmin",{"2":{"90":1}}],["zfh",{"2":{"90":1}}],["zfinx",{"2":{"90":2}}],["zkt",{"2":{"90":1}}],["zksh",{"2":{"90":1}}],["zksed",{"2":{"90":1}}],["zkr",{"2":{"90":1}}],["zknh",{"2":{"90":1}}],["zkne",{"2":{"90":1}}],["zknd",{"2":{"90":1}}],["zhinxmin",{"2":{"90":1}}],["zhinx",{"2":{"90":1}}],["zdinx",{"2":{"90":1}}],["zawrs",{"2":{"90":1}}],["zihintpause",{"2":{"90":1}}],["zihintntl",{"2":{"90":1}}],["zicbop",{"2":{"90":1}}],["zicbom",{"2":{"90":1}}],["zicboz",{"2":{"90":1}}],["zicond",{"2":{"90":1}}],["zicsr",{"2":{"90":1}}],["zifencei",{"2":{"90":1}}],["zbpbo",{"2":{"90":1}}],["zbkx",{"2":{"90":1}}],["zbkc",{"2":{"90":1}}],["zbkb",{"2":{"90":1}}],["zbs",{"2":{"89":1,"90":1}}],["zbc",{"2":{"89":1,"90":1}}],["zbb",{"2":{"89":1,"90":1}}],["zba",{"2":{"89":1,"90":1}}],["zstd",{"2":{"32":2}}],["扩展不兼容",{"2":{"90":1}}],["扩展名称",{"2":{"90":1}}],["扩展支持",{"0":{"90":1}}],["扩展可以使用",{"2":{"89":2}}],["扩展",{"2":{"89":1}}],["扩展指令集架构组合",{"2":{"16":1}}],["选项",{"2":{"89":1}}],["选项主要控制工具链中所使用的寄存器组",{"2":{"89":1}}],["选项可以控制工具链开启的",{"2":{"89":1}}],["选择开发板后将返回所有支持指定开发板的操作系统",{"2":{"101":1}}],["选择使用",{"2":{"87":1}}],["选择合适架构的预编译二进制下载",{"2":{"33":1}}],["下通过",{"2":{"114":1}}],["下执行",{"2":{"100":1}}],["下面以任一个编译工具链在虚拟环境中编译程序一般的操作说明操作步骤",{"2":{"111":1}}],["下面我们来介绍",{"2":{"89":1}}],["下面重点介绍",{"2":{"89":1}}],["下载解压coremark源码作为编译对象",{"2":{"96":1,"105":1}}],["下载riscv64版本的ruyi",{"2":{"95":1}}],["下载",{"2":{"95":1,"104":1}}],["下载并解包指定的源码包",{"2":{"46":1}}],["下载并安装指定的软件包",{"2":{"46":1,"115":1}}],["下载地址",{"2":{"44":1}}],["下载链接",{"2":{"20":1}}],["尽可能的继承目前",{"2":{"88":1}}],["芯片的硬件",{"2":{"88":1}}],["芯片设计",{"2":{"6":1}}],["系列",{"2":{"88":1}}],["系统",{"2":{"87":1}}],["系统生成客户所需的操作系统",{"2":{"16":1}}],["系统获得硬件资料说明",{"2":{"16":1}}],["系统镜像",{"2":{"8":1}}],["器紧密相关的支持函数",{"2":{"88":1}}],["反汇编等操作",{"2":{"84":1}}],["链接器",{"2":{"84":1}}],["链接器等",{"2":{"81":1}}],["详细使用说明参考",{"2":{"83":1,"84":1}}],["位工具链中为",{"2":{"89":4}}],["位",{"2":{"83":2}}],["位长的支持",{"2":{"83":1}}],["汇编器",{"2":{"81":1,"84":1}}],["它们可能通过改进指令执行流程",{"2":{"122":1}}],["它包括一系列工具",{"2":{"81":1}}],["它提供直观的用户界面",{"2":{"22":1}}],["它提供了一套命令行接口",{"2":{"17":1}}],["产品",{"2":{"78":1}}],["全线",{"2":{"78":1}}],["全家桶式的全功能开发环境",{"2":{"15":1,"24":1}}],["格式压缩文件的解包",{"2":{"78":1}}],["默认最新",{"2":{"111":1}}],["默认不允许以",{"2":{"75":1}}],["默认使用",{"2":{"67":1}}],["暂时没有提供官方镜像下载",{"2":{"74":1}}],["二进制的",{"2":{"121":1}}],["二进制",{"2":{"110":2,"112":1}}],["二进制无法工作的问题",{"2":{"72":1}}],["二进制可能无法正常工作",{"2":{"69":1}}],["修复",{"2":{"72":1}}],["修复了",{"2":{"55":1}}],["修复了先前",{"2":{"55":1}}],["依赖变化",{"0":{"70":1}}],["依赖库版本到",{"2":{"55":1}}],["种",{"2":{"68":1,"71":1}}],["替代对",{"2":{"68":1}}],["远端元数据仓库分支",{"2":{"67":1}}],["远端元数据仓库",{"2":{"67":1}}],["未配置或配置为空时",{"2":{"67":3}}],["启用",{"2":{"67":1}}],["托管默认软件源",{"2":{"62":1}}],["除了",{"2":{"111":1}}],["除了这里列举的环境外",{"2":{"92":1}}],["除了荔枝派",{"2":{"60":1}}],["除去继承开源软件的部分",{"2":{"22":1}}],["指定了编译工具链的类型和版本",{"2":{"111":1}}],["指定新闻编号或",{"2":{"59":1}}],["指令集有所不同",{"2":{"88":1}}],["指令集扩展的支持",{"2":{"83":1}}],["指令执行效率更高",{"2":{"6":1}}],["现已为以下板卡新增了镜像包",{"2":{"59":1}}],["感谢您对",{"2":{"59":4}}],["之后",{"2":{"59":3}}],["之中",{"2":{"17":1}}],["那么当您完成",{"2":{"59":3}}],["┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛",{"2":{"59":4}}],["┃",{"2":{"59":8}}],["┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓",{"2":{"59":4}}],["阅读它们",{"2":{"59":3}}],["阅读所有未读新闻",{"2":{"59":1}}],["阅读新闻或将信息设置为已读",{"2":{"35":1}}],["变量被设置时为",{"2":{"59":1}}],["文章",{"2":{"122":1}}],["文件配置",{"2":{"114":1}}],["文件中",{"2":{"59":1}}],["文档支持增加到",{"2":{"48":1,"52":1}}],["文档和教程",{"2":{"23":1}}],["文档生成",{"2":{"22":1}}],["文档资源等各种信息",{"2":{"20":1}}],["文档可能更新不及时",{"2":{"11":1}}],["文档",{"2":{"8":1,"17":1,"20":1}}],["───────────────────────────────────────────────────────────────",{"2":{"59":2}}],["新的处理器架构可能引入了新的指令集扩展",{"2":{"122":1}}],["新闻的阅读状态将保存在",{"2":{"59":1}}],["新闻",{"0":{"59":1},"2":{"57":1}}],["新增可执行程序coremark",{"2":{"97":1,"106":1}}],["新增板卡支持",{"2":{"59":3}}],["新增",{"2":{"54":1,"75":1}}],["升级了",{"2":{"55":1}}],["升级版",{"2":{"11":1}}],["渲染相应的提示语",{"2":{"55":1}}],["规则",{"2":{"51":1,"54":1,"77":1,"80":1}}],["规划",{"0":{"28":1},"1":{"29":1,"30":1}}],["故此处只提供了文档链接而没有刷写支持",{"2":{"74":1}}],["故需要用户自行配置",{"2":{"51":1,"54":1,"77":1,"80":1}}],["故在需要升级",{"2":{"42":1}}],["刷写工具根据板卡的不同依赖",{"2":{"51":1,"54":1,"63":1,"66":1,"71":1,"74":1,"77":1,"80":1}}],["刷写方式",{"2":{"51":1,"54":1,"63":1,"66":1,"71":1,"74":1,"77":1,"80":1}}],["刷新软件包缓存",{"0":{"34":1}}],["单片机系列的文档支持",{"2":{"51":1}}],["单步执行代码",{"2":{"22":2}}],["本文使用",{"2":{"120":1}}],["本操作在x86",{"2":{"100":1}}],["本地元数据路径",{"2":{"67":1}}],["本次主要增加了沁恒",{"2":{"51":1}}],["本身",{"2":{"42":1}}],["本身的安装程序需要支持x86",{"2":{"22":1}}],["检查虚拟环境中编译工具的版本信息",{"2":{"105":1}}],["检查安装版本",{"2":{"49":1,"53":1,"56":1,"58":1,"62":1,"65":1,"69":1,"73":1,"76":1,"79":1}}],["检查代码的瓶颈并进行优化",{"2":{"22":1}}],["款",{"2":{"48":1,"51":1,"52":1,"54":1,"63":1,"64":1,"66":1,"72":1,"74":1,"75":1,"77":1,"78":1,"80":1}}],["板卡刷写",{"2":{"75":1}}],["板卡支持列表",{"2":{"51":1,"54":1,"63":1,"66":1,"71":1,"74":1,"77":1,"80":1}}],["板卡镜像刷写支持增加到",{"2":{"64":1,"72":1,"75":1,"78":1}}],["板卡镜像刷写功能所支持的板卡增加到",{"2":{"51":1,"54":1,"63":1,"66":1,"74":1,"77":1,"80":1}}],["板卡镜像刷写",{"0":{"51":1,"54":1,"60":1,"63":1,"66":1,"71":1,"74":1,"77":1,"80":1},"2":{"48":1,"52":1,"57":1,"61":1}}],["板卡的新增适配等等",{"2":{"27":1}}],["多语言支持",{"2":{"48":1}}],["虚拟环境类似",{"2":{"111":1}}],["虚拟环境可以理解成一个容器",{"2":{"96":1}}],["虚拟环境venv1",{"2":{"105":1}}],["虚拟环境venv",{"2":{"96":1}}],["虚拟环境",{"2":{"46":1}}],["由于使用的工具链为",{"2":{"120":1}}],["由于软件包索引信息目前托管的github仓库国内访问的网络不稳定性",{"2":{"114":1}}],["由于ruyi滚动发版",{"2":{"114":1}}],["由指定的工具链",{"2":{"96":1,"105":1}}],["由指定的工具链和配置建立",{"2":{"46":1}}],["由编译器自动配置选取合适的处理数量",{"2":{"89":1}}],["由",{"2":{"60":1}}],["由加州伯克利分校所发起的一个开源项目",{"2":{"6":1}}],["外部链接",{"0":{"47":1},"2":{"45":1}}],["附",{"0":{"47":1},"2":{"45":1}}],["仅",{"2":{"90":1}}],["仅限验证过的",{"2":{"45":1}}],["仅列出未读新闻",{"2":{"35":1}}],["需求与问题",{"2":{"44":1}}],["需要更新和升级编译工具链",{"2":{"122":1}}],["需要编辑构建脚本",{"2":{"120":1}}],["需要先安装运行时环境或语言虚拟机",{"2":{"126":1}}],["需要先",{"2":{"111":1}}],["需要为其安装镜像",{"2":{"101":1}}],["需要指定正确的编译器版本和sysroot类型",{"2":{"96":1}}],["需要注意的是一些镜像的解包需要占用大量的磁盘空间",{"2":{"51":1,"54":1,"63":1,"66":1,"71":1,"74":1,"77":1,"80":1}}],["需要手动安装",{"2":{"32":1}}],["需要具备如下特点",{"2":{"22":1}}],["需要具备如下功能",{"2":{"22":1}}],["需要一一区别和定义",{"2":{"22":1}}],["官方仓库",{"2":{"44":1}}],["官方网站",{"2":{"23":1}}],["执行交叉编译和构建",{"2":{"97":1,"106":1,"117":1}}],["执行汇编和链接",{"2":{"84":1}}],["执行如下命令并按照引导执行即可下载所需系统镜像",{"2":{"43":1}}],["执行新特性的测试验证和基础功能回归测试",{"2":{"27":1}}],["镜像上运行",{"0":{"121":1}}],["镜像支持增加到",{"2":{"68":1,"71":1}}],["镜像源下载体验",{"2":{"114":1}}],["镜像源下载最新的ruyi工具",{"2":{"95":1,"104":1}}],["镜像源下载最新版本体验",{"2":{"44":1}}],["镜像源下载最新版本",{"2":{"33":1}}],["镜像源换源支持",{"0":{"67":1},"2":{"64":1}}],["镜像文件会被自动解压或符号链接到",{"2":{"59":1}}],["镜像无法下载的问题",{"2":{"55":1}}],["镜像",{"2":{"51":1,"54":2,"63":1,"66":1,"71":1,"74":1,"77":1,"80":1}}],["镜像搭建工具",{"2":{"46":1}}],["镜像信息的维护与下载",{"0":{"43":1},"2":{"46":1}}],["再执行安装",{"2":{"42":1}}],["再到开发应用的效率大幅降低",{"2":{"6":1}}],["即使在同一个指令集标准下",{"2":{"122":1}}],["即首先卸载",{"2":{"42":1}}],["即时检测代码中的语法错误",{"2":{"22":1}}],["同样的这个命令将会询问您以二次确认该操作",{"2":{"42":1}}],["同时优化了命令逻辑",{"2":{"63":1}}],["同时",{"2":{"22":1}}],["your",{"2":{"60":6,"101":8}}],["you",{"2":{"49":1,"53":1,"56":1,"59":1,"60":4,"76":1,"79":1,"101":6}}],["y",{"2":{"42":2,"60":2,"101":3}}],["若出现这样的错误",{"2":{"121":1}}],["若要开启其他扩展",{"2":{"89":1}}],["若您强制中断",{"2":{"41":1}}],["若希望重装一个软件包",{"2":{"38":1}}],["章节介绍",{"2":{"119":1}}],["章节",{"2":{"40":1,"45":1,"115":1}}],["具有",{"2":{"40":1}}],["具体操作参考",{"2":{"114":1}}],["具体的使用可参考ruyi仓库文档",{"2":{"114":1}}],["具体的使用方法可通过help命令获得",{"2":{"110":1}}],["具体可以查看",{"2":{"52":1}}],["具体使用参见",{"2":{"40":1}}],["具体还需要结合技术可行性等进行进一步的调整",{"2":{"18":1}}],["配置环境变量",{"2":{"96":1}}],["配置",{"2":{"40":1,"67":1}}],["已经提前安装了所需的编译工具链",{"2":{"118":1}}],["已经安装了所需的编译工具链",{"2":{"117":1}}],["已经安装的工具链与模拟器需要在",{"2":{"40":1}}],["已经集成的risc",{"2":{"1":1}}],["搭建编译环境",{"0":{"40":1}}],["=1548f6b30560e1ca6f3fa8ba3ef6aea4188feacf",{"2":{"121":1}}],["=d9dbc7115d07d1953087dd2c1e5d46adc2ab0d4f",{"2":{"120":1}}],["=",{"2":{"38":2,"51":2,"54":2,"67":5}}],["==",{"2":{"38":1,"51":2,"54":2}}],["==0",{"2":{"38":1,"122":1}}],[">=",{"2":{"38":1}}],[">",{"2":{"38":1,"67":1,"112":1}}],["`",{"2":{"38":2}}],["上运行",{"2":{"121":1}}],["上运行的程序",{"2":{"86":1}}],["上",{"2":{"92":1}}],["上交叉编译并模拟运行",{"2":{"92":1}}],["上述原因导致了编译工具链版本的多样性",{"2":{"122":1}}],["上述结合使用场景简单的介绍了",{"2":{"119":1}}],["上述操作系统链接参考本文文末的",{"2":{"45":1}}],["上述通过指定软件包名安装的方式默认会安装",{"2":{"38":1}}],["上面的命令只是删除",{"2":{"42":1}}],["上游工具链配置",{"2":{"110":2}}],["上游工具链",{"2":{"38":1}}],["命令返回的数据最新",{"2":{"114":1}}],["命令回显信息显示了文件的架构相关信息",{"2":{"97":1,"106":1}}],["命令将执行一个向导",{"2":{"60":1}}],["命令将默认显示未读新闻条目",{"2":{"59":1}}],["命令刷写镜像失败时",{"2":{"51":1,"54":1,"77":1,"80":1}}],["命令",{"0":{"46":1},"2":{"51":1,"54":1,"60":1,"63":1,"66":1,"71":1,"74":1,"77":1,"80":1,"111":1}}],["命令实现的",{"2":{"40":1}}],["命令下载一个源码包并解包到当前目录",{"2":{"39":1}}],["命令安装软件包",{"2":{"38":1}}],["命令查看",{"2":{"37":1,"108":1}}],["命令应用配置到指定的工具链以建立编译环境",{"2":{"37":1,"108":1}}],["与",{"2":{"40":1,"90":2}}],["与python",{"2":{"37":1,"108":1}}],["与版本控制系统",{"2":{"22":1}}],["列出它们",{"2":{"59":3}}],["列出所有新闻",{"2":{"59":1}}],["列出所有软件包的详细信息",{"2":{"36":1}}],["列出已安装的配置",{"2":{"46":1}}],["列出帮助信息",{"2":{"33":1}}],["则需要静态链接的二进制",{"2":{"121":1}}],["则需利用该选项重新向工具链指定想要开启的扩展",{"2":{"89":1}}],["则只会使用当前普通用户",{"2":{"51":1,"54":1,"77":1,"80":1}}],["则可以加上",{"2":{"38":1}}],["则可以通过指定版本来安装",{"2":{"38":1}}],["则该软件包的当前版本不支持本机架构",{"2":{"36":1}}],["则是一个专门用来开发能够运行在risc",{"2":{"17":1}}],["代表分析工具",{"2":{"36":1}}],["代表开发板镜像",{"2":{"36":1}}],["代表模拟器二进制包",{"2":{"36":1}}],["代表工具链二进制包",{"2":{"36":1}}],["代表软件源码包",{"2":{"36":1}}],["代码冻结日期",{"2":{"30":1}}],["代码冻结日期在发布日期的上一周周四",{"2":{"27":1}}],["代码冻结日~发布日",{"2":{"27":1}}],["代码执行环境管理",{"2":{"22":1}}],["代码分析和优化",{"2":{"22":1}}],["代码片段管理",{"2":{"22":2}}],["代码导航",{"2":{"22":2}}],["代码自动完成",{"2":{"22":1}}],["代码编辑器常见功能详细说明",{"2":{"22":1}}],["代码编辑器",{"2":{"22":1}}],["代码",{"2":{"10":1,"17":1,"20":1}}],["只需下载ruyi工具预构建的二进制文件",{"2":{"114":1}}],["只需要输入对应的序号",{"2":{"101":1}}],["只标记为已读",{"2":{"35":1}}],["只是适用于当前开发语言及目标运行设备的risc",{"2":{"17":1}}],["不创建虚拟环境也可以为",{"2":{"96":1}}],["不支持",{"2":{"90":1}}],["不兼容",{"2":{"90":1}}],["不输出任何东西",{"2":{"35":1}}],["不同的处理器厂商可能对同一个扩展指令集进行了不同程度的定制和优化",{"2":{"122":1}}],["不同的虚拟环境创建如下",{"2":{"110":1}}],["不同linux发行版可能不同",{"2":{"114":1}}],["不同型号的risc",{"2":{"99":1}}],["不同适用环境的软件包的搜索",{"2":{"21":1}}],["不同厂商",{"2":{"21":1}}],["不同版本的编译工具链可以提供针对这些特定应用领域的优化和支持",{"2":{"122":1}}],["不同版本的编译工具链可以支持不同处理器架构的特定指令集",{"2":{"122":1}}],["不同版本的工具链也可能存在细微的差异和改进",{"2":{"122":1}}],["不同版本的软件资源需要进行管理",{"2":{"20":1}}],["不同版本支持的",{"2":{"88":1}}],["不同版本",{"2":{"21":1}}],["\\t",{"2":{"35":1}}],["\\t\\t",{"2":{"35":2}}],["questions",{"2":{"60":1,"101":1}}],["quot",{"2":{"59":2}}],["quiet",{"2":{"35":1}}],["qemu模拟器",{"2":{"122":1}}],["qemu",{"0":{"107":1},"2":{"20":1,"36":2,"40":3,"102":1,"105":3,"107":2,"110":6,"112":19,"117":1,"118":2,"122":3}}],["读取下一条新闻",{"2":{"35":1}}],["查询可用编译环境",{"0":{"37":1}}],["查询可用软件包",{"0":{"36":1}}],["查询包管理器更新内容",{"0":{"35":1}}],["查看如何使用",{"2":{"117":1}}],["查看工具版本",{"2":{"114":1}}],["查看可用的二进制",{"2":{"112":1}}],["查看可用的工具链二进制",{"2":{"111":1}}],["查看可用的软件包",{"2":{"36":1}}],["查看虚拟环境bin目录下已安装的工具链",{"2":{"105":1}}],["查看详细信息",{"2":{"105":1}}],["查看ruyi帮助",{"2":{"104":1}}],["查看rv64可执行程序文件属性信息",{"2":{"97":1,"106":1,"117":1}}],["查看当前虚拟环境下的gcc是否可用",{"2":{"96":1}}],["查看编译环境中得工具",{"2":{"96":1}}],["查看预置编译环境",{"2":{"96":1,"105":1}}],["查看软件仓软件包索引信息",{"2":{"96":1,"105":1}}],["查看",{"2":{"35":1,"46":1}}],["查看变量的值等",{"2":{"22":1}}],["查看最新支持的设备请通过指令ruyi",{"2":{"11":1}}],["~$",{"2":{"96":1}}],["~",{"2":{"34":1,"59":2,"67":3,"114":1,"121":3}}],["注意这整个过程如果在",{"2":{"120":1}}],["注意在虚拟环境创建时",{"2":{"96":1}}],["注意指定的",{"2":{"90":1}}],["注意指定对应的",{"2":{"90":1}}],["注意刷写镜像的操作需要调用",{"2":{"60":1}}],["注意",{"2":{"41":1,"52":1,"69":1,"74":1}}],["注意二进制的文件名必须为",{"2":{"33":1}}],["注意从",{"2":{"32":1}}],["应当可以正常打印版本信息",{"2":{"33":1}}],["应用框架等",{"2":{"16":1}}],["应用设计",{"2":{"11":1}}],["working",{"2":{"120":1}}],["workstation",{"2":{"47":1}}],["warranty",{"2":{"111":1}}],["want",{"2":{"101":1}}],["we",{"2":{"101":1}}],["website",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1}}],["will",{"2":{"60":3,"101":3}}],["wizard",{"2":{"60":3,"101":3}}],["without",{"2":{"110":2}}],["with",{"2":{"51":2,"54":2,"59":1,"60":1,"63":2,"66":2,"71":2,"74":2,"77":2,"80":2,"101":1,"110":2,"120":2,"121":2}}],["wch",{"2":{"51":105,"54":105}}],["where",{"2":{"38":1}}],["www",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"65":1,"69":1,"73":1,"76":1,"79":1}}],["wget",{"2":{"32":2,"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"65":2,"69":1,"73":3,"76":3,"79":3,"95":1}}],["+x",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"65":2,"69":1,"73":3,"76":3,"79":3,"95":1,"104":1}}],["$path",{"2":{"114":1}}],["$xdg",{"2":{"34":1,"59":2,"67":2}}],["$",{"2":{"33":3,"35":6,"38":1,"39":1,"49":6,"53":6,"56":6,"58":4,"59":1,"62":4,"65":4,"67":1,"69":2,"73":6,"76":6,"79":6,"110":7,"111":5,"112":7,"120":9,"121":2}}],["当前支持的其他设备镜像均需要用户手动指定目标刷写设备以执行",{"2":{"60":1}}],["当前",{"2":{"33":1,"45":1}}],["当使用",{"2":{"22":1}}],["作为替代方案",{"2":{"32":1,"70":1}}],["国庆节",{"2":{"30":1}}],["端午节",{"2":{"30":1}}],["劳动节",{"2":{"30":1}}],["937496",{"2":{"121":2}}],["911000",{"2":{"121":1}}],["9",{"0":{"78":1,"79":1},"1":{"79":1,"80":1},"2":{"30":1,"64":1,"66":1,"78":1,"79":4,"80":1,"101":3}}],["跳过一次",{"2":{"30":1}}],["跳转到变量的引用处",{"2":{"22":1}}],["跳转到函数调用等",{"2":{"22":1}}],["跳转到引用处",{"2":{"22":1}}],["春节",{"2":{"30":1}}],["备注",{"2":{"30":1}}],["滚动发行版本号",{"2":{"30":1}}],["服务≥10000名注册开发者",{"2":{"29":1}}],["将下载的文件去掉后缀重命名为",{"2":{"114":1}}],["将其放到path路径下",{"2":{"95":1}}],["将可以更新支持的板卡列表",{"2":{"66":1}}],["将自动调用",{"2":{"63":1,"66":1,"71":1,"74":1}}],["将在命令输出中提示",{"2":{"59":3}}],["将尝试调用",{"2":{"51":1,"54":1,"77":1,"80":1}}],["将根据运行环境",{"2":{"50":1}}],["将增加对openkylin和gentoo的支持",{"2":{"29":1}}],["将完全支持",{"2":{"16":1}}],["完成",{"2":{"93":1,"102":1}}],["完成回归测试用例更新和执行全面回归测试",{"2":{"27":1}}],["完善中",{"2":{"46":1}}],["完善的开发环境",{"2":{"5":1}}],["周五",{"2":{"27":1}}],["周发布一个开发版本",{"2":{"27":1}}],["敏捷开发版本排期",{"0":{"30":1}}],["敏捷开发版本执行敏捷测试方式",{"2":{"27":1}}],["敏捷开发版本计划",{"0":{"27":1}}],["延迟一周发布",{"2":{"27":1,"30":3}}],["发布日期",{"2":{"30":1}}],["发布日期默认每双周周二发布",{"2":{"27":1}}],["发布日~下一次代码冻结日",{"2":{"27":1}}],["发布周期内遇3日以上节假日的",{"2":{"27":1}}],["发布厂商",{"2":{"20":1}}],["切换为更加敏捷的开发迭代模式",{"2":{"27":1}}],["里程碑版本",{"0":{"26":1}}],["里面有各种各样的工具可以帮助你完成这个任务",{"2":{"17":1}}],["推动risc",{"2":{"23":1}}],["推广",{"2":{"23":1}}],["增加开发者的学习和开发效率",{"2":{"23":1}}],["回答问题",{"2":{"23":1}}],["例如打开",{"2":{"89":1}}],["例如用于浮点数乘除法的模拟运算函数",{"2":{"88":1}}],["例如当希望使用其他镜像代替默认的镜像时",{"2":{"67":1}}],["例如",{"2":{"23":1,"122":1}}],["例如在",{"2":{"5":1}}],["鼓励开发者积极参与交流和贡献",{"2":{"23":1}}],["积分和奖励机制",{"2":{"23":1}}],["就业和项目机会",{"2":{"23":1}}],["就像是一个你的工作室",{"2":{"17":1}}],["插件和扩展",{"2":{"23":1}}],["甚至组织在线培训或指导课程",{"2":{"23":1}}],["他们可以提供指导",{"2":{"23":1}}],["他们可以集成其他工具",{"2":{"22":1}}],["专家支持",{"2":{"23":1}}],["专为",{"2":{"11":1}}],["研讨会或会议",{"2":{"23":1}}],["社区可以设立积分和奖励机制",{"2":{"23":1}}],["社区可以提供就业和项目机会的发布平台",{"2":{"23":1}}],["社区可以组织定期的在线活动",{"2":{"23":1}}],["社区可能吸引一些risc",{"2":{"23":1}}],["社区可能提供详细的文档和教程",{"2":{"23":1}}],["活动和会议",{"2":{"23":1}}],["项目模板",{"2":{"23":1}}],["项目管理工具",{"2":{"22":1}}],["问答平台",{"2":{"23":1}}],["博客和文章",{"2":{"23":1}}],["博客和文档等等功能",{"2":{"17":1}}],["促进交流和知识共享",{"2":{"23":1}}],["分别为",{"2":{"88":1}}],["分享文章或贡献代码可以获得积分或奖励",{"2":{"23":1}}],["分享最新的技术趋势",{"2":{"23":1}}],["分享经验",{"2":{"23":1}}],["分为以下三个部分",{"2":{"7":1}}],["让他们在ruyisdk这个中心化的工具中便捷的获取使用和开发所需的支持",{"2":{"122":1}}],["让开发者聚集在一起",{"2":{"23":1}}],["让开发者可以发表问题",{"2":{"23":1}}],["让我们开始吧",{"0":{"13":1},"1":{"14":1}}],["论坛和讨论区",{"2":{"23":1}}],["论坛和技术讨论区",{"2":{"17":1}}],["编译代码",{"2":{"123":1}}],["编译工具链类型",{"2":{"122":1}}],["编译工具链存在实现了不同扩展指令集而形成不同版本实现的现状",{"2":{"122":1}}],["编译工具链的不同扩展指令集实现与选择",{"2":{"115":1}}],["编译工具链的版本选择参考",{"2":{"115":1}}],["编译需要编译的程序源代码",{"2":{"117":1}}],["编译一个简单的",{"2":{"112":1}}],["编译",{"0":{"117":1},"2":{"111":1}}],["编译环境",{"0":{"108":1},"1":{"109":1,"110":1,"111":1,"112":1},"2":{"40":1,"110":4,"112":1,"120":1}}],["编译环境中使用",{"2":{"40":1}}],["编译构建出适用该开发板的可执行程序",{"2":{"22":1}}],["编译构建",{"2":{"17":1}}],["编程技巧",{"2":{"23":1}}],["涵盖risc",{"2":{"23":1}}],["统计功能",{"2":{"23":1}}],["登录等账号有关的管理",{"2":{"23":1}}],["交叉编译coremark",{"0":{"97":1,"106":1}}],["交流需要的一切资源",{"2":{"23":1}}],["交互式解释器和调试器",{"2":{"22":1}}],["宣发",{"2":{"23":1}}],["主要的设备包括开发侧的个人电脑",{"2":{"123":1}}],["主要包含了一个组件管理器",{"2":{"17":1}}],["主页",{"2":{"23":1}}],["高度可定制的功能和良好的扩展性",{"2":{"22":1}}],["高效地开发risc",{"2":{"22":1}}],["高性能计算设备",{"2":{"11":1}}],["高性能嵌入式开发",{"2":{"11":1}}],["总之",{"2":{"22":1}}],["加速开发过程",{"2":{"22":1}}],["加快他们的开发过程",{"2":{"22":1}}],["利用其提供的各种工具和功能",{"2":{"22":1}}],["还提供文档生成工具",{"2":{"22":1}}],["还提供版本控制集成工具",{"2":{"22":1}}],["帮助开发者寻找合适的工作机会或参与感兴趣的项目",{"2":{"23":1}}],["帮助开发者更好地利用集成开发环境进行开发",{"2":{"23":1}}],["帮助开发者快速上手和解决常见问题",{"2":{"23":1}}],["帮助开发者发现潜在的性能问题和错误",{"2":{"22":1}}],["帮助你记录和分享你的代码",{"2":{"22":1}}],["帮助你管理代码的版本",{"2":{"22":1}}],["中配置了其对应参数",{"2":{"89":1}}],["中不同扩展的工具链已经在",{"2":{"89":1}}],["中秋节",{"2":{"30":1}}],["中的性能分析工具",{"2":{"22":1}}],["中有提供相关支持硬件情况",{"2":{"5":1}}],["逐行调试代码",{"2":{"22":1}}],["通常由操作系统提供",{"2":{"123":1}}],["通常用来运行risc",{"2":{"123":1}}],["通常完成目标可执行程序的准备工作",{"2":{"123":1}}],["通常为",{"2":{"34":1}}],["通常提供调试器功能",{"2":{"22":1}}],["通过ruyisdk操作系统安装器工具",{"2":{"99":1}}],["通过",{"2":{"22":1}}],["通过静态分析和语义理解",{"2":{"22":2}}],["设置coremark源码中的编译配置信息",{"2":{"97":1,"106":1,"117":1}}],["设置编译器路径和库路径",{"2":{"22":1}}],["设备上调试应用程序等",{"2":{"10":1}}],["设备专有向导页面",{"2":{"10":1}}],["设备的集成和支持主要包括以下几个方面",{"2":{"10":1}}],["设备安装器",{"2":{"1":1}}],["快速跳转到代码的不同部分",{"2":{"22":1}}],["资源共享",{"2":{"23":1}}],["资源文件和配置文件等",{"2":{"22":1}}],["资源类型",{"2":{"20":1}}],["你可以更高效地开发图像识别应用程序",{"2":{"22":1}}],["你可以将编译好的图像识别应用程序部署到risc",{"2":{"22":1}}],["你可以使用ruyi",{"2":{"22":1}}],["你可以使用代码导航功能",{"2":{"22":1}}],["你可以设置断点",{"2":{"22":1}}],["你可以编写程序",{"2":{"22":1}}],["你可以组织和管理你的代码文件",{"2":{"22":1}}],["你要做一款能够运行在risc",{"2":{"17":1}}],["打开",{"2":{"22":1,"89":1}}],["要求",{"2":{"22":1}}],["性能分析工具",{"2":{"84":1}}],["性能分析和内存分析等功能",{"2":{"22":1}}],["性能",{"2":{"22":1}}],["改动部分界面需要个性化定制",{"2":{"22":1}}],["自带",{"2":{"109":5}}],["自",{"2":{"78":1}}],["自2024年1月开始",{"2":{"27":1}}],["自研发",{"2":{"22":1}}],["自动识别设备",{"2":{"60":1}}],["自动选择显示的语言",{"2":{"50":1}}],["自动弹出变量",{"2":{"22":1}}],["自动生成代码文档或api文档",{"2":{"22":1}}],["自动完成",{"2":{"22":1}}],["定制化",{"2":{"22":1}}],["跨平台兼容性",{"2":{"22":1}}],["能够得到如下步骤所描述的功能支持",{"2":{"22":1}}],["能够流畅地运行在主流的pc设备上",{"2":{"22":1}}],["能够为一个项目同时生成不同的运行环境",{"2":{"22":1}}],["能够支持在线软件源中不同类型",{"2":{"21":1}}],["能够支持工具自身的升级",{"2":{"21":1}}],["可将仓库切换到备用仓库",{"2":{"114":1}}],["可按需对指定程序执行编译操作",{"2":{"111":1}}],["可选",{"2":{"95":1,"104":1}}],["可执行程序",{"0":{"107":1},"2":{"92":2}}],["可在",{"2":{"44":1}}],["可视化的集成开发环境的界面部分",{"2":{"22":1}}],["可扩展性和插件支持",{"2":{"22":1}}],["可以按需在ruyi",{"2":{"114":1}}],["可以看到成功构建",{"2":{"120":1}}],["可以看到",{"2":{"112":1}}],["可以执行如下命令退出编译环境",{"2":{"111":1}}],["可以更高效的利用有限的系统资源",{"2":{"87":1}}],["可以使用",{"2":{"67":1,"115":1,"116":1}}],["可以阅读任意新闻",{"2":{"59":1}}],["可以分享技术经验",{"2":{"23":1}}],["可以自动生成代码文档或api文档",{"2":{"22":1}}],["可以在配置文件中配置",{"2":{"67":1}}],["可以在开发者社区进行技术交流获取帮助",{"2":{"22":1}}],["可以在命令行环境中逐行执行代码",{"2":{"22":1}}],["可以模拟和调试risc",{"2":{"22":1}}],["可以帮助开发者编写和测试自己的程序",{"2":{"17":1}}],["可以对于实际的开发场景对于代码的编写以及调试",{"2":{"9":1}}],["可以走向国际化",{"2":{"5":1}}],["可以通过下载安装最新的",{"2":{"3":1,"125":1}}],["可以通过",{"2":{"1":1,"46":1}}],["很多开发语言都有丰富的第三方库和包管理工具",{"2":{"22":1}}],["来管理依赖和隔离项目环境",{"2":{"22":1}}],["因此如果存在ruyi",{"2":{"114":1}}],["因此",{"2":{"22":1,"122":1}}],["join",{"2":{"120":1,"121":1}}],["jython等",{"2":{"22":1}}],["javascript",{"2":{"22":1}}],["java",{"2":{"22":1}}],["一般通过模拟器工具来模拟运行环境",{"2":{"118":1}}],["一些",{"2":{"89":1}}],["一些厂家提供的镜像在刷写后并不会自动扩展分区来充分利用整块磁盘",{"2":{"51":1,"54":1,"63":1,"66":1,"71":1,"74":1,"77":1,"80":1}}],["一些语言需要在运行时依赖于相应的解释器或语言虚拟机",{"2":{"22":1}}],["一旦你完成了开发和调试",{"2":{"22":1}}],["一个小型的",{"2":{"87":1}}],["一个包管理工具",{"2":{"17":1}}],["一个开发者交流社区需要具备以下功能",{"2":{"23":1}}],["一个开发者交流社区",{"2":{"17":1}}],["一个集成开发环境",{"2":{"17":1}}],["教程",{"2":{"23":1}}],["教程和示例代码的集成",{"2":{"22":1}}],["教程视频",{"2":{"10":1}}],["解答问题",{"2":{"23":1}}],["解释器",{"2":{"22":1}}],["解释器支持",{"2":{"22":1}}],["解析软件包的依赖关系",{"2":{"17":1,"21":1}}],["float",{"2":{"120":1,"121":1}}],["flags",{"2":{"121":1}}],["flashing",{"2":{"60":1,"101":1}}],["flash",{"2":{"60":1,"101":1,"121":1}}],["flashed",{"2":{"60":1,"101":1}}],["flavor",{"2":{"37":2,"108":2}}],["f",{"2":{"90":2}}],["file",{"2":{"117":1,"120":1,"121":1}}],["fitness",{"2":{"111":1}}],["fixed",{"2":{"89":1}}],["fishwaldo",{"2":{"51":1,"54":1,"80":1}}],["f=gcc",{"2":{"89":1}}],["found",{"2":{"121":1}}],["foundation",{"2":{"111":1}}],["following",{"2":{"60":1,"101":4}}],["format",{"2":{"38":1}}],["for",{"2":{"33":2,"36":1,"51":33,"54":34,"60":1,"63":21,"66":24,"71":26,"74":26,"77":28,"80":33,"94":1,"101":5,"110":1,"111":3,"120":2,"121":3,"122":1}}],["fortran",{"2":{"22":1}}],["favor",{"2":{"110":1}}],["false",{"2":{"67":1}}],["fail",{"2":{"60":1,"101":1}}],["fastboot",{"2":{"51":14,"54":14,"60":1,"63":7,"66":7,"71":7,"74":7,"77":10,"80":14}}],["fpga",{"2":{"51":2,"54":2,"80":2}}],["free",{"2":{"111":2}}],["freertos",{"2":{"51":42,"54":42,"74":1,"77":1,"80":4}}],["fresh",{"2":{"110":1}}],["from",{"2":{"33":1,"49":1,"51":1,"53":1,"54":1,"56":1,"76":1,"79":1,"80":1,"110":5}}],["fetch",{"2":{"33":1}}],["fedora38",{"2":{"47":1}}],["fedora",{"2":{"32":1,"45":1}}],["fedora等",{"2":{"21":1,"22":1}}],["潜在的逻辑错误或常见的编码错误",{"2":{"22":1}}],["end=",{"2":{"121":1}}],["environment",{"2":{"22":1,"33":1,"110":4}}],["even",{"2":{"111":1}}],["evb",{"2":{"51":105,"54":105}}],["elfedit",{"2":{"111":1,"112":1}}],["elf",{"2":{"109":1,"120":1,"121":1,"122":1}}],["eabi",{"2":{"90":1}}],["ease",{"2":{"60":1,"101":1}}],["e",{"2":{"90":1,"105":1,"110":3,"112":1,"117":1,"121":1}}],["eof",{"2":{"67":2,"112":2}}],["emulator",{"2":{"36":3,"40":1,"110":6}}],["executable",{"2":{"120":1,"121":1}}],["exe",{"2":{"97":3,"98":1,"106":3,"107":1,"117":2,"118":1,"120":3,"121":7}}],["example",{"2":{"67":1}}],["expr",{"2":{"38":1}}],["extracted",{"2":{"120":1}}],["extracting",{"2":{"120":1}}],["extract",{"2":{"33":3,"39":2,"46":1,"96":1,"105":1,"116":1,"120":1}}],["exit",{"2":{"33":1,"110":1}}],["error",{"2":{"22":1}}],["etc",{"2":{"20":1,"121":1}}],["比较和合并等功能",{"2":{"22":1}}],["比如用c或者c++语言开发一个图像识别的程序",{"2":{"17":1}}],["提权",{"2":{"51":1,"54":1,"63":1,"66":1,"71":1,"74":1,"77":1,"80":1}}],["提高其在社区中的声誉",{"2":{"23":1}}],["提交",{"2":{"22":1}}],["提取变量等",{"2":{"22":1}}],["提取函数",{"2":{"22":1}}],["提供许多标准",{"2":{"86":1}}],["提供调试功能",{"2":{"85":1}}],["提供对不同",{"2":{"83":1}}],["提供对代码版本的管理",{"2":{"22":1}}],["提供多种图形化ide环境",{"2":{"29":1}}],["提供技术支持和资源共享",{"2":{"23":1}}],["提供开发者撰写博客文章的功能",{"2":{"23":1}}],["提供建议等",{"2":{"23":1}}],["提供了部署工具",{"2":{"22":1}}],["提供了大量的相关技术文章",{"2":{"10":1}}],["提供自动完成功能",{"2":{"22":1}}],["提供与risc",{"2":{"22":1}}],["提供代码分析工具",{"2":{"22":1}}],["提供可重用的代码片段库",{"2":{"22":1}}],["提供集成的调试器",{"2":{"22":1}}],["提供一些新功能",{"2":{"27":1}}],["提供一个讨论区或论坛",{"2":{"23":1}}],["提供一个功能强大的代码编辑器",{"2":{"22":1}}],["提供一系列操作",{"2":{"22":1}}],["提供快速导航到代码的不同部分",{"2":{"22":1}}],["提供关于代码中变量",{"2":{"22":2}}],["提供项目管理功能",{"2":{"22":1}}],["提供互助式技术支持和资源共享",{"2":{"17":1}}],["提供更好的环境隔离",{"2":{"117":1}}],["提供更强的计算能力",{"2":{"11":1}}],["提供更强的处理能力",{"2":{"11":1}}],["提供更高的性能和更多的接口",{"2":{"11":1}}],["提供",{"2":{"10":1}}],["提供给开发者使用",{"2":{"10":1}}],["提供risc",{"2":{"0":2}}],["nm",{"2":{"111":2,"112":2}}],["n",{"2":{"60":1,"101":2,"110":1,"112":1}}],["nanhu",{"2":{"109":1,"110":2}}],["nano",{"2":{"51":4,"54":4,"80":4}}],["name",{"2":{"96":1,"105":1,"110":6}}],["navigation",{"2":{"22":1}}],["nvme",{"2":{"51":6,"54":6,"63":6,"66":6,"71":6,"74":6,"77":6,"80":6}}],["no",{"2":{"36":1,"59":2,"111":1}}],["not",{"2":{"33":1,"60":2,"101":2,"110":1,"111":1,"120":1,"121":2}}],["note",{"2":{"27":1,"60":1,"101":1}}],["necessary",{"2":{"60":1,"101":1}}],["needs",{"2":{"37":2,"108":2}}],["newlib",{"0":{"87":1},"2":{"87":1}}],["new",{"2":{"59":3,"110":3}}],["new\\t\\t",{"2":{"35":1}}],["news",{"2":{"35":7,"46":1,"48":1,"50":1,"57":1,"59":18}}],["nezha",{"2":{"1":1,"11":1,"51":2,"54":2,"63":2,"66":2,"71":2,"74":2,"77":2,"80":2,"101":1}}],["返回值等",{"2":{"22":2}}],["类型的",{"2":{"111":1}}],["类似于问答社区",{"2":{"23":1}}],["类等的详细信息",{"2":{"22":2}}],["类名等的建议",{"2":{"22":1}}],["函数和类名的建议",{"2":{"22":1}}],["函数",{"2":{"22":3}}],["根据用户的输入选择镜像",{"2":{"60":1}}],["根据代码中的注释或特定的标记语言",{"2":{"22":1}}],["根据当前上下文",{"2":{"22":2}}],["根据编程语言的语法规则",{"2":{"22":1}}],["语言虚拟机等软件",{"2":{"123":1}}],["语言虚拟机或运行时环境",{"2":{"22":1}}],["语言运行时库",{"2":{"86":1}}],["语言插件",{"2":{"22":1}}],["语言执行环境",{"2":{"16":1}}],["语法高亮",{"2":{"22":1}}],["减少错误",{"2":{"22":2}}],["版本除非指定",{"2":{"111":1}}],["版本以及ruyisdk",{"2":{"88":1}}],["版本的",{"2":{"69":1}}],["版本的稳定二进制为",{"2":{"58":1,"62":1,"65":1}}],["版本中",{"2":{"55":1}}],["版本会忽略",{"2":{"52":1}}],["版本",{"2":{"51":1,"54":1,"55":1,"63":2,"66":2,"71":2,"72":1,"74":2,"77":1,"80":1,"88":2}}],["版本新增特性",{"0":{"48":1,"52":1,"55":1,"57":1,"61":1,"64":1,"68":1,"72":1,"75":1,"78":1},"1":{"49":1,"50":1,"51":1,"53":1,"54":1,"56":1,"58":1,"59":1,"60":1,"62":1,"63":1,"65":1,"66":1,"67":1,"69":1,"70":1,"71":1,"73":1,"74":1,"76":1,"77":1,"79":1,"80":1}}],["版本开始支持矽速",{"2":{"78":1}}],["版本开始新增板卡镜像刷写功能",{"2":{"60":1}}],["版本开始新增新闻功能",{"2":{"59":1}}],["版本开始",{"2":{"32":1,"50":1,"51":1,"54":1,"67":1,"70":1,"75":1,"77":1,"80":1}}],["版本计划",{"0":{"25":1},"1":{"26":1,"27":1}}],["版本规划路线图",{"0":{"24":1},"1":{"25":1,"26":1,"27":1,"28":1,"29":1,"30":1}}],["版本控制集成",{"2":{"22":2}}],["版本信息",{"2":{"20":1}}],["错误检查",{"2":{"22":2}}],["智能感知",{"2":{"22":2}}],["智能家居",{"2":{"6":1}}],["管理依赖和库等",{"2":{"22":1}}],["导入现有项目",{"2":{"22":1}}],["组织和管理他们的risc",{"2":{"22":1}}],["组件管理器包含一个在线软件源",{"2":{"17":1}}],["待定",{"2":{"21":1,"22":1}}],["搜索",{"2":{"21":1}}],["或者任何你习惯的方式将代码下载到本地",{"2":{"116":1}}],["或更高的版本",{"2":{"59":3}}],["或",{"2":{"33":1,"44":1,"67":1,"90":1,"95":1,"104":1,"114":1,"115":1}}],["或工具链",{"2":{"27":1}}],["或目标运行环境",{"2":{"21":1}}],["或图形用户界面",{"2":{"17":1}}],["按照待编译程序自身的编译说明执行",{"2":{"117":1}}],["按照当前系统语言设置",{"2":{"55":1}}],["按照可适用的开发板",{"2":{"21":1}}],["按照可支持的扩展指令集搜索",{"2":{"21":1}}],["按照资源类型搜索",{"2":{"21":1}}],["按照版本搜索",{"2":{"21":1}}],["按照name搜索",{"2":{"21":1}}],["按照引导信息一步步执行即可",{"2":{"3":1,"14":1,"125":1}}],["卸载软件包",{"0":{"41":1}}],["卸载",{"0":{"42":1},"2":{"21":1,"46":1}}],["卸载和管理软件包",{"2":{"21":1}}],["用于处理生成",{"2":{"84":1}}],["用于将高级编程语言",{"2":{"83":1}}],["用于开发和构建",{"2":{"81":1}}],["用于管理工具链",{"2":{"44":1}}],["用于与在线软件源交互",{"2":{"21":2}}],["用户可以更具自己的程序进行调整",{"2":{"89":1}}],["用户可以根据自身硬件和使用场景进行选择",{"2":{"89":1}}],["用户可以根据自身需求调整",{"2":{"89":1}}],["用户运行",{"2":{"75":1}}],["用户注册量等信息进行统计",{"2":{"23":1}}],["用户的注册",{"2":{"23":1}}],["用户无需为环境搭建耗费精力",{"2":{"17":1}}],["用来汇聚关于",{"2":{"23":1}}],["xferd",{"2":{"120":1}}],["xfce",{"2":{"51":10,"54":10,"63":9,"66":10,"71":10,"74":10,"77":10,"80":10,"101":1}}],["xiangshan",{"2":{"109":1,"110":1}}],["x26",{"2":{"96":2,"105":2}}],["xventanacondops",{"2":{"90":2}}],["xcv",{"2":{"90":1}}],["xcvalu",{"2":{"90":1}}],["xcvmac",{"2":{"90":1}}],["xuantie",{"2":{"88":3,"90":1,"122":1}}],["x86",{"2":{"45":3,"49":1,"53":1,"56":1,"76":1,"79":1,"92":1,"103":1,"112":1}}],["xdg",{"2":{"34":1,"52":1,"55":1}}],["x3c",{"2":{"33":1,"38":5,"49":1,"53":1,"56":1,"58":1,"59":2,"62":1,"65":1,"67":2,"69":1,"73":1,"76":1,"79":1,"112":3}}],["xz",{"2":{"32":2}}],["x这种多个版本",{"2":{"20":1}}],["xthead版本工具链",{"2":{"96":1}}],["xtheadvector",{"2":{"90":1}}],["xtheadsync",{"2":{"90":2}}],["xtheadfmemidx",{"2":{"90":2}}],["xtheadfmv",{"2":{"90":2}}],["xtheadmempair",{"2":{"90":2}}],["xtheadmemidx",{"2":{"90":2}}],["xtheadmac",{"2":{"90":2}}],["xtheadint",{"2":{"90":2}}],["xtheadcondmov",{"2":{"90":2}}],["xtheadcmo",{"2":{"90":2}}],["xtheadbs",{"2":{"90":2}}],["xtheadbb",{"2":{"90":2}}],["xtheadba",{"2":{"90":2}}],["xthead",{"2":{"20":1,"36":4,"37":1,"96":4,"108":1,"109":1,"110":4,"112":4,"122":2}}],["每种类型会产生诸如vx",{"2":{"20":1}}],["ucb",{"2":{"120":1,"121":1}}],["util",{"2":{"120":1,"121":1}}],["utils",{"2":{"32":1}}],["uboot",{"2":{"101":1}}],["ubuntu",{"2":{"21":1,"22":1,"32":1,"45":1,"47":1,"51":2,"54":2,"66":1,"71":2,"74":2,"77":2,"80":2,"100":1,"103":1}}],["udev",{"2":{"51":1,"54":1,"77":1,"80":1}}],["unknown",{"2":{"105":1,"106":1,"111":34,"117":1}}],["understand",{"2":{"60":1,"101":1}}],["under",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1}}],["uninstall",{"2":{"42":4,"46":1,"95":1,"104":1}}],["unmatched",{"2":{"1":1,"11":1,"51":7,"54":7,"66":5,"68":1,"71":8,"74":7,"77":7,"80":7,"101":1}}],["usage",{"2":{"110":1}}],["usb",{"2":{"51":2,"54":2}}],["use",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1,"110":4}}],["user模式下执行rv64",{"2":{"118":1}}],["user模式下执行riscv64",{"2":{"107":1}}],["user",{"0":{"107":1},"2":{"36":2,"40":2,"60":1,"101":1,"105":2,"110":2,"112":2,"117":2,"122":2}}],["users",{"2":{"33":1}}],["usr",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"65":2,"69":1,"73":3,"76":3,"79":3,"95":1,"104":1}}],["upload",{"2":{"120":1}}],["update执行报连接错误",{"2":{"114":1}}],["update",{"2":{"33":3,"34":1,"46":1,"59":5,"66":1,"95":1,"114":1}}],["upstream模拟器",{"2":{"117":1}}],["upstream",{"2":{"20":1,"36":6,"38":6,"40":4,"88":2,"90":1,"105":4,"109":4,"110":4,"111":4,"117":3,"122":4}}],["等系列扩展",{"2":{"90":1}}],["等",{"2":{"84":1,"89":1}}],["等属性信息",{"2":{"20":1}}],["等已经大规模硅化的草案",{"2":{"16":1}}],["示例",{"2":{"20":1}}],["库函数的实现",{"2":{"86":1}}],["库文件等",{"2":{"23":1}}],["库",{"2":{"20":1,"87":1}}],["包含三种工具链版本",{"2":{"88":1}}],["包含一些与编译",{"2":{"88":1}}],["包含工具",{"2":{"84":1}}],["包含但不限于openeuler",{"2":{"21":1,"22":1}}],["包版本号>",{"2":{"59":1}}],["包名>",{"2":{"59":1}}],["包括",{"2":{"83":1,"89":1}}],["包括对eclipse和vscode的支持",{"2":{"29":1}}],["包括预定义的模板或用户自定义的代码片段",{"2":{"22":1}}],["包括且不限于ruyi",{"2":{"20":1}}],["包管理工具快速查询和安装",{"2":{"115":1}}],["包管理工具默认的配置目录",{"2":{"114":1}}],["包管理工具的安装非常简单",{"2":{"114":1}}],["包管理工具",{"0":{"114":1}}],["包管理工具负责从在线软件源中获取软件包的信息",{"2":{"17":1,"21":1}}],["包管理在建立编译环境之前会检查该环境是否合法",{"2":{"109":1}}],["包管理是",{"2":{"44":1}}],["包管理时您需要手动进行该操作",{"2":{"42":1}}],["包管理被设计为避免进行需要超级用户权限的操作",{"2":{"42":1}}],["包管理自身的升级可能会需要超级用户权限",{"2":{"42":1}}],["包管理不询问而直接执行",{"2":{"42":2}}],["包管理不再依赖",{"2":{"32":1,"70":1}}],["包管理预置的配置可以使用",{"2":{"37":1,"108":1}}],["包管理支持",{"2":{"33":1}}],["包管理和库支持",{"2":{"22":1}}],["包管理器和工具的使用",{"2":{"119":1}}],["包管理器提供了不同组织发布的不同版本的gnu和llvm编译工具链",{"2":{"115":1}}],["包管理器具有良好的平台兼容性以及多发行版兼容性",{"2":{"45":1}}],["包管理器的问题和需求可以通过仓库issue反馈",{"2":{"44":1}}],["包管理器的过程",{"2":{"42":1}}],["包管理器的更新信息",{"2":{"35":1}}],["包管理器没有实现卸载",{"2":{"41":1}}],["包管理器同时管理一些源码包",{"2":{"39":1}}],["包管理器依赖一些外部工具",{"2":{"32":1}}],["包管理器工具使用",{"2":{"37":1,"108":1}}],["包管理器工具则是用于与在线软件源交互的工具",{"2":{"17":1}}],["包管理器工具并执行以下命令为设备安装系统",{"2":{"3":1,"125":1}}],["包管理器获取",{"2":{"9":1}}],["包管理器",{"0":{"8":1,"19":1,"33":1,"42":1,"44":1},"1":{"20":1,"21":1,"45":1,"46":1,"47":1},"2":{"42":2,"46":1,"67":1,"119":1}}],["包管理器等",{"2":{"5":1}}],["location",{"2":{"121":2}}],["locales",{"2":{"50":1}}],["local",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"59":2,"62":2,"65":2,"67":1,"69":1,"73":3,"76":3,"79":3,"95":1,"96":1,"104":1}}],["lflags",{"2":{"121":1}}],["lrt",{"2":{"120":2}}],["left",{"2":{"120":1}}],["lto",{"2":{"111":1,"112":1}}],["lt",{"2":{"96":1,"105":1}}],["lts",{"2":{"45":1,"47":1}}],["lmul=用于指定一个循环迭代中处理的向量元素的数量",{"2":{"89":1}}],["lp64",{"2":{"89":1,"90":1}}],["lp64e",{"2":{"89":1}}],["lp64d",{"2":{"89":1,"120":1}}],["lpi4a1590",{"2":{"96":1}}],["lpi4a",{"2":{"37":1,"96":1,"101":2,"108":1,"109":1,"110":2,"112":1}}],["ldd",{"2":{"111":1,"112":1}}],["ld",{"2":{"84":1,"111":2,"112":2,"120":1}}],["lz4",{"2":{"78":1}}],["lsb",{"2":{"120":1,"121":1}}],["ls",{"2":{"39":1,"96":2,"97":1,"105":1,"106":1,"111":1,"112":1}}],["llvm工具链",{"2":{"122":1}}],["llvm",{"0":{"91":1},"2":{"36":2,"109":2,"110":3,"122":1}}],["lldb",{"2":{"20":1}}],["latest",{"2":{"36":9,"38":1}}],["linked",{"2":{"120":1,"121":1}}],["link",{"2":{"97":1,"106":1,"117":1,"120":2,"121":2}}],["linux系统皆可",{"2":{"100":1}}],["linux64",{"2":{"97":1,"106":1,"117":1,"120":2,"121":1}}],["linux",{"2":{"49":1,"51":1,"53":1,"54":1,"56":1,"76":1,"79":1,"80":1,"96":1,"97":1,"105":1,"106":1,"111":34,"112":33,"117":1,"120":5,"121":2}}],["lib",{"2":{"120":1}}],["libgcc",{"0":{"88":1}}],["libgit2",{"2":{"55":1}}],["library",{"0":{"86":1}}],["likely",{"2":{"60":1,"101":1}}],["list",{"2":{"33":3,"35":3,"36":3,"37":2,"46":2,"59":5,"96":2,"105":3,"108":2,"114":1,"115":1,"120":1,"121":1}}],["licensed",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1}}],["licenses",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"65":1,"69":1,"73":1,"76":1,"79":1}}],["license",{"2":{"33":2,"49":3,"53":3,"56":3,"58":2,"62":2,"65":2,"69":2,"73":2,"76":3,"79":3}}],["licheerv",{"2":{"51":4,"54":4,"80":4}}],["licheepi",{"2":{"1":1,"11":1,"51":9,"54":9,"60":1,"63":9,"66":9,"71":9,"74":9,"77":9,"80":9,"93":1,"94":1,"101":7}}],["lichee",{"2":{"1":1,"11":1,"51":12,"54":12,"63":2,"66":2,"71":2,"74":2,"77":2,"80":12,"101":1}}],["gz",{"2":{"120":3}}],["g++",{"2":{"111":1,"112":1}}],["gcov",{"2":{"111":3,"112":3}}],["gcc13",{"2":{"121":2}}],["gcc",{"0":{"81":1,"83":1},"1":{"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1},"2":{"81":1,"83":3,"89":2,"96":1,"97":1,"105":1,"106":1,"111":6,"112":5,"117":1,"120":3,"121":1}}],["gfortran",{"2":{"111":1,"112":1}}],["g",{"2":{"97":1,"106":1,"117":1,"120":1,"121":1}}],["gt",{"2":{"96":1,"105":1}}],["glibc",{"0":{"86":1},"2":{"87":1}}],["gprof",{"2":{"84":1,"111":1,"112":1}}],["group=",{"2":{"51":2,"54":2}}],["gnu工具链",{"2":{"122":1}}],["gnu",{"0":{"83":1,"84":1,"85":1,"86":1},"2":{"36":9,"38":6,"40":2,"81":1,"83":2,"88":2,"89":1,"96":4,"97":1,"105":3,"106":1,"109":8,"110":8,"111":37,"112":35,"117":2,"120":4,"121":2,"122":5}}],["gnu和llvm编译工具链",{"2":{"20":1}}],["github",{"2":{"33":1,"44":2,"49":1,"51":1,"53":1,"54":1,"56":1,"62":1,"67":1,"76":1,"79":1,"80":1,"95":2,"104":1,"114":1}}],["git",{"2":{"32":3,"67":2,"68":1,"70":1,"89":2,"116":1}}],["generic",{"2":{"37":1,"40":2,"51":16,"54":17,"63":4,"66":6,"71":6,"74":10,"77":10,"80":14,"105":1,"108":1,"109":4,"110":4,"111":3,"117":1}}],["generate",{"2":{"33":1}}],["generation",{"2":{"22":1}}],["get",{"2":{"32":2,"49":1,"53":1,"56":1,"76":1,"79":1}}],["gdb",{"0":{"85":1},"2":{"20":1,"111":2,"112":2}}],["gui未来可能提供",{"2":{"17":1}}],["gui",{"2":{"8":1,"21":1}}],["供参考",{"2":{"18":1}}],["这种现象是由于处理器架构的发展",{"2":{"122":1}}],["这个操作将从",{"2":{"120":1}}],["这个过程中您可以自主选择是否保留旧的软件包缓存和",{"2":{"42":1}}],["这个命令将会询问您以二次确认该操作",{"2":{"42":1}}],["这个命令使用预置的",{"2":{"40":1}}],["这和",{"2":{"40":1}}],["这里跳过具体事例",{"2":{"111":1}}],["这里列出了经过测试可用的配置组合",{"2":{"109":1}}],["这里未列举所有的情况",{"2":{"92":1}}],["这里提供示例规则仅供参考",{"2":{"51":1,"54":1}}],["这里以coremark为例",{"2":{"117":1}}],["这里以",{"2":{"33":1}}],["这里不同语言存在差异",{"2":{"22":1}}],["这些典型的场景供新用户参考和体验",{"2":{"92":1}}],["这些更新将以",{"2":{"27":1}}],["这些工具从包管理器中获取",{"2":{"22":1}}],["这有助于加快开发速度和提高效率",{"2":{"23":1}}],["这是由",{"2":{"40":1}}],["这是用户维护方持续了解开发者社区活跃程度的一种技术支持手段",{"2":{"23":1}}],["这是一个初步的需求设想",{"2":{"18":1}}],["这可能涉及选择适当的编译选项",{"2":{"22":1}}],["这样可以最大限度地发挥其处理器的性能和功能",{"2":{"122":1}}],["这样可以支持同一个开发环境中同时安装不同的编译工具链版本",{"2":{"117":1}}],["这样的多样性为开发者提供了更多选择",{"2":{"122":1}}],["这样的一个开发者交流社区可以促进risc",{"2":{"23":1}}],["这样的平台可以快速解决开发过程中的疑问和难题",{"2":{"23":1}}],["这样",{"2":{"22":2}}],["这包括静态代码分析",{"2":{"22":1}}],["这包括创建新项目",{"2":{"22":1}}],["这一过程和x86下的开发",{"2":{"17":1}}],["说明",{"2":{"18":1,"114":1,"122":1}}],["模式下运行",{"0":{"107":1}}],["模拟运行",{"0":{"112":1,"118":1},"2":{"123":1}}],["模拟环境",{"2":{"93":1,"102":1}}],["模拟器的命令为",{"2":{"112":1}}],["模拟器的编译环境",{"2":{"40":1}}],["模拟器运行交叉编译的",{"2":{"110":2}}],["模拟器上成功执行的过程",{"2":{"102":1}}],["模拟器配置建立",{"2":{"96":1,"105":1}}],["模拟器",{"2":{"8":1,"17":1,"20":1,"44":1,"105":1,"118":1,"123":1}}],["模拟器等所需的工具",{"2":{"111":1}}],["模拟器等软件和工具都可以从ruyi",{"2":{"17":1}}],["模拟器等工具",{"2":{"17":1}}],["模拟器等",{"2":{"0":1,"10":1}}],["模块介绍",{"0":{"82":1},"1":{"83":1,"84":1,"85":1,"86":1,"87":1,"88":1}}],["模块需求说明",{"0":{"18":1},"1":{"19":1,"20":1,"21":1,"22":1,"23":1}}],["聚集risc",{"2":{"17":1}}],["目标代码格式是elf",{"2":{"122":1}}],["目标上调试他们的程序",{"2":{"85":1}}],["目标文件工具",{"2":{"84":1}}],["目标运行环境的risc",{"2":{"20":1}}],["目录建立",{"2":{"67":1}}],["目录建立包含",{"2":{"40":1}}],["目录下",{"2":{"59":1}}],["目录为",{"2":{"34":1}}],["目的是为risc",{"2":{"17":1}}],["目前ruyisdk已经提供的编译工具链有如下几种",{"2":{"122":1}}],["目前也有一些简单的使用案例供参考",{"2":{"119":1}}],["目前支持的命令如下",{"2":{"46":1}}],["目前经过测试可用的环境有",{"2":{"45":1}}],["目前计划中的里程碑版本有",{"2":{"26":1}}],["目前",{"2":{"11":1,"88":1}}],["目前在",{"2":{"6":1}}],["目前对硬件设备的集成主要体现在包管理器",{"2":{"1":1}}],["也可以使用",{"2":{"111":1}}],["也可通过调试工具进行代码调试",{"2":{"17":1}}],["也称为包管理器",{"2":{"17":1}}],["最佳实践等内容",{"2":{"23":1}}],["最后放入",{"2":{"114":1}}],["最后",{"2":{"22":1}}],["最后在模拟器或者risc",{"2":{"17":1}}],["最终希望",{"2":{"5":1}}],["想象一下",{"2":{"17":1}}],["并可以根据具体需求和目标平台选择适合的编译工具链版本",{"2":{"122":1}}],["并满足不同处理器版本的需求",{"2":{"122":1}}],["并在虚拟环境中配置了qemu模拟器",{"2":{"118":1}}],["并指定编译工具链为gnu",{"2":{"117":1}}],["并使其具有可执行权限",{"2":{"114":1}}],["并使用平头哥",{"2":{"112":1}}],["并且相互不冲突和影响",{"2":{"117":1}}],["并且改变提示符以提示当前进入编译环境中",{"2":{"111":1}}],["并且开始自动执行对应程序为用户自动部署",{"2":{"14":1}}],["并赋予其可执行权限",{"2":{"95":1}}],["并用",{"2":{"59":3}}],["并不会删除软件包缓存和安装的",{"2":{"42":1}}],["并进行远程调试和监视",{"2":{"22":1}}],["并观察变量的值",{"2":{"22":1}}],["并创建一个新的项目或工程",{"2":{"22":1}}],["并行编译能力",{"2":{"22":1}}],["并与其他开发者共享他们的插件",{"2":{"22":1}}],["并提供与其他竞争对手不同的优势",{"2":{"122":1}}],["并提供优化建议",{"2":{"22":1}}],["并提供更好的代码编写和维护体验",{"2":{"22":2}}],["并查看变量的值和内存的状态",{"2":{"22":1}}],["并给出相应的警告或错误提示",{"2":{"22":1}}],["并自动处理依赖关系的下载和安装",{"2":{"17":1,"21":1}}],["安装器",{"2":{"123":1}}],["安装目标程序运行所需的运行时环境",{"2":{"123":1}}],["安装编译工具链",{"0":{"115":1},"2":{"111":1,"112":1}}],["安装虚拟环境中使用的编译工具链",{"2":{"111":1}}],["安装qemu",{"2":{"105":1}}],["安装工具链",{"2":{"105":1}}],["安装操作系统",{"0":{"101":1}}],["安装适用于licheepi",{"2":{"96":1}}],["安装gnu",{"2":{"96":1}}],["安装它们",{"2":{"59":1}}],["安装源码包",{"0":{"39":1}}],["安装软件包",{"0":{"38":1}}],["安装依赖软件",{"0":{"32":1}}],["安装和管理各种python库和依赖项",{"2":{"22":1}}],["安装",{"0":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"65":1,"69":1,"73":1,"76":1,"79":1,"114":1},"2":{"17":1,"21":1}}],["安装教程",{"2":{"10":1}}],["ticks",{"2":{"121":1}}],["time",{"2":{"120":3,"121":1}}],["title",{"2":{"59":2}}],["t",{"2":{"96":1,"105":1,"110":8,"111":2,"112":1,"117":1}}],["test",{"2":{"112":4}}],["testsuite",{"2":{"89":1}}],["testing",{"2":{"33":1,"104":1}}],["txt",{"2":{"59":1,"121":1}}],["tang",{"2":{"51":4,"54":4,"80":4}}],["target",{"2":{"89":1}}],["target系统镜像等内容",{"2":{"17":1}}],["tar",{"2":{"32":2,"120":3}}],["th1520",{"2":{"94":1}}],["that",{"2":{"60":3,"101":3}}],["thread",{"2":{"51":29,"54":29,"80":1}}],["them",{"2":{"59":1}}],["there",{"2":{"59":1,"111":1}}],["the",{"2":{"33":1,"49":3,"53":3,"56":3,"60":4,"76":3,"79":3,"101":12,"110":9,"111":1}}],["then",{"2":{"33":1,"60":1,"101":1}}],["this",{"2":{"33":2,"49":1,"53":1,"56":1,"60":2,"76":1,"79":1,"101":2,"110":1,"111":1}}],["total",{"2":{"120":2,"121":2}}],["toml",{"2":{"67":3,"114":1}}],["tool",{"2":{"111":1,"112":1}}],["toolchain",{"2":{"33":1,"36":5,"40":1,"83":1,"109":1,"110":7}}],["tools",{"2":{"22":1}}],["to",{"2":{"33":2,"60":4,"101":7,"110":5,"120":2}}],["todo",{"2":{"8":1,"91":1,"119":1}}],["集成文档和教程",{"2":{"22":1}}],["集成一个risc",{"2":{"22":1}}],["集成risc",{"2":{"22":1}}],["集成",{"2":{"22":1}}],["集成开发环境来为开发者提供方便",{"2":{"123":1}}],["集成开发环境提供智能感知功能",{"2":{"22":1}}],["集成开发环境会根据编程语言的语法规则",{"2":{"22":1}}],["集成开发环境",{"2":{"17":1}}],["集成多种通信接口",{"2":{"11":1}}],["集中存储了risc",{"2":{"17":1}}],["培育运营一个活跃全面的开发者交流社区",{"2":{"16":1}}],["o2",{"2":{"120":2,"121":4}}],["override",{"2":{"110":1}}],["o",{"2":{"104":1,"112":1,"120":1,"121":2}}],["o3",{"2":{"89":1,"112":1}}],["objcopy",{"2":{"84":1,"111":1,"112":1}}],["objdump",{"2":{"84":1,"111":1,"112":1}}],["onlinedocs",{"2":{"83":1}}],["only",{"2":{"51":71,"54":71,"74":1,"77":1,"80":5}}],["onto",{"2":{"60":1,"101":1}}],["on",{"2":{"49":1,"51":9,"53":1,"54":9,"56":1,"60":2,"63":6,"66":6,"71":6,"74":9,"76":1,"77":9,"79":1,"80":9,"101":3,"121":1}}],["one",{"2":{"38":1,"101":2,"110":1}}],["operation",{"2":{"121":1}}],["openwrt",{"2":{"51":1,"54":1,"66":1,"71":1,"74":1,"77":1,"80":1}}],["openkylin",{"2":{"51":1,"54":1,"71":1,"74":1,"77":1,"80":1}}],["openeuler",{"2":{"10":1,"32":1,"45":2,"47":1,"51":20,"54":20,"63":18,"66":20,"71":20,"74":20,"77":20,"80":20,"94":1,"101":2}}],["op>`",{"2":{"38":1}}],["op>",{"2":{"38":1}}],["options",{"2":{"33":1,"110":1}}],["official",{"2":{"49":1,"51":13,"53":1,"54":13,"56":1,"63":4,"66":6,"71":6,"74":10,"76":1,"77":10,"79":1,"80":13}}],["of",{"2":{"33":2,"36":1,"38":1,"49":4,"53":4,"56":4,"58":2,"62":2,"65":2,"69":2,"73":2,"76":4,"79":4,"110":4}}],["org",{"2":{"33":1,"49":2,"53":2,"56":2,"58":1,"62":1,"65":1,"69":1,"73":1,"76":2,"79":2,"83":1,"84":1,"89":1}}],["or",{"2":{"16":1,"111":1}}],["标准和规范的演进",{"2":{"122":1}}],["标准和规范的演进以及特定应用需求等因素相互作用的结果",{"2":{"122":1}}],["标准",{"2":{"16":1}}],["和运行侧的risc",{"2":{"123":1}}],["和",{"2":{"16":1,"17":1,"51":1,"54":1,"63":1,"66":1,"71":1,"74":1,"77":1,"80":1,"83":1}}],["和物联网应用",{"2":{"11":1}}],["0x5275",{"2":{"121":1}}],["0x8e3a",{"2":{"121":1}}],["0x1fd7",{"2":{"121":1}}],["0xe714",{"2":{"121":1}}],["0xe9f5",{"2":{"121":1}}],["0>",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"65":1,"69":1,"73":1,"76":1,"79":1}}],["05",{"2":{"30":5}}],["07",{"2":{"30":5}}],["09",{"2":{"30":5,"45":2,"47":1}}],["04",{"2":{"30":4,"45":1,"47":1,"100":1,"103":1}}],["08",{"2":{"30":7}}],["03",{"2":{"30":5}}],["02",{"2":{"30":3}}],["01",{"2":{"30":4,"59":8,"120":3}}],["0666",{"2":{"51":2,"54":2}}],["06",{"2":{"26":3,"30":7}}],["0",{"0":{"48":1,"49":1,"52":1,"53":1,"55":1,"56":1,"57":1,"58":1,"61":1,"62":1,"64":1,"65":1,"68":1,"69":1,"72":1,"73":1,"78":1,"79":1},"1":{"49":1,"50":1,"51":1,"53":1,"54":1,"56":1,"58":1,"59":1,"60":1,"62":1,"63":1,"65":1,"66":1,"67":1,"69":1,"70":1,"71":1,"73":1,"74":1,"79":1,"80":1},"2":{"16":2,"32":1,"33":5,"36":18,"38":3,"49":11,"50":2,"51":2,"52":2,"53":11,"54":2,"55":3,"56":11,"58":10,"59":5,"60":2,"62":12,"63":2,"65":10,"66":2,"67":2,"69":6,"70":1,"71":2,"72":1,"73":9,"74":2,"75":2,"76":7,"77":2,"78":1,"79":11,"80":2,"83":1,"90":2,"95":6,"96":1,"104":2,"111":1,"112":1,"120":6,"121":8,"122":1}}],["尤其强调",{"2":{"16":1}}],["计划发布时间",{"2":{"26":6}}],["计划以每半年为一个里程碑版本周期来推动",{"2":{"26":1}}],["计划用三年时间为",{"2":{"15":1,"24":1}}],["计算库",{"2":{"16":1}}],["运行risc",{"0":{"126":1},"2":{"123":1}}],["运行",{"2":{"112":1}}],["运行构建出的",{"2":{"112":1}}],["运行验证",{"0":{"98":1}}],["运行的流程是一致的",{"2":{"17":1}}],["运行时或虚拟机",{"2":{"16":1}}],["运行环境主要是risc",{"2":{"123":1}}],["运行环境",{"2":{"8":1,"17":1,"20":1,"123":1}}],["固件",{"2":{"16":1}}],["都可以通过",{"2":{"16":2}}],["任何一款",{"2":{"16":1}}],["几乎",{"2":{"16":1}}],["年开始筹备",{"2":{"15":1,"24":1}}],["从软件源下载并解压指定的源码包",{"2":{"116":1}}],["从ruyi",{"2":{"95":1,"104":1}}],["从ruyisdk包管理器中下载和安装所需的编译工具链",{"2":{"17":1}}],["从ruyisdk开始使用设备",{"0":{"2":1},"1":{"3":1}}],["从该版本开始",{"2":{"66":1}}],["从本地软件包缓存中列出可用软件包",{"2":{"46":1,"115":1}}],["从配置的软件源更新本地软件包缓存",{"2":{"46":1,"114":1}}],["从中获得有价值的信息",{"2":{"23":1}}],["从",{"2":{"13":1,"15":1,"24":1,"33":1,"50":1,"51":1,"54":1,"59":1,"60":1,"62":1,"67":1,"70":1,"75":1,"77":1,"80":1}}],["架构的二进制",{"2":{"120":1}}],["架构的一些常见用法",{"2":{"89":1}}],["架构的目标文件",{"2":{"84":1}}],["架构的目标代码",{"2":{"83":1}}],["架构的软件",{"2":{"81":1}}],["架构的",{"2":{"81":1}}],["架构环境安装",{"2":{"49":3,"53":3,"56":3,"58":2,"62":2,"65":2,"69":1,"73":3,"76":3,"79":3}}],["架构环境为例进行安装",{"2":{"33":1}}],["架构编译环境",{"2":{"33":1}}],["架构图中的各种工具等",{"2":{"20":1}}],["架构示意图",{"0":{"12":1,"17":1}}],["架构设计的开发工具箱",{"2":{"9":1}}],["适用于嵌入式系统和其他资源受限的环境",{"2":{"87":1}}],["适用于边缘计算",{"2":{"11":1}}],["适用于入门级开发和教育用途",{"2":{"11":1}}],["适合入门和教育",{"2":{"11":1}}],["适合高性能开发和研究",{"2":{"11":1}}],["适合物联网应用",{"2":{"11":1}}],["适合嵌入式应用",{"2":{"11":1}}],["小巧灵活",{"2":{"11":1}}],["average",{"2":{"120":1}}],["available",{"2":{"33":1,"36":1,"60":1,"101":1}}],["about",{"2":{"101":1}}],["abi",{"2":{"90":1,"120":1,"121":1}}],["atom",{"2":{"110":3}}],["at",{"2":{"101":1}}],["attr",{"2":{"51":4,"54":4}}],["along",{"2":{"120":1,"121":1}}],["al",{"2":{"96":1,"97":1,"105":1,"106":1}}],["allow",{"2":{"60":2,"101":2}}],["all",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"60":1,"62":1,"65":1,"69":1,"73":1,"76":1,"79":1,"101":1}}],["allwinner",{"2":{"1":1,"11":1,"51":6,"54":6,"63":6,"66":6,"71":6,"74":6,"77":6,"80":6,"101":1}}],["a=tree",{"2":{"89":1}}],["as",{"2":{"60":3,"84":1,"101":3,"111":1,"112":1}}],["asked",{"2":{"60":1,"101":1}}],["ar",{"2":{"111":2,"112":2}}],["arguments",{"2":{"110":1}}],["arrange",{"2":{"60":1,"101":1}}],["are",{"2":{"59":1,"60":1,"101":3}}],["armbian",{"2":{"54":2,"55":1}}],["arm64",{"2":{"33":1,"49":4,"53":4,"56":4,"73":4,"76":4,"79":4,"114":1}}],["amp",{"2":{"51":3,"54":3,"80":3,"100":1}}],["amd64",{"2":{"33":5,"49":4,"53":4,"56":4,"58":4,"62":4,"65":4,"69":4,"73":4,"76":4,"79":4,"104":1,"114":1}}],["analyzer",{"2":{"36":1}}],["and",{"2":{"33":3,"60":2,"101":3,"110":1,"121":1}}],["add",{"2":{"111":1,"112":1}}],["addr2line",{"2":{"111":1,"112":1}}],["adapted",{"2":{"33":1}}],["admin",{"2":{"33":2,"46":1}}],["a",{"2":{"33":1,"60":2,"90":1,"101":2,"110":2,"111":1}}],["applicable",{"2":{"110":1}}],["apache",{"2":{"33":2,"49":2,"53":2,"56":2,"58":2,"62":2,"65":2,"69":2,"73":2,"76":2,"79":2}}],["apt",{"2":{"32":2}}],["activate",{"2":{"96":1,"105":1,"111":4,"112":2,"117":1,"120":1}}],["account",{"2":{"60":1,"101":1}}],["access",{"2":{"60":2,"101":2}}],["academy",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"65":1,"69":1,"73":1,"76":1,"79":1}}],["ac",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"65":2,"69":1,"73":3,"76":3,"79":3,"104":1,"120":1}}],["autovec",{"2":{"39":1,"89":2}}],["auto",{"2":{"22":1}}],["aarch64",{"2":{"21":1,"22":1}}],["ai",{"2":{"11":2}}],["换而言之提供一个镜像站",{"2":{"10":1}}],["便于开发者获取相关镜像",{"2":{"10":1}}],["便捷的开发环境",{"2":{"5":1}}],["对于有开发经验或者开发目标的开发者而言",{"2":{"116":1}}],["对于不熟悉参数的用户",{"2":{"89":1}}],["对于一些嵌入式risc",{"2":{"87":1}}],["对于部分必须由用户手工下载的文件",{"2":{"55":1}}],["对主页累计访问量",{"2":{"23":1}}],["对你的代码进行着色",{"2":{"22":1}}],["对代码进行着色",{"2":{"22":1}}],["对",{"2":{"10":1,"90":1}}],["使用ruyisdk",{"0":{"123":1}}],["使用ruyi工具部署开发环境",{"0":{"96":1,"105":1}}],["使用编译环境进行",{"0":{"120":1},"1":{"121":1}}],["使用qemu",{"2":{"117":1}}],["使用平头哥",{"2":{"110":1}}],["使用平头哥工具链配置荔枝派",{"2":{"110":1}}],["使用上游",{"2":{"110":1}}],["使用的就是gnu",{"2":{"96":1}}],["使用示例",{"0":{"93":1,"102":1},"1":{"94":1,"95":1,"96":1,"97":1,"98":1,"103":1,"104":1,"105":1,"106":1,"107":1}}],["使用示例请参考",{"2":{"89":1}}],["使用时的两个常用参数",{"2":{"89":1}}],["使用说明",{"0":{"89":1}}],["使用下面的命令卸载",{"2":{"42":1}}],["使用默认镜像即可",{"2":{"34":1}}],["使用",{"2":{"23":1,"38":1,"39":1,"51":1,"54":1,"59":2,"63":1,"66":1,"68":1,"71":1,"74":1,"77":1,"80":1,"89":1,"110":4,"117":1}}],["使用集成开发环境提供的构建工具进行项目的构建",{"2":{"22":1}}],["使用语法高亮功能",{"2":{"22":1}}],["使用包管理器开发者可以获取该工具箱中的编译工具链",{"2":{"9":1}}],["使开发者能够根据自己的需求扩展和定制ide",{"2":{"22":1}}],["使开发者能够在ide中直接执行和调试代码片段",{"2":{"22":1}}],["使开发者能够方便地创建",{"2":{"22":1}}],["使开发者能够编译和构建基于risc",{"2":{"22":1}}],["使开发者能够设置断点",{"2":{"22":1}}],["使开发者能够轻松创建",{"2":{"22":1}}],["使开发者能够搜索",{"2":{"17":1,"21":1}}],["使得开发者从最开始的学习",{"2":{"6":1}}],["使得",{"2":{"5":1}}],["8888",{"2":{"51":1,"54":1}}],["8g",{"2":{"51":10,"54":10,"63":4,"66":4,"71":4,"74":4,"77":6,"80":10,"101":1}}],["8",{"0":{"75":1,"76":1},"1":{"76":1,"77":1},"2":{"8":1,"30":1,"36":1,"55":1,"75":1,"76":4,"77":1,"96":1,"101":1}}],["工具提供了为",{"2":{"101":1}}],["工具并为其赋可执行权限并配置到环境变量中",{"2":{"95":1,"104":1}}],["工具及其所有数据",{"2":{"95":1,"104":1}}],["工具搭建",{"2":{"93":1,"102":1}}],["工具安装到使用",{"2":{"93":1,"102":1}}],["工具新增了新闻支持",{"2":{"59":3}}],["工具刷写镜像前请务必留足磁盘空间",{"2":{"51":1,"54":1,"63":1,"66":1,"71":1,"74":1,"77":1,"80":1}}],["工具刷写镜像时",{"2":{"51":1,"54":1,"77":1,"80":1}}],["工具需要支持x86",{"2":{"21":1}}],["工具",{"2":{"8":1,"17":1,"20":1,"21":1}}],["工具链配置香山南湖编译环境",{"2":{"110":1}}],["工具链配置",{"2":{"110":1}}],["工具链与预置配置组合",{"0":{"109":1}}],["工具链版本",{"2":{"90":1}}],["工具链中各个工具的使用方法请参考其使用说明文档",{"2":{"89":1}}],["工具链侧重于提供稳定的工具链环境",{"2":{"88":1}}],["工具链侧重于使用",{"2":{"88":1}}],["工具链适合面向最新",{"2":{"88":1}}],["工具链是专门用于",{"2":{"81":1}}],["工具链介绍",{"0":{"81":1,"91":1},"1":{"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1}}],["工具链和",{"2":{"40":1}}],["工具链",{"2":{"5":1,"8":1,"16":1,"81":1,"109":1}}],["7654",{"2":{"51":1,"54":1}}],["7",{"0":{"72":1,"73":1},"1":{"73":1,"74":1},"2":{"8":1,"16":1,"30":1,"63":1,"73":4,"74":1,"90":1,"101":3}}],["源码并解包到当前目录",{"2":{"120":1}}],["源码可以直接从",{"2":{"120":1}}],["源码交叉编译并在",{"2":{"102":1}}],["源码本地编译并在",{"2":{"93":1}}],["源码等各种二进制软件包和源码包",{"2":{"44":1}}],["源码",{"2":{"8":1}}],["666",{"2":{"121":1}}],["64架构的个人电脑",{"2":{"123":1}}],["64m",{"2":{"51":3,"54":3,"63":3,"66":3,"71":3,"74":3,"77":3,"80":3}}],["64",{"2":{"45":3,"49":1,"53":1,"56":1,"76":1,"79":1,"83":1,"89":2,"92":2,"100":1,"102":1,"103":1,"112":1,"120":1,"121":1}}],["6",{"0":{"68":1,"69":1},"1":{"69":1,"70":1,"71":1},"2":{"8":1,"30":1,"32":1,"36":1,"69":3,"70":1,"71":1,"72":1,"101":1}}],["5",{"0":{"64":1,"65":1},"1":{"65":1,"66":1,"67":1},"2":{"8":1,"16":1,"30":1,"36":1,"55":1,"65":5,"66":1,"67":1,"68":1,"71":1,"95":3,"101":1}}],["42",{"2":{"121":1}}],["41",{"2":{"84":1}}],["4g",{"2":{"51":2,"54":2,"77":2,"80":2}}],["4",{"0":{"61":1,"62":1},"1":{"62":1,"63":1},"2":{"8":1,"30":1,"62":6,"63":1,"101":1,"120":1,"121":1}}],["4a的编译工具链gnu",{"2":{"96":1}}],["4a开发板",{"2":{"94":1}}],["4a开发板上运行的过程",{"2":{"93":1}}],["4a",{"2":{"1":1,"11":1,"51":19,"54":19,"60":2,"63":9,"66":9,"71":9,"74":9,"77":9,"80":19,"101":7,"110":1,"112":1}}],["391k",{"2":{"120":2}}],["32",{"2":{"83":1,"89":2}}],["38",{"2":{"45":1}}],["30000",{"2":{"121":1}}],["30",{"2":{"30":2}}],["3",{"0":{"57":1,"58":1},"1":{"58":1,"59":1,"60":1},"2":{"8":1,"30":1,"51":1,"54":1,"58":5,"59":4,"60":3,"63":1,"66":1,"71":1,"74":1,"77":1,"80":1,"101":4,"117":1}}],["2k",{"2":{"121":1}}],["29",{"2":{"30":1,"52":1,"54":1}}],["2011",{"2":{"121":2}}],["20",{"2":{"30":4,"78":1,"80":1}}],["20240324",{"2":{"122":1}}],["20240512",{"2":{"104":1}}],["20240222",{"2":{"96":1}}],["2024",{"2":{"30":46,"59":8}}],["2024目标",{"0":{"29":1}}],["2024年12月",{"2":{"26":1}}],["2024年6月",{"2":{"26":1}}],["2025年12月",{"2":{"26":1}}],["2025年6月",{"2":{"26":1}}],["20230125",{"2":{"36":1}}],["20231118",{"2":{"36":6,"38":2}}],["20231114",{"2":{"36":1}}],["20231121",{"2":{"36":3}}],["20231210",{"2":{"45":1,"47":1}}],["20231212",{"2":{"36":6,"110":1,"111":1}}],["20231211",{"2":{"33":5}}],["20231207+g03813c9fe8",{"2":{"36":1}}],["2023年12月",{"2":{"26":1}}],["2023年6月",{"2":{"26":1}}],["2023",{"2":{"15":1,"24":1,"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"65":1,"69":1,"73":1,"76":1,"79":1,"111":1}}],["21",{"2":{"30":2}}],["28",{"2":{"30":1,"48":1,"51":1}}],["22",{"2":{"30":3,"45":1,"47":1,"90":1,"100":1,"103":1}}],["27",{"2":{"30":1}}],["26",{"2":{"30":3}}],["256m",{"2":{"51":3,"54":3,"63":3,"66":3,"71":3,"74":3,"77":3,"80":3}}],["25",{"2":{"26":2,"30":3}}],["24",{"2":{"26":2,"30":4}}],["2345",{"2":{"51":1,"54":1}}],["23",{"2":{"26":2,"30":4,"45":2,"47":1}}],["2",{"2":{"8":1,"16":1,"27":1,"33":4,"36":2,"49":4,"51":1,"53":4,"54":1,"56":4,"58":2,"59":3,"60":1,"62":2,"63":1,"65":2,"66":1,"69":2,"71":1,"73":2,"74":1,"76":4,"77":1,"79":4,"80":1,"83":1,"84":1,"96":1,"101":5,"111":1,"117":1}}],["1为要读取的新闻条目的序号或id",{"2":{"35":1}}],["18",{"2":{"30":1}}],["17",{"2":{"30":1,"36":1}}],["1703147196780",{"2":{"17":1}}],["151",{"2":{"52":1}}],["15",{"2":{"30":2,"59":5,"120":1,"121":1}}],["138k",{"2":{"51":4,"54":4,"80":4}}],["13",{"2":{"30":1,"72":1,"74":1,"83":1,"111":1}}],["11",{"0":{"52":1,"53":1},"1":{"53":1,"54":1},"2":{"30":7,"52":1,"53":4,"54":1,"55":1}}],["14911",{"2":{"121":1}}],["1404k",{"2":{"120":1}}],["1400k",{"2":{"120":1}}],["14",{"2":{"30":2,"59":3,"75":1,"77":1,"121":1}}],["100",{"2":{"120":2}}],["10",{"0":{"48":1,"49":1},"1":{"49":1,"50":1,"51":1},"2":{"30":7,"49":4,"50":1,"51":1,"104":1}}],["192",{"2":{"121":1}}],["19",{"2":{"30":3}}],["168",{"2":{"121":1}}],["16g",{"2":{"51":8,"54":8,"63":4,"66":4,"71":4,"74":4,"77":4,"80":8,"101":5}}],["16",{"2":{"30":3}}],["1234",{"2":{"51":1,"54":1}}],["12",{"0":{"55":1,"56":1},"1":{"56":1},"2":{"26":3,"30":8,"56":4}}],["1",{"0":{"75":1,"76":1},"1":{"76":1,"77":1},"2":{"8":1,"16":1,"35":1,"36":5,"51":1,"54":1,"55":2,"59":3,"60":2,"63":1,"66":1,"71":1,"74":1,"76":4,"77":1,"80":1,"101":7,"117":1,"120":9,"121":5}}],["在运行侧",{"2":{"123":1}}],["在开发侧",{"2":{"123":1}}],["在开发过程中",{"2":{"22":1}}],["在最新的",{"0":{"121":1}}],["在安装完成后最常用的命令一般需要有",{"2":{"114":1}}],["在安装和ide初始设置时都已经被集成到",{"2":{"17":1}}],["在创建虚拟环境之前",{"2":{"111":1}}],["在虚拟环境下编译",{"0":{"111":1}}],["在venv",{"2":{"96":1}}],["在x86",{"2":{"92":1}}],["在编译和运行结束后",{"2":{"118":1}}],["在编译或者运行验证完毕后",{"2":{"111":1}}],["在编译器中开启",{"2":{"89":1}}],["在编写完代码后",{"2":{"22":1}}],["在编写代码的过程中",{"2":{"22":1}}],["在使用",{"2":{"51":1,"54":1,"77":1,"80":1}}],["在使用普通用户调用",{"2":{"51":1,"54":1,"77":1,"80":1}}],["在本文档中家目录为",{"2":{"34":1}}],["在",{"2":{"34":1,"40":1,"49":3,"53":3,"56":3,"58":2,"62":2,"63":1,"65":2,"66":1,"69":1,"71":1,"73":3,"74":1,"76":3,"79":3,"112":1,"121":1}}],["在代码编写过程中",{"2":{"22":1}}],["在该文件中",{"2":{"22":1}}],["在该包管理器中",{"2":{"8":1}}],["在集成开发环境中",{"2":{"22":1}}],["在集成开发环境中增加",{"2":{"10":1}}],["在集成开发环境中增加risc",{"2":{"0":1}}],["在集成开发环境的文本编辑器中",{"2":{"22":1}}],["在项目中",{"2":{"22":1}}],["在输入代码的过程中自动弹出变量",{"2":{"22":1}}],["在线软件源即",{"2":{"17":1}}],["在线上也会有相应的论坛提供给开发者进行技术交流",{"2":{"10":1}}],["在我们的社区当中",{"2":{"10":1}}],["该命令将会返回工具目前所支持的risc",{"2":{"101":1}}],["该命令将列出所有可用的软件包",{"2":{"36":1}}],["该值将被使用",{"2":{"67":2}}],["该文件需要您自行在",{"2":{"67":1}}],["该文件默认存放在",{"2":{"59":1}}],["该目录在",{"2":{"59":1}}],["该指令会识别硬件信息",{"2":{"14":1}}],["该",{"2":{"9":1}}],["该包管理器是一个在线的软件源",{"2":{"8":1}}],["该项目旨在为",{"2":{"5":1}}],["功能持续更新中",{"2":{"46":1}}],["功能与上述cli接口类似",{"2":{"21":1}}],["功能",{"0":{"7":1},"1":{"8":1,"9":1,"10":1},"2":{"83":1,"84":1,"85":1,"86":1,"87":1,"88":2}}],["而不是",{"2":{"87":1}}],["而需要用户自行扩展磁盘分区大小",{"2":{"51":1,"54":1,"63":1,"66":1,"71":1,"74":1,"77":1,"80":1}}],["而会导致软件包功能异常时",{"2":{"41":1}}],["而是使用",{"2":{"32":1,"70":1}}],["而",{"2":{"6":1,"42":1}}],["而在过往针对",{"2":{"6":1}}],["而言更具精简性",{"2":{"6":1}}],["操作系统",{"2":{"6":1}}],["iterations",{"2":{"121":2}}],["item",{"2":{"59":1}}],["items",{"2":{"48":1,"50":1,"59":1}}],["ip",{"2":{"121":1}}],["ilinux64",{"2":{"120":1,"121":1}}],["ilp32",{"2":{"89":1,"90":2}}],["ilp32e",{"2":{"89":1}}],["ilp32d",{"2":{"89":1}}],["if",{"2":{"60":1,"101":1,"110":1}}],["id",{"2":{"59":3}}],["idproduct",{"2":{"51":2,"54":2}}],["idvendor",{"2":{"51":2,"54":2}}],["ide中",{"2":{"22":1}}],["ide可以提供对这些工具的集成",{"2":{"22":1}}],["ide可以提供对虚拟环境的支持",{"2":{"22":1}}],["ide可以集成交互式解释器",{"2":{"22":1}}],["ide需要与这些解释器或虚拟机进行集成",{"2":{"22":1}}],["ide",{"0":{"9":1,"22":1},"2":{"9":1,"17":4,"20":1,"22":13}}],["i18n",{"0":{"50":1}}],["issue",{"2":{"52":1}}],["is",{"2":{"38":1,"60":2,"101":2,"111":2}}],["iscas",{"2":{"5":1,"33":3,"44":1,"49":4,"53":4,"56":4,"58":3,"62":3,"65":3,"69":2,"73":4,"76":4,"79":4,"95":1,"104":2,"114":1,"120":1}}],["images",{"2":{"47":1,"59":2,"60":1,"101":1}}],["image",{"2":{"36":1,"101":2}}],["i",{"2":{"33":2,"51":3,"54":3,"80":3,"90":1,"97":1,"106":1,"115":1,"117":1,"120":2,"121":1}}],["info",{"2":{"120":4,"121":1}}],["information",{"2":{"33":2}}],["int",{"2":{"112":1}}],["interpreter",{"2":{"120":1}}],["intended",{"2":{"60":2,"101":2}}],["integration",{"2":{"22":1}}],["intelligent",{"2":{"22":1}}],["inc",{"2":{"111":1}}],["included",{"2":{"110":1}}],["include",{"2":{"110":1,"112":1}}],["inside",{"2":{"110":2}}],["institute",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"65":1,"69":1,"73":1,"76":1,"79":1}}],["installation",{"2":{"33":1}}],["install",{"2":{"32":2,"33":3,"38":5,"41":1,"46":1,"59":1,"60":1,"96":2,"101":2,"105":3,"111":2,"112":1,"115":1}}],["index",{"2":{"67":2,"111":1,"112":1}}],["in",{"2":{"33":1,"38":1,"110":1,"121":1}}],["iot",{"2":{"6":1}}],["开始使用",{"2":{"62":1}}],["开始使用设备",{"2":{"13":1}}],["开始",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1}}],["开始的第一步",{"2":{"14":1}}],["开源使其能够更加方便的运用在不同的领域",{"2":{"6":1}}],["开发环境目前更多的是x86",{"2":{"123":1}}],["开发环境",{"2":{"14":1,"123":1}}],["开发者在进行risc",{"2":{"123":1}}],["开发者往往都有自己的开发需求",{"2":{"116":1}}],["开发者管理",{"2":{"23":1}}],["开发者社区",{"0":{"23":1}}],["开发者交流社区则提供文档和教程",{"2":{"17":1}}],["开发者购买了",{"2":{"16":1}}],["开发者可以共享和下载与risc",{"2":{"23":2}}],["开发者可以发布问题",{"2":{"23":1}}],["开发者可以在ide中方便地查阅文档和学习相关知识",{"2":{"22":1}}],["开发者可以在ide中设置断点",{"2":{"22":1}}],["开发者可以指定任何常用的",{"2":{"16":1}}],["开发者可以使用模拟器或者在",{"2":{"9":1}}],["开发者可以轻松的通过",{"2":{"9":1}}],["开发者提供开发的便捷",{"2":{"5":1}}],["开发者提供一个完整的",{"2":{"15":1,"24":1}}],["开发者提供一个完善",{"2":{"5":1}}],["开发者提供一个便捷",{"2":{"5":1}}],["开发者快速上手",{"2":{"0":1,"10":1}}],["开发者获取指定开发板可用的os并可方便的安装os的安装",{"2":{"0":1}}],["开发资料和相关工具",{"2":{"0":1,"10":1}}],["开发板安装镜像都只需要执行",{"2":{"101":1}}],["开发板安装操作系统的功能",{"2":{"101":1}}],["开发板上本地编译并运行",{"2":{"92":1}}],["开发板上对自身的程序进行编写以及调试",{"2":{"9":1}}],["开发板",{"2":{"51":1,"54":1,"63":1,"66":1,"71":1,"74":1,"77":1,"80":1}}],["开发板系统的安装引导",{"0":{"43":1},"2":{"46":1,"99":1}}],["开发板系统安装引导程序",{"2":{"0":1}}],["开发板或模组",{"2":{"16":1}}],["开发板镜像相关信息以及下载",{"2":{"10":1}}],["开发板对应的演示程序",{"2":{"0":1,"10":1}}],["开发板适用镜像信息维护与下载",{"2":{"0":1}}],["相对路径目录名",{"2":{"111":1}}],["相比",{"2":{"6":1}}],["相关介绍内容",{"2":{"4":1}}],["是第一级别入口",{"2":{"23":1}}],["是第五代精简指令集",{"2":{"6":1}}],["是一个旨在提供给一个一体化集成开发环境的产品计划",{"2":{"15":1,"24":1}}],["是一个为",{"2":{"9":1}}],["是一个由中科院软件所",{"2":{"5":1}}],["背景",{"0":{"6":1}}],["为了充分利用这些新的指令集扩展",{"2":{"122":1}}],["为了方便验证risc",{"2":{"118":1}}],["为隔离化编译创建虚拟环境",{"2":{"117":1}}],["为新人用户提供了一些代码示例",{"2":{"116":1}}],["为激活编译环境用的脚本",{"2":{"111":1}}],["为任一型号的",{"2":{"101":1}}],["为各种不同厂家",{"2":{"99":1}}],["为risc",{"0":{"99":1,"125":1},"1":{"100":1,"101":1},"2":{"123":1}}],["为例",{"2":{"93":1,"101":1,"102":1}}],["为",{"2":{"90":1}}],["为方便您及时了解",{"2":{"59":3}}],["为设备安装系统",{"2":{"43":1}}],["为全球的",{"2":{"5":1}}],["为什么会有",{"2":{"4":1}}],["以满足其特定的需求",{"2":{"122":1}}],["以满足不同开发者的需求",{"2":{"22":1}}],["以隔离不同版本的编译工具链及库文件等",{"2":{"117":1}}],["以",{"2":{"101":1}}],["以上",{"2":{"101":1}}],["以开源基准测试程序",{"2":{"93":1,"102":1}}],["以下案例是使用ruyisdk搭建相关的开发或运行环境来实现的",{"2":{"92":1}}],["以下是本文相关内容",{"2":{"4":1}}],["以获得更高的程序性能",{"2":{"89":1}}],["以提供更好的性能",{"2":{"122":1}}],["以提供更高的性能",{"2":{"122":1}}],["以提权",{"2":{"60":1}}],["以提高开发效率",{"2":{"22":1}}],["以支持在",{"2":{"86":1}}],["以支持",{"2":{"55":1}}],["以尝试重试安装该软件包",{"2":{"41":1}}],["以增强开发环境的功能和灵活性",{"2":{"23":1}}],["以增强可读性和代码理解性",{"2":{"22":2}}],["以解决代码中的错误和问题",{"2":{"22":1}}],["以帮助你编写正确的代码",{"2":{"22":1}}],["以帮助开发者更轻松",{"2":{"22":1}}],["以帮助开发者学习和使用risc",{"2":{"22":1}}],["以帮助开发者编写更高效和可靠的risc",{"2":{"22":1}}],["以帮助开发者编写正确的代码",{"2":{"22":1}}],["以帮助开发者改善代码的结构和可维护性",{"2":{"22":1}}],["以进行程序的调试和分析",{"2":{"22":1}}],["以便开发者能够方便地搜索",{"2":{"22":1}}],["以便进行快速的实验和调试",{"2":{"22":1}}],["以便在ide中直接运行和调试python代码",{"2":{"22":1}}],["以便快速插入常用代码块",{"2":{"22":1}}],["以便快速定位和浏览代码",{"2":{"22":2}}],["以便调试和排查代码中的问题",{"2":{"22":1}}],["以加快编码速度和减少拼写错误",{"2":{"22":2}}],["以及不同risc",{"2":{"83":1}}],["以及处理依赖关系",{"2":{"22":1}}],["以及我们会举办一定的线下活动获得来自用户的反馈",{"2":{"10":1}}],["以及建设并运营一个完善的社区以便开发者交流",{"2":{"5":1}}],["成为主流架构",{"2":{"5":1}}],["其它高级语言",{"2":{"126":1}}],["其他均为工具链二进制",{"2":{"111":1}}],["其他开发者可以回答问题或提供解决方案",{"2":{"23":1}}],["其他开发者可以回复和讨论",{"2":{"23":1}}],["其他开发者可以浏览和评论这些文章",{"2":{"23":1}}],["其输入参数可以参考",{"2":{"89":1}}],["其默认参数在",{"2":{"89":2}}],["其中",{"2":{"36":1}}],["其中涵盖多种操作系统",{"2":{"10":1}}],["其最终目标是希望为",{"2":{"5":1}}],["其提供了相关最新的硬件信息",{"2":{"5":1}}],["如java程序",{"2":{"126":1}}],["如安装编译工具链",{"2":{"123":1}}],["如编译器",{"2":{"81":1}}],["如编译工具链有不同厂商发布的",{"2":{"20":1}}],["如包管理器能力迭代",{"2":{"27":1}}],["如代码示例",{"2":{"23":1}}],["如果无可自己创建",{"2":{"114":1}}],["如果软件源中有新增的新闻条目",{"2":{"59":3}}],["如果软件包显示",{"2":{"36":1}}],["如果您使用",{"2":{"59":3}}],["如果在意这个问题请跳过这个版本",{"2":{"52":1}}],["如果希望删除所有缓存和安装了的软件包以实现干净的卸载",{"2":{"42":1}}],["如果希望",{"2":{"42":2}}],["如果想安装某个历史版本的gnu",{"2":{"38":1}}],["如果遇到技术问题",{"2":{"22":1}}],["如果需要提高图像识别程序的性能",{"2":{"22":1}}],["如果代码需要调试",{"2":{"17":1}}],["如跳转到函数的定义处",{"2":{"22":1}}],["如跳转到定义处",{"2":{"22":1}}],["如图像识别算法的逻辑和实现",{"2":{"22":1}}],["如python是pip",{"2":{"22":1}}],["如python具有交互式解释器",{"2":{"22":1}}],["如python开发中通常会使用虚拟环境",{"2":{"22":1}}],["如python需要在运行时依赖于相应的解释器或语言虚拟机",{"2":{"22":1}}],["如cpython",{"2":{"22":1}}],["如git",{"2":{"22":1}}],["如gnu和llvm目前有三种类型",{"2":{"20":1}}],["如重命名",{"2":{"22":1}}],["如类型",{"2":{"22":2}}],["如基于",{"2":{"10":1}}],["如",{"2":{"5":1,"38":1,"83":1}}],["软件仓库中下载",{"2":{"120":1}}],["软件环境",{"2":{"94":1,"103":1}}],["软件包",{"2":{"42":2,"67":1}}],["软件包安装进程或做了其他非预期操作",{"2":{"41":1}}],["软件包的功能",{"2":{"41":1}}],["软件包前缀表示分类",{"2":{"36":1}}],["软件包缓存将存放在用户目录中",{"2":{"34":1}}],["软件下载次数",{"2":{"23":1}}],["软件源中下载",{"2":{"120":1}}],["软件源下载编译",{"2":{"116":1}}],["软件源内包的元数据包含并不限于",{"2":{"20":1}}],["软件源的管理内容包括以下内容",{"2":{"20":1}}],["软件更新",{"2":{"16":1}}],["软件开发等领域都有应用",{"2":{"6":1}}],["软件层面提供了镜像",{"2":{"5":1}}],["软件支持",{"2":{"5":1}}],["所启动的开源项目",{"2":{"5":1}}],["介绍",{"0":{"5":1,"15":1}}],["我们建议创建虚拟环境并在虚拟环境中进行编译操作",{"2":{"117":1}}],["我们为",{"2":{"59":3}}],["我们希望",{"2":{"22":1}}],["我们提供了如下内容",{"2":{"8":1}}],["我该从何开始",{"2":{"4":1}}],["我可以在什么设备上运行",{"2":{"4":1}}],["的裸机工具链",{"2":{"122":1}}],["的更多命令和命令具体使用方法详见",{"2":{"119":1}}],["的操作参考如下",{"2":{"112":1}}],["的编译",{"2":{"93":1,"102":1}}],["的向量化特性",{"2":{"89":1}}],["的各个扩展与新特性",{"2":{"88":1}}],["的源代码翻译成",{"2":{"83":1}}],["的核心组件之一",{"2":{"83":1}}],["的依赖",{"2":{"68":1}}],["的位置",{"2":{"59":1}}],["的开发动态",{"2":{"59":3}}],["的开发面临的问题在于相关资讯没有统一的平台",{"2":{"6":1}}],["的虚拟环境十分类似",{"2":{"40":1}}],["的虚拟环境类似",{"2":{"37":1,"108":1}}],["的方式公开",{"2":{"27":1}}],["的不断完善",{"2":{"26":1}}],["的支持",{"2":{"22":1,"59":4}}],["的特性",{"2":{"22":1}}],["的组成",{"2":{"17":1}}],["的目标",{"0":{"16":1}}],["的",{"2":{"10":1,"38":1,"54":1,"55":1,"121":1}}],["的出现就是为了解决这些问题",{"2":{"6":1}}],["的原理是什么",{"2":{"4":1}}],["的信息维护和下载",{"2":{"0":1,"10":1}}],["什么是",{"2":{"4":1}}],["欢迎来到",{"2":{"4":1}}],["h>",{"2":{"112":1}}],["have",{"2":{"101":1}}],["hand",{"2":{"101":1}}],["hardware",{"2":{"101":1}}],["has",{"2":{"101":1}}],["heap",{"2":{"121":2}}],["headless",{"2":{"51":2,"54":2,"63":2,"66":2,"71":2,"74":2,"77":2,"80":2,"101":1}}],["here",{"2":{"121":1}}],["help",{"2":{"33":3,"60":2,"101":2,"104":1,"105":1,"110":2}}],["hello",{"0":{"4":1},"2":{"112":2}}],["host",{"2":{"36":1,"60":1,"101":1}}],["home",{"2":{"34":3,"52":1,"55":1,"59":2,"67":2,"96":1,"120":1}}],["h",{"2":{"33":1,"35":2,"46":1,"96":1,"110":3,"117":1}}],["https",{"2":{"33":2,"44":1,"49":6,"51":1,"53":6,"54":1,"56":6,"58":3,"62":3,"65":3,"67":2,"69":2,"73":4,"76":6,"79":6,"80":1,"83":1,"84":1,"89":1,"95":1,"104":1,"120":1}}],["highlighting",{"2":{"22":1}}],["hifive",{"2":{"1":1,"11":1,"51":7,"54":7,"66":5,"68":1,"71":8,"74":7,"77":7,"80":7,"101":1}}],["bit",{"2":{"120":1,"121":1}}],["binaries",{"2":{"96":1}}],["binary",{"2":{"36":1}}],["binutils",{"0":{"84":1},"2":{"84":1}}],["bin",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"65":2,"69":1,"73":3,"76":3,"79":3,"95":1,"96":3,"104":1,"105":2,"111":3,"112":2,"117":1,"120":1}}],["bfd",{"2":{"111":1,"112":1}}],["bgcc",{"2":{"97":1,"106":1,"117":1,"120":1}}],["b",{"2":{"89":1,"97":1,"106":1,"117":1,"120":1}}],["branch",{"2":{"67":1}}],["by",{"2":{"60":1,"101":2}}],["buildid",{"2":{"120":1,"121":1}}],["buildroot",{"2":{"51":8,"54":8,"63":4,"66":4,"71":4,"74":6,"77":6,"80":8}}],["but",{"2":{"60":1,"101":1}}],["blobs",{"2":{"59":1}}],["beforehand",{"2":{"60":1,"101":1}}],["be",{"2":{"38":1,"60":2,"101":2}}],["beta",{"2":{"33":2,"104":1}}],["base",{"2":{"51":8,"54":8,"63":7,"66":8,"71":8,"74":8,"77":8,"80":8}}],["bashriscv64",{"2":{"105":1}}],["bashruyi",{"2":{"57":1,"61":1,"95":3,"96":3,"101":1,"104":3,"105":6,"107":2}}],["bashls",{"2":{"105":1}}],["bashwget",{"2":{"104":1}}],["bashfile",{"2":{"97":1,"106":1}}],["bashmake",{"2":{"97":1,"106":1}}],["bashmkdir",{"2":{"96":1,"105":1}}],["bashsed",{"2":{"97":1,"106":1}}],["bash",{"2":{"46":1,"95":1,"96":1,"98":1,"110":1,"111":2,"112":2,"114":1,"115":1,"116":1,"117":1,"118":1,"120":4,"121":3}}],["bash$",{"2":{"3":1,"14":1,"32":2,"33":2,"34":1,"35":1,"36":2,"37":1,"38":3,"39":1,"40":1,"42":4,"43":1,"49":4,"53":4,"56":4,"58":3,"59":4,"60":1,"62":3,"65":3,"67":1,"69":2,"73":4,"76":4,"79":4,"108":1,"110":1,"111":5,"112":4,"120":1,"121":1,"125":1}}],["baremetal",{"2":{"37":1,"108":1,"109":1}}],["board",{"2":{"36":1,"59":2,"101":2}}],["box",{"2":{"1":1,"11":1,"51":4,"54":4,"60":1,"63":4,"66":4,"71":4,"74":4,"77":4,"80":4,"101":1}}],["bzip2",{"2":{"32":2}}],["performance",{"2":{"121":1}}],["performed",{"2":{"120":1,"121":1}}],["positional",{"2":{"110":1}}],["port",{"2":{"97":1,"106":1,"117":1,"120":1,"121":1}}],["portme",{"2":{"97":1,"106":1,"117":1,"120":2,"121":1}}],["pc上实现从",{"2":{"102":1}}],["pc",{"2":{"100":1}}],["pc+linux",{"2":{"92":1}}],["p=gcc",{"2":{"89":1}}],["pick",{"2":{"60":1,"101":2}}],["pine64",{"2":{"54":4,"55":1}}],["pioneer",{"2":{"1":1,"11":1,"51":11,"54":11,"60":1,"63":11,"66":11,"71":11,"74":11,"77":11,"80":11,"101":1}}],["please",{"2":{"60":1,"101":3,"121":1}}],["pleasure",{"2":{"60":1,"101":1}}],["plugdev",{"2":{"51":2,"54":2}}],["platformio",{"2":{"51":4,"54":4}}],["plctxthead",{"2":{"96":1,"97":1,"112":33}}],["plct",{"2":{"20":1,"36":6,"96":5,"109":6,"110":7,"112":2,"120":3,"121":1,"122":4}}],["purpose",{"2":{"111":1}}],["purge",{"2":{"42":2,"95":1,"104":1}}],["putchar",{"2":{"112":1}}],["put",{"2":{"101":1,"121":1}}],["public",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1}}],["particular",{"2":{"111":1}}],["param=riscv",{"2":{"89":2}}],["parameters",{"2":{"121":1}}],["parameter",{"2":{"38":1}}],["path",{"2":{"67":1,"110":1}}],["packages",{"2":{"33":2,"36":1,"60":1,"67":3,"101":2}}],["package",{"2":{"33":3,"96":1,"105":1,"110":3,"120":2}}],["preference=用于告知编译器输入向量的长度",{"2":{"89":1}}],["prereleases",{"2":{"67":1}}],["prerelease",{"2":{"36":2}}],["pre",{"2":{"36":1,"67":1}}],["proceed",{"2":{"101":1}}],["pro",{"2":{"51":4,"54":4,"80":4}}],["project",{"2":{"49":2,"53":2,"56":2,"76":2,"79":2}}],["profiles",{"2":{"37":2,"46":1,"90":1,"96":1,"105":1,"108":2}}],["profile",{"2":{"33":1,"109":1,"110":3,"111":1}}],["provisioning",{"2":{"60":1,"101":1}}],["provision查询",{"2":{"11":1}}],["provision",{"2":{"3":1,"14":1,"43":1,"60":2,"101":1,"110":1,"125":1}}],["provision命令查询",{"2":{"1":1}}],["printf",{"2":{"112":1}}],["print",{"2":{"33":2}}],["pygit2",{"2":{"32":1,"55":1,"68":1,"70":1}}],["python等",{"2":{"126":1}}],["python",{"2":{"22":1,"40":1,"49":1,"51":2,"53":1,"54":2,"56":1,"63":2,"66":2,"71":2,"74":2,"76":1,"77":2,"79":1,"80":2,"111":1}}],["png",{"2":{"17":1}}],["c程序",{"2":{"126":1}}],["crcfinal",{"2":{"121":1}}],["crcstate",{"2":{"121":1}}],["crcmatrix",{"2":{"121":1}}],["crclist",{"2":{"121":1}}],["cc",{"2":{"111":1,"112":1}}],["cd",{"2":{"95":1,"96":1,"105":1,"112":1,"120":1}}],["cluster",{"2":{"51":5,"54":5,"80":5}}],["cli",{"2":{"21":1}}],["certifi",{"2":{"49":3,"53":3,"56":3,"76":3,"79":3}}],["cat",{"2":{"67":1,"112":1}}],["card",{"2":{"51":3,"54":3,"74":3,"77":3,"80":3}}],["canmv",{"2":{"51":2,"54":2,"66":2,"71":2,"74":2,"77":2,"80":2}}],["can",{"2":{"49":1,"53":1,"56":1,"59":1,"76":1,"79":1}}],["canaan",{"2":{"1":1,"11":1,"51":7,"54":7,"66":4,"71":4,"74":4,"77":4,"80":7,"101":1}}],["cache",{"2":{"34":3,"67":1,"120":1}}],["currently",{"2":{"60":1,"101":1}}],["current",{"2":{"33":1,"36":1,"120":2}}],["c",{"0":{"86":1},"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"65":1,"69":1,"73":1,"76":1,"79":1,"83":1,"86":2,"87":1,"90":1,"111":1,"112":3,"120":6,"121":6}}],["cpp",{"2":{"111":1,"112":1}}],["cpu",{"2":{"88":1}}],["cp",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"65":2,"69":1,"73":3,"76":3,"79":3,"95":1}}],["cn",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"65":2,"69":1,"73":3,"76":3,"79":3,"104":1,"120":1}}],["choose",{"2":{"101":1}}],["choice",{"2":{"60":1,"101":4}}],["chosen",{"2":{"33":1,"101":1}}],["ch592x",{"2":{"51":4,"54":4}}],["ch582f",{"2":{"51":4,"54":4}}],["ch32v307vct6",{"2":{"51":1,"54":1}}],["ch32v307wcu6",{"2":{"51":1,"54":1}}],["ch32v307rct6",{"2":{"51":1,"54":1}}],["ch32v307",{"2":{"51":10,"54":10}}],["ch32v305rbt6",{"2":{"51":1,"54":1}}],["ch32v305gbu6",{"2":{"51":1,"54":1}}],["ch32v305fbp6",{"2":{"51":1,"54":1}}],["ch32v305",{"2":{"51":10,"54":10}}],["ch32v303vct6",{"2":{"51":1,"54":1}}],["ch32v303rct6",{"2":{"51":1,"54":1}}],["ch32v303rbt6",{"2":{"51":1,"54":1}}],["ch32v303cbt6",{"2":{"51":1,"54":1}}],["ch32v303",{"2":{"51":13,"54":13}}],["ch32v208wbu6",{"2":{"51":1,"54":1}}],["ch32v208rbt6",{"2":{"51":1,"54":1}}],["ch32v208gbu6",{"2":{"51":1,"54":1}}],["ch32v208cbu6",{"2":{"51":1,"54":1}}],["ch32v208",{"2":{"51":13,"54":13}}],["ch32v203rbt6",{"2":{"51":1,"54":1}}],["ch32v203k8t6",{"2":{"51":1,"54":1}}],["ch32v203k6t6",{"2":{"51":1,"54":1}}],["ch32v203g8r6",{"2":{"51":1,"54":1}}],["ch32v203g6u6",{"2":{"51":1,"54":1}}],["ch32v203f8u6",{"2":{"51":1,"54":1}}],["ch32v203f8p6",{"2":{"51":1,"54":1}}],["ch32v203f6p6",{"2":{"51":1,"54":1}}],["ch32v203c8u6",{"2":{"51":1,"54":1}}],["ch32v203c8t6",{"2":{"51":1,"54":1}}],["ch32v203c6t6",{"2":{"51":1,"54":1}}],["ch32v203",{"2":{"51":34,"54":34}}],["ch32v103r8t6",{"2":{"51":1,"54":1}}],["ch32v103c8u6",{"2":{"51":1,"54":1}}],["ch32v103c8t6",{"2":{"51":1,"54":1}}],["ch32v103c6t6",{"2":{"51":1,"54":1}}],["ch32v103",{"2":{"51":17,"54":17}}],["chinese",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"65":1,"69":1,"73":1,"76":1,"79":1}}],["chisel等不同的语言类型",{"2":{"22":1}}],["chmod",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"65":2,"69":1,"73":3,"76":3,"79":3,"95":1,"104":1}}],["checking",{"2":{"22":1}}],["c++filt",{"2":{"111":1,"112":1}}],["c++源代码文件",{"2":{"22":1}}],["c++",{"2":{"22":1,"83":1,"111":1,"112":1}}],["copying",{"2":{"111":1}}],["copyright",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"65":1,"69":1,"73":1,"76":1,"79":1,"111":1}}],["correct",{"2":{"121":1}}],["corresponding",{"2":{"101":1}}],["core",{"2":{"97":1,"106":1,"117":1,"120":7,"121":6}}],["coremark可执行程序",{"2":{"98":1,"107":1,"118":1}}],["coremark",{"0":{"107":1,"120":1},"1":{"121":1},"2":{"36":1,"93":2,"96":3,"97":1,"98":1,"102":2,"105":3,"106":1,"107":1,"117":1,"118":1,"120":15,"121":11}}],["collection",{"0":{"83":1}}],["conditions",{"2":{"111":1}}],["conda等",{"2":{"22":1}}],["config",{"2":{"67":6,"114":2}}],["configurations",{"2":{"101":1}}],["configuration",{"2":{"60":2,"101":2}}],["configured",{"2":{"33":2}}],["continue",{"2":{"60":1,"101":1}}],["control",{"2":{"22":1}}],["console",{"2":{"51":5,"54":5,"80":5}}],["code",{"2":{"22":3,"49":1,"53":1,"56":1,"76":1,"79":1,"121":1}}],["compile",{"2":{"120":1,"121":1}}],["compiler",{"0":{"83":1},"2":{"121":2}}],["completion",{"2":{"22":1}}],["commands",{"2":{"60":1,"101":1}}],["community",{"0":{"10":1}}],["com",{"2":{"44":1,"49":1,"51":1,"53":1,"54":1,"56":1,"67":1,"76":1,"79":1,"80":1,"95":1}}],["cisc",{"2":{"6":1}}],["cm",{"2":{"1":1,"11":1,"51":3,"54":3,"74":3,"77":3,"80":3}}],["m",{"2":{"90":1}}],["m8",{"2":{"89":1}}],["m4",{"2":{"89":1}}],["m2",{"2":{"89":1}}],["m1",{"2":{"89":1}}],["mkdir",{"2":{"67":1,"120":1}}],["most",{"2":{"60":1,"101":1}}],["mode=",{"2":{"51":2,"54":2}}],["mozilla",{"2":{"49":2,"53":2,"56":2,"76":2,"79":2}}],["mpl",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1}}],["md",{"2":{"39":1}}],["myon",{"2":{"34":1,"120":1}}],["memory",{"2":{"121":2}}],["merchantability",{"2":{"111":1}}],["mega",{"2":{"51":4,"54":4,"80":4}}],["message",{"2":{"33":1,"110":1}}],["meles",{"2":{"1":1,"11":1,"51":5,"54":5,"75":1,"77":5,"80":5}}],["mirror",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"65":2,"69":1,"73":3,"76":3,"79":3,"104":1,"120":1}}],["milkv",{"0":{"121":1},"2":{"37":1,"74":1,"75":1,"108":1,"109":1,"110":3,"120":10,"121":7}}],["milk",{"2":{"1":7,"11":7,"51":35,"54":35,"60":2,"63":18,"66":18,"71":18,"74":30,"77":35,"80":35,"101":2}}],["matrix",{"2":{"120":1,"121":1}}],["match",{"2":{"38":1}}],["mak",{"2":{"97":1,"106":1,"117":1,"120":1}}],["make",{"2":{"60":1,"101":1,"117":1,"120":1,"121":1}}],["makes",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1}}],["mabi",{"2":{"89":1}}],["march=rv64gc",{"2":{"89":1}}],["march=rv64gcv",{"2":{"89":1}}],["march",{"2":{"89":3}}],["mars",{"2":{"1":2,"11":2,"51":6,"54":6,"74":6,"77":6,"80":6}}],["main",{"2":{"67":1,"112":1,"120":1,"121":1}}],["maix",{"2":{"51":3,"54":3,"80":3}}],["managing",{"2":{"33":1}}],["manage",{"2":{"33":1}}],["manager",{"2":{"33":1}}],["management",{"2":{"22":1}}],["svnapot",{"2":{"90":1}}],["svinval",{"2":{"90":1}}],["spent",{"2":{"120":1}}],["speed",{"2":{"120":2}}],["specifier",{"2":{"110":3}}],["spec",{"2":{"89":1}}],["spike",{"2":{"20":1}}],["scp",{"2":{"121":1}}],["scalable输入",{"2":{"89":1}}],["sciences",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"65":1,"69":1,"73":1,"76":1,"79":1}}],["str=",{"2":{"120":1,"121":1}}],["stripped",{"2":{"120":1,"121":1}}],["strip",{"2":{"111":1,"112":1}}],["strings",{"2":{"111":1,"112":1}}],["stdio",{"2":{"112":1}}],["storage",{"2":{"60":1,"101":1}}],["statically",{"2":{"121":1}}],["static",{"2":{"121":5}}],["state",{"2":{"52":1,"55":1,"59":3,"120":1,"121":1}}],["star64",{"2":{"54":4,"55":1}}],["starfive",{"2":{"1":2,"11":2,"51":8,"54":8,"63":8,"66":8,"71":8,"74":8,"77":8,"80":8,"101":2}}],["sh",{"2":{"121":1}}],["sha1",{"2":{"120":1,"121":1}}],["share",{"2":{"59":1,"96":1}}],["should",{"2":{"38":1,"60":2,"101":2}}],["show",{"2":{"33":1,"110":1}}],["sd",{"2":{"51":3,"54":3,"74":3,"77":3,"80":3}}],["sdk",{"2":{"51":81,"54":81,"63":4,"66":6,"71":6,"74":10,"77":10,"80":15}}],["slug",{"2":{"36":7}}],["so",{"2":{"60":1,"101":1,"120":1}}],["somehow",{"2":{"60":1,"101":1}}],["some",{"2":{"60":1,"101":1}}],["sourceware",{"2":{"84":1}}],["sources",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1,"111":1}}],["source",{"2":{"36":3,"111":3}}],["software",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"65":1,"69":1,"73":1,"76":1,"79":1,"111":2}}],["sec",{"2":{"121":1}}],["secs",{"2":{"121":1}}],["sed",{"2":{"117":1,"120":1}}],["seedcrc",{"2":{"121":1}}],["see",{"2":{"111":1,"121":1}}],["server",{"2":{"51":1,"54":1,"71":1,"74":1,"77":1,"80":1}}],["self",{"2":{"33":2,"42":4,"46":1,"95":1,"104":1}}],["sense",{"2":{"22":1}}],["such",{"2":{"60":1,"101":1}}],["subsystem==",{"2":{"51":2,"54":2}}],["subcommands",{"2":{"33":2}}],["sudo",{"2":{"32":2,"33":1,"49":3,"51":1,"53":3,"54":1,"56":3,"58":2,"60":3,"62":2,"63":1,"65":2,"66":1,"69":1,"71":1,"73":3,"74":1,"76":3,"77":1,"79":3,"80":1,"95":2,"101":2,"104":1}}],["supported",{"2":{"60":1,"101":2}}],["support",{"2":{"22":1}}],["sail",{"2":{"22":1}}],["snippet",{"2":{"22":1}}],["sysv",{"2":{"120":1,"121":1}}],["system",{"2":{"51":8,"54":8,"60":2,"63":7,"66":8,"71":8,"74":8,"77":8,"80":8,"101":3,"122":1}}],["sysroot为generic类型",{"2":{"117":1}}],["sysroot",{"2":{"20":1,"109":1,"110":12}}],["syntax",{"2":{"22":1}}],["size",{"2":{"111":1,"112":1,"121":1}}],["sipeed这个环境中",{"2":{"96":1}}],["sipeed",{"2":{"1":2,"11":2,"37":1,"51":32,"54":32,"60":1,"63":11,"66":11,"71":11,"74":11,"77":11,"78":1,"80":32,"96":9,"101":10,"108":1,"109":1,"110":3,"112":1}}],["sifive",{"2":{"1":1,"11":1,"51":7,"54":7,"66":5,"68":1,"71":8,"74":7,"77":7,"80":7,"101":1}}],["s",{"2":{"1":1,"11":1,"33":1,"37":2,"49":2,"51":3,"53":2,"54":3,"56":2,"59":1,"60":1,"74":3,"76":2,"77":3,"79":2,"80":3,"97":1,"101":1,"106":1,"108":2,"110":1,"117":1,"120":1}}],["k",{"2":{"90":1}}],["k510",{"2":{"51":3,"54":3,"80":3}}],["k230",{"2":{"1":1,"11":1,"51":4,"54":4,"66":4,"71":4,"74":4,"77":4,"80":4,"101":1}}],["kendryte",{"2":{"1":1,"11":1,"51":7,"54":7,"66":4,"71":4,"74":4,"77":4,"80":7,"101":1}}],["data",{"2":{"121":2}}],["dart",{"2":{"22":1}}],["dflags",{"2":{"120":1,"121":1}}],["dload",{"2":{"120":1}}],["dump",{"2":{"111":2,"112":2}}],["duo",{"0":{"121":1},"2":{"1":2,"11":2,"37":1,"51":10,"54":10,"60":1,"63":7,"66":7,"71":7,"74":10,"77":10,"80":10,"101":1,"108":1,"109":1,"110":2,"120":1,"121":5}}],["d",{"2":{"90":2}}],["dynamically",{"2":{"120":1}}],["dynamic选项",{"2":{"89":1}}],["dynamic",{"2":{"89":1}}],["diterations=0",{"2":{"120":1,"121":1}}],["distfiles",{"2":{"120":1}}],["dist",{"2":{"120":1}}],["disk",{"2":{"60":1,"101":1}}],["dir=linux64",{"2":{"97":1,"106":1,"117":1,"120":1,"121":1}}],["directory",{"2":{"33":1,"120":1}}],["double",{"2":{"120":1,"121":1}}],["do",{"2":{"110":1}}],["downloading",{"2":{"120":1}}],["download",{"2":{"95":1,"101":1}}],["downloaded",{"2":{"60":1,"101":1}}],["docs",{"2":{"84":1}}],["documentation",{"2":{"22":1,"51":71,"54":71,"74":1,"77":1,"80":5}}],["domain",{"2":{"67":1}}],["does",{"2":{"60":2,"101":2}}],["dd",{"2":{"51":33,"54":34,"60":2,"63":20,"66":25,"71":27,"74":30,"77":31,"80":33,"101":1}}],["default",{"2":{"110":1}}],["dest",{"2":{"110":2}}],["desktop",{"2":{"51":2,"54":2,"74":2,"77":2,"80":2}}],["deactivate",{"2":{"107":1,"111":1,"112":1,"118":1,"120":1}}],["development",{"2":{"60":1,"101":1}}],["devices",{"2":{"60":1,"101":1}}],["device",{"2":{"1":1,"3":1,"11":1,"14":1,"43":1,"46":1,"57":1,"60":7,"61":1,"101":10,"125":1}}],["demo",{"2":{"36":1,"39":1}}],["debug",{"2":{"120":1,"121":1}}],["debugger",{"0":{"85":1}}],["debugging",{"2":{"22":1}}],["debian",{"2":{"10":1,"21":1,"22":1,"32":1,"51":4,"54":4,"66":1,"71":1,"74":3,"77":3,"80":4,"94":1}}],["d1",{"2":{"1":1,"11":1,"51":6,"54":6,"63":6,"66":6,"71":6,"74":6,"77":6,"80":6,"101":1}}],["支持了香山南湖微架构",{"2":{"122":1}}],["支持了",{"2":{"78":1}}],["支持了相应的用户体验",{"2":{"55":1}}],["支持展示新闻了",{"2":{"59":5}}],["支持",{"0":{"50":1},"2":{"83":1,"122":1}}],["支持计划于2024年发布的sg2044和sg2380",{"2":{"29":1}}],["支持运行≥7个流行的linux发行版",{"2":{"29":1}}],["支持50多种risc",{"2":{"29":1}}],["支持插件系统",{"2":{"22":1}}],["支持c",{"2":{"22":1}}],["支持开发语言的语法高亮显示",{"2":{"22":1}}],["支持属性扩展",{"2":{"20":1}}],["支持多种",{"2":{"11":1}}],["支持在",{"2":{"10":1}}],["支持在risc",{"2":{"0":1}}],["支持的荔枝派",{"2":{"112":1}}],["支持的命令",{"2":{"46":1}}],["支持的发行版平台",{"0":{"45":1}}],["支持的编译环境",{"2":{"40":1}}],["支持的设备如下",{"2":{"11":1}}],["支持的设备",{"0":{"11":1},"2":{"5":2}}],["支持的risc",{"0":{"1":1}}],["含适用的编译工具链",{"2":{"0":1,"10":1}}],["ranlib",{"2":{"111":2,"112":2}}],["raw",{"2":{"60":1,"101":1}}],["ram",{"2":{"51":26,"54":26,"63":14,"66":14,"71":14,"74":14,"77":18,"80":26,"101":5}}],["root",{"2":{"60":1,"75":1,"101":1,"121":3}}],["rootfs",{"2":{"20":1,"51":6,"54":6,"63":6,"66":6,"71":6,"74":6,"77":6,"80":6}}],["rt",{"2":{"51":29,"54":29,"80":1}}],["rights",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"65":1,"69":1,"73":1,"76":1,"79":1}}],["riscv",{"2":{"36":2,"40":2,"89":2,"105":2,"110":2,"112":2,"117":2,"122":3}}],["riscv64",{"0":{"107":1},"2":{"33":1,"45":2,"49":4,"53":4,"56":4,"58":4,"62":4,"65":4,"69":1,"72":1,"73":4,"76":4,"79":4,"92":2,"95":2,"96":2,"97":1,"106":1,"111":34,"112":33,"114":1,"117":1,"120":5,"121":1}}],["riscv64等",{"2":{"10":1}}],["risc",{"2":{"0":2,"5":4,"6":2,"9":2,"10":6,"14":1,"15":1,"16":2,"21":1,"22":5,"24":1,"51":21,"54":20,"63":18,"66":20,"71":20,"74":20,"77":20,"78":1,"80":20,"81":2,"83":3,"84":1,"85":1,"86":1,"88":3,"89":2,"92":2,"93":1,"94":1,"100":1,"101":4,"102":1,"110":4,"112":1,"120":2,"121":1}}],["rules",{"2":{"121":1}}],["run",{"2":{"60":1,"101":1,"121":2}}],["running",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1}}],["rust",{"2":{"22":1}}],["ruyi工具的安装",{"0":{"95":1,"104":1}}],["ruyi包管理工具",{"0":{"21":1}}],["ruyi在线软件源",{"0":{"20":1}}],["ruyi",{"0":{"4":1,"8":1,"9":1,"19":1,"20":1,"21":1,"22":1,"33":1,"42":1,"44":1,"59":1,"108":1,"114":1},"1":{"20":1,"21":1,"45":1,"46":1,"47":1,"109":1,"110":1,"111":1,"112":1},"2":{"1":1,"3":2,"9":1,"14":1,"17":9,"22":10,"32":2,"33":13,"34":3,"35":8,"36":5,"37":4,"38":4,"39":2,"40":4,"41":3,"42":15,"43":1,"44":3,"45":1,"46":16,"49":18,"50":1,"51":3,"53":18,"54":3,"56":18,"57":1,"58":12,"59":31,"60":3,"62":12,"63":2,"65":12,"66":3,"67":6,"69":7,"70":1,"71":2,"73":17,"74":2,"75":1,"76":18,"77":3,"79":18,"80":3,"93":2,"95":7,"96":9,"101":2,"102":2,"104":6,"105":6,"108":4,"109":1,"110":10,"111":12,"112":16,"114":6,"115":5,"116":1,"117":4,"118":2,"119":2,"120":14,"121":2,"125":2}}],["ruyisdk针对上述常见的需求提供了包管理器",{"2":{"123":1}}],["ruyisdk计划为持有不同risc",{"2":{"122":1}}],["ruyisdk中编译工具链类型简介",{"0":{"122":1}}],["ruyisdk中负责管理ruyisdk各种软件源的工具",{"2":{"44":1}}],["ruyisdk包管理器提供了虚拟环境技术",{"2":{"117":1}}],["ruyisdk包管理器工具可使用",{"2":{"110":1}}],["ruyisdk包管理工具目前提供了linux系统",{"2":{"114":1}}],["ruyisdk支持的编译工具链版本",{"2":{"92":1}}],["ruyisdk使用示例",{"0":{"92":1}}],["ruyisdk官网上线",{"2":{"29":1}}],["ruyisdk软件源提供新的软件包或者软件包版本升级",{"2":{"27":1}}],["ruyisdk",{"0":{"12":1,"16":1,"17":1,"18":1,"25":1,"28":1,"81":1,"91":1},"1":{"19":1,"20":1,"21":1,"22":1,"23":1,"26":1,"27":1,"29":1,"30":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1},"2":{"4":5,"5":2,"6":1,"7":1,"10":1,"11":1,"13":1,"15":1,"16":3,"17":2,"23":1,"24":1,"26":2,"27":1,"33":3,"36":1,"39":1,"44":1,"49":3,"53":3,"56":3,"58":2,"59":12,"60":2,"62":2,"65":2,"67":3,"69":1,"73":3,"76":3,"78":1,"79":3,"81":1,"88":2,"89":1,"90":1,"95":1,"101":2,"104":1,"111":1,"116":1,"119":1,"120":1}}],["ruyisdk集成了多种可用的操作系统供用户选择",{"2":{"0":1}}],["ruyisdk集成的risc",{"0":{"0":1},"1":{"1":1,"2":1,"3":1}}],["ruyisdk对risc",{"2":{"0":1}}],["received",{"2":{"120":1}}],["return",{"2":{"112":1}}],["remote",{"2":{"67":3}}],["required",{"2":{"60":1,"101":1}}],["respective",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1}}],["reserved",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"65":1,"69":1,"73":1,"76":1,"79":1}}],["reinstall",{"2":{"38":2,"41":1}}],["readelf",{"2":{"111":1,"112":1}}],["readme",{"2":{"39":1,"121":1}}],["read",{"2":{"35":4,"59":10}}],["regular",{"2":{"33":1}}],["releases",{"2":{"33":1,"44":1,"49":3,"53":3,"56":3,"58":2,"62":2,"65":2,"69":1,"73":3,"76":3,"79":3,"95":2,"104":1,"114":1}}],["release",{"2":{"27":1,"67":1}}],["repl",{"2":{"22":1}}],["reporting",{"2":{"121":1}}],["repos",{"2":{"33":1}}],["repository",{"2":{"33":2}}],["repo中获取",{"2":{"17":1}}],["repo",{"0":{"20":1},"2":{"17":3,"33":1,"67":3,"116":1}}],["refactoring",{"2":{"22":1}}],["revyos",{"2":{"5":1,"10":1,"45":1,"47":1,"51":9,"54":9,"63":3,"66":3,"71":3,"74":3,"77":5,"80":9,"101":3}}],["rvc",{"2":{"120":1,"121":1}}],["rv20",{"2":{"90":1}}],["rv64gc",{"2":{"89":1}}],["rv64",{"2":{"83":1,"90":1}}],["rv64ilp32",{"2":{"37":2,"108":2,"109":2,"122":2}}],["rv32gc",{"2":{"89":1}}],["rv32",{"2":{"83":1,"90":1}}],["rvv1",{"2":{"90":1}}],["rvv",{"2":{"39":1,"89":5,"90":1}}],["rvp",{"2":{"16":1}}],["rv",{"2":{"1":1,"11":1,"51":2,"54":2,"63":2,"66":2,"71":2,"74":2,"77":2,"80":2,"101":1}}],["方便新手直接从ruyi",{"2":{"116":1}}],["方便用户直接使用",{"2":{"89":1}}],["方便",{"2":{"0":2,"10":1}}],["v运行环境",{"0":{"124":1},"1":{"125":1,"126":1}}],["v目标程序",{"0":{"126":1},"2":{"123":1}}],["v目标可执行程序的正确性",{"2":{"118":1}}],["v硬件设备",{"2":{"123":1}}],["validated",{"2":{"121":1}}],["variants",{"2":{"101":1}}],["variant",{"2":{"51":16,"54":17,"63":4,"66":6,"71":6,"74":10,"77":10,"80":14,"101":1}}],["vlmax输入与可伸缩向量不固定长度的",{"2":{"89":1}}],["v1",{"2":{"51":3,"54":3,"63":3,"66":3,"71":3,"74":3,"77":3,"80":3}}],["v0",{"0":{"48":1,"49":1,"52":1,"53":1,"55":1,"56":1,"57":1,"58":1,"61":1,"62":1,"64":1,"65":1,"68":1,"69":1,"72":1,"73":1,"75":1,"76":1,"78":1,"79":1},"1":{"49":1,"50":1,"51":1,"53":1,"54":1,"56":1,"58":1,"59":1,"60":1,"62":1,"63":1,"65":1,"66":1,"67":1,"69":1,"70":1,"71":1,"73":1,"74":1,"76":1,"77":1,"79":1,"80":1},"2":{"30":23,"32":1,"58":1,"62":1,"65":1,"69":1,"70":1,"72":1}}],["v集成开发环境的用户之间的交流和合作",{"2":{"23":1}}],["v集成开发环境相关的插件和扩展",{"2":{"23":1}}],["v集成开发环境所需的编译工具链",{"2":{"17":1}}],["v领域的专家",{"2":{"23":1}}],["virtual",{"2":{"22":1,"33":1,"110":3}}],["visionfive2",{"2":{"1":1,"11":1,"51":4,"54":4,"63":4,"66":4,"71":4,"74":4,"77":4,"80":4,"101":1}}],["visionfive",{"2":{"1":1,"11":1,"51":4,"54":4,"63":4,"66":4,"71":4,"74":4,"77":4,"80":4,"101":1}}],["v相关的文档",{"2":{"22":1}}],["v应用程序",{"2":{"22":2}}],["v指令的执行过程",{"2":{"22":1}}],["v指令集的应用程序",{"2":{"22":1}}],["v模拟器和调试器",{"2":{"22":2}}],["v编译器",{"2":{"22":1}}],["v项目",{"2":{"22":1}}],["v三种架构的主流linux系统",{"2":{"21":1,"22":1}}],["v系统镜像文件",{"2":{"20":1}}],["v生态系统的发展",{"2":{"17":1,"23":1}}],["v开发时",{"2":{"123":1}}],["v开发环境",{"0":{"113":1},"1":{"114":1,"115":1,"116":1,"117":1,"118":1,"119":1},"2":{"123":1}}],["v开发环境的使用指南",{"2":{"23":1}}],["v开发相关的资源",{"2":{"23":1}}],["v开发板的开发者们提供支持",{"2":{"122":1}}],["v开发板的sd卡通过读卡机接入pc",{"2":{"100":1}}],["v开发板以usb连接线接入pc或者risc",{"2":{"100":1}}],["v开发板提供镜像信息的维护与下载",{"2":{"99":1}}],["v开发板安装操作系统",{"0":{"99":1,"125":1},"1":{"100":1,"101":1},"2":{"123":1}}],["v开发板并为其安装系统镜像",{"2":{"92":1}}],["v开发板类型是丰富且不断扩展的",{"2":{"92":1}}],["v开发板",{"2":{"22":1,"101":1}}],["v开发板上进行运行和测试",{"2":{"17":1}}],["v开发者的集成开发环境将提供一系列专门针对risc",{"2":{"22":1}}],["v开发者使用的集成开发环境",{"2":{"22":2}}],["v开发者并推动risc",{"2":{"17":1}}],["v开发者提供一个开放的交流平台",{"2":{"17":1}}],["v的编译工具链",{"2":{"17":1}}],["v架构目标可执行程序以达到验证或者使用的目的",{"2":{"123":1}}],["v架构",{"2":{"22":1,"117":1}}],["v架构的工具和功能",{"2":{"22":1}}],["v架构的嵌入式设备上",{"2":{"22":1}}],["v架构的编译器",{"2":{"22":1}}],["v架构的可执行程序",{"2":{"17":1}}],["v架构设备上的软件和应用的工具箱",{"2":{"17":1}}],["ver>`",{"2":{"38":1}}],["version",{"2":{"22":1,"33":7,"49":2,"53":2,"56":2,"58":1,"62":1,"65":1,"69":1,"73":1,"76":2,"79":2,"95":1,"96":1,"104":1,"105":2,"111":1,"120":1,"121":2}}],["venv是自定义的虚拟环境名",{"2":{"111":1}}],["venv1",{"2":{"105":3,"117":2}}],["venv",{"2":{"33":2,"37":1,"40":4,"46":1,"96":6,"105":2,"108":1,"110":18,"111":9,"112":11,"117":3,"120":9,"121":2}}],["vector",{"2":{"16":1}}],["vega",{"2":{"1":1,"11":1,"51":3,"54":3,"74":4,"77":3,"80":3}}],["v",{"2":{"0":4,"1":7,"5":4,"6":2,"9":2,"10":6,"11":7,"14":1,"15":1,"16":2,"24":1,"33":1,"36":1,"51":56,"54":55,"60":2,"63":36,"66":38,"71":38,"74":51,"75":1,"77":55,"78":1,"80":55,"81":2,"83":4,"84":1,"85":1,"86":1,"87":1,"88":3,"89":4,"90":1,"92":1,"93":1,"94":1,"101":6,"102":1,"105":1,"110":4,"112":1,"114":1,"120":2,"121":1}}],["v设备也可以",{"2":{"123":1}}],["v设备上的应用程序",{"2":{"17":1}}],["v设备上调试应用程序等",{"2":{"0":1}}],["v设备有",{"2":{"1":1}}],["v设备专有向导页面",{"2":{"0":1}}],["v设备的集成和支持主要包括以下几个方面",{"2":{"0":1}}],["v设备",{"0":{"0":1,"1":1},"1":{"1":1,"2":1,"3":1},"2":{"29":1,"123":1}}]],"serializationVersion":2}';export{t as default}; diff --git a/assets/chunks/@localSearchIndexroot.lfomDKQb.js b/assets/chunks/@localSearchIndexroot.lfomDKQb.js deleted file mode 100644 index 003c6f35..00000000 --- a/assets/chunks/@localSearchIndexroot.lfomDKQb.js +++ /dev/null @@ -1 +0,0 @@ -const t='{"documentCount":127,"nextId":127,"documentIds":{"0":"/docs/zh/devices/#ruyisdk集成的risc-v设备","1":"/docs/zh/devices/#支持的risc-v设备","2":"/docs/zh/devices/#从ruyisdk开始使用设备","3":"/docs/zh/devices/#获取并安装os","4":"/docs/zh/introduction/#hello-ruyi","5":"/docs/zh/introduction/#介绍","6":"/docs/zh/introduction/#背景","7":"/docs/zh/introduction/#功能","8":"/docs/zh/introduction/#ruyi-包管理器","9":"/docs/zh/introduction/#ruyi-ide","10":"/docs/zh/introduction/#community","11":"/docs/zh/introduction/#支持的设备","12":"/docs/zh/introduction/#ruyisdk-架构示意图","13":"/docs/zh/introduction/#让我们开始吧","14":"/docs/zh/introduction/#获取并安装os","15":"/docs/zh/introduction/requirement.html#介绍","16":"/docs/zh/introduction/requirement.html#ruyisdk-的目标","17":"/docs/zh/introduction/requirement.html#ruyisdk-架构示意图","18":"/docs/zh/introduction/requirement.html#ruyisdk-模块需求说明","19":"/docs/zh/introduction/requirement.html#ruyi-包管理器","20":"/docs/zh/introduction/requirement.html#ruyi在线软件源-ruyi-repo","21":"/docs/zh/introduction/requirement.html#ruyi包管理工具-ruyi","22":"/docs/zh/introduction/requirement.html#ruyi-ide","23":"/docs/zh/introduction/requirement.html#开发者社区","24":"/docs/zh/plan/#版本规划路线图","25":"/docs/zh/plan/#ruyisdk-版本计划","26":"/docs/zh/plan/#里程碑版本","27":"/docs/zh/plan/#敏捷开发版本计划","28":"/docs/zh/plan/#ruyisdk-规划","29":"/docs/zh/plan/#_2024目标","30":"/docs/zh/plan/#敏捷开发版本排期","31":"/docs/zh/ruyi/getstarted/#开始","32":"/docs/zh/ruyi/getstarted/#安装依赖软件","33":"/docs/zh/ruyi/getstarted/#安装-ruyi-包管理器","34":"/docs/zh/ruyi/getstarted/#刷新软件包缓存","35":"/docs/zh/ruyi/getstarted/#查询包管理器更新内容","36":"/docs/zh/ruyi/getstarted/#查询可用软件包","37":"/docs/zh/ruyi/getstarted/#查询可用编译环境","38":"/docs/zh/ruyi/getstarted/#安装软件包","39":"/docs/zh/ruyi/getstarted/#安装源码包","40":"/docs/zh/ruyi/getstarted/#搭建编译环境","41":"/docs/zh/ruyi/getstarted/#卸载软件包","42":"/docs/zh/ruyi/getstarted/#卸载-ruyi-包管理器","43":"/docs/zh/ruyi/getstarted/#镜像信息的维护与下载、开发板系统的安装引导","44":"/docs/zh/ruyi/#ruyi-包管理器","45":"/docs/zh/ruyi/#支持的发行版平台","46":"/docs/zh/ruyi/#命令","47":"/docs/zh/ruyi/#附-外部链接","48":"/docs/zh/ruyi/updates/0.10.0.html#v0-10-0-版本新增特性","49":"/docs/zh/ruyi/updates/0.10.0.html#安装-v0-10-0","50":"/docs/zh/ruyi/updates/0.10.0.html#i18n-支持","51":"/docs/zh/ruyi/updates/0.10.0.html#板卡镜像刷写","52":"/docs/zh/ruyi/updates/0.11.0.html#v0-11-0-版本新增特性","53":"/docs/zh/ruyi/updates/0.11.0.html#安装-v0-11-0","54":"/docs/zh/ruyi/updates/0.11.0.html#板卡镜像刷写","55":"/docs/zh/ruyi/updates/0.12.0.html#v0-12-0-版本新增特性","56":"/docs/zh/ruyi/updates/0.12.0.html#安装-v0-12-0","57":"/docs/zh/ruyi/updates/0.3.0.html#v0-3-0-版本新增特性","58":"/docs/zh/ruyi/updates/0.3.0.html#安装-v0-3-0","59":"/docs/zh/ruyi/updates/0.3.0.html#ruyi-新闻","60":"/docs/zh/ruyi/updates/0.3.0.html#板卡镜像刷写","61":"/docs/zh/ruyi/updates/0.5.0.html#v0-5-0-版本新增特性","62":"/docs/zh/ruyi/updates/0.5.0.html#安装-v0-5-0","63":"/docs/zh/ruyi/updates/0.5.0.html#板卡镜像刷写","64":"/docs/zh/ruyi/updates/0.5.0.html#镜像源换源支持","65":"/docs/zh/ruyi/updates/0.4.0.html#v0-4-0-版本新增特性","66":"/docs/zh/ruyi/updates/0.4.0.html#安装-v0-4-0","67":"/docs/zh/ruyi/updates/0.4.0.html#板卡镜像刷写","68":"/docs/zh/ruyi/updates/0.6.0.html#v0-6-0-版本新增特性","69":"/docs/zh/ruyi/updates/0.6.0.html#安装-v0-6-0","70":"/docs/zh/ruyi/updates/0.6.0.html#依赖变化","71":"/docs/zh/ruyi/updates/0.6.0.html#板卡镜像刷写","72":"/docs/zh/ruyi/updates/0.7.0.html#v0-7-0-版本新增特性","73":"/docs/zh/ruyi/updates/0.7.0.html#安装-v0-7-0","74":"/docs/zh/ruyi/updates/0.7.0.html#板卡镜像刷写","75":"/docs/zh/ruyi/updates/0.8.1.html#v0-8-1-版本新增特性","76":"/docs/zh/ruyi/updates/0.8.1.html#安装-v0-8-1","77":"/docs/zh/ruyi/updates/0.8.1.html#板卡镜像刷写","78":"/docs/zh/ruyi/updates/0.9.0.html#v0-9-0-版本新增特性","79":"/docs/zh/ruyi/updates/0.9.0.html#安装-v0-9-0","80":"/docs/zh/ruyi/updates/0.9.0.html#板卡镜像刷写","81":"/docs/zh/sdk/gnu/#ruyisdk-gcc-工具链介绍","82":"/docs/zh/sdk/gnu/#模块介绍","83":"/docs/zh/sdk/gnu/#gcc-gnu-compiler-collection","84":"/docs/zh/sdk/gnu/#gnu-binutils","85":"/docs/zh/sdk/gnu/#gdb-gnu-debugger","86":"/docs/zh/sdk/gnu/#glibc-gnu-c-library","87":"/docs/zh/sdk/gnu/#newlib","88":"/docs/zh/sdk/gnu/#libgcc","89":"/docs/zh/sdk/gnu/#使用说明","90":"/docs/zh/sdk/gnu/#扩展支持","91":"/docs/zh/sdk/llvm/#ruyisdk-llvm-工具链介绍","92":"/docs/zh/usecase/#ruyisdk使用示例","93":"/docs/zh/usecase/rvbook/#使用示例","94":"/docs/zh/usecase/rvbook/#环境说明","95":"/docs/zh/usecase/rvbook/#ruyi工具的安装","96":"/docs/zh/usecase/rvbook/#使用ruyi工具部署开发环境","97":"/docs/zh/usecase/rvbook/#交叉编译coremark","98":"/docs/zh/usecase/rvbook/#运行验证","99":"/docs/zh/usecase/setupos/#为risc-v开发板安装操作系统","100":"/docs/zh/usecase/setupos/#环境说明","101":"/docs/zh/usecase/setupos/#安装操作系统","102":"/docs/zh/usecase/x86pc/#使用示例","103":"/docs/zh/usecase/x86pc/#环境说明","104":"/docs/zh/usecase/x86pc/#ruyi工具的安装","105":"/docs/zh/usecase/x86pc/#使用ruyi工具部署开发环境","106":"/docs/zh/usecase/x86pc/#交叉编译coremark","107":"/docs/zh/usecase/x86pc/#qemu-user-模式下运行-riscv64-coremark-可执行程序","108":"/docs/zh/usedirection/developmentside/environments/#ruyi-编译环境","109":"/docs/zh/usedirection/developmentside/environments/#工具链与预置配置组合","110":"/docs/zh/usedirection/developmentside/environments/#创建虚拟环境","111":"/docs/zh/usedirection/developmentside/environments/#在虚拟环境下编译","112":"/docs/zh/usedirection/developmentside/environments/#模拟运行","113":"/docs/zh/usedirection/developmentside/#准备risc-v开发环境","114":"/docs/zh/usedirection/developmentside/#安装-ruyi-包管理工具","115":"/docs/zh/usedirection/developmentside/#安装编译工具链","116":"/docs/zh/usedirection/developmentside/#准备代码","117":"/docs/zh/usedirection/developmentside/#编译","118":"/docs/zh/usedirection/developmentside/#模拟运行","119":"/docs/zh/usedirection/developmentside/#调试","120":"/docs/zh/usedirection/developmentside/sources/coremark/#使用编译环境进行-coremark-构建","121":"/docs/zh/usedirection/developmentside/sources/coremark/#在最新的-milkv-duo-镜像上运行","122":"/docs/zh/usedirection/developmentside/typeselection/#ruyisdk中编译工具链类型简介","123":"/docs/zh/usedirection/#使用ruyisdk","124":"/docs/zh/usedirection/operationside/#准备risc-v运行环境","125":"/docs/zh/usedirection/operationside/#为risc-v开发板安装操作系统","126":"/docs/zh/usedirection/operationside/#运行risc-v目标程序"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,22],"1":[2,2,36],"2":[1,2,1],"3":[1,3,8],"4":[2,1,17],"5":[1,1,30],"6":[1,1,23],"7":[1,1,3],"8":[2,1,22],"9":[2,1,15],"10":[1,1,37],"11":[1,1,54],"12":[2,1,1],"13":[2,1,4],"14":[1,2,12],"15":[1,1,11],"16":[2,1,36],"17":[2,1,76],"18":[2,1,5],"19":[2,2,1],"20":[4,4,40],"21":[3,4,38],"22":[2,2,278],"23":[1,2,84],"24":[1,1,11],"25":[2,1,1],"26":[1,3,17],"27":[1,3,26],"28":[2,1,1],"29":[1,3,10],"30":[1,3,51],"31":[1,1,1],"32":[1,1,29],"33":[3,1,124],"34":[1,1,20],"35":[1,1,21],"36":[1,1,60],"37":[1,1,24],"38":[1,1,44],"39":[1,1,16],"40":[1,1,33],"41":[1,1,12],"42":[3,1,29],"43":[2,1,7],"44":[2,1,22],"45":[1,2,24],"46":[1,2,35],"47":[2,2,13],"48":[4,1,8],"49":[4,4,82],"50":[2,4,11],"51":[1,4,182],"52":[4,1,17],"53":[4,4,82],"54":[1,4,185],"55":[4,1,28],"56":[4,4,82],"57":[4,1,7],"58":[4,4,53],"59":[2,4,87],"60":[1,4,118],"61":[4,1,5],"62":[4,4,53],"63":[1,4,83],"64":[1,4,58],"65":[4,1,4],"66":[4,4,57],"67":[1,4,70],"68":[4,1,12],"69":[4,4,56],"70":[1,4,12],"71":[1,4,81],"72":[4,1,11],"73":[4,4,52],"74":[1,4,96],"75":[4,1,17],"76":[4,4,83],"77":[1,4,103],"78":[4,1,17],"79":[4,4,82],"80":[1,4,124],"81":[3,1,15],"82":[1,3,1],"83":[5,4,34],"84":[2,4,27],"85":[4,4,7],"86":[5,4,10],"87":[1,4,14],"88":[1,4,27],"89":[1,3,94],"90":[1,3,118],"91":[3,1,2],"92":[1,1,24],"93":[1,1,16],"94":[1,1,11],"95":[1,1,43],"96":[2,1,70],"97":[1,1,32],"98":[1,1,6],"99":[2,1,6],"100":[1,2,13],"101":[1,2,171],"102":[1,1,18],"103":[1,1,8],"104":[1,1,41],"105":[2,1,51],"106":[1,1,32],"107":[6,1,9],"108":[2,1,24],"109":[1,2,27],"110":[1,2,103],"111":[1,2,121],"112":[1,2,100],"113":[2,1,1],"114":[3,2,49],"115":[1,2,15],"116":[1,2,15],"117":[1,2,70],"118":[1,2,18],"119":[1,2,12],"120":[3,1,147],"121":[4,3,153],"122":[1,1,73],"123":[1,1,38],"124":[2,1,1],"125":[2,2,8],"126":[2,2,7]},"averageFieldLength":[1.9763779527559064,2.05511811023622,42.40157480314961],"storedFields":{"0":{"title":"RuyiSDK集成的RISC-V设备","titles":[]},"1":{"title":"支持的RISC-V设备","titles":["RuyiSDK集成的RISC-V设备"]},"2":{"title":"从RuyiSDK开始使用设备","titles":["RuyiSDK集成的RISC-V设备"]},"3":{"title":"获取并安装OS","titles":["RuyiSDK集成的RISC-V设备","从RuyiSDK开始使用设备"]},"4":{"title":"Hello Ruyi","titles":[]},"5":{"title":"介绍","titles":[]},"6":{"title":"背景","titles":[]},"7":{"title":"功能","titles":[]},"8":{"title":"Ruyi 包管理器","titles":["功能"]},"9":{"title":"Ruyi IDE","titles":["功能"]},"10":{"title":"Community","titles":["功能"]},"11":{"title":"支持的设备","titles":[]},"12":{"title":"RuyiSDK 架构示意图","titles":[]},"13":{"title":"让我们开始吧!","titles":[]},"14":{"title":"获取并安装OS","titles":["让我们开始吧!"]},"15":{"title":"介绍","titles":[]},"16":{"title":"RuyiSDK 的目标","titles":[]},"17":{"title":"RuyiSDK 架构示意图","titles":[]},"18":{"title":"RuyiSDK 模块需求说明","titles":[]},"19":{"title":"RUYI 包管理器","titles":["RuyiSDK 模块需求说明"]},"20":{"title":"RUYI在线软件源(Ruyi Repo)","titles":["RuyiSDK 模块需求说明","RUYI 包管理器"]},"21":{"title":"RUYI包管理工具(ruyi)","titles":["RuyiSDK 模块需求说明","RUYI 包管理器"]},"22":{"title":"Ruyi IDE","titles":["RuyiSDK 模块需求说明"]},"23":{"title":"开发者社区","titles":["RuyiSDK 模块需求说明"]},"24":{"title":"版本规划路线图","titles":[]},"25":{"title":"RUYISDK 版本计划","titles":["版本规划路线图"]},"26":{"title":"里程碑版本","titles":["版本规划路线图","RUYISDK 版本计划"]},"27":{"title":"敏捷开发版本计划","titles":["版本规划路线图","RUYISDK 版本计划"]},"28":{"title":"RUYISDK 规划","titles":["版本规划路线图"]},"29":{"title":"2024目标","titles":["版本规划路线图","RUYISDK 规划"]},"30":{"title":"敏捷开发版本排期","titles":["版本规划路线图","RUYISDK 规划"]},"31":{"title":"开始","titles":[]},"32":{"title":"安装依赖软件","titles":["开始"]},"33":{"title":"安装 RUYI 包管理器","titles":["开始"]},"34":{"title":"刷新软件包缓存","titles":["开始"]},"35":{"title":"查询包管理器更新内容","titles":["开始"]},"36":{"title":"查询可用软件包","titles":["开始"]},"37":{"title":"查询可用编译环境","titles":["开始"]},"38":{"title":"安装软件包","titles":["开始"]},"39":{"title":"安装源码包","titles":["开始"]},"40":{"title":"搭建编译环境","titles":["开始"]},"41":{"title":"卸载软件包","titles":["开始"]},"42":{"title":"卸载 RUYI 包管理器","titles":["开始"]},"43":{"title":"镜像信息的维护与下载、开发板系统的安装引导","titles":["开始"]},"44":{"title":"RUYI 包管理器","titles":[]},"45":{"title":"支持的发行版平台","titles":["RUYI 包管理器"]},"46":{"title":"命令","titles":["RUYI 包管理器"]},"47":{"title":"附:外部链接","titles":["RUYI 包管理器"]},"48":{"title":"v0.10.0 版本新增特性","titles":[]},"49":{"title":"安装 v0.10.0","titles":["v0.10.0 版本新增特性"]},"50":{"title":"i18n 支持","titles":["v0.10.0 版本新增特性"]},"51":{"title":"板卡镜像刷写","titles":["v0.10.0 版本新增特性"]},"52":{"title":"v0.11.0 版本新增特性","titles":[]},"53":{"title":"安装 v0.11.0","titles":["v0.11.0 版本新增特性"]},"54":{"title":"板卡镜像刷写","titles":["v0.11.0 版本新增特性"]},"55":{"title":"v0.12.0 版本新增特性","titles":[]},"56":{"title":"安装 v0.12.0","titles":["v0.12.0 版本新增特性"]},"57":{"title":"v0.3.0 版本新增特性","titles":[]},"58":{"title":"安装 v0.3.0","titles":["v0.3.0 版本新增特性"]},"59":{"title":"RUYI 新闻","titles":["v0.3.0 版本新增特性"]},"60":{"title":"板卡镜像刷写","titles":["v0.3.0 版本新增特性"]},"61":{"title":"v0.5.0 版本新增特性","titles":[]},"62":{"title":"安装 v0.5.0","titles":["v0.5.0 版本新增特性"]},"63":{"title":"板卡镜像刷写","titles":["v0.5.0 版本新增特性"]},"64":{"title":"镜像源换源支持","titles":["v0.5.0 版本新增特性"]},"65":{"title":"v0.4.0 版本新增特性","titles":[]},"66":{"title":"安装 v0.4.0","titles":["v0.4.0 版本新增特性"]},"67":{"title":"板卡镜像刷写","titles":["v0.4.0 版本新增特性"]},"68":{"title":"v0.6.0 版本新增特性","titles":[]},"69":{"title":"安装 v0.6.0","titles":["v0.6.0 版本新增特性"]},"70":{"title":"依赖变化","titles":["v0.6.0 版本新增特性"]},"71":{"title":"板卡镜像刷写","titles":["v0.6.0 版本新增特性"]},"72":{"title":"v0.7.0 版本新增特性","titles":[]},"73":{"title":"安装 v0.7.0","titles":["v0.7.0 版本新增特性"]},"74":{"title":"板卡镜像刷写","titles":["v0.7.0 版本新增特性"]},"75":{"title":"v0.8.1 版本新增特性","titles":[]},"76":{"title":"安装 v0.8.1","titles":["v0.8.1 版本新增特性"]},"77":{"title":"板卡镜像刷写","titles":["v0.8.1 版本新增特性"]},"78":{"title":"v0.9.0 版本新增特性","titles":[]},"79":{"title":"安装 v0.9.0","titles":["v0.9.0 版本新增特性"]},"80":{"title":"板卡镜像刷写","titles":["v0.9.0 版本新增特性"]},"81":{"title":"RuyiSDK GCC 工具链介绍","titles":[]},"82":{"title":"模块介绍","titles":["RuyiSDK GCC 工具链介绍"]},"83":{"title":"GCC(GNU Compiler Collection)","titles":["RuyiSDK GCC 工具链介绍","模块介绍"]},"84":{"title":"GNU Binutils","titles":["RuyiSDK GCC 工具链介绍","模块介绍"]},"85":{"title":"GDB(GNU Debugger)","titles":["RuyiSDK GCC 工具链介绍","模块介绍"]},"86":{"title":"Glibc(GNU C Library)","titles":["RuyiSDK GCC 工具链介绍","模块介绍"]},"87":{"title":"Newlib","titles":["RuyiSDK GCC 工具链介绍","模块介绍"]},"88":{"title":"Libgcc","titles":["RuyiSDK GCC 工具链介绍","模块介绍"]},"89":{"title":"使用说明","titles":["RuyiSDK GCC 工具链介绍"]},"90":{"title":"扩展支持","titles":["RuyiSDK GCC 工具链介绍"]},"91":{"title":"RuyiSDK LLVM 工具链介绍","titles":[]},"92":{"title":"RuyiSDK使用示例","titles":[]},"93":{"title":"使用示例","titles":[]},"94":{"title":"环境说明","titles":["使用示例"]},"95":{"title":"ruyi工具的安装","titles":["使用示例"]},"96":{"title":"使用ruyi工具部署开发环境:","titles":["使用示例"]},"97":{"title":"交叉编译coremark","titles":["使用示例"]},"98":{"title":"运行验证","titles":["使用示例"]},"99":{"title":"为RISC-V开发板安装操作系统","titles":[]},"100":{"title":"环境说明","titles":["为RISC-V开发板安装操作系统"]},"101":{"title":"安装操作系统","titles":["为RISC-V开发板安装操作系统"]},"102":{"title":"使用示例","titles":[]},"103":{"title":"环境说明","titles":["使用示例"]},"104":{"title":"ruyi工具的安装","titles":["使用示例"]},"105":{"title":"使用ruyi工具部署开发环境:","titles":["使用示例"]},"106":{"title":"交叉编译coremark","titles":["使用示例"]},"107":{"title":"qemu-user 模式下运行 riscv64 coremark 可执行程序","titles":["使用示例"]},"108":{"title":"RUYI 编译环境","titles":[]},"109":{"title":"工具链与预置配置组合","titles":["RUYI 编译环境"]},"110":{"title":"创建虚拟环境","titles":["RUYI 编译环境"]},"111":{"title":"在虚拟环境下编译","titles":["RUYI 编译环境"]},"112":{"title":"模拟运行","titles":["RUYI 编译环境"]},"113":{"title":"准备RISC-V开发环境","titles":[]},"114":{"title":"安装 ruyi 包管理工具","titles":["准备RISC-V开发环境"]},"115":{"title":"安装编译工具链","titles":["准备RISC-V开发环境"]},"116":{"title":"准备代码","titles":["准备RISC-V开发环境"]},"117":{"title":"编译","titles":["准备RISC-V开发环境"]},"118":{"title":"模拟运行","titles":["准备RISC-V开发环境"]},"119":{"title":"调试","titles":["准备RISC-V开发环境"]},"120":{"title":"使用编译环境进行 Coremark 构建","titles":[]},"121":{"title":"在最新的 Milkv Duo 镜像上运行","titles":["使用编译环境进行 Coremark 构建"]},"122":{"title":"RuyiSDK中编译工具链类型简介","titles":[]},"123":{"title":"使用RuyiSDK","titles":[]},"124":{"title":"准备RISC-V运行环境","titles":[]},"125":{"title":"为RISC-V开发板安装操作系统","titles":["准备RISC-V运行环境"]},"126":{"title":"运行RISC-V目标程序","titles":["准备RISC-V运行环境"]}},"dirtCount":0,"index":[["但是一些高性能的risc",{"2":{"123":1}}],["但是并不保证建立成功的环境一定可用于构建",{"2":{"109":1}}],["仓库",{"2":{"122":1}}],["仓库文档在",{"2":{"114":1}}],["非通用工具链",{"2":{"122":1}}],["图像处理等领域可能需要针对特定指令集的优化和定制",{"2":{"122":1}}],["机器学习",{"2":{"122":1}}],["嵌入式系统",{"2":{"122":1}}],["嵌入式设备中为",{"2":{"89":1}}],["某些特定的应用领域可能对扩展指令集有特殊的需求",{"2":{"122":1}}],["某些扩展指令集是由标准和规范定义的",{"2":{"122":1}}],["特定应用需求",{"2":{"122":1}}],["特性的开发者",{"2":{"88":1}}],["稳定性或兼容性",{"2":{"122":1}}],["然而",{"2":{"122":1}}],["然后在文本编辑器中完成对代码的编辑",{"2":{"17":1}}],["针对自己的处理器架构实现了特定版本的编译工具链",{"2":{"122":1}}],["针对risc",{"2":{"22":2}}],["添加特定的硬件加速器等方式",{"2":{"122":1}}],["添加自定义功能",{"2":{"22":1}}],["优化编译器生成的代码",{"2":{"122":1}}],["更多的功能和更好的能效",{"2":{"122":1}}],["更新最新的软件源索引",{"2":{"95":1}}],["更新软件包缓存",{"2":{"34":1}}],["更新",{"2":{"21":1}}],["更新和管理软件包",{"2":{"17":1}}],["处理器架构不断演进和改进",{"2":{"122":1}}],["处理器架构的发展",{"2":{"122":1}}],["随着时间的推移",{"2":{"122":1}}],["随着版本的更新和发布",{"2":{"20":1}}],["厂商定制和优化",{"2":{"122":2}}],["厂商定制扩展",{"2":{"16":1}}],["重新上传后运行",{"2":{"121":1}}],["重构工具",{"2":{"22":1}}],["地址请按实际情况更改",{"2":{"121":1}}],["传送",{"2":{"121":1}}],["首先进入编译环境",{"2":{"120":1}}],["首先创建项目",{"2":{"17":1}}],["构建",{"0":{"120":1},"1":{"121":1},"2":{"120":2}}],["此外",{"2":{"119":1}}],["此部分没有统一规范",{"2":{"117":1}}],["初步检验可执行程序是否risc",{"2":{"117":1}}],["举例",{"2":{"117":1}}],["前提",{"2":{"117":1,"118":1}}],["大致操作步骤如下",{"2":{"117":1}}],["允许用户在系统中创建独立的环境",{"2":{"117":1}}],["允许开发人员在",{"2":{"85":1}}],["准备代码",{"0":{"116":1},"2":{"123":1}}],["准备risc",{"0":{"113":1,"124":1},"1":{"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"125":1,"126":1},"2":{"123":1}}],["保证ruyi",{"2":{"114":1}}],["获取最新缓存才能获取软件仓库最新的软件包资源",{"2":{"114":1}}],["获取并查看更新信息",{"2":{"46":1}}],["获取并安装os",{"0":{"3":1,"14":1}}],["路径下就可以开始了",{"2":{"114":1}}],["三种架构平台下的安装程序",{"2":{"114":1}}],["三架构支持",{"2":{"21":1,"22":1}}],["程序并使用",{"2":{"112":1}}],["进入编译环境",{"2":{"112":1}}],["进行代码的协作开发和团队协作",{"2":{"22":1}}],["进行例如图像识别应用程序的开发时",{"2":{"22":1}}],["实际操作中请注意将上述例子中的参数替换为正确的值",{"2":{"111":1}}],["实现运行环境隔离的设计",{"2":{"96":1}}],["实现",{"2":{"42":1}}],["实现一套图形用户界面",{"2":{"21":1}}],["实现一套命令行接口",{"2":{"21":1}}],["实现开发环境和运行环境的文件传输",{"2":{"0":1,"10":1}}],["退出后环境将被还原",{"2":{"111":1}}],["退出编译环境",{"2":{"111":1,"112":1}}],["退出虚拟环境",{"2":{"107":1,"118":1,"120":1}}],["调用工具链",{"2":{"111":1}}],["调试技巧等方面的内容",{"2":{"23":1}}],["调试支持",{"2":{"22":1}}],["调试支持等功能",{"2":{"22":1}}],["调试支持等",{"2":{"16":1}}],["调试",{"0":{"119":1},"2":{"17":1,"123":1}}],["调试工具等等",{"2":{"123":1}}],["调试工具和模拟器",{"2":{"9":1}}],["调试工具",{"2":{"8":1,"17":2,"20":1}}],["表示",{"2":{"111":1}}],["建立编译环境",{"2":{"111":1,"112":1}}],["建议使用最新版本",{"2":{"114":1}}],["建议使用",{"2":{"89":1}}],["无",{"2":{"109":1}}],["无浮点硬件中为",{"2":{"89":1}}],["预置配置",{"2":{"109":1}}],["预期每",{"2":{"27":1}}],["展示在x86",{"2":{"102":1}}],["展示从",{"2":{"93":1}}],["您只需要按照引导提示一步步执行即可",{"2":{"101":1}}],["您可用",{"2":{"59":4}}],["直接运行即可",{"2":{"126":1}}],["直接运行riscv64",{"2":{"98":1}}],["直接使用环境变量指定的gcc编译",{"2":{"96":1}}],["得到可执行程序coremark",{"2":{"97":1,"106":1,"117":1}}],["参考上表代入具体的参数",{"2":{"110":1}}],["参考coremark仓库自述文档",{"2":{"97":1,"106":1}}],["参数",{"2":{"38":1,"64":1}}],["参数列表",{"2":{"22":2}}],["激活方式与",{"2":{"111":1}}],["激活构建环境",{"2":{"111":1}}],["激活后",{"2":{"96":1}}],["激活虚拟环境",{"2":{"96":1,"105":1,"117":1}}],["激活和管理虚拟环境",{"2":{"22":1}}],["创建一个叫venv1的虚拟环境",{"2":{"117":1}}],["创建一个新的c",{"2":{"22":1}}],["创建虚拟环境",{"0":{"110":1},"2":{"110":1}}],["创建虚拟环境venv",{"2":{"96":1}}],["验证ruyi可否使用",{"2":{"95":1,"104":1}}],["清除当前已经安装的",{"2":{"95":1,"104":1}}],["硬件环境",{"2":{"94":1,"103":1}}],["环境则不是交叉编译",{"2":{"120":1}}],["环境下使用平头哥工具链配置带",{"2":{"112":1}}],["环境说明",{"0":{"94":1,"100":1,"103":1}}],["环境变量被无视的问题",{"2":{"55":1}}],["环境变量被设置时",{"2":{"34":1}}],["环境变量",{"2":{"52":1}}],["接入risc",{"2":{"92":1}}],["接着对项目进行编译构建获得risc",{"2":{"17":1}}],["案例三",{"2":{"92":1}}],["案例二",{"2":{"92":1}}],["案例一",{"2":{"92":1}}],["案例研究和实践经验",{"2":{"23":1}}],["希望通过一些小场景让大家更多的了解ruyisdk的使用",{"2":{"92":1}}],["额外支持",{"2":{"90":1}}],["手册",{"2":{"89":1}}],["有特定优化",{"2":{"90":1}}],["有已知固定向量长度的",{"2":{"89":1}}],["有什么用",{"2":{"4":1}}],["请注意关注版本信息",{"2":{"114":1}}],["请务必同时使用",{"2":{"89":1}}],["请使用更新的版本",{"2":{"69":1}}],["请使用",{"2":{"41":1}}],["向量扩展时",{"2":{"89":1}}],["控制不同扩展的使用",{"2":{"89":1}}],["输入",{"2":{"89":1}}],["zpsfoperand",{"2":{"90":1}}],["zpn",{"2":{"90":1}}],["ztso",{"2":{"90":1}}],["zc",{"2":{"90":1}}],["zcmt",{"2":{"90":1}}],["zcmp",{"2":{"90":1}}],["zcd",{"2":{"90":2}}],["zcf",{"2":{"90":1}}],["zce",{"2":{"90":1}}],["zcb",{"2":{"90":1}}],["zca",{"2":{"90":1}}],["zmmul",{"2":{"90":1}}],["zvkt",{"2":{"90":1}}],["zvksc",{"2":{"90":1}}],["zvksh",{"2":{"90":1}}],["zvksed",{"2":{"90":1}}],["zvknc",{"2":{"90":1}}],["zvknhb",{"2":{"90":1}}],["zvknha",{"2":{"90":1}}],["zvkned",{"2":{"90":1}}],["zvkg",{"2":{"90":1}}],["zvbc",{"2":{"90":1}}],["zvbb",{"2":{"90":1}}],["zvfhmin",{"2":{"90":1}}],["zvfh",{"2":{"90":1}}],["zfa",{"2":{"90":1}}],["zfhmin",{"2":{"90":1}}],["zfh",{"2":{"90":1}}],["zfinx",{"2":{"90":2}}],["zkt",{"2":{"90":1}}],["zksh",{"2":{"90":1}}],["zksed",{"2":{"90":1}}],["zkr",{"2":{"90":1}}],["zknh",{"2":{"90":1}}],["zkne",{"2":{"90":1}}],["zknd",{"2":{"90":1}}],["zhinxmin",{"2":{"90":1}}],["zhinx",{"2":{"90":1}}],["zdinx",{"2":{"90":1}}],["zawrs",{"2":{"90":1}}],["zihintpause",{"2":{"90":1}}],["zihintntl",{"2":{"90":1}}],["zicbop",{"2":{"90":1}}],["zicbom",{"2":{"90":1}}],["zicboz",{"2":{"90":1}}],["zicond",{"2":{"90":1}}],["zicsr",{"2":{"90":1}}],["zifencei",{"2":{"90":1}}],["zbpbo",{"2":{"90":1}}],["zbkx",{"2":{"90":1}}],["zbkc",{"2":{"90":1}}],["zbkb",{"2":{"90":1}}],["zbs",{"2":{"89":1,"90":1}}],["zbc",{"2":{"89":1,"90":1}}],["zbb",{"2":{"89":1,"90":1}}],["zba",{"2":{"89":1,"90":1}}],["zstd",{"2":{"32":2}}],["扩展不兼容",{"2":{"90":1}}],["扩展名称",{"2":{"90":1}}],["扩展支持",{"0":{"90":1}}],["扩展可以使用",{"2":{"89":2}}],["扩展",{"2":{"89":1}}],["扩展指令集架构组合",{"2":{"16":1}}],["选项",{"2":{"89":1}}],["选项主要控制工具链中所使用的寄存器组",{"2":{"89":1}}],["选项可以控制工具链开启的",{"2":{"89":1}}],["选择开发板后将返回所有支持指定开发板的操作系统",{"2":{"101":1}}],["选择使用",{"2":{"87":1}}],["选择合适架构的预编译二进制下载",{"2":{"33":1}}],["下通过",{"2":{"114":1}}],["下执行",{"2":{"100":1}}],["下面以任一个编译工具链在虚拟环境中编译程序一般的操作说明操作步骤",{"2":{"111":1}}],["下面我们来介绍",{"2":{"89":1}}],["下面重点介绍",{"2":{"89":1}}],["下载解压coremark源码作为编译对象",{"2":{"96":1,"105":1}}],["下载riscv64版本的ruyi",{"2":{"95":1}}],["下载",{"2":{"95":1,"104":1}}],["下载并解包指定的源码包",{"2":{"46":1}}],["下载并安装指定的软件包",{"2":{"46":1,"115":1}}],["下载地址",{"2":{"44":1}}],["下载链接",{"2":{"20":1}}],["尽可能的继承目前",{"2":{"88":1}}],["芯片的硬件",{"2":{"88":1}}],["芯片设计",{"2":{"6":1}}],["系列",{"2":{"88":1}}],["系统",{"2":{"87":1}}],["系统生成客户所需的操作系统",{"2":{"16":1}}],["系统获得硬件资料说明",{"2":{"16":1}}],["系统镜像",{"2":{"8":1}}],["器紧密相关的支持函数",{"2":{"88":1}}],["反汇编等操作",{"2":{"84":1}}],["链接器",{"2":{"84":1}}],["链接器等",{"2":{"81":1}}],["详细使用说明参考",{"2":{"83":1,"84":1}}],["位工具链中为",{"2":{"89":4}}],["位",{"2":{"83":2}}],["位长的支持",{"2":{"83":1}}],["汇编器",{"2":{"81":1,"84":1}}],["它们可能通过改进指令执行流程",{"2":{"122":1}}],["它包括一系列工具",{"2":{"81":1}}],["它提供直观的用户界面",{"2":{"22":1}}],["它提供了一套命令行接口",{"2":{"17":1}}],["产品",{"2":{"78":1}}],["全线",{"2":{"78":1}}],["全家桶式的全功能开发环境",{"2":{"15":1,"24":1}}],["格式压缩文件的解包",{"2":{"78":1}}],["默认最新",{"2":{"111":1}}],["默认不允许以",{"2":{"75":1}}],["默认使用",{"2":{"64":1}}],["暂时没有提供官方镜像下载",{"2":{"74":1}}],["二进制的",{"2":{"121":1}}],["二进制",{"2":{"110":2,"112":1}}],["二进制无法工作的问题",{"2":{"72":1}}],["二进制可能无法正常工作",{"2":{"69":1}}],["修复",{"2":{"72":1}}],["修复了",{"2":{"55":1}}],["修复了先前",{"2":{"55":1}}],["依赖变化",{"0":{"70":1}}],["依赖库版本到",{"2":{"55":1}}],["种",{"2":{"68":1,"71":1}}],["替代对",{"2":{"68":1}}],["托管默认软件源",{"2":{"66":1}}],["远端元数据仓库分支",{"2":{"64":1}}],["远端元数据仓库",{"2":{"64":1}}],["未配置或配置为空时",{"2":{"64":3}}],["启用",{"2":{"64":1}}],["除了",{"2":{"111":1}}],["除了这里列举的环境外",{"2":{"92":1}}],["除了荔枝派",{"2":{"60":1}}],["除去继承开源软件的部分",{"2":{"22":1}}],["指定了编译工具链的类型和版本",{"2":{"111":1}}],["指定新闻编号或",{"2":{"59":1}}],["指令集有所不同",{"2":{"88":1}}],["指令集扩展的支持",{"2":{"83":1}}],["指令执行效率更高",{"2":{"6":1}}],["现已为以下板卡新增了镜像包",{"2":{"59":1}}],["感谢您对",{"2":{"59":4}}],["之后",{"2":{"59":3}}],["之中",{"2":{"17":1}}],["那么当您完成",{"2":{"59":3}}],["┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛",{"2":{"59":4}}],["┃",{"2":{"59":8}}],["┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓",{"2":{"59":4}}],["阅读它们",{"2":{"59":3}}],["阅读所有未读新闻",{"2":{"59":1}}],["阅读新闻或将信息设置为已读",{"2":{"35":1}}],["变量被设置时为",{"2":{"59":1}}],["文章",{"2":{"122":1}}],["文件配置",{"2":{"114":1}}],["文件中",{"2":{"59":1}}],["文档支持增加到",{"2":{"48":1,"52":1}}],["文档和教程",{"2":{"23":1}}],["文档生成",{"2":{"22":1}}],["文档资源等各种信息",{"2":{"20":1}}],["文档可能更新不及时",{"2":{"11":1}}],["文档",{"2":{"8":1,"17":1,"20":1}}],["───────────────────────────────────────────────────────────────",{"2":{"59":2}}],["新的处理器架构可能引入了新的指令集扩展",{"2":{"122":1}}],["新闻的阅读状态将保存在",{"2":{"59":1}}],["新闻",{"0":{"59":1},"2":{"57":1}}],["新增可执行程序coremark",{"2":{"97":1,"106":1}}],["新增板卡支持",{"2":{"59":3}}],["新增",{"2":{"54":1,"75":1}}],["升级了",{"2":{"55":1}}],["升级版",{"2":{"11":1}}],["渲染相应的提示语",{"2":{"55":1}}],["规则",{"2":{"51":1,"54":1,"77":1,"80":1}}],["规划",{"0":{"28":1},"1":{"29":1,"30":1}}],["故此处只提供了文档链接而没有刷写支持",{"2":{"74":1}}],["故需要用户自行配置",{"2":{"51":1,"54":1,"77":1,"80":1}}],["故在需要升级",{"2":{"42":1}}],["刷写工具根据板卡的不同依赖",{"2":{"51":1,"54":1,"63":1,"67":1,"71":1,"74":1,"77":1,"80":1}}],["刷写方式",{"2":{"51":1,"54":1,"63":1,"67":1,"71":1,"74":1,"77":1,"80":1}}],["刷新软件包缓存",{"0":{"34":1}}],["单片机系列的文档支持",{"2":{"51":1}}],["单步执行代码",{"2":{"22":2}}],["本文使用",{"2":{"120":1}}],["本操作在x86",{"2":{"100":1}}],["本地元数据路径",{"2":{"64":1}}],["本次主要增加了沁恒",{"2":{"51":1}}],["本身",{"2":{"42":1}}],["本身的安装程序需要支持x86",{"2":{"22":1}}],["检查虚拟环境中编译工具的版本信息",{"2":{"105":1}}],["检查安装版本",{"2":{"49":1,"53":1,"56":1,"58":1,"62":1,"66":1,"69":1,"73":1,"76":1,"79":1}}],["检查代码的瓶颈并进行优化",{"2":{"22":1}}],["款",{"2":{"48":1,"51":1,"52":1,"54":1,"61":1,"63":1,"67":1,"72":1,"74":1,"75":1,"77":1,"78":1,"80":1}}],["板卡刷写",{"2":{"75":1}}],["板卡支持列表",{"2":{"51":1,"54":1,"63":1,"67":1,"71":1,"74":1,"77":1,"80":1}}],["板卡镜像刷写支持增加到",{"2":{"61":1,"72":1,"75":1,"78":1}}],["板卡镜像刷写功能所支持的板卡增加到",{"2":{"51":1,"54":1,"63":1,"67":1,"74":1,"77":1,"80":1}}],["板卡镜像刷写",{"0":{"51":1,"54":1,"60":1,"63":1,"67":1,"71":1,"74":1,"77":1,"80":1},"2":{"48":1,"52":1,"57":1,"65":1}}],["板卡的新增适配等等",{"2":{"27":1}}],["多语言支持",{"2":{"48":1}}],["虚拟环境类似",{"2":{"111":1}}],["虚拟环境可以理解成一个容器",{"2":{"96":1}}],["虚拟环境venv1",{"2":{"105":1}}],["虚拟环境venv",{"2":{"96":1}}],["虚拟环境",{"2":{"46":1}}],["由于使用的工具链为",{"2":{"120":1}}],["由于软件包索引信息目前托管的github仓库国内访问的网络不稳定性",{"2":{"114":1}}],["由于ruyi滚动发版",{"2":{"114":1}}],["由指定的工具链",{"2":{"96":1,"105":1}}],["由指定的工具链和配置建立",{"2":{"46":1}}],["由编译器自动配置选取合适的处理数量",{"2":{"89":1}}],["由",{"2":{"60":1}}],["由加州伯克利分校所发起的一个开源项目",{"2":{"6":1}}],["外部链接",{"0":{"47":1},"2":{"45":1}}],["附",{"0":{"47":1},"2":{"45":1}}],["仅",{"2":{"90":1}}],["仅限验证过的",{"2":{"45":1}}],["仅列出未读新闻",{"2":{"35":1}}],["需求与问题",{"2":{"44":1}}],["需要更新和升级编译工具链",{"2":{"122":1}}],["需要编辑构建脚本",{"2":{"120":1}}],["需要先安装运行时环境或语言虚拟机",{"2":{"126":1}}],["需要先",{"2":{"111":1}}],["需要为其安装镜像",{"2":{"101":1}}],["需要指定正确的编译器版本和sysroot类型",{"2":{"96":1}}],["需要注意的是一些镜像的解包需要占用大量的磁盘空间",{"2":{"51":1,"54":1,"63":1,"67":1,"71":1,"74":1,"77":1,"80":1}}],["需要手动安装",{"2":{"32":1}}],["需要具备如下特点",{"2":{"22":1}}],["需要具备如下功能",{"2":{"22":1}}],["需要一一区别和定义",{"2":{"22":1}}],["官方仓库",{"2":{"44":1}}],["官方网站",{"2":{"23":1}}],["执行交叉编译和构建",{"2":{"97":1,"106":1,"117":1}}],["执行汇编和链接",{"2":{"84":1}}],["执行如下命令并按照引导执行即可下载所需系统镜像",{"2":{"43":1}}],["执行新特性的测试验证和基础功能回归测试",{"2":{"27":1}}],["镜像上运行",{"0":{"121":1}}],["镜像支持增加到",{"2":{"68":1,"71":1}}],["镜像源下载体验",{"2":{"114":1}}],["镜像源下载最新的ruyi工具",{"2":{"95":1,"104":1}}],["镜像源下载最新版本体验",{"2":{"44":1}}],["镜像源下载最新版本",{"2":{"33":1}}],["镜像源换源支持",{"0":{"64":1},"2":{"61":1}}],["镜像文件会被自动解压或符号链接到",{"2":{"59":1}}],["镜像无法下载的问题",{"2":{"55":1}}],["镜像",{"2":{"51":1,"54":2,"63":1,"67":1,"71":1,"74":1,"77":1,"80":1}}],["镜像搭建工具",{"2":{"46":1}}],["镜像信息的维护与下载",{"0":{"43":1},"2":{"46":1}}],["再执行安装",{"2":{"42":1}}],["再到开发应用的效率大幅降低",{"2":{"6":1}}],["即使在同一个指令集标准下",{"2":{"122":1}}],["即首先卸载",{"2":{"42":1}}],["即时检测代码中的语法错误",{"2":{"22":1}}],["同样的这个命令将会询问您以二次确认该操作",{"2":{"42":1}}],["同时优化了命令逻辑",{"2":{"67":1}}],["同时",{"2":{"22":1}}],["your",{"2":{"60":6,"101":8}}],["you",{"2":{"49":1,"53":1,"56":1,"59":1,"60":4,"76":1,"79":1,"101":6}}],["y",{"2":{"42":2,"60":2,"101":3}}],["若出现这样的错误",{"2":{"121":1}}],["若要开启其他扩展",{"2":{"89":1}}],["若您强制中断",{"2":{"41":1}}],["若希望重装一个软件包",{"2":{"38":1}}],["章节介绍",{"2":{"119":1}}],["章节",{"2":{"40":1,"45":1,"115":1}}],["具有",{"2":{"40":1}}],["具体操作参考",{"2":{"114":1}}],["具体的使用可参考ruyi仓库文档",{"2":{"114":1}}],["具体的使用方法可通过help命令获得",{"2":{"110":1}}],["具体可以查看",{"2":{"52":1}}],["具体使用参见",{"2":{"40":1}}],["具体还需要结合技术可行性等进行进一步的调整",{"2":{"18":1}}],["配置环境变量",{"2":{"96":1}}],["配置",{"2":{"40":1,"64":1}}],["已经提前安装了所需的编译工具链",{"2":{"118":1}}],["已经安装了所需的编译工具链",{"2":{"117":1}}],["已经安装的工具链与模拟器需要在",{"2":{"40":1}}],["已经集成的risc",{"2":{"1":1}}],["搭建编译环境",{"0":{"40":1}}],["=1548f6b30560e1ca6f3fa8ba3ef6aea4188feacf",{"2":{"121":1}}],["=d9dbc7115d07d1953087dd2c1e5d46adc2ab0d4f",{"2":{"120":1}}],["=",{"2":{"38":2,"51":2,"54":2,"64":5}}],["==",{"2":{"38":1,"51":2,"54":2}}],["==0",{"2":{"38":1,"122":1}}],[">=",{"2":{"38":1}}],[">",{"2":{"38":1,"64":1,"112":1}}],["`",{"2":{"38":2}}],["上运行",{"2":{"121":1}}],["上运行的程序",{"2":{"86":1}}],["上",{"2":{"92":1}}],["上交叉编译并模拟运行",{"2":{"92":1}}],["上述原因导致了编译工具链版本的多样性",{"2":{"122":1}}],["上述结合使用场景简单的介绍了",{"2":{"119":1}}],["上述操作系统链接参考本文文末的",{"2":{"45":1}}],["上述通过指定软件包名安装的方式默认会安装",{"2":{"38":1}}],["上面的命令只是删除",{"2":{"42":1}}],["上游工具链配置",{"2":{"110":2}}],["上游工具链",{"2":{"38":1}}],["命令返回的数据最新",{"2":{"114":1}}],["命令回显信息显示了文件的架构相关信息",{"2":{"97":1,"106":1}}],["命令将执行一个向导",{"2":{"60":1}}],["命令将默认显示未读新闻条目",{"2":{"59":1}}],["命令刷写镜像失败时",{"2":{"51":1,"54":1,"77":1,"80":1}}],["命令",{"0":{"46":1},"2":{"51":1,"54":1,"60":1,"63":1,"67":1,"71":1,"74":1,"77":1,"80":1,"111":1}}],["命令实现的",{"2":{"40":1}}],["命令下载一个源码包并解包到当前目录",{"2":{"39":1}}],["命令安装软件包",{"2":{"38":1}}],["命令查看",{"2":{"37":1,"108":1}}],["命令应用配置到指定的工具链以建立编译环境",{"2":{"37":1,"108":1}}],["与",{"2":{"40":1,"90":2}}],["与python",{"2":{"37":1,"108":1}}],["与版本控制系统",{"2":{"22":1}}],["列出它们",{"2":{"59":3}}],["列出所有新闻",{"2":{"59":1}}],["列出所有软件包的详细信息",{"2":{"36":1}}],["列出已安装的配置",{"2":{"46":1}}],["列出帮助信息",{"2":{"33":1}}],["则需要静态链接的二进制",{"2":{"121":1}}],["则需利用该选项重新向工具链指定想要开启的扩展",{"2":{"89":1}}],["则只会使用当前普通用户",{"2":{"51":1,"54":1,"77":1,"80":1}}],["则可以加上",{"2":{"38":1}}],["则可以通过指定版本来安装",{"2":{"38":1}}],["则该软件包的当前版本不支持本机架构",{"2":{"36":1}}],["则是一个专门用来开发能够运行在risc",{"2":{"17":1}}],["代表分析工具",{"2":{"36":1}}],["代表开发板镜像",{"2":{"36":1}}],["代表模拟器二进制包",{"2":{"36":1}}],["代表工具链二进制包",{"2":{"36":1}}],["代表软件源码包",{"2":{"36":1}}],["代码冻结日期",{"2":{"30":1}}],["代码冻结日期在发布日期的上一周周四",{"2":{"27":1}}],["代码冻结日~发布日",{"2":{"27":1}}],["代码执行环境管理",{"2":{"22":1}}],["代码分析和优化",{"2":{"22":1}}],["代码片段管理",{"2":{"22":2}}],["代码导航",{"2":{"22":2}}],["代码自动完成",{"2":{"22":1}}],["代码编辑器常见功能详细说明",{"2":{"22":1}}],["代码编辑器",{"2":{"22":1}}],["代码",{"2":{"10":1,"17":1,"20":1}}],["只需下载ruyi工具预构建的二进制文件",{"2":{"114":1}}],["只需要输入对应的序号",{"2":{"101":1}}],["只标记为已读",{"2":{"35":1}}],["只是适用于当前开发语言及目标运行设备的risc",{"2":{"17":1}}],["不创建虚拟环境也可以为",{"2":{"96":1}}],["不支持",{"2":{"90":1}}],["不兼容",{"2":{"90":1}}],["不输出任何东西",{"2":{"35":1}}],["不同的处理器厂商可能对同一个扩展指令集进行了不同程度的定制和优化",{"2":{"122":1}}],["不同的虚拟环境创建如下",{"2":{"110":1}}],["不同linux发行版可能不同",{"2":{"114":1}}],["不同型号的risc",{"2":{"99":1}}],["不同适用环境的软件包的搜索",{"2":{"21":1}}],["不同厂商",{"2":{"21":1}}],["不同版本的编译工具链可以提供针对这些特定应用领域的优化和支持",{"2":{"122":1}}],["不同版本的编译工具链可以支持不同处理器架构的特定指令集",{"2":{"122":1}}],["不同版本的工具链也可能存在细微的差异和改进",{"2":{"122":1}}],["不同版本的软件资源需要进行管理",{"2":{"20":1}}],["不同版本支持的",{"2":{"88":1}}],["不同版本",{"2":{"21":1}}],["\\t",{"2":{"35":1}}],["\\t\\t",{"2":{"35":2}}],["questions",{"2":{"60":1,"101":1}}],["quot",{"2":{"59":2}}],["quiet",{"2":{"35":1}}],["qemu模拟器",{"2":{"122":1}}],["qemu",{"0":{"107":1},"2":{"20":1,"36":2,"40":3,"102":1,"105":3,"107":2,"110":6,"112":19,"117":1,"118":2,"122":3}}],["读取下一条新闻",{"2":{"35":1}}],["查询可用编译环境",{"0":{"37":1}}],["查询可用软件包",{"0":{"36":1}}],["查询包管理器更新内容",{"0":{"35":1}}],["查看如何使用",{"2":{"117":1}}],["查看工具版本",{"2":{"114":1}}],["查看可用的二进制",{"2":{"112":1}}],["查看可用的工具链二进制",{"2":{"111":1}}],["查看可用的软件包",{"2":{"36":1}}],["查看虚拟环境bin目录下已安装的工具链",{"2":{"105":1}}],["查看详细信息",{"2":{"105":1}}],["查看ruyi帮助",{"2":{"104":1}}],["查看rv64可执行程序文件属性信息",{"2":{"97":1,"106":1,"117":1}}],["查看当前虚拟环境下的gcc是否可用",{"2":{"96":1}}],["查看编译环境中得工具",{"2":{"96":1}}],["查看预置编译环境",{"2":{"96":1,"105":1}}],["查看软件仓软件包索引信息",{"2":{"96":1,"105":1}}],["查看",{"2":{"35":1,"46":1}}],["查看变量的值等",{"2":{"22":1}}],["查看最新支持的设备请通过指令ruyi",{"2":{"11":1}}],["~$",{"2":{"96":1}}],["~",{"2":{"34":1,"59":2,"64":3,"114":1,"121":3}}],["注意这整个过程如果在",{"2":{"120":1}}],["注意在虚拟环境创建时",{"2":{"96":1}}],["注意指定的",{"2":{"90":1}}],["注意指定对应的",{"2":{"90":1}}],["注意刷写镜像的操作需要调用",{"2":{"60":1}}],["注意",{"2":{"41":1,"52":1,"69":1,"74":1}}],["注意二进制的文件名必须为",{"2":{"33":1}}],["注意从",{"2":{"32":1}}],["应当可以正常打印版本信息",{"2":{"33":1}}],["应用框架等",{"2":{"16":1}}],["应用设计",{"2":{"11":1}}],["working",{"2":{"120":1}}],["workstation",{"2":{"47":1}}],["warranty",{"2":{"111":1}}],["want",{"2":{"101":1}}],["we",{"2":{"101":1}}],["website",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1}}],["will",{"2":{"60":3,"101":3}}],["wizard",{"2":{"60":3,"101":3}}],["without",{"2":{"110":2}}],["with",{"2":{"51":2,"54":2,"59":1,"60":1,"63":2,"67":2,"71":2,"74":2,"77":2,"80":2,"101":1,"110":2,"120":2,"121":2}}],["wch",{"2":{"51":105,"54":105}}],["where",{"2":{"38":1}}],["www",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"66":1,"69":1,"73":1,"76":1,"79":1}}],["wget",{"2":{"32":2,"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"66":2,"69":1,"73":3,"76":3,"79":3,"95":1}}],["+x",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"66":2,"69":1,"73":3,"76":3,"79":3,"95":1,"104":1}}],["$path",{"2":{"114":1}}],["$xdg",{"2":{"34":1,"59":2,"64":2}}],["$",{"2":{"33":3,"35":6,"38":1,"39":1,"49":6,"53":6,"56":6,"58":4,"59":1,"62":4,"64":1,"66":4,"69":2,"73":6,"76":6,"79":6,"110":7,"111":5,"112":7,"120":9,"121":2}}],["当前支持的其他设备镜像均需要用户手动指定目标刷写设备以执行",{"2":{"60":1}}],["当前",{"2":{"33":1,"45":1}}],["当使用",{"2":{"22":1}}],["作为替代方案",{"2":{"32":1,"70":1}}],["国庆节",{"2":{"30":1}}],["端午节",{"2":{"30":1}}],["劳动节",{"2":{"30":1}}],["937496",{"2":{"121":2}}],["911000",{"2":{"121":1}}],["9",{"0":{"78":1,"79":1},"1":{"79":1,"80":1},"2":{"30":1,"61":1,"63":1,"78":1,"79":4,"80":1,"101":3}}],["跳过一次",{"2":{"30":1}}],["跳转到变量的引用处",{"2":{"22":1}}],["跳转到函数调用等",{"2":{"22":1}}],["跳转到引用处",{"2":{"22":1}}],["春节",{"2":{"30":1}}],["备注",{"2":{"30":1}}],["滚动发行版本号",{"2":{"30":1}}],["服务≥10000名注册开发者",{"2":{"29":1}}],["将下载的文件去掉后缀重命名为",{"2":{"114":1}}],["将其放到path路径下",{"2":{"95":1}}],["将自动调用",{"2":{"63":1,"67":1,"71":1,"74":1}}],["将可以更新支持的板卡列表",{"2":{"63":1}}],["将在命令输出中提示",{"2":{"59":3}}],["将尝试调用",{"2":{"51":1,"54":1,"77":1,"80":1}}],["将根据运行环境",{"2":{"50":1}}],["将增加对openkylin和gentoo的支持",{"2":{"29":1}}],["将完全支持",{"2":{"16":1}}],["完成",{"2":{"93":1,"102":1}}],["完成回归测试用例更新和执行全面回归测试",{"2":{"27":1}}],["完善中",{"2":{"46":1}}],["完善的开发环境",{"2":{"5":1}}],["周五",{"2":{"27":1}}],["周发布一个开发版本",{"2":{"27":1}}],["敏捷开发版本排期",{"0":{"30":1}}],["敏捷开发版本执行敏捷测试方式",{"2":{"27":1}}],["敏捷开发版本计划",{"0":{"27":1}}],["延迟一周发布",{"2":{"27":1,"30":3}}],["发布日期",{"2":{"30":1}}],["发布日期默认每双周周二发布",{"2":{"27":1}}],["发布日~下一次代码冻结日",{"2":{"27":1}}],["发布周期内遇3日以上节假日的",{"2":{"27":1}}],["发布厂商",{"2":{"20":1}}],["切换为更加敏捷的开发迭代模式",{"2":{"27":1}}],["里程碑版本",{"0":{"26":1}}],["里面有各种各样的工具可以帮助你完成这个任务",{"2":{"17":1}}],["推动risc",{"2":{"23":1}}],["推广",{"2":{"23":1}}],["增加开发者的学习和开发效率",{"2":{"23":1}}],["回答问题",{"2":{"23":1}}],["例如打开",{"2":{"89":1}}],["例如用于浮点数乘除法的模拟运算函数",{"2":{"88":1}}],["例如当希望使用其他镜像代替默认的镜像时",{"2":{"64":1}}],["例如",{"2":{"23":1,"122":1}}],["例如在",{"2":{"5":1}}],["鼓励开发者积极参与交流和贡献",{"2":{"23":1}}],["积分和奖励机制",{"2":{"23":1}}],["就业和项目机会",{"2":{"23":1}}],["就像是一个你的工作室",{"2":{"17":1}}],["插件和扩展",{"2":{"23":1}}],["甚至组织在线培训或指导课程",{"2":{"23":1}}],["他们可以提供指导",{"2":{"23":1}}],["他们可以集成其他工具",{"2":{"22":1}}],["专家支持",{"2":{"23":1}}],["专为",{"2":{"11":1}}],["研讨会或会议",{"2":{"23":1}}],["社区可以设立积分和奖励机制",{"2":{"23":1}}],["社区可以提供就业和项目机会的发布平台",{"2":{"23":1}}],["社区可以组织定期的在线活动",{"2":{"23":1}}],["社区可能吸引一些risc",{"2":{"23":1}}],["社区可能提供详细的文档和教程",{"2":{"23":1}}],["活动和会议",{"2":{"23":1}}],["项目模板",{"2":{"23":1}}],["项目管理工具",{"2":{"22":1}}],["问答平台",{"2":{"23":1}}],["博客和文章",{"2":{"23":1}}],["博客和文档等等功能",{"2":{"17":1}}],["促进交流和知识共享",{"2":{"23":1}}],["分别为",{"2":{"88":1}}],["分享文章或贡献代码可以获得积分或奖励",{"2":{"23":1}}],["分享最新的技术趋势",{"2":{"23":1}}],["分享经验",{"2":{"23":1}}],["分为以下三个部分",{"2":{"7":1}}],["让他们在ruyisdk这个中心化的工具中便捷的获取使用和开发所需的支持",{"2":{"122":1}}],["让开发者聚集在一起",{"2":{"23":1}}],["让开发者可以发表问题",{"2":{"23":1}}],["让我们开始吧",{"0":{"13":1},"1":{"14":1},"2":{"4":1}}],["论坛和讨论区",{"2":{"23":1}}],["论坛和技术讨论区",{"2":{"17":1}}],["编译代码",{"2":{"123":1}}],["编译工具链类型",{"2":{"122":1}}],["编译工具链存在实现了不同扩展指令集而形成不同版本实现的现状",{"2":{"122":1}}],["编译工具链的不同扩展指令集实现与选择",{"2":{"115":1}}],["编译工具链的版本选择参考",{"2":{"115":1}}],["编译需要编译的程序源代码",{"2":{"117":1}}],["编译一个简单的",{"2":{"112":1}}],["编译",{"0":{"117":1},"2":{"111":1}}],["编译环境",{"0":{"108":1},"1":{"109":1,"110":1,"111":1,"112":1},"2":{"40":1,"110":4,"112":1,"120":1}}],["编译环境中使用",{"2":{"40":1}}],["编译构建出适用该开发板的可执行程序",{"2":{"22":1}}],["编译构建",{"2":{"17":1}}],["编程技巧",{"2":{"23":1}}],["涵盖risc",{"2":{"23":1}}],["统计功能",{"2":{"23":1}}],["登录等账号有关的管理",{"2":{"23":1}}],["交叉编译coremark",{"0":{"97":1,"106":1}}],["交流需要的一切资源",{"2":{"23":1}}],["交互式解释器和调试器",{"2":{"22":1}}],["宣发",{"2":{"23":1}}],["主要的设备包括开发侧的个人电脑",{"2":{"123":1}}],["主要包含了一个组件管理器",{"2":{"17":1}}],["主页",{"2":{"23":1}}],["高度可定制的功能和良好的扩展性",{"2":{"22":1}}],["高效地开发risc",{"2":{"22":1}}],["高性能计算设备",{"2":{"11":1}}],["高性能嵌入式开发",{"2":{"11":1}}],["总之",{"2":{"22":1}}],["加速开发过程",{"2":{"22":1}}],["加快他们的开发过程",{"2":{"22":1}}],["利用其提供的各种工具和功能",{"2":{"22":1}}],["还提供文档生成工具",{"2":{"22":1}}],["还提供版本控制集成工具",{"2":{"22":1}}],["帮助开发者寻找合适的工作机会或参与感兴趣的项目",{"2":{"23":1}}],["帮助开发者更好地利用集成开发环境进行开发",{"2":{"23":1}}],["帮助开发者快速上手和解决常见问题",{"2":{"23":1}}],["帮助开发者发现潜在的性能问题和错误",{"2":{"22":1}}],["帮助你记录和分享你的代码",{"2":{"22":1}}],["帮助你管理代码的版本",{"2":{"22":1}}],["中配置了其对应参数",{"2":{"89":1}}],["中不同扩展的工具链已经在",{"2":{"89":1}}],["中秋节",{"2":{"30":1}}],["中的性能分析工具",{"2":{"22":1}}],["中有提供相关支持硬件情况",{"2":{"5":1}}],["逐行调试代码",{"2":{"22":1}}],["通常由操作系统提供",{"2":{"123":1}}],["通常用来运行risc",{"2":{"123":1}}],["通常完成目标可执行程序的准备工作",{"2":{"123":1}}],["通常为",{"2":{"34":1}}],["通常提供调试器功能",{"2":{"22":1}}],["通过ruyisdk操作系统安装器工具",{"2":{"99":1}}],["通过",{"2":{"22":1}}],["通过静态分析和语义理解",{"2":{"22":2}}],["设置coremark源码中的编译配置信息",{"2":{"97":1,"106":1,"117":1}}],["设置编译器路径和库路径",{"2":{"22":1}}],["设备上调试应用程序等",{"2":{"10":1}}],["设备专有向导页面",{"2":{"10":1}}],["设备的集成和支持主要包括以下几个方面",{"2":{"10":1}}],["设备安装器",{"2":{"1":1}}],["快速跳转到代码的不同部分",{"2":{"22":1}}],["资源共享",{"2":{"23":1}}],["资源文件和配置文件等",{"2":{"22":1}}],["资源类型",{"2":{"20":1}}],["你可以更高效地开发图像识别应用程序",{"2":{"22":1}}],["你可以将编译好的图像识别应用程序部署到risc",{"2":{"22":1}}],["你可以使用ruyi",{"2":{"22":1}}],["你可以使用代码导航功能",{"2":{"22":1}}],["你可以设置断点",{"2":{"22":1}}],["你可以编写程序",{"2":{"22":1}}],["你可以组织和管理你的代码文件",{"2":{"22":1}}],["你要做一款能够运行在risc",{"2":{"17":1}}],["打开",{"2":{"22":1,"89":1}}],["要求",{"2":{"22":1}}],["性能分析工具",{"2":{"84":1}}],["性能分析和内存分析等功能",{"2":{"22":1}}],["性能",{"2":{"22":1}}],["改动部分界面需要个性化定制",{"2":{"22":1}}],["自带",{"2":{"109":5}}],["自",{"2":{"78":1}}],["自2024年1月开始",{"2":{"27":1}}],["自研发",{"2":{"22":1}}],["自动识别设备",{"2":{"60":1}}],["自动选择显示的语言",{"2":{"50":1}}],["自动弹出变量",{"2":{"22":1}}],["自动生成代码文档或api文档",{"2":{"22":1}}],["自动完成",{"2":{"22":1}}],["定制化",{"2":{"22":1}}],["跨平台兼容性",{"2":{"22":1}}],["能够得到如下步骤所描述的功能支持",{"2":{"22":1}}],["能够流畅地运行在主流的pc设备上",{"2":{"22":1}}],["能够为一个项目同时生成不同的运行环境",{"2":{"22":1}}],["能够支持在线软件源中不同类型",{"2":{"21":1}}],["能够支持工具自身的升级",{"2":{"21":1}}],["可将仓库切换到备用仓库",{"2":{"114":1}}],["可按需对指定程序执行编译操作",{"2":{"111":1}}],["可选",{"2":{"95":1,"104":1}}],["可执行程序",{"0":{"107":1},"2":{"92":2}}],["可在",{"2":{"44":1}}],["可视化的集成开发环境的界面部分",{"2":{"22":1}}],["可扩展性和插件支持",{"2":{"22":1}}],["可以按需在ruyi",{"2":{"114":1}}],["可以看到成功构建",{"2":{"120":1}}],["可以看到",{"2":{"112":1}}],["可以执行如下命令退出编译环境",{"2":{"111":1}}],["可以更高效的利用有限的系统资源",{"2":{"87":1}}],["可以使用",{"2":{"64":1,"115":1,"116":1}}],["可以阅读任意新闻",{"2":{"59":1}}],["可以分享技术经验",{"2":{"23":1}}],["可以自动生成代码文档或api文档",{"2":{"22":1}}],["可以在配置文件中配置",{"2":{"64":1}}],["可以在开发者社区进行技术交流获取帮助",{"2":{"22":1}}],["可以在命令行环境中逐行执行代码",{"2":{"22":1}}],["可以模拟和调试risc",{"2":{"22":1}}],["可以帮助开发者编写和测试自己的程序",{"2":{"17":1}}],["可以对于实际的开发场景对于代码的编写以及调试",{"2":{"9":1}}],["可以走向国际化",{"2":{"5":1}}],["可以通过下载安装最新的",{"2":{"3":1,"125":1}}],["可以通过",{"2":{"1":1,"46":1}}],["很多开发语言都有丰富的第三方库和包管理工具",{"2":{"22":1}}],["来管理依赖和隔离项目环境",{"2":{"22":1}}],["因此如果存在ruyi",{"2":{"114":1}}],["因此",{"2":{"22":1,"122":1}}],["join",{"2":{"120":1,"121":1}}],["jython等",{"2":{"22":1}}],["javascript",{"2":{"22":1}}],["java",{"2":{"22":1}}],["一般通过模拟器工具来模拟运行环境",{"2":{"118":1}}],["一些",{"2":{"89":1}}],["一些厂家提供的镜像在刷写后并不会自动扩展分区来充分利用整块磁盘",{"2":{"51":1,"54":1,"63":1,"67":1,"71":1,"74":1,"77":1,"80":1}}],["一些语言需要在运行时依赖于相应的解释器或语言虚拟机",{"2":{"22":1}}],["一旦你完成了开发和调试",{"2":{"22":1}}],["一个小型的",{"2":{"87":1}}],["一个包管理工具",{"2":{"17":1}}],["一个开发者交流社区需要具备以下功能",{"2":{"23":1}}],["一个开发者交流社区",{"2":{"17":1}}],["一个集成开发环境",{"2":{"17":1}}],["教程",{"2":{"23":1}}],["教程和示例代码的集成",{"2":{"22":1}}],["教程视频",{"2":{"10":1}}],["解答问题",{"2":{"23":1}}],["解释器",{"2":{"22":1}}],["解释器支持",{"2":{"22":1}}],["解析软件包的依赖关系",{"2":{"17":1,"21":1}}],["float",{"2":{"120":1,"121":1}}],["flags",{"2":{"121":1}}],["flashing",{"2":{"60":1,"101":1}}],["flash",{"2":{"60":1,"101":1,"121":1}}],["flashed",{"2":{"60":1,"101":1}}],["flavor",{"2":{"37":2,"108":2}}],["f",{"2":{"90":2}}],["file",{"2":{"117":1,"120":1,"121":1}}],["fitness",{"2":{"111":1}}],["fixed",{"2":{"89":1}}],["fishwaldo",{"2":{"51":1,"54":1,"80":1}}],["f=gcc",{"2":{"89":1}}],["found",{"2":{"121":1}}],["foundation",{"2":{"111":1}}],["following",{"2":{"60":1,"101":4}}],["format",{"2":{"38":1}}],["for",{"2":{"33":2,"36":1,"51":33,"54":34,"60":1,"63":24,"67":21,"71":26,"74":26,"77":28,"80":33,"94":1,"101":5,"110":1,"111":3,"120":2,"121":3,"122":1}}],["fortran",{"2":{"22":1}}],["favor",{"2":{"110":1}}],["false",{"2":{"64":1}}],["fail",{"2":{"60":1,"101":1}}],["fastboot",{"2":{"51":14,"54":14,"60":1,"63":7,"67":7,"71":7,"74":7,"77":10,"80":14}}],["fpga",{"2":{"51":2,"54":2,"80":2}}],["free",{"2":{"111":2}}],["freertos",{"2":{"51":42,"54":42,"74":1,"77":1,"80":4}}],["fresh",{"2":{"110":1}}],["from",{"2":{"33":1,"49":1,"51":1,"53":1,"54":1,"56":1,"76":1,"79":1,"80":1,"110":5}}],["fetch",{"2":{"33":1}}],["fedora38",{"2":{"47":1}}],["fedora",{"2":{"32":1,"45":1}}],["fedora等",{"2":{"21":1,"22":1}}],["潜在的逻辑错误或常见的编码错误",{"2":{"22":1}}],["end=",{"2":{"121":1}}],["environment",{"2":{"22":1,"33":1,"110":4}}],["even",{"2":{"111":1}}],["evb",{"2":{"51":105,"54":105}}],["elfedit",{"2":{"111":1,"112":1}}],["elf",{"2":{"109":1,"120":1,"121":1,"122":1}}],["eabi",{"2":{"90":1}}],["ease",{"2":{"60":1,"101":1}}],["e",{"2":{"90":1,"105":1,"110":3,"112":1,"117":1,"121":1}}],["eof",{"2":{"64":2,"112":2}}],["emulator",{"2":{"36":3,"40":1,"110":6}}],["executable",{"2":{"120":1,"121":1}}],["exe",{"2":{"97":3,"98":1,"106":3,"107":1,"117":2,"118":1,"120":3,"121":7}}],["example",{"2":{"64":1}}],["expr",{"2":{"38":1}}],["extracted",{"2":{"120":1}}],["extracting",{"2":{"120":1}}],["extract",{"2":{"33":3,"39":2,"46":1,"96":1,"105":1,"116":1,"120":1}}],["exit",{"2":{"33":1,"110":1}}],["error",{"2":{"22":1}}],["etc",{"2":{"20":1,"121":1}}],["比较和合并等功能",{"2":{"22":1}}],["比如用c或者c++语言开发一个图像识别的程序",{"2":{"17":1}}],["提权",{"2":{"51":1,"54":1,"63":1,"67":1,"71":1,"74":1,"77":1,"80":1}}],["提高其在社区中的声誉",{"2":{"23":1}}],["提交",{"2":{"22":1}}],["提取变量等",{"2":{"22":1}}],["提取函数",{"2":{"22":1}}],["提供许多标准",{"2":{"86":1}}],["提供调试功能",{"2":{"85":1}}],["提供对不同",{"2":{"83":1}}],["提供对代码版本的管理",{"2":{"22":1}}],["提供多种图形化ide环境",{"2":{"29":1}}],["提供技术支持和资源共享",{"2":{"23":1}}],["提供开发者撰写博客文章的功能",{"2":{"23":1}}],["提供建议等",{"2":{"23":1}}],["提供了部署工具",{"2":{"22":1}}],["提供了大量的相关技术文章",{"2":{"10":1}}],["提供自动完成功能",{"2":{"22":1}}],["提供与risc",{"2":{"22":1}}],["提供代码分析工具",{"2":{"22":1}}],["提供可重用的代码片段库",{"2":{"22":1}}],["提供集成的调试器",{"2":{"22":1}}],["提供一些新功能",{"2":{"27":1}}],["提供一个讨论区或论坛",{"2":{"23":1}}],["提供一个功能强大的代码编辑器",{"2":{"22":1}}],["提供一系列操作",{"2":{"22":1}}],["提供快速导航到代码的不同部分",{"2":{"22":1}}],["提供关于代码中变量",{"2":{"22":2}}],["提供项目管理功能",{"2":{"22":1}}],["提供互助式技术支持和资源共享",{"2":{"17":1}}],["提供更好的环境隔离",{"2":{"117":1}}],["提供更强的计算能力",{"2":{"11":1}}],["提供更强的处理能力",{"2":{"11":1}}],["提供更高的性能和更多的接口",{"2":{"11":1}}],["提供",{"2":{"10":1}}],["提供给开发者使用",{"2":{"10":1}}],["提供risc",{"2":{"0":2}}],["nm",{"2":{"111":2,"112":2}}],["n",{"2":{"60":1,"101":2,"110":1,"112":1}}],["nanhu",{"2":{"109":1,"110":2}}],["nano",{"2":{"51":4,"54":4,"80":4}}],["name",{"2":{"96":1,"105":1,"110":6}}],["navigation",{"2":{"22":1}}],["nvme",{"2":{"51":6,"54":6,"63":6,"67":6,"71":6,"74":6,"77":6,"80":6}}],["no",{"2":{"36":1,"59":2,"111":1}}],["not",{"2":{"33":1,"60":2,"101":2,"110":1,"111":1,"120":1,"121":2}}],["note",{"2":{"27":1,"60":1,"101":1}}],["necessary",{"2":{"60":1,"101":1}}],["needs",{"2":{"37":2,"108":2}}],["newlib",{"0":{"87":1},"2":{"87":1}}],["new",{"2":{"59":3,"110":3}}],["new\\t\\t",{"2":{"35":1}}],["news",{"2":{"35":7,"46":1,"48":1,"50":1,"57":1,"59":18}}],["nezha",{"2":{"1":1,"11":1,"51":2,"54":2,"63":2,"67":2,"71":2,"74":2,"77":2,"80":2,"101":1}}],["返回值等",{"2":{"22":2}}],["类型的",{"2":{"111":1}}],["类似于问答社区",{"2":{"23":1}}],["类等的详细信息",{"2":{"22":2}}],["类名等的建议",{"2":{"22":1}}],["函数和类名的建议",{"2":{"22":1}}],["函数",{"2":{"22":3}}],["根据用户的输入选择镜像",{"2":{"60":1}}],["根据代码中的注释或特定的标记语言",{"2":{"22":1}}],["根据当前上下文",{"2":{"22":2}}],["根据编程语言的语法规则",{"2":{"22":1}}],["语言虚拟机等软件",{"2":{"123":1}}],["语言虚拟机或运行时环境",{"2":{"22":1}}],["语言运行时库",{"2":{"86":1}}],["语言插件",{"2":{"22":1}}],["语言执行环境",{"2":{"16":1}}],["语法高亮",{"2":{"22":1}}],["减少错误",{"2":{"22":2}}],["版本除非指定",{"2":{"111":1}}],["版本以及ruyisdk",{"2":{"88":1}}],["版本的",{"2":{"69":1}}],["版本的稳定二进制为",{"2":{"58":1,"62":1,"66":1}}],["版本中",{"2":{"55":1}}],["版本会忽略",{"2":{"52":1}}],["版本",{"2":{"51":1,"54":1,"55":1,"63":2,"67":2,"71":2,"72":1,"74":2,"77":1,"80":1,"88":2}}],["版本新增特性",{"0":{"48":1,"52":1,"55":1,"57":1,"61":1,"65":1,"68":1,"72":1,"75":1,"78":1},"1":{"49":1,"50":1,"51":1,"53":1,"54":1,"56":1,"58":1,"59":1,"60":1,"62":1,"63":1,"64":1,"66":1,"67":1,"69":1,"70":1,"71":1,"73":1,"74":1,"76":1,"77":1,"79":1,"80":1}}],["版本开始支持矽速",{"2":{"78":1}}],["版本开始新增板卡镜像刷写功能",{"2":{"60":1}}],["版本开始新增新闻功能",{"2":{"59":1}}],["版本开始",{"2":{"32":1,"50":1,"51":1,"54":1,"64":1,"70":1,"75":1,"77":1,"80":1}}],["版本计划",{"0":{"25":1},"1":{"26":1,"27":1}}],["版本规划路线图",{"0":{"24":1},"1":{"25":1,"26":1,"27":1,"28":1,"29":1,"30":1}}],["版本控制集成",{"2":{"22":2}}],["版本信息",{"2":{"20":1}}],["错误检查",{"2":{"22":2}}],["智能感知",{"2":{"22":2}}],["智能家居",{"2":{"6":1}}],["管理依赖和库等",{"2":{"22":1}}],["导入现有项目",{"2":{"22":1}}],["组织和管理他们的risc",{"2":{"22":1}}],["组件管理器包含一个在线软件源",{"2":{"17":1}}],["待定",{"2":{"21":1,"22":1}}],["搜索",{"2":{"21":1}}],["或者任何你习惯的方式将代码下载到本地",{"2":{"116":1}}],["或更高的版本",{"2":{"59":3}}],["或",{"2":{"33":1,"44":1,"64":1,"90":1,"95":1,"104":1,"114":1,"115":1}}],["或工具链",{"2":{"27":1}}],["或目标运行环境",{"2":{"21":1}}],["或图形用户界面",{"2":{"17":1}}],["按照待编译程序自身的编译说明执行",{"2":{"117":1}}],["按照当前系统语言设置",{"2":{"55":1}}],["按照可适用的开发板",{"2":{"21":1}}],["按照可支持的扩展指令集搜索",{"2":{"21":1}}],["按照资源类型搜索",{"2":{"21":1}}],["按照版本搜索",{"2":{"21":1}}],["按照name搜索",{"2":{"21":1}}],["按照引导信息一步步执行即可",{"2":{"3":1,"14":1,"125":1}}],["卸载软件包",{"0":{"41":1}}],["卸载",{"0":{"42":1},"2":{"21":1,"46":1}}],["卸载和管理软件包",{"2":{"21":1}}],["用于处理生成",{"2":{"84":1}}],["用于将高级编程语言",{"2":{"83":1}}],["用于开发和构建",{"2":{"81":1}}],["用于管理工具链",{"2":{"44":1}}],["用于与在线软件源交互",{"2":{"21":2}}],["用户可以更具自己的程序进行调整",{"2":{"89":1}}],["用户可以根据自身硬件和使用场景进行选择",{"2":{"89":1}}],["用户可以根据自身需求调整",{"2":{"89":1}}],["用户运行",{"2":{"75":1}}],["用户注册量等信息进行统计",{"2":{"23":1}}],["用户的注册",{"2":{"23":1}}],["用户无需为环境搭建耗费精力",{"2":{"17":1}}],["用来汇聚关于",{"2":{"23":1}}],["xferd",{"2":{"120":1}}],["xfce",{"2":{"51":10,"54":10,"63":10,"67":9,"71":10,"74":10,"77":10,"80":10,"101":1}}],["xiangshan",{"2":{"109":1,"110":1}}],["x26",{"2":{"96":2,"105":2}}],["xventanacondops",{"2":{"90":2}}],["xcv",{"2":{"90":1}}],["xcvalu",{"2":{"90":1}}],["xcvmac",{"2":{"90":1}}],["xuantie",{"2":{"88":3,"90":1,"122":1}}],["x86",{"2":{"45":3,"49":1,"53":1,"56":1,"76":1,"79":1,"92":1,"103":1,"112":1}}],["xdg",{"2":{"34":1,"52":1,"55":1}}],["x3c",{"2":{"33":1,"38":5,"49":1,"53":1,"56":1,"58":1,"59":2,"62":1,"64":2,"66":1,"69":1,"73":1,"76":1,"79":1,"112":3}}],["xz",{"2":{"32":2}}],["x这种多个版本",{"2":{"20":1}}],["xthead版本工具链",{"2":{"96":1}}],["xtheadvector",{"2":{"90":1}}],["xtheadsync",{"2":{"90":2}}],["xtheadfmemidx",{"2":{"90":2}}],["xtheadfmv",{"2":{"90":2}}],["xtheadmempair",{"2":{"90":2}}],["xtheadmemidx",{"2":{"90":2}}],["xtheadmac",{"2":{"90":2}}],["xtheadint",{"2":{"90":2}}],["xtheadcondmov",{"2":{"90":2}}],["xtheadcmo",{"2":{"90":2}}],["xtheadbs",{"2":{"90":2}}],["xtheadbb",{"2":{"90":2}}],["xtheadba",{"2":{"90":2}}],["xthead",{"2":{"20":1,"36":4,"37":1,"96":4,"108":1,"109":1,"110":4,"112":4,"122":2}}],["每种类型会产生诸如vx",{"2":{"20":1}}],["ucb",{"2":{"120":1,"121":1}}],["util",{"2":{"120":1,"121":1}}],["utils",{"2":{"32":1}}],["uboot",{"2":{"101":1}}],["ubuntu",{"2":{"21":1,"22":1,"32":1,"45":1,"47":1,"51":2,"54":2,"63":1,"71":2,"74":2,"77":2,"80":2,"100":1,"103":1}}],["udev",{"2":{"51":1,"54":1,"77":1,"80":1}}],["unknown",{"2":{"105":1,"106":1,"111":34,"117":1}}],["understand",{"2":{"60":1,"101":1}}],["under",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1}}],["uninstall",{"2":{"42":4,"46":1,"95":1,"104":1}}],["unmatched",{"2":{"1":1,"11":1,"51":7,"54":7,"63":5,"68":1,"71":8,"74":7,"77":7,"80":7,"101":1}}],["usage",{"2":{"110":1}}],["usb",{"2":{"51":2,"54":2}}],["use",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1,"110":4}}],["user模式下执行rv64",{"2":{"118":1}}],["user模式下执行riscv64",{"2":{"107":1}}],["user",{"0":{"107":1},"2":{"36":2,"40":2,"60":1,"101":1,"105":2,"110":2,"112":2,"117":2,"122":2}}],["users",{"2":{"33":1}}],["usr",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"66":2,"69":1,"73":3,"76":3,"79":3,"95":1,"104":1}}],["upload",{"2":{"120":1}}],["update执行报连接错误",{"2":{"114":1}}],["update",{"2":{"33":3,"34":1,"46":1,"59":5,"63":1,"95":1,"114":1}}],["upstream模拟器",{"2":{"117":1}}],["upstream",{"2":{"20":1,"36":6,"38":6,"40":4,"88":2,"90":1,"105":4,"109":4,"110":4,"111":4,"117":3,"122":4}}],["等系列扩展",{"2":{"90":1}}],["等",{"2":{"84":1,"89":1}}],["等属性信息",{"2":{"20":1}}],["等已经大规模硅化的草案",{"2":{"16":1}}],["示例",{"2":{"20":1}}],["库函数的实现",{"2":{"86":1}}],["库文件等",{"2":{"23":1}}],["库",{"2":{"20":1,"87":1}}],["包含三种工具链版本",{"2":{"88":1}}],["包含一些与编译",{"2":{"88":1}}],["包含工具",{"2":{"84":1}}],["包含但不限于openeuler",{"2":{"21":1,"22":1}}],["包版本号>",{"2":{"59":1}}],["包名>",{"2":{"59":1}}],["包括",{"2":{"83":1,"89":1}}],["包括对eclipse和vscode的支持",{"2":{"29":1}}],["包括预定义的模板或用户自定义的代码片段",{"2":{"22":1}}],["包括且不限于ruyi",{"2":{"20":1}}],["包管理工具快速查询和安装",{"2":{"115":1}}],["包管理工具默认的配置目录",{"2":{"114":1}}],["包管理工具的安装非常简单",{"2":{"114":1}}],["包管理工具",{"0":{"114":1}}],["包管理工具负责从在线软件源中获取软件包的信息",{"2":{"17":1,"21":1}}],["包管理在建立编译环境之前会检查该环境是否合法",{"2":{"109":1}}],["包管理是",{"2":{"44":1}}],["包管理时您需要手动进行该操作",{"2":{"42":1}}],["包管理被设计为避免进行需要超级用户权限的操作",{"2":{"42":1}}],["包管理自身的升级可能会需要超级用户权限",{"2":{"42":1}}],["包管理不询问而直接执行",{"2":{"42":2}}],["包管理不再依赖",{"2":{"32":1,"70":1}}],["包管理预置的配置可以使用",{"2":{"37":1,"108":1}}],["包管理支持",{"2":{"33":1}}],["包管理和库支持",{"2":{"22":1}}],["包管理器和工具的使用",{"2":{"119":1}}],["包管理器提供了不同组织发布的不同版本的gnu和llvm编译工具链",{"2":{"115":1}}],["包管理器具有良好的平台兼容性以及多发行版兼容性",{"2":{"45":1}}],["包管理器的问题和需求可以通过仓库issue反馈",{"2":{"44":1}}],["包管理器的过程",{"2":{"42":1}}],["包管理器的更新信息",{"2":{"35":1}}],["包管理器没有实现卸载",{"2":{"41":1}}],["包管理器同时管理一些源码包",{"2":{"39":1}}],["包管理器依赖一些外部工具",{"2":{"32":1}}],["包管理器工具使用",{"2":{"37":1,"108":1}}],["包管理器工具则是用于与在线软件源交互的工具",{"2":{"17":1}}],["包管理器工具并执行以下命令为设备安装系统",{"2":{"3":1,"125":1}}],["包管理器获取",{"2":{"9":1}}],["包管理器",{"0":{"8":1,"19":1,"33":1,"42":1,"44":1},"1":{"20":1,"21":1,"45":1,"46":1,"47":1},"2":{"42":2,"46":1,"64":1,"119":1}}],["包管理器等",{"2":{"5":1}}],["location",{"2":{"121":2}}],["locales",{"2":{"50":1}}],["local",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"59":2,"62":2,"64":1,"66":2,"69":1,"73":3,"76":3,"79":3,"95":1,"96":1,"104":1}}],["lflags",{"2":{"121":1}}],["lrt",{"2":{"120":2}}],["left",{"2":{"120":1}}],["lto",{"2":{"111":1,"112":1}}],["lt",{"2":{"96":1,"105":1}}],["lts",{"2":{"45":1,"47":1}}],["lmul=用于指定一个循环迭代中处理的向量元素的数量",{"2":{"89":1}}],["lp64",{"2":{"89":1,"90":1}}],["lp64e",{"2":{"89":1}}],["lp64d",{"2":{"89":1,"120":1}}],["lpi4a1590",{"2":{"96":1}}],["lpi4a",{"2":{"37":1,"96":1,"101":2,"108":1,"109":1,"110":2,"112":1}}],["ldd",{"2":{"111":1,"112":1}}],["ld",{"2":{"84":1,"111":2,"112":2,"120":1}}],["lz4",{"2":{"78":1}}],["lsb",{"2":{"120":1,"121":1}}],["ls",{"2":{"39":1,"96":2,"97":1,"105":1,"106":1,"111":1,"112":1}}],["llvm工具链",{"2":{"122":1}}],["llvm",{"0":{"91":1},"2":{"36":2,"109":2,"110":3,"122":1}}],["lldb",{"2":{"20":1}}],["latest",{"2":{"36":9,"38":1}}],["linked",{"2":{"120":1,"121":1}}],["link",{"2":{"97":1,"106":1,"117":1,"120":2,"121":2}}],["linux系统皆可",{"2":{"100":1}}],["linux64",{"2":{"97":1,"106":1,"117":1,"120":2,"121":1}}],["linux",{"2":{"49":1,"51":1,"53":1,"54":1,"56":1,"76":1,"79":1,"80":1,"96":1,"97":1,"105":1,"106":1,"111":34,"112":33,"117":1,"120":5,"121":2}}],["lib",{"2":{"120":1}}],["libgcc",{"0":{"88":1}}],["libgit2",{"2":{"55":1}}],["library",{"0":{"86":1}}],["likely",{"2":{"60":1,"101":1}}],["list",{"2":{"33":3,"35":3,"36":3,"37":2,"46":2,"59":5,"96":2,"105":3,"108":2,"114":1,"115":1,"120":1,"121":1}}],["licensed",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1}}],["licenses",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"66":1,"69":1,"73":1,"76":1,"79":1}}],["license",{"2":{"33":2,"49":3,"53":3,"56":3,"58":2,"62":2,"66":2,"69":2,"73":2,"76":3,"79":3}}],["licheerv",{"2":{"51":4,"54":4,"80":4}}],["licheepi",{"2":{"1":1,"11":1,"51":9,"54":9,"60":1,"63":9,"67":9,"71":9,"74":9,"77":9,"80":9,"93":1,"94":1,"101":7}}],["lichee",{"2":{"1":1,"11":1,"51":12,"54":12,"63":2,"67":2,"71":2,"74":2,"77":2,"80":12,"101":1}}],["gz",{"2":{"120":3}}],["g++",{"2":{"111":1,"112":1}}],["gcov",{"2":{"111":3,"112":3}}],["gcc13",{"2":{"121":2}}],["gcc",{"0":{"81":1,"83":1},"1":{"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1},"2":{"81":1,"83":3,"89":2,"96":1,"97":1,"105":1,"106":1,"111":6,"112":5,"117":1,"120":3,"121":1}}],["gfortran",{"2":{"111":1,"112":1}}],["g",{"2":{"97":1,"106":1,"117":1,"120":1,"121":1}}],["gt",{"2":{"96":1,"105":1}}],["glibc",{"0":{"86":1},"2":{"87":1}}],["gprof",{"2":{"84":1,"111":1,"112":1}}],["group=",{"2":{"51":2,"54":2}}],["gnu工具链",{"2":{"122":1}}],["gnu",{"0":{"83":1,"84":1,"85":1,"86":1},"2":{"36":9,"38":6,"40":2,"81":1,"83":2,"88":2,"89":1,"96":4,"97":1,"105":3,"106":1,"109":8,"110":8,"111":37,"112":35,"117":2,"120":4,"121":2,"122":5}}],["gnu和llvm编译工具链",{"2":{"20":1}}],["github",{"2":{"33":1,"44":2,"49":1,"51":1,"53":1,"54":1,"56":1,"64":1,"66":1,"76":1,"79":1,"80":1,"95":2,"104":1,"114":1}}],["git",{"2":{"32":3,"64":2,"68":1,"70":1,"89":2,"116":1}}],["generic",{"2":{"37":1,"40":2,"51":16,"54":17,"63":6,"67":4,"71":6,"74":10,"77":10,"80":14,"105":1,"108":1,"109":4,"110":4,"111":3,"117":1}}],["generate",{"2":{"33":1}}],["generation",{"2":{"22":1}}],["get",{"2":{"32":2,"49":1,"53":1,"56":1,"76":1,"79":1}}],["gdb",{"0":{"85":1},"2":{"20":1,"111":2,"112":2}}],["gui未来可能提供",{"2":{"17":1}}],["gui",{"2":{"8":1,"21":1}}],["供参考",{"2":{"18":1}}],["这种现象是由于处理器架构的发展",{"2":{"122":1}}],["这个操作将从",{"2":{"120":1}}],["这个过程中您可以自主选择是否保留旧的软件包缓存和",{"2":{"42":1}}],["这个命令将会询问您以二次确认该操作",{"2":{"42":1}}],["这个命令使用预置的",{"2":{"40":1}}],["这和",{"2":{"40":1}}],["这里跳过具体事例",{"2":{"111":1}}],["这里列出了经过测试可用的配置组合",{"2":{"109":1}}],["这里未列举所有的情况",{"2":{"92":1}}],["这里提供示例规则仅供参考",{"2":{"51":1,"54":1}}],["这里以coremark为例",{"2":{"117":1}}],["这里以",{"2":{"33":1}}],["这里不同语言存在差异",{"2":{"22":1}}],["这些典型的场景供新用户参考和体验",{"2":{"92":1}}],["这些更新将以",{"2":{"27":1}}],["这些工具从包管理器中获取",{"2":{"22":1}}],["这有助于加快开发速度和提高效率",{"2":{"23":1}}],["这是由",{"2":{"40":1}}],["这是用户维护方持续了解开发者社区活跃程度的一种技术支持手段",{"2":{"23":1}}],["这是一个初步的需求设想",{"2":{"18":1}}],["这可能涉及选择适当的编译选项",{"2":{"22":1}}],["这样可以最大限度地发挥其处理器的性能和功能",{"2":{"122":1}}],["这样可以支持同一个开发环境中同时安装不同的编译工具链版本",{"2":{"117":1}}],["这样的多样性为开发者提供了更多选择",{"2":{"122":1}}],["这样的一个开发者交流社区可以促进risc",{"2":{"23":1}}],["这样的平台可以快速解决开发过程中的疑问和难题",{"2":{"23":1}}],["这样",{"2":{"22":2}}],["这包括静态代码分析",{"2":{"22":1}}],["这包括创建新项目",{"2":{"22":1}}],["这一过程和x86下的开发",{"2":{"17":1}}],["说明",{"2":{"18":1,"114":1,"122":1}}],["模式下运行",{"0":{"107":1}}],["模拟运行",{"0":{"112":1,"118":1},"2":{"123":1}}],["模拟环境",{"2":{"93":1,"102":1}}],["模拟器的命令为",{"2":{"112":1}}],["模拟器的编译环境",{"2":{"40":1}}],["模拟器运行交叉编译的",{"2":{"110":2}}],["模拟器上成功执行的过程",{"2":{"102":1}}],["模拟器配置建立",{"2":{"96":1,"105":1}}],["模拟器",{"2":{"8":1,"17":1,"20":1,"44":1,"105":1,"118":1,"123":1}}],["模拟器等所需的工具",{"2":{"111":1}}],["模拟器等软件和工具都可以从ruyi",{"2":{"17":1}}],["模拟器等工具",{"2":{"17":1}}],["模拟器等",{"2":{"0":1,"10":1}}],["模块介绍",{"0":{"82":1},"1":{"83":1,"84":1,"85":1,"86":1,"87":1,"88":1}}],["模块需求说明",{"0":{"18":1},"1":{"19":1,"20":1,"21":1,"22":1,"23":1}}],["聚集risc",{"2":{"17":1}}],["目标代码格式是elf",{"2":{"122":1}}],["目标上调试他们的程序",{"2":{"85":1}}],["目标文件工具",{"2":{"84":1}}],["目标运行环境的risc",{"2":{"20":1}}],["目录建立",{"2":{"64":1}}],["目录建立包含",{"2":{"40":1}}],["目录下",{"2":{"59":1}}],["目录为",{"2":{"34":1}}],["目的是为risc",{"2":{"17":1}}],["目前ruyisdk已经提供的编译工具链有如下几种",{"2":{"122":1}}],["目前也有一些简单的使用案例供参考",{"2":{"119":1}}],["目前支持的命令如下",{"2":{"46":1}}],["目前经过测试可用的环境有",{"2":{"45":1}}],["目前计划中的里程碑版本有",{"2":{"26":1}}],["目前",{"2":{"11":1,"88":1}}],["目前在",{"2":{"6":1}}],["目前对硬件设备的集成主要体现在包管理器",{"2":{"1":1}}],["也可以使用",{"2":{"111":1}}],["也可通过调试工具进行代码调试",{"2":{"17":1}}],["也称为包管理器",{"2":{"17":1}}],["最佳实践等内容",{"2":{"23":1}}],["最后放入",{"2":{"114":1}}],["最后",{"2":{"22":1}}],["最后在模拟器或者risc",{"2":{"17":1}}],["最终希望",{"2":{"5":1}}],["想象一下",{"2":{"17":1}}],["并可以根据具体需求和目标平台选择适合的编译工具链版本",{"2":{"122":1}}],["并满足不同处理器版本的需求",{"2":{"122":1}}],["并在虚拟环境中配置了qemu模拟器",{"2":{"118":1}}],["并指定编译工具链为gnu",{"2":{"117":1}}],["并使其具有可执行权限",{"2":{"114":1}}],["并使用平头哥",{"2":{"112":1}}],["并且相互不冲突和影响",{"2":{"117":1}}],["并且改变提示符以提示当前进入编译环境中",{"2":{"111":1}}],["并且开始自动执行对应程序为用户自动部署",{"2":{"14":1}}],["并赋予其可执行权限",{"2":{"95":1}}],["并用",{"2":{"59":3}}],["并不会删除软件包缓存和安装的",{"2":{"42":1}}],["并进行远程调试和监视",{"2":{"22":1}}],["并观察变量的值",{"2":{"22":1}}],["并创建一个新的项目或工程",{"2":{"22":1}}],["并行编译能力",{"2":{"22":1}}],["并与其他开发者共享他们的插件",{"2":{"22":1}}],["并提供与其他竞争对手不同的优势",{"2":{"122":1}}],["并提供优化建议",{"2":{"22":1}}],["并提供更好的代码编写和维护体验",{"2":{"22":2}}],["并查看变量的值和内存的状态",{"2":{"22":1}}],["并给出相应的警告或错误提示",{"2":{"22":1}}],["并自动处理依赖关系的下载和安装",{"2":{"17":1,"21":1}}],["安装器",{"2":{"123":1}}],["安装目标程序运行所需的运行时环境",{"2":{"123":1}}],["安装编译工具链",{"0":{"115":1},"2":{"111":1,"112":1}}],["安装虚拟环境中使用的编译工具链",{"2":{"111":1}}],["安装qemu",{"2":{"105":1}}],["安装工具链",{"2":{"105":1}}],["安装操作系统",{"0":{"101":1}}],["安装适用于licheepi",{"2":{"96":1}}],["安装gnu",{"2":{"96":1}}],["安装它们",{"2":{"59":1}}],["安装源码包",{"0":{"39":1}}],["安装软件包",{"0":{"38":1}}],["安装依赖软件",{"0":{"32":1}}],["安装和管理各种python库和依赖项",{"2":{"22":1}}],["安装",{"0":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"66":1,"69":1,"73":1,"76":1,"79":1,"114":1},"2":{"17":1,"21":1}}],["安装教程",{"2":{"10":1}}],["ticks",{"2":{"121":1}}],["time",{"2":{"120":3,"121":1}}],["title",{"2":{"59":2}}],["t",{"2":{"96":1,"105":1,"110":8,"111":2,"112":1,"117":1}}],["test",{"2":{"112":4}}],["testsuite",{"2":{"89":1}}],["testing",{"2":{"33":1,"104":1}}],["txt",{"2":{"59":1,"121":1}}],["tang",{"2":{"51":4,"54":4,"80":4}}],["target",{"2":{"89":1}}],["target系统镜像等内容",{"2":{"17":1}}],["tar",{"2":{"32":2,"120":3}}],["th1520",{"2":{"94":1}}],["that",{"2":{"60":3,"101":3}}],["thread",{"2":{"51":29,"54":29,"80":1}}],["them",{"2":{"59":1}}],["there",{"2":{"59":1,"111":1}}],["the",{"2":{"33":1,"49":3,"53":3,"56":3,"60":4,"76":3,"79":3,"101":12,"110":9,"111":1}}],["then",{"2":{"33":1,"60":1,"101":1}}],["this",{"2":{"33":2,"49":1,"53":1,"56":1,"60":2,"76":1,"79":1,"101":2,"110":1,"111":1}}],["total",{"2":{"120":2,"121":2}}],["toml",{"2":{"64":3,"114":1}}],["tool",{"2":{"111":1,"112":1}}],["toolchain",{"2":{"33":1,"36":5,"40":1,"83":1,"109":1,"110":7}}],["tools",{"2":{"22":1}}],["to",{"2":{"33":2,"60":4,"101":7,"110":5,"120":2}}],["todo",{"2":{"8":1,"91":1,"119":1}}],["集成文档和教程",{"2":{"22":1}}],["集成一个risc",{"2":{"22":1}}],["集成risc",{"2":{"22":1}}],["集成",{"2":{"22":1}}],["集成开发环境来为开发者提供方便",{"2":{"123":1}}],["集成开发环境提供智能感知功能",{"2":{"22":1}}],["集成开发环境会根据编程语言的语法规则",{"2":{"22":1}}],["集成开发环境",{"2":{"17":1}}],["集成多种通信接口",{"2":{"11":1}}],["集中存储了risc",{"2":{"17":1}}],["培育运营一个活跃全面的开发者交流社区",{"2":{"16":1}}],["o2",{"2":{"120":2,"121":4}}],["override",{"2":{"110":1}}],["o",{"2":{"104":1,"112":1,"120":1,"121":2}}],["o3",{"2":{"89":1,"112":1}}],["objcopy",{"2":{"84":1,"111":1,"112":1}}],["objdump",{"2":{"84":1,"111":1,"112":1}}],["onlinedocs",{"2":{"83":1}}],["only",{"2":{"51":71,"54":71,"74":1,"77":1,"80":5}}],["onto",{"2":{"60":1,"101":1}}],["on",{"2":{"49":1,"51":9,"53":1,"54":9,"56":1,"60":2,"63":6,"67":6,"71":6,"74":9,"76":1,"77":9,"79":1,"80":9,"101":3,"121":1}}],["one",{"2":{"38":1,"101":2,"110":1}}],["operation",{"2":{"121":1}}],["openwrt",{"2":{"51":1,"54":1,"63":1,"71":1,"74":1,"77":1,"80":1}}],["openkylin",{"2":{"51":1,"54":1,"71":1,"74":1,"77":1,"80":1}}],["openeuler",{"2":{"10":1,"32":1,"45":2,"47":1,"51":20,"54":20,"63":20,"67":18,"71":20,"74":20,"77":20,"80":20,"94":1,"101":2}}],["op>`",{"2":{"38":1}}],["op>",{"2":{"38":1}}],["options",{"2":{"33":1,"110":1}}],["official",{"2":{"49":1,"51":13,"53":1,"54":13,"56":1,"63":6,"67":4,"71":6,"74":10,"76":1,"77":10,"79":1,"80":13}}],["of",{"2":{"33":2,"36":1,"38":1,"49":4,"53":4,"56":4,"58":2,"62":2,"66":2,"69":2,"73":2,"76":4,"79":4,"110":4}}],["org",{"2":{"33":1,"49":2,"53":2,"56":2,"58":1,"62":1,"66":1,"69":1,"73":1,"76":2,"79":2,"83":1,"84":1,"89":1}}],["or",{"2":{"16":1,"111":1}}],["标准和规范的演进",{"2":{"122":1}}],["标准和规范的演进以及特定应用需求等因素相互作用的结果",{"2":{"122":1}}],["标准",{"2":{"16":1}}],["和运行侧的risc",{"2":{"123":1}}],["和",{"2":{"16":1,"17":1,"51":1,"54":1,"63":1,"67":1,"71":1,"74":1,"77":1,"80":1,"83":1}}],["和物联网应用",{"2":{"11":1}}],["0x5275",{"2":{"121":1}}],["0x8e3a",{"2":{"121":1}}],["0x1fd7",{"2":{"121":1}}],["0xe714",{"2":{"121":1}}],["0xe9f5",{"2":{"121":1}}],["0>",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"66":1,"69":1,"73":1,"76":1,"79":1}}],["05",{"2":{"30":5}}],["07",{"2":{"30":5}}],["09",{"2":{"30":5,"45":2,"47":1}}],["04",{"2":{"30":4,"45":1,"47":1,"100":1,"103":1}}],["08",{"2":{"30":7}}],["03",{"2":{"30":5}}],["02",{"2":{"30":3}}],["01",{"2":{"30":4,"59":8,"120":3}}],["0666",{"2":{"51":2,"54":2}}],["06",{"2":{"26":3,"30":7}}],["0",{"0":{"48":1,"49":1,"52":1,"53":1,"55":1,"56":1,"57":1,"58":1,"61":1,"62":1,"65":1,"66":1,"68":1,"69":1,"72":1,"73":1,"78":1,"79":1},"1":{"49":1,"50":1,"51":1,"53":1,"54":1,"56":1,"58":1,"59":1,"60":1,"62":1,"63":1,"64":1,"66":1,"67":1,"69":1,"70":1,"71":1,"73":1,"74":1,"79":1,"80":1},"2":{"16":2,"32":1,"33":5,"36":18,"38":3,"49":11,"50":2,"51":2,"52":2,"53":11,"54":2,"55":3,"56":11,"58":10,"59":5,"60":2,"62":10,"63":2,"64":2,"66":12,"67":2,"69":6,"70":1,"71":2,"72":1,"73":9,"74":2,"75":2,"76":7,"77":2,"78":1,"79":11,"80":2,"83":1,"90":2,"95":6,"96":1,"104":2,"111":1,"112":1,"120":6,"121":8,"122":1}}],["尤其强调",{"2":{"16":1}}],["计划发布时间",{"2":{"26":6}}],["计划以每半年为一个里程碑版本周期来推动",{"2":{"26":1}}],["计划用三年时间为",{"2":{"15":1,"24":1}}],["计算库",{"2":{"16":1}}],["运行risc",{"0":{"126":1},"2":{"123":1}}],["运行",{"2":{"112":1}}],["运行构建出的",{"2":{"112":1}}],["运行验证",{"0":{"98":1}}],["运行的流程是一致的",{"2":{"17":1}}],["运行时或虚拟机",{"2":{"16":1}}],["运行环境主要是risc",{"2":{"123":1}}],["运行环境",{"2":{"8":1,"17":1,"20":1,"123":1}}],["固件",{"2":{"16":1}}],["都可以通过",{"2":{"16":2}}],["任何一款",{"2":{"16":1}}],["几乎",{"2":{"16":1}}],["年开始筹备",{"2":{"15":1,"24":1}}],["从软件源下载并解压指定的源码包",{"2":{"116":1}}],["从ruyi",{"2":{"95":1,"104":1}}],["从ruyisdk包管理器中下载和安装所需的编译工具链",{"2":{"17":1}}],["从ruyisdk开始使用设备",{"0":{"2":1},"1":{"3":1}}],["从该版本开始",{"2":{"63":1}}],["从本地软件包缓存中列出可用软件包",{"2":{"46":1,"115":1}}],["从配置的软件源更新本地软件包缓存",{"2":{"46":1,"114":1}}],["从中获得有价值的信息",{"2":{"23":1}}],["从",{"2":{"13":1,"15":1,"24":1,"33":1,"50":1,"51":1,"54":1,"59":1,"60":1,"64":1,"66":1,"70":1,"75":1,"77":1,"80":1}}],["适用于嵌入式系统和其他资源受限的环境",{"2":{"87":1}}],["适用于边缘计算",{"2":{"11":1}}],["适用于入门级开发和教育用途",{"2":{"11":1}}],["适合入门和教育",{"2":{"11":1}}],["适合高性能开发和研究",{"2":{"11":1}}],["适合物联网应用",{"2":{"11":1}}],["适合嵌入式应用",{"2":{"11":1}}],["小巧灵活",{"2":{"11":1}}],["average",{"2":{"120":1}}],["available",{"2":{"33":1,"36":1,"60":1,"101":1}}],["about",{"2":{"101":1}}],["abi",{"2":{"90":1,"120":1,"121":1}}],["atom",{"2":{"110":3}}],["at",{"2":{"101":1}}],["attr",{"2":{"51":4,"54":4}}],["along",{"2":{"120":1,"121":1}}],["al",{"2":{"96":1,"97":1,"105":1,"106":1}}],["allow",{"2":{"60":2,"101":2}}],["all",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"60":1,"62":1,"66":1,"69":1,"73":1,"76":1,"79":1,"101":1}}],["allwinner",{"2":{"1":1,"11":1,"51":6,"54":6,"63":6,"67":6,"71":6,"74":6,"77":6,"80":6,"101":1}}],["a=tree",{"2":{"89":1}}],["as",{"2":{"60":3,"84":1,"101":3,"111":1,"112":1}}],["asked",{"2":{"60":1,"101":1}}],["ar",{"2":{"111":2,"112":2}}],["arguments",{"2":{"110":1}}],["arrange",{"2":{"60":1,"101":1}}],["are",{"2":{"59":1,"60":1,"101":3}}],["armbian",{"2":{"54":2,"55":1}}],["arm64",{"2":{"33":1,"49":4,"53":4,"56":4,"73":4,"76":4,"79":4,"114":1}}],["amp",{"2":{"51":3,"54":3,"80":3,"100":1}}],["amd64",{"2":{"33":5,"49":4,"53":4,"56":4,"58":4,"62":4,"66":4,"69":4,"73":4,"76":4,"79":4,"104":1,"114":1}}],["analyzer",{"2":{"36":1}}],["and",{"2":{"33":3,"60":2,"101":3,"110":1,"121":1}}],["add",{"2":{"111":1,"112":1}}],["addr2line",{"2":{"111":1,"112":1}}],["adapted",{"2":{"33":1}}],["admin",{"2":{"33":2,"46":1}}],["a",{"2":{"33":1,"60":2,"90":1,"101":2,"110":2,"111":1}}],["applicable",{"2":{"110":1}}],["apache",{"2":{"33":2,"49":2,"53":2,"56":2,"58":2,"62":2,"66":2,"69":2,"73":2,"76":2,"79":2}}],["apt",{"2":{"32":2}}],["activate",{"2":{"96":1,"105":1,"111":4,"112":2,"117":1,"120":1}}],["account",{"2":{"60":1,"101":1}}],["access",{"2":{"60":2,"101":2}}],["academy",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"66":1,"69":1,"73":1,"76":1,"79":1}}],["ac",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"66":2,"69":1,"73":3,"76":3,"79":3,"104":1,"120":1}}],["autovec",{"2":{"39":1,"89":2}}],["auto",{"2":{"22":1}}],["aarch64",{"2":{"21":1,"22":1}}],["ai",{"2":{"11":2}}],["换而言之提供一个镜像站",{"2":{"10":1}}],["便于开发者获取相关镜像",{"2":{"10":1}}],["便捷的开发环境",{"2":{"5":1}}],["对于有开发经验或者开发目标的开发者而言",{"2":{"116":1}}],["对于不熟悉参数的用户",{"2":{"89":1}}],["对于一些嵌入式risc",{"2":{"87":1}}],["对于部分必须由用户手工下载的文件",{"2":{"55":1}}],["对主页累计访问量",{"2":{"23":1}}],["对你的代码进行着色",{"2":{"22":1}}],["对代码进行着色",{"2":{"22":1}}],["对",{"2":{"10":1,"90":1}}],["使用ruyisdk",{"0":{"123":1}}],["使用ruyi工具部署开发环境",{"0":{"96":1,"105":1}}],["使用编译环境进行",{"0":{"120":1},"1":{"121":1}}],["使用qemu",{"2":{"117":1}}],["使用平头哥",{"2":{"110":1}}],["使用平头哥工具链配置荔枝派",{"2":{"110":1}}],["使用上游",{"2":{"110":1}}],["使用的就是gnu",{"2":{"96":1}}],["使用示例",{"0":{"93":1,"102":1},"1":{"94":1,"95":1,"96":1,"97":1,"98":1,"103":1,"104":1,"105":1,"106":1,"107":1}}],["使用示例请参考",{"2":{"89":1}}],["使用时的两个常用参数",{"2":{"89":1}}],["使用说明",{"0":{"89":1}}],["使用下面的命令卸载",{"2":{"42":1}}],["使用默认镜像即可",{"2":{"34":1}}],["使用",{"2":{"23":1,"38":1,"39":1,"51":1,"54":1,"59":2,"63":1,"67":1,"68":1,"71":1,"74":1,"77":1,"80":1,"89":1,"110":4,"117":1}}],["使用集成开发环境提供的构建工具进行项目的构建",{"2":{"22":1}}],["使用语法高亮功能",{"2":{"22":1}}],["使用包管理器开发者可以获取该工具箱中的编译工具链",{"2":{"9":1}}],["使开发者能够根据自己的需求扩展和定制ide",{"2":{"22":1}}],["使开发者能够在ide中直接执行和调试代码片段",{"2":{"22":1}}],["使开发者能够方便地创建",{"2":{"22":1}}],["使开发者能够编译和构建基于risc",{"2":{"22":1}}],["使开发者能够设置断点",{"2":{"22":1}}],["使开发者能够轻松创建",{"2":{"22":1}}],["使开发者能够搜索",{"2":{"17":1,"21":1}}],["使得开发者从最开始的学习",{"2":{"6":1}}],["使得",{"2":{"5":1}}],["架构的二进制",{"2":{"120":1}}],["架构的一些常见用法",{"2":{"89":1}}],["架构的目标文件",{"2":{"84":1}}],["架构的目标代码",{"2":{"83":1}}],["架构的软件",{"2":{"81":1}}],["架构的",{"2":{"81":1}}],["架构环境安装",{"2":{"49":3,"53":3,"56":3,"58":2,"62":2,"66":2,"69":1,"73":3,"76":3,"79":3}}],["架构环境为例进行安装",{"2":{"33":1}}],["架构编译环境",{"2":{"33":1}}],["架构图中的各种工具等",{"2":{"20":1}}],["架构设计的开发工具箱",{"2":{"9":1}}],["架构示意图",{"0":{"12":1,"17":1},"2":{"4":1}}],["8888",{"2":{"51":1,"54":1}}],["8g",{"2":{"51":10,"54":10,"63":4,"67":4,"71":4,"74":4,"77":6,"80":10,"101":1}}],["8",{"0":{"75":1,"76":1},"1":{"76":1,"77":1},"2":{"8":1,"30":1,"36":1,"55":1,"75":1,"76":4,"77":1,"96":1,"101":1}}],["工具提供了为",{"2":{"101":1}}],["工具并为其赋可执行权限并配置到环境变量中",{"2":{"95":1,"104":1}}],["工具及其所有数据",{"2":{"95":1,"104":1}}],["工具搭建",{"2":{"93":1,"102":1}}],["工具安装到使用",{"2":{"93":1,"102":1}}],["工具新增了新闻支持",{"2":{"59":3}}],["工具刷写镜像前请务必留足磁盘空间",{"2":{"51":1,"54":1,"63":1,"67":1,"71":1,"74":1,"77":1,"80":1}}],["工具刷写镜像时",{"2":{"51":1,"54":1,"77":1,"80":1}}],["工具需要支持x86",{"2":{"21":1}}],["工具",{"2":{"8":1,"17":1,"20":1,"21":1}}],["工具链配置香山南湖编译环境",{"2":{"110":1}}],["工具链配置",{"2":{"110":1}}],["工具链与预置配置组合",{"0":{"109":1}}],["工具链版本",{"2":{"90":1}}],["工具链中各个工具的使用方法请参考其使用说明文档",{"2":{"89":1}}],["工具链侧重于提供稳定的工具链环境",{"2":{"88":1}}],["工具链侧重于使用",{"2":{"88":1}}],["工具链适合面向最新",{"2":{"88":1}}],["工具链是专门用于",{"2":{"81":1}}],["工具链介绍",{"0":{"81":1,"91":1},"1":{"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1}}],["工具链和",{"2":{"40":1}}],["工具链",{"2":{"5":1,"8":1,"16":1,"81":1,"109":1}}],["7654",{"2":{"51":1,"54":1}}],["7",{"0":{"72":1,"73":1},"1":{"73":1,"74":1},"2":{"8":1,"16":1,"30":1,"67":1,"73":4,"74":1,"90":1,"101":3}}],["源码并解包到当前目录",{"2":{"120":1}}],["源码可以直接从",{"2":{"120":1}}],["源码交叉编译并在",{"2":{"102":1}}],["源码本地编译并在",{"2":{"93":1}}],["源码等各种二进制软件包和源码包",{"2":{"44":1}}],["源码",{"2":{"8":1}}],["666",{"2":{"121":1}}],["64架构的个人电脑",{"2":{"123":1}}],["64m",{"2":{"51":3,"54":3,"63":3,"67":3,"71":3,"74":3,"77":3,"80":3}}],["64",{"2":{"45":3,"49":1,"53":1,"56":1,"76":1,"79":1,"83":1,"89":2,"92":2,"100":1,"102":1,"103":1,"112":1,"120":1,"121":1}}],["6",{"0":{"68":1,"69":1},"1":{"69":1,"70":1,"71":1},"2":{"8":1,"30":1,"32":1,"36":1,"69":3,"70":1,"71":1,"72":1,"101":1}}],["5",{"0":{"61":1,"62":1},"1":{"62":1,"63":1,"64":1},"2":{"8":1,"16":1,"30":1,"36":1,"55":1,"62":5,"63":1,"64":1,"68":1,"71":1,"95":3,"101":1}}],["42",{"2":{"121":1}}],["41",{"2":{"84":1}}],["4g",{"2":{"51":2,"54":2,"77":2,"80":2}}],["4",{"0":{"65":1,"66":1},"1":{"66":1,"67":1},"2":{"8":1,"30":1,"66":6,"67":1,"101":1,"120":1,"121":1}}],["4a的编译工具链gnu",{"2":{"96":1}}],["4a开发板",{"2":{"94":1}}],["4a开发板上运行的过程",{"2":{"93":1}}],["4a",{"2":{"1":1,"11":1,"51":19,"54":19,"60":2,"63":9,"67":9,"71":9,"74":9,"77":9,"80":19,"101":7,"110":1,"112":1}}],["391k",{"2":{"120":2}}],["32",{"2":{"83":1,"89":2}}],["38",{"2":{"45":1}}],["30000",{"2":{"121":1}}],["30",{"2":{"30":2}}],["3",{"0":{"57":1,"58":1},"1":{"58":1,"59":1,"60":1},"2":{"8":1,"30":1,"51":1,"54":1,"58":5,"59":4,"60":3,"63":1,"67":1,"71":1,"74":1,"77":1,"80":1,"101":4,"117":1}}],["2k",{"2":{"121":1}}],["29",{"2":{"30":1,"52":1,"54":1}}],["2011",{"2":{"121":2}}],["20",{"2":{"30":4,"78":1,"80":1}}],["20240324",{"2":{"122":1}}],["20240512",{"2":{"104":1}}],["20240222",{"2":{"96":1}}],["2024",{"2":{"30":46,"59":8}}],["2024目标",{"0":{"29":1}}],["2024年12月",{"2":{"26":1}}],["2024年6月",{"2":{"26":1}}],["2025年12月",{"2":{"26":1}}],["2025年6月",{"2":{"26":1}}],["20230125",{"2":{"36":1}}],["20231118",{"2":{"36":6,"38":2}}],["20231114",{"2":{"36":1}}],["20231121",{"2":{"36":3}}],["20231210",{"2":{"45":1,"47":1}}],["20231212",{"2":{"36":6,"110":1,"111":1}}],["20231211",{"2":{"33":5}}],["20231207+g03813c9fe8",{"2":{"36":1}}],["2023年12月",{"2":{"26":1}}],["2023年6月",{"2":{"26":1}}],["2023",{"2":{"15":1,"24":1,"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"66":1,"69":1,"73":1,"76":1,"79":1,"111":1}}],["21",{"2":{"30":2}}],["28",{"2":{"30":1,"48":1,"51":1}}],["22",{"2":{"30":3,"45":1,"47":1,"90":1,"100":1,"103":1}}],["27",{"2":{"30":1}}],["26",{"2":{"30":3}}],["256m",{"2":{"51":3,"54":3,"63":3,"67":3,"71":3,"74":3,"77":3,"80":3}}],["25",{"2":{"26":2,"30":3}}],["24",{"2":{"26":2,"30":4}}],["2345",{"2":{"51":1,"54":1}}],["23",{"2":{"26":2,"30":4,"45":2,"47":1}}],["2",{"2":{"8":1,"16":1,"27":1,"33":4,"36":2,"49":4,"51":1,"53":4,"54":1,"56":4,"58":2,"59":3,"60":1,"62":2,"63":1,"66":2,"67":1,"69":2,"71":1,"73":2,"74":1,"76":4,"77":1,"79":4,"80":1,"83":1,"84":1,"96":1,"101":5,"111":1,"117":1}}],["1为要读取的新闻条目的序号或id",{"2":{"35":1}}],["18",{"2":{"30":1}}],["17",{"2":{"30":1,"36":1}}],["1703147196780",{"2":{"17":1}}],["151",{"2":{"52":1}}],["15",{"2":{"30":2,"59":5,"120":1,"121":1}}],["138k",{"2":{"51":4,"54":4,"80":4}}],["13",{"2":{"30":1,"72":1,"74":1,"83":1,"111":1}}],["11",{"0":{"52":1,"53":1},"1":{"53":1,"54":1},"2":{"30":7,"52":1,"53":4,"54":1,"55":1}}],["14911",{"2":{"121":1}}],["1404k",{"2":{"120":1}}],["1400k",{"2":{"120":1}}],["14",{"2":{"30":2,"59":3,"75":1,"77":1,"121":1}}],["100",{"2":{"120":2}}],["10",{"0":{"48":1,"49":1},"1":{"49":1,"50":1,"51":1},"2":{"30":7,"49":4,"50":1,"51":1,"104":1}}],["192",{"2":{"121":1}}],["19",{"2":{"30":3}}],["168",{"2":{"121":1}}],["16g",{"2":{"51":8,"54":8,"63":4,"67":4,"71":4,"74":4,"77":4,"80":8,"101":5}}],["16",{"2":{"30":3}}],["1234",{"2":{"51":1,"54":1}}],["12",{"0":{"55":1,"56":1},"1":{"56":1},"2":{"26":3,"30":8,"56":4}}],["1",{"0":{"75":1,"76":1},"1":{"76":1,"77":1},"2":{"8":1,"16":1,"35":1,"36":5,"51":1,"54":1,"55":2,"59":3,"60":2,"63":1,"67":1,"71":1,"74":1,"76":4,"77":1,"80":1,"101":7,"117":1,"120":9,"121":5}}],["在运行侧",{"2":{"123":1}}],["在开发侧",{"2":{"123":1}}],["在开发过程中",{"2":{"22":1}}],["在最新的",{"0":{"121":1}}],["在安装完成后最常用的命令一般需要有",{"2":{"114":1}}],["在安装和ide初始设置时都已经被集成到",{"2":{"17":1}}],["在创建虚拟环境之前",{"2":{"111":1}}],["在虚拟环境下编译",{"0":{"111":1}}],["在venv",{"2":{"96":1}}],["在x86",{"2":{"92":1}}],["在编译和运行结束后",{"2":{"118":1}}],["在编译或者运行验证完毕后",{"2":{"111":1}}],["在编译器中开启",{"2":{"89":1}}],["在编写完代码后",{"2":{"22":1}}],["在编写代码的过程中",{"2":{"22":1}}],["在使用",{"2":{"51":1,"54":1,"77":1,"80":1}}],["在使用普通用户调用",{"2":{"51":1,"54":1,"77":1,"80":1}}],["在本文档中家目录为",{"2":{"34":1}}],["在",{"2":{"34":1,"40":1,"49":3,"53":3,"56":3,"58":2,"62":2,"63":1,"66":2,"67":1,"69":1,"71":1,"73":3,"74":1,"76":3,"79":3,"112":1,"121":1}}],["在代码编写过程中",{"2":{"22":1}}],["在该文件中",{"2":{"22":1}}],["在该包管理器中",{"2":{"8":1}}],["在集成开发环境中",{"2":{"22":1}}],["在集成开发环境中增加",{"2":{"10":1}}],["在集成开发环境中增加risc",{"2":{"0":1}}],["在集成开发环境的文本编辑器中",{"2":{"22":1}}],["在项目中",{"2":{"22":1}}],["在输入代码的过程中自动弹出变量",{"2":{"22":1}}],["在线软件源即",{"2":{"17":1}}],["在线上也会有相应的论坛提供给开发者进行技术交流",{"2":{"10":1}}],["在我们的社区当中",{"2":{"10":1}}],["该命令将会返回工具目前所支持的risc",{"2":{"101":1}}],["该命令将列出所有可用的软件包",{"2":{"36":1}}],["该值将被使用",{"2":{"64":2}}],["该文件需要您自行在",{"2":{"64":1}}],["该文件默认存放在",{"2":{"59":1}}],["该目录在",{"2":{"59":1}}],["该指令会识别硬件信息",{"2":{"14":1}}],["该",{"2":{"9":1}}],["该包管理器是一个在线的软件源",{"2":{"8":1}}],["该项目旨在为",{"2":{"5":1}}],["而不是",{"2":{"87":1}}],["而需要用户自行扩展磁盘分区大小",{"2":{"51":1,"54":1,"63":1,"67":1,"71":1,"74":1,"77":1,"80":1}}],["而会导致软件包功能异常时",{"2":{"41":1}}],["而是使用",{"2":{"32":1,"70":1}}],["而",{"2":{"6":1,"42":1}}],["而在过往针对",{"2":{"6":1}}],["而言更具精简性",{"2":{"6":1}}],["操作系统",{"2":{"6":1}}],["iterations",{"2":{"121":2}}],["item",{"2":{"59":1}}],["items",{"2":{"48":1,"50":1,"59":1}}],["ip",{"2":{"121":1}}],["ilinux64",{"2":{"120":1,"121":1}}],["ilp32",{"2":{"89":1,"90":2}}],["ilp32e",{"2":{"89":1}}],["ilp32d",{"2":{"89":1}}],["if",{"2":{"60":1,"101":1,"110":1}}],["id",{"2":{"59":3}}],["idproduct",{"2":{"51":2,"54":2}}],["idvendor",{"2":{"51":2,"54":2}}],["ide中",{"2":{"22":1}}],["ide可以提供对这些工具的集成",{"2":{"22":1}}],["ide可以提供对虚拟环境的支持",{"2":{"22":1}}],["ide可以集成交互式解释器",{"2":{"22":1}}],["ide需要与这些解释器或虚拟机进行集成",{"2":{"22":1}}],["ide",{"0":{"9":1,"22":1},"2":{"9":1,"17":4,"20":1,"22":13}}],["i18n",{"0":{"50":1}}],["issue",{"2":{"52":1}}],["is",{"2":{"38":1,"60":2,"101":2,"111":2}}],["iscas",{"2":{"5":1,"33":3,"44":1,"49":4,"53":4,"56":4,"58":3,"62":3,"66":3,"69":2,"73":4,"76":4,"79":4,"95":1,"104":2,"114":1,"120":1}}],["images",{"2":{"47":1,"59":2,"60":1,"101":1}}],["image",{"2":{"36":1,"101":2}}],["i",{"2":{"33":2,"51":3,"54":3,"80":3,"90":1,"97":1,"106":1,"115":1,"117":1,"120":2,"121":1}}],["info",{"2":{"120":4,"121":1}}],["information",{"2":{"33":2}}],["int",{"2":{"112":1}}],["interpreter",{"2":{"120":1}}],["intended",{"2":{"60":2,"101":2}}],["integration",{"2":{"22":1}}],["intelligent",{"2":{"22":1}}],["inc",{"2":{"111":1}}],["included",{"2":{"110":1}}],["include",{"2":{"110":1,"112":1}}],["inside",{"2":{"110":2}}],["institute",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"66":1,"69":1,"73":1,"76":1,"79":1}}],["installation",{"2":{"33":1}}],["install",{"2":{"32":2,"33":3,"38":5,"41":1,"46":1,"59":1,"60":1,"96":2,"101":2,"105":3,"111":2,"112":1,"115":1}}],["index",{"2":{"64":2,"111":1,"112":1}}],["in",{"2":{"33":1,"38":1,"110":1,"121":1}}],["iot",{"2":{"6":1}}],["开始使用",{"2":{"66":1}}],["开始使用设备",{"2":{"13":1}}],["开始",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1}}],["开始的第一步",{"2":{"14":1}}],["开源使其能够更加方便的运用在不同的领域",{"2":{"6":1}}],["开发环境目前更多的是x86",{"2":{"123":1}}],["开发环境",{"2":{"14":1,"123":1}}],["开发者在进行risc",{"2":{"123":1}}],["开发者往往都有自己的开发需求",{"2":{"116":1}}],["开发者管理",{"2":{"23":1}}],["开发者社区",{"0":{"23":1}}],["开发者交流社区则提供文档和教程",{"2":{"17":1}}],["开发者购买了",{"2":{"16":1}}],["开发者可以共享和下载与risc",{"2":{"23":2}}],["开发者可以发布问题",{"2":{"23":1}}],["开发者可以在ide中方便地查阅文档和学习相关知识",{"2":{"22":1}}],["开发者可以在ide中设置断点",{"2":{"22":1}}],["开发者可以指定任何常用的",{"2":{"16":1}}],["开发者可以使用模拟器或者在",{"2":{"9":1}}],["开发者可以轻松的通过",{"2":{"9":1}}],["开发者提供开发的便捷",{"2":{"5":1}}],["开发者提供一个完整的",{"2":{"15":1,"24":1}}],["开发者提供一个完善",{"2":{"5":1}}],["开发者提供一个便捷",{"2":{"5":1}}],["开发者快速上手",{"2":{"0":1,"10":1}}],["开发者获取指定开发板可用的os并可方便的安装os的安装",{"2":{"0":1}}],["开发资料和相关工具",{"2":{"0":1,"10":1}}],["开发板安装镜像都只需要执行",{"2":{"101":1}}],["开发板安装操作系统的功能",{"2":{"101":1}}],["开发板上本地编译并运行",{"2":{"92":1}}],["开发板上对自身的程序进行编写以及调试",{"2":{"9":1}}],["开发板",{"2":{"51":1,"54":1,"63":1,"67":1,"71":1,"74":1,"77":1,"80":1}}],["开发板系统的安装引导",{"0":{"43":1},"2":{"46":1,"99":1}}],["开发板系统安装引导程序",{"2":{"0":1}}],["开发板或模组",{"2":{"16":1}}],["开发板镜像相关信息以及下载",{"2":{"10":1}}],["开发板对应的演示程序",{"2":{"0":1,"10":1}}],["开发板适用镜像信息维护与下载",{"2":{"0":1}}],["相对路径目录名",{"2":{"111":1}}],["相比",{"2":{"6":1}}],["相关介绍内容",{"2":{"4":1}}],["是第一级别入口",{"2":{"23":1}}],["是第五代精简指令集",{"2":{"6":1}}],["是一个旨在提供给一个一体化集成开发环境的产品计划",{"2":{"15":1,"24":1}}],["是一个为",{"2":{"9":1}}],["是一个由中科院软件所",{"2":{"5":1}}],["为了充分利用这些新的指令集扩展",{"2":{"122":1}}],["为了方便验证risc",{"2":{"118":1}}],["为隔离化编译创建虚拟环境",{"2":{"117":1}}],["为新人用户提供了一些代码示例",{"2":{"116":1}}],["为激活编译环境用的脚本",{"2":{"111":1}}],["为任一型号的",{"2":{"101":1}}],["为各种不同厂家",{"2":{"99":1}}],["为risc",{"0":{"99":1,"125":1},"1":{"100":1,"101":1},"2":{"123":1}}],["为例",{"2":{"93":1,"101":1,"102":1}}],["为",{"2":{"90":1}}],["为方便您及时了解",{"2":{"59":3}}],["为设备安装系统",{"2":{"43":1}}],["为全球的",{"2":{"5":1}}],["为什么会有",{"2":{"4":1}}],["以满足其特定的需求",{"2":{"122":1}}],["以满足不同开发者的需求",{"2":{"22":1}}],["以隔离不同版本的编译工具链及库文件等",{"2":{"117":1}}],["以",{"2":{"101":1}}],["以上",{"2":{"101":1}}],["以开源基准测试程序",{"2":{"93":1,"102":1}}],["以下案例是使用ruyisdk搭建相关的开发或运行环境来实现的",{"2":{"92":1}}],["以下是本文相关内容",{"2":{"4":1}}],["以获得更高的程序性能",{"2":{"89":1}}],["以提供更好的性能",{"2":{"122":1}}],["以提供更高的性能",{"2":{"122":1}}],["以提权",{"2":{"60":1}}],["以提高开发效率",{"2":{"22":1}}],["以支持在",{"2":{"86":1}}],["以支持",{"2":{"55":1}}],["以尝试重试安装该软件包",{"2":{"41":1}}],["以增强开发环境的功能和灵活性",{"2":{"23":1}}],["以增强可读性和代码理解性",{"2":{"22":2}}],["以解决代码中的错误和问题",{"2":{"22":1}}],["以帮助你编写正确的代码",{"2":{"22":1}}],["以帮助开发者更轻松",{"2":{"22":1}}],["以帮助开发者学习和使用risc",{"2":{"22":1}}],["以帮助开发者编写更高效和可靠的risc",{"2":{"22":1}}],["以帮助开发者编写正确的代码",{"2":{"22":1}}],["以帮助开发者改善代码的结构和可维护性",{"2":{"22":1}}],["以进行程序的调试和分析",{"2":{"22":1}}],["以便开发者能够方便地搜索",{"2":{"22":1}}],["以便进行快速的实验和调试",{"2":{"22":1}}],["以便在ide中直接运行和调试python代码",{"2":{"22":1}}],["以便快速插入常用代码块",{"2":{"22":1}}],["以便快速定位和浏览代码",{"2":{"22":2}}],["以便调试和排查代码中的问题",{"2":{"22":1}}],["以加快编码速度和减少拼写错误",{"2":{"22":2}}],["以及不同risc",{"2":{"83":1}}],["以及处理依赖关系",{"2":{"22":1}}],["以及我们会举办一定的线下活动获得来自用户的反馈",{"2":{"10":1}}],["以及建设并运营一个完善的社区以便开发者交流",{"2":{"5":1}}],["成为主流架构",{"2":{"5":1}}],["其它高级语言",{"2":{"126":1}}],["其他均为工具链二进制",{"2":{"111":1}}],["其他开发者可以回答问题或提供解决方案",{"2":{"23":1}}],["其他开发者可以回复和讨论",{"2":{"23":1}}],["其他开发者可以浏览和评论这些文章",{"2":{"23":1}}],["其输入参数可以参考",{"2":{"89":1}}],["其默认参数在",{"2":{"89":2}}],["其中",{"2":{"36":1}}],["其中涵盖多种操作系统",{"2":{"10":1}}],["其最终目标是希望为",{"2":{"5":1}}],["其提供了相关最新的硬件信息",{"2":{"5":1}}],["如java程序",{"2":{"126":1}}],["如安装编译工具链",{"2":{"123":1}}],["如编译器",{"2":{"81":1}}],["如编译工具链有不同厂商发布的",{"2":{"20":1}}],["如包管理器能力迭代",{"2":{"27":1}}],["如代码示例",{"2":{"23":1}}],["如果无可自己创建",{"2":{"114":1}}],["如果软件源中有新增的新闻条目",{"2":{"59":3}}],["如果软件包显示",{"2":{"36":1}}],["如果您使用",{"2":{"59":3}}],["如果在意这个问题请跳过这个版本",{"2":{"52":1}}],["如果希望删除所有缓存和安装了的软件包以实现干净的卸载",{"2":{"42":1}}],["如果希望",{"2":{"42":2}}],["如果想安装某个历史版本的gnu",{"2":{"38":1}}],["如果遇到技术问题",{"2":{"22":1}}],["如果需要提高图像识别程序的性能",{"2":{"22":1}}],["如果代码需要调试",{"2":{"17":1}}],["如跳转到函数的定义处",{"2":{"22":1}}],["如跳转到定义处",{"2":{"22":1}}],["如图像识别算法的逻辑和实现",{"2":{"22":1}}],["如python是pip",{"2":{"22":1}}],["如python具有交互式解释器",{"2":{"22":1}}],["如python开发中通常会使用虚拟环境",{"2":{"22":1}}],["如python需要在运行时依赖于相应的解释器或语言虚拟机",{"2":{"22":1}}],["如cpython",{"2":{"22":1}}],["如git",{"2":{"22":1}}],["如gnu和llvm目前有三种类型",{"2":{"20":1}}],["如重命名",{"2":{"22":1}}],["如类型",{"2":{"22":2}}],["如基于",{"2":{"10":1}}],["如",{"2":{"5":1,"38":1,"83":1}}],["软件仓库中下载",{"2":{"120":1}}],["软件环境",{"2":{"94":1,"103":1}}],["软件包",{"2":{"42":2,"64":1}}],["软件包安装进程或做了其他非预期操作",{"2":{"41":1}}],["软件包的功能",{"2":{"41":1}}],["软件包前缀表示分类",{"2":{"36":1}}],["软件包缓存将存放在用户目录中",{"2":{"34":1}}],["软件下载次数",{"2":{"23":1}}],["软件源中下载",{"2":{"120":1}}],["软件源下载编译",{"2":{"116":1}}],["软件源内包的元数据包含并不限于",{"2":{"20":1}}],["软件源的管理内容包括以下内容",{"2":{"20":1}}],["软件更新",{"2":{"16":1}}],["软件开发等领域都有应用",{"2":{"6":1}}],["软件层面提供了镜像",{"2":{"5":1}}],["软件支持",{"2":{"5":1}}],["所启动的开源项目",{"2":{"5":1}}],["我们建议创建虚拟环境并在虚拟环境中进行编译操作",{"2":{"117":1}}],["我们为",{"2":{"59":3}}],["我们希望",{"2":{"22":1}}],["我们提供了如下内容",{"2":{"8":1}}],["我该从何开始",{"2":{"4":1}}],["我可以在什么设备上运行",{"2":{"4":1}}],["的裸机工具链",{"2":{"122":1}}],["的更多命令和命令具体使用方法详见",{"2":{"119":1}}],["的操作参考如下",{"2":{"112":1}}],["的编译",{"2":{"93":1,"102":1}}],["的向量化特性",{"2":{"89":1}}],["的各个扩展与新特性",{"2":{"88":1}}],["的源代码翻译成",{"2":{"83":1}}],["的核心组件之一",{"2":{"83":1}}],["的依赖",{"2":{"68":1}}],["的位置",{"2":{"59":1}}],["的开发动态",{"2":{"59":3}}],["的开发面临的问题在于相关资讯没有统一的平台",{"2":{"6":1}}],["的虚拟环境十分类似",{"2":{"40":1}}],["的虚拟环境类似",{"2":{"37":1,"108":1}}],["的方式公开",{"2":{"27":1}}],["的不断完善",{"2":{"26":1}}],["的支持",{"2":{"22":1,"59":4}}],["的特性",{"2":{"22":1}}],["的组成",{"2":{"17":1}}],["的目标",{"0":{"16":1}}],["的",{"2":{"10":1,"38":1,"54":1,"55":1,"121":1}}],["的出现就是为了解决这些问题",{"2":{"6":1}}],["的原理是什么",{"2":{"4":1}}],["的信息维护和下载",{"2":{"0":1,"10":1}}],["功能持续更新中",{"2":{"46":1}}],["功能与上述cli接口类似",{"2":{"21":1}}],["功能",{"0":{"7":1},"1":{"8":1,"9":1,"10":1},"2":{"4":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":2}}],["背景",{"0":{"6":1},"2":{"4":1}}],["介绍",{"0":{"5":1,"15":1},"2":{"4":1}}],["什么是",{"2":{"4":1}}],["欢迎来到",{"2":{"4":1}}],["h>",{"2":{"112":1}}],["have",{"2":{"101":1}}],["hand",{"2":{"101":1}}],["hardware",{"2":{"101":1}}],["has",{"2":{"101":1}}],["heap",{"2":{"121":2}}],["headless",{"2":{"51":2,"54":2,"63":2,"67":2,"71":2,"74":2,"77":2,"80":2,"101":1}}],["here",{"2":{"121":1}}],["help",{"2":{"33":3,"60":2,"101":2,"104":1,"105":1,"110":2}}],["hello",{"0":{"4":1},"2":{"112":2}}],["host",{"2":{"36":1,"60":1,"101":1}}],["home",{"2":{"34":3,"52":1,"55":1,"59":2,"64":2,"96":1,"120":1}}],["h",{"2":{"33":1,"35":2,"46":1,"96":1,"110":3,"117":1}}],["https",{"2":{"33":2,"44":1,"49":6,"51":1,"53":6,"54":1,"56":6,"58":3,"62":3,"64":2,"66":3,"69":2,"73":4,"76":6,"79":6,"80":1,"83":1,"84":1,"89":1,"95":1,"104":1,"120":1}}],["highlighting",{"2":{"22":1}}],["hifive",{"2":{"1":1,"11":1,"51":7,"54":7,"63":5,"68":1,"71":8,"74":7,"77":7,"80":7,"101":1}}],["bit",{"2":{"120":1,"121":1}}],["binaries",{"2":{"96":1}}],["binary",{"2":{"36":1}}],["binutils",{"0":{"84":1},"2":{"84":1}}],["bin",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"66":2,"69":1,"73":3,"76":3,"79":3,"95":1,"96":3,"104":1,"105":2,"111":3,"112":2,"117":1,"120":1}}],["bfd",{"2":{"111":1,"112":1}}],["bgcc",{"2":{"97":1,"106":1,"117":1,"120":1}}],["b",{"2":{"89":1,"97":1,"106":1,"117":1,"120":1}}],["branch",{"2":{"64":1}}],["by",{"2":{"60":1,"101":2}}],["buildid",{"2":{"120":1,"121":1}}],["buildroot",{"2":{"51":8,"54":8,"63":4,"67":4,"71":4,"74":6,"77":6,"80":8}}],["but",{"2":{"60":1,"101":1}}],["blobs",{"2":{"59":1}}],["beforehand",{"2":{"60":1,"101":1}}],["be",{"2":{"38":1,"60":2,"101":2}}],["beta",{"2":{"33":2,"104":1}}],["base",{"2":{"51":8,"54":8,"63":8,"67":7,"71":8,"74":8,"77":8,"80":8}}],["bashriscv64",{"2":{"105":1}}],["bashruyi",{"2":{"57":1,"65":1,"95":3,"96":3,"101":1,"104":3,"105":6,"107":2}}],["bashls",{"2":{"105":1}}],["bashwget",{"2":{"104":1}}],["bashfile",{"2":{"97":1,"106":1}}],["bashmake",{"2":{"97":1,"106":1}}],["bashmkdir",{"2":{"96":1,"105":1}}],["bashsed",{"2":{"97":1,"106":1}}],["bash",{"2":{"46":1,"95":1,"96":1,"98":1,"110":1,"111":2,"112":2,"114":1,"115":1,"116":1,"117":1,"118":1,"120":4,"121":3}}],["bash$",{"2":{"3":1,"14":1,"32":2,"33":2,"34":1,"35":1,"36":2,"37":1,"38":3,"39":1,"40":1,"42":4,"43":1,"49":4,"53":4,"56":4,"58":3,"59":4,"60":1,"62":3,"64":1,"66":3,"69":2,"73":4,"76":4,"79":4,"108":1,"110":1,"111":5,"112":4,"120":1,"121":1,"125":1}}],["baremetal",{"2":{"37":1,"108":1,"109":1}}],["board",{"2":{"36":1,"59":2,"101":2}}],["box",{"2":{"1":1,"11":1,"51":4,"54":4,"60":1,"63":4,"67":4,"71":4,"74":4,"77":4,"80":4,"101":1}}],["bzip2",{"2":{"32":2}}],["performance",{"2":{"121":1}}],["performed",{"2":{"120":1,"121":1}}],["positional",{"2":{"110":1}}],["port",{"2":{"97":1,"106":1,"117":1,"120":1,"121":1}}],["portme",{"2":{"97":1,"106":1,"117":1,"120":2,"121":1}}],["pc上实现从",{"2":{"102":1}}],["pc",{"2":{"100":1}}],["pc+linux",{"2":{"92":1}}],["p=gcc",{"2":{"89":1}}],["pick",{"2":{"60":1,"101":2}}],["pine64",{"2":{"54":4,"55":1}}],["pioneer",{"2":{"1":1,"11":1,"51":11,"54":11,"60":1,"63":11,"67":11,"71":11,"74":11,"77":11,"80":11,"101":1}}],["please",{"2":{"60":1,"101":3,"121":1}}],["pleasure",{"2":{"60":1,"101":1}}],["plugdev",{"2":{"51":2,"54":2}}],["platformio",{"2":{"51":4,"54":4}}],["plctxthead",{"2":{"96":1,"97":1,"112":33}}],["plct",{"2":{"20":1,"36":6,"96":5,"109":6,"110":7,"112":2,"120":3,"121":1,"122":4}}],["purpose",{"2":{"111":1}}],["purge",{"2":{"42":2,"95":1,"104":1}}],["putchar",{"2":{"112":1}}],["put",{"2":{"101":1,"121":1}}],["public",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1}}],["particular",{"2":{"111":1}}],["param=riscv",{"2":{"89":2}}],["parameters",{"2":{"121":1}}],["parameter",{"2":{"38":1}}],["path",{"2":{"64":1,"110":1}}],["packages",{"2":{"33":2,"36":1,"60":1,"64":3,"101":2}}],["package",{"2":{"33":3,"96":1,"105":1,"110":3,"120":2}}],["preference=用于告知编译器输入向量的长度",{"2":{"89":1}}],["prereleases",{"2":{"64":1}}],["prerelease",{"2":{"36":2}}],["pre",{"2":{"36":1,"64":1}}],["proceed",{"2":{"101":1}}],["pro",{"2":{"51":4,"54":4,"80":4}}],["project",{"2":{"49":2,"53":2,"56":2,"76":2,"79":2}}],["profiles",{"2":{"37":2,"46":1,"90":1,"96":1,"105":1,"108":2}}],["profile",{"2":{"33":1,"109":1,"110":3,"111":1}}],["provisioning",{"2":{"60":1,"101":1}}],["provision查询",{"2":{"11":1}}],["provision",{"2":{"3":1,"14":1,"43":1,"60":2,"101":1,"110":1,"125":1}}],["provision命令查询",{"2":{"1":1}}],["printf",{"2":{"112":1}}],["print",{"2":{"33":2}}],["pygit2",{"2":{"32":1,"55":1,"68":1,"70":1}}],["python等",{"2":{"126":1}}],["python",{"2":{"22":1,"40":1,"49":1,"51":2,"53":1,"54":2,"56":1,"63":2,"67":2,"71":2,"74":2,"76":1,"77":2,"79":1,"80":2,"111":1}}],["png",{"2":{"17":1}}],["c程序",{"2":{"126":1}}],["crcfinal",{"2":{"121":1}}],["crcstate",{"2":{"121":1}}],["crcmatrix",{"2":{"121":1}}],["crclist",{"2":{"121":1}}],["cc",{"2":{"111":1,"112":1}}],["cd",{"2":{"95":1,"96":1,"105":1,"112":1,"120":1}}],["cluster",{"2":{"51":5,"54":5,"80":5}}],["cli",{"2":{"21":1}}],["certifi",{"2":{"49":3,"53":3,"56":3,"76":3,"79":3}}],["cat",{"2":{"64":1,"112":1}}],["card",{"2":{"51":3,"54":3,"74":3,"77":3,"80":3}}],["canmv",{"2":{"51":2,"54":2,"63":2,"71":2,"74":2,"77":2,"80":2}}],["can",{"2":{"49":1,"53":1,"56":1,"59":1,"76":1,"79":1}}],["canaan",{"2":{"1":1,"11":1,"51":7,"54":7,"63":4,"71":4,"74":4,"77":4,"80":7,"101":1}}],["cache",{"2":{"34":3,"64":1,"120":1}}],["currently",{"2":{"60":1,"101":1}}],["current",{"2":{"33":1,"36":1,"120":2}}],["c",{"0":{"86":1},"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"66":1,"69":1,"73":1,"76":1,"79":1,"83":1,"86":2,"87":1,"90":1,"111":1,"112":3,"120":6,"121":6}}],["cpp",{"2":{"111":1,"112":1}}],["cpu",{"2":{"88":1}}],["cp",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"66":2,"69":1,"73":3,"76":3,"79":3,"95":1}}],["cn",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"66":2,"69":1,"73":3,"76":3,"79":3,"104":1,"120":1}}],["choose",{"2":{"101":1}}],["choice",{"2":{"60":1,"101":4}}],["chosen",{"2":{"33":1,"101":1}}],["ch592x",{"2":{"51":4,"54":4}}],["ch582f",{"2":{"51":4,"54":4}}],["ch32v307vct6",{"2":{"51":1,"54":1}}],["ch32v307wcu6",{"2":{"51":1,"54":1}}],["ch32v307rct6",{"2":{"51":1,"54":1}}],["ch32v307",{"2":{"51":10,"54":10}}],["ch32v305rbt6",{"2":{"51":1,"54":1}}],["ch32v305gbu6",{"2":{"51":1,"54":1}}],["ch32v305fbp6",{"2":{"51":1,"54":1}}],["ch32v305",{"2":{"51":10,"54":10}}],["ch32v303vct6",{"2":{"51":1,"54":1}}],["ch32v303rct6",{"2":{"51":1,"54":1}}],["ch32v303rbt6",{"2":{"51":1,"54":1}}],["ch32v303cbt6",{"2":{"51":1,"54":1}}],["ch32v303",{"2":{"51":13,"54":13}}],["ch32v208wbu6",{"2":{"51":1,"54":1}}],["ch32v208rbt6",{"2":{"51":1,"54":1}}],["ch32v208gbu6",{"2":{"51":1,"54":1}}],["ch32v208cbu6",{"2":{"51":1,"54":1}}],["ch32v208",{"2":{"51":13,"54":13}}],["ch32v203rbt6",{"2":{"51":1,"54":1}}],["ch32v203k8t6",{"2":{"51":1,"54":1}}],["ch32v203k6t6",{"2":{"51":1,"54":1}}],["ch32v203g8r6",{"2":{"51":1,"54":1}}],["ch32v203g6u6",{"2":{"51":1,"54":1}}],["ch32v203f8u6",{"2":{"51":1,"54":1}}],["ch32v203f8p6",{"2":{"51":1,"54":1}}],["ch32v203f6p6",{"2":{"51":1,"54":1}}],["ch32v203c8u6",{"2":{"51":1,"54":1}}],["ch32v203c8t6",{"2":{"51":1,"54":1}}],["ch32v203c6t6",{"2":{"51":1,"54":1}}],["ch32v203",{"2":{"51":34,"54":34}}],["ch32v103r8t6",{"2":{"51":1,"54":1}}],["ch32v103c8u6",{"2":{"51":1,"54":1}}],["ch32v103c8t6",{"2":{"51":1,"54":1}}],["ch32v103c6t6",{"2":{"51":1,"54":1}}],["ch32v103",{"2":{"51":17,"54":17}}],["chinese",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"66":1,"69":1,"73":1,"76":1,"79":1}}],["chisel等不同的语言类型",{"2":{"22":1}}],["chmod",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"66":2,"69":1,"73":3,"76":3,"79":3,"95":1,"104":1}}],["checking",{"2":{"22":1}}],["c++filt",{"2":{"111":1,"112":1}}],["c++源代码文件",{"2":{"22":1}}],["c++",{"2":{"22":1,"83":1,"111":1,"112":1}}],["copying",{"2":{"111":1}}],["copyright",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"66":1,"69":1,"73":1,"76":1,"79":1,"111":1}}],["correct",{"2":{"121":1}}],["corresponding",{"2":{"101":1}}],["core",{"2":{"97":1,"106":1,"117":1,"120":7,"121":6}}],["coremark可执行程序",{"2":{"98":1,"107":1,"118":1}}],["coremark",{"0":{"107":1,"120":1},"1":{"121":1},"2":{"36":1,"93":2,"96":3,"97":1,"98":1,"102":2,"105":3,"106":1,"107":1,"117":1,"118":1,"120":15,"121":11}}],["collection",{"0":{"83":1}}],["conditions",{"2":{"111":1}}],["conda等",{"2":{"22":1}}],["config",{"2":{"64":6,"114":2}}],["configurations",{"2":{"101":1}}],["configuration",{"2":{"60":2,"101":2}}],["configured",{"2":{"33":2}}],["continue",{"2":{"60":1,"101":1}}],["control",{"2":{"22":1}}],["console",{"2":{"51":5,"54":5,"80":5}}],["code",{"2":{"22":3,"49":1,"53":1,"56":1,"76":1,"79":1,"121":1}}],["compile",{"2":{"120":1,"121":1}}],["compiler",{"0":{"83":1},"2":{"121":2}}],["completion",{"2":{"22":1}}],["commands",{"2":{"60":1,"101":1}}],["community",{"0":{"10":1}}],["com",{"2":{"44":1,"49":1,"51":1,"53":1,"54":1,"56":1,"64":1,"76":1,"79":1,"80":1,"95":1}}],["cisc",{"2":{"6":1}}],["cm",{"2":{"1":1,"11":1,"51":3,"54":3,"74":3,"77":3,"80":3}}],["m",{"2":{"90":1}}],["m8",{"2":{"89":1}}],["m4",{"2":{"89":1}}],["m2",{"2":{"89":1}}],["m1",{"2":{"89":1}}],["mkdir",{"2":{"64":1,"120":1}}],["most",{"2":{"60":1,"101":1}}],["mode=",{"2":{"51":2,"54":2}}],["mozilla",{"2":{"49":2,"53":2,"56":2,"76":2,"79":2}}],["mpl",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1}}],["md",{"2":{"39":1}}],["myon",{"2":{"34":1,"120":1}}],["memory",{"2":{"121":2}}],["merchantability",{"2":{"111":1}}],["mega",{"2":{"51":4,"54":4,"80":4}}],["message",{"2":{"33":1,"110":1}}],["meles",{"2":{"1":1,"11":1,"51":5,"54":5,"75":1,"77":5,"80":5}}],["mirror",{"2":{"33":1,"49":3,"53":3,"56":3,"58":2,"62":2,"66":2,"69":1,"73":3,"76":3,"79":3,"104":1,"120":1}}],["milkv",{"0":{"121":1},"2":{"37":1,"74":1,"75":1,"108":1,"109":1,"110":3,"120":10,"121":7}}],["milk",{"2":{"1":7,"11":7,"51":35,"54":35,"60":2,"63":18,"67":18,"71":18,"74":30,"77":35,"80":35,"101":2}}],["matrix",{"2":{"120":1,"121":1}}],["match",{"2":{"38":1}}],["mak",{"2":{"97":1,"106":1,"117":1,"120":1}}],["make",{"2":{"60":1,"101":1,"117":1,"120":1,"121":1}}],["makes",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1}}],["mabi",{"2":{"89":1}}],["march=rv64gc",{"2":{"89":1}}],["march=rv64gcv",{"2":{"89":1}}],["march",{"2":{"89":3}}],["mars",{"2":{"1":2,"11":2,"51":6,"54":6,"74":6,"77":6,"80":6}}],["main",{"2":{"64":1,"112":1,"120":1,"121":1}}],["maix",{"2":{"51":3,"54":3,"80":3}}],["managing",{"2":{"33":1}}],["manage",{"2":{"33":1}}],["manager",{"2":{"33":1}}],["management",{"2":{"22":1}}],["svnapot",{"2":{"90":1}}],["svinval",{"2":{"90":1}}],["spent",{"2":{"120":1}}],["speed",{"2":{"120":2}}],["specifier",{"2":{"110":3}}],["spec",{"2":{"89":1}}],["spike",{"2":{"20":1}}],["scp",{"2":{"121":1}}],["scalable输入",{"2":{"89":1}}],["sciences",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"66":1,"69":1,"73":1,"76":1,"79":1}}],["str=",{"2":{"120":1,"121":1}}],["stripped",{"2":{"120":1,"121":1}}],["strip",{"2":{"111":1,"112":1}}],["strings",{"2":{"111":1,"112":1}}],["stdio",{"2":{"112":1}}],["storage",{"2":{"60":1,"101":1}}],["statically",{"2":{"121":1}}],["static",{"2":{"121":5}}],["state",{"2":{"52":1,"55":1,"59":3,"120":1,"121":1}}],["star64",{"2":{"54":4,"55":1}}],["starfive",{"2":{"1":2,"11":2,"51":8,"54":8,"63":8,"67":8,"71":8,"74":8,"77":8,"80":8,"101":2}}],["sh",{"2":{"121":1}}],["sha1",{"2":{"120":1,"121":1}}],["share",{"2":{"59":1,"96":1}}],["should",{"2":{"38":1,"60":2,"101":2}}],["show",{"2":{"33":1,"110":1}}],["sd",{"2":{"51":3,"54":3,"74":3,"77":3,"80":3}}],["sdk",{"2":{"51":81,"54":81,"63":6,"67":4,"71":6,"74":10,"77":10,"80":15}}],["slug",{"2":{"36":7}}],["so",{"2":{"60":1,"101":1,"120":1}}],["somehow",{"2":{"60":1,"101":1}}],["some",{"2":{"60":1,"101":1}}],["sourceware",{"2":{"84":1}}],["sources",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1,"111":1}}],["source",{"2":{"36":3,"111":3}}],["software",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"66":1,"69":1,"73":1,"76":1,"79":1,"111":2}}],["sec",{"2":{"121":1}}],["secs",{"2":{"121":1}}],["sed",{"2":{"117":1,"120":1}}],["seedcrc",{"2":{"121":1}}],["see",{"2":{"111":1,"121":1}}],["server",{"2":{"51":1,"54":1,"71":1,"74":1,"77":1,"80":1}}],["self",{"2":{"33":2,"42":4,"46":1,"95":1,"104":1}}],["sense",{"2":{"22":1}}],["such",{"2":{"60":1,"101":1}}],["subsystem==",{"2":{"51":2,"54":2}}],["subcommands",{"2":{"33":2}}],["sudo",{"2":{"32":2,"33":1,"49":3,"51":1,"53":3,"54":1,"56":3,"58":2,"60":3,"62":2,"63":1,"66":2,"67":1,"69":1,"71":1,"73":3,"74":1,"76":3,"77":1,"79":3,"80":1,"95":2,"101":2,"104":1}}],["supported",{"2":{"60":1,"101":2}}],["support",{"2":{"22":1}}],["sail",{"2":{"22":1}}],["snippet",{"2":{"22":1}}],["sysv",{"2":{"120":1,"121":1}}],["system",{"2":{"51":8,"54":8,"60":2,"63":8,"67":7,"71":8,"74":8,"77":8,"80":8,"101":3,"122":1}}],["sysroot为generic类型",{"2":{"117":1}}],["sysroot",{"2":{"20":1,"109":1,"110":12}}],["syntax",{"2":{"22":1}}],["size",{"2":{"111":1,"112":1,"121":1}}],["sipeed这个环境中",{"2":{"96":1}}],["sipeed",{"2":{"1":2,"11":2,"37":1,"51":32,"54":32,"60":1,"63":11,"67":11,"71":11,"74":11,"77":11,"78":1,"80":32,"96":9,"101":10,"108":1,"109":1,"110":3,"112":1}}],["sifive",{"2":{"1":1,"11":1,"51":7,"54":7,"63":5,"68":1,"71":8,"74":7,"77":7,"80":7,"101":1}}],["s",{"2":{"1":1,"11":1,"33":1,"37":2,"49":2,"51":3,"53":2,"54":3,"56":2,"59":1,"60":1,"74":3,"76":2,"77":3,"79":2,"80":3,"97":1,"101":1,"106":1,"108":2,"110":1,"117":1,"120":1}}],["k",{"2":{"90":1}}],["k510",{"2":{"51":3,"54":3,"80":3}}],["k230",{"2":{"1":1,"11":1,"51":4,"54":4,"63":4,"71":4,"74":4,"77":4,"80":4,"101":1}}],["kendryte",{"2":{"1":1,"11":1,"51":7,"54":7,"63":4,"71":4,"74":4,"77":4,"80":7,"101":1}}],["data",{"2":{"121":2}}],["dart",{"2":{"22":1}}],["dflags",{"2":{"120":1,"121":1}}],["dload",{"2":{"120":1}}],["dump",{"2":{"111":2,"112":2}}],["duo",{"0":{"121":1},"2":{"1":2,"11":2,"37":1,"51":10,"54":10,"60":1,"63":7,"67":7,"71":7,"74":10,"77":10,"80":10,"101":1,"108":1,"109":1,"110":2,"120":1,"121":5}}],["d",{"2":{"90":2}}],["dynamically",{"2":{"120":1}}],["dynamic选项",{"2":{"89":1}}],["dynamic",{"2":{"89":1}}],["diterations=0",{"2":{"120":1,"121":1}}],["distfiles",{"2":{"120":1}}],["dist",{"2":{"120":1}}],["disk",{"2":{"60":1,"101":1}}],["dir=linux64",{"2":{"97":1,"106":1,"117":1,"120":1,"121":1}}],["directory",{"2":{"33":1,"120":1}}],["double",{"2":{"120":1,"121":1}}],["do",{"2":{"110":1}}],["downloading",{"2":{"120":1}}],["download",{"2":{"95":1,"101":1}}],["downloaded",{"2":{"60":1,"101":1}}],["docs",{"2":{"84":1}}],["documentation",{"2":{"22":1,"51":71,"54":71,"74":1,"77":1,"80":5}}],["domain",{"2":{"64":1}}],["does",{"2":{"60":2,"101":2}}],["dd",{"2":{"51":33,"54":34,"60":2,"63":25,"67":20,"71":27,"74":30,"77":31,"80":33,"101":1}}],["default",{"2":{"110":1}}],["dest",{"2":{"110":2}}],["desktop",{"2":{"51":2,"54":2,"74":2,"77":2,"80":2}}],["deactivate",{"2":{"107":1,"111":1,"112":1,"118":1,"120":1}}],["development",{"2":{"60":1,"101":1}}],["devices",{"2":{"60":1,"101":1}}],["device",{"2":{"1":1,"3":1,"11":1,"14":1,"43":1,"46":1,"57":1,"60":7,"65":1,"101":10,"125":1}}],["demo",{"2":{"36":1,"39":1}}],["debug",{"2":{"120":1,"121":1}}],["debugger",{"0":{"85":1}}],["debugging",{"2":{"22":1}}],["debian",{"2":{"10":1,"21":1,"22":1,"32":1,"51":4,"54":4,"63":1,"71":1,"74":3,"77":3,"80":4,"94":1}}],["d1",{"2":{"1":1,"11":1,"51":6,"54":6,"63":6,"67":6,"71":6,"74":6,"77":6,"80":6,"101":1}}],["支持了香山南湖微架构",{"2":{"122":1}}],["支持了",{"2":{"78":1}}],["支持了相应的用户体验",{"2":{"55":1}}],["支持展示新闻了",{"2":{"59":5}}],["支持",{"0":{"50":1},"2":{"83":1,"122":1}}],["支持计划于2024年发布的sg2044和sg2380",{"2":{"29":1}}],["支持运行≥7个流行的linux发行版",{"2":{"29":1}}],["支持50多种risc",{"2":{"29":1}}],["支持插件系统",{"2":{"22":1}}],["支持c",{"2":{"22":1}}],["支持开发语言的语法高亮显示",{"2":{"22":1}}],["支持属性扩展",{"2":{"20":1}}],["支持多种",{"2":{"11":1}}],["支持在",{"2":{"10":1}}],["支持在risc",{"2":{"0":1}}],["支持的荔枝派",{"2":{"112":1}}],["支持的命令",{"2":{"46":1}}],["支持的发行版平台",{"0":{"45":1}}],["支持的编译环境",{"2":{"40":1}}],["支持的设备如下",{"2":{"11":1}}],["支持的设备",{"0":{"11":1},"2":{"4":1,"5":2}}],["支持的risc",{"0":{"1":1}}],["含适用的编译工具链",{"2":{"0":1,"10":1}}],["ranlib",{"2":{"111":2,"112":2}}],["raw",{"2":{"60":1,"101":1}}],["ram",{"2":{"51":26,"54":26,"63":14,"67":14,"71":14,"74":14,"77":18,"80":26,"101":5}}],["root",{"2":{"60":1,"75":1,"101":1,"121":3}}],["rootfs",{"2":{"20":1,"51":6,"54":6,"63":6,"67":6,"71":6,"74":6,"77":6,"80":6}}],["rt",{"2":{"51":29,"54":29,"80":1}}],["rights",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"66":1,"69":1,"73":1,"76":1,"79":1}}],["riscv",{"2":{"36":2,"40":2,"89":2,"105":2,"110":2,"112":2,"117":2,"122":3}}],["riscv64",{"0":{"107":1},"2":{"33":1,"45":2,"49":4,"53":4,"56":4,"58":4,"62":4,"66":4,"69":1,"72":1,"73":4,"76":4,"79":4,"92":2,"95":2,"96":2,"97":1,"106":1,"111":34,"112":33,"114":1,"117":1,"120":5,"121":1}}],["riscv64等",{"2":{"10":1}}],["risc",{"2":{"0":2,"5":4,"6":2,"9":2,"10":6,"14":1,"15":1,"16":2,"21":1,"22":5,"24":1,"51":21,"54":20,"63":20,"67":18,"71":20,"74":20,"77":20,"78":1,"80":20,"81":2,"83":3,"84":1,"85":1,"86":1,"88":3,"89":2,"92":2,"93":1,"94":1,"100":1,"101":4,"102":1,"110":4,"112":1,"120":2,"121":1}}],["rules",{"2":{"121":1}}],["run",{"2":{"60":1,"101":1,"121":2}}],["running",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1}}],["rust",{"2":{"22":1}}],["ruyi工具的安装",{"0":{"95":1,"104":1}}],["ruyi包管理工具",{"0":{"21":1}}],["ruyi在线软件源",{"0":{"20":1}}],["ruyi",{"0":{"4":1,"8":1,"9":1,"19":1,"20":1,"21":1,"22":1,"33":1,"42":1,"44":1,"59":1,"108":1,"114":1},"1":{"20":1,"21":1,"45":1,"46":1,"47":1,"109":1,"110":1,"111":1,"112":1},"2":{"1":1,"3":2,"9":1,"14":1,"17":9,"22":10,"32":2,"33":13,"34":3,"35":8,"36":5,"37":4,"38":4,"39":2,"40":4,"41":3,"42":15,"43":1,"44":3,"45":1,"46":16,"49":18,"50":1,"51":3,"53":18,"54":3,"56":18,"57":1,"58":12,"59":31,"60":3,"62":12,"63":3,"64":6,"66":12,"67":2,"69":7,"70":1,"71":2,"73":17,"74":2,"75":1,"76":18,"77":3,"79":18,"80":3,"93":2,"95":7,"96":9,"101":2,"102":2,"104":6,"105":6,"108":4,"109":1,"110":10,"111":12,"112":16,"114":6,"115":5,"116":1,"117":4,"118":2,"119":2,"120":14,"121":2,"125":2}}],["ruyisdk针对上述常见的需求提供了包管理器",{"2":{"123":1}}],["ruyisdk计划为持有不同risc",{"2":{"122":1}}],["ruyisdk中编译工具链类型简介",{"0":{"122":1}}],["ruyisdk中负责管理ruyisdk各种软件源的工具",{"2":{"44":1}}],["ruyisdk包管理器提供了虚拟环境技术",{"2":{"117":1}}],["ruyisdk包管理器工具可使用",{"2":{"110":1}}],["ruyisdk包管理工具目前提供了linux系统",{"2":{"114":1}}],["ruyisdk支持的编译工具链版本",{"2":{"92":1}}],["ruyisdk使用示例",{"0":{"92":1}}],["ruyisdk官网上线",{"2":{"29":1}}],["ruyisdk软件源提供新的软件包或者软件包版本升级",{"2":{"27":1}}],["ruyisdk",{"0":{"12":1,"16":1,"17":1,"18":1,"25":1,"28":1,"81":1,"91":1},"1":{"19":1,"20":1,"21":1,"22":1,"23":1,"26":1,"27":1,"29":1,"30":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1},"2":{"4":6,"5":2,"6":1,"7":1,"10":1,"11":1,"13":1,"15":1,"16":3,"17":2,"23":1,"24":1,"26":2,"27":1,"33":3,"36":1,"39":1,"44":1,"49":3,"53":3,"56":3,"58":2,"59":12,"60":2,"62":2,"64":3,"66":2,"69":1,"73":3,"76":3,"78":1,"79":3,"81":1,"88":2,"89":1,"90":1,"95":1,"101":2,"104":1,"111":1,"116":1,"119":1,"120":1}}],["ruyisdk集成了多种可用的操作系统供用户选择",{"2":{"0":1}}],["ruyisdk集成的risc",{"0":{"0":1},"1":{"1":1,"2":1,"3":1}}],["ruyisdk对risc",{"2":{"0":1}}],["received",{"2":{"120":1}}],["return",{"2":{"112":1}}],["remote",{"2":{"64":3}}],["required",{"2":{"60":1,"101":1}}],["respective",{"2":{"49":1,"53":1,"56":1,"76":1,"79":1}}],["reserved",{"2":{"33":1,"49":1,"53":1,"56":1,"58":1,"62":1,"66":1,"69":1,"73":1,"76":1,"79":1}}],["reinstall",{"2":{"38":2,"41":1}}],["readelf",{"2":{"111":1,"112":1}}],["readme",{"2":{"39":1,"121":1}}],["read",{"2":{"35":4,"59":10}}],["regular",{"2":{"33":1}}],["releases",{"2":{"33":1,"44":1,"49":3,"53":3,"56":3,"58":2,"62":2,"66":2,"69":1,"73":3,"76":3,"79":3,"95":2,"104":1,"114":1}}],["release",{"2":{"27":1,"64":1}}],["repl",{"2":{"22":1}}],["reporting",{"2":{"121":1}}],["repos",{"2":{"33":1}}],["repository",{"2":{"33":2}}],["repo中获取",{"2":{"17":1}}],["repo",{"0":{"20":1},"2":{"17":3,"33":1,"64":3,"116":1}}],["refactoring",{"2":{"22":1}}],["revyos",{"2":{"5":1,"10":1,"45":1,"47":1,"51":9,"54":9,"63":3,"67":3,"71":3,"74":3,"77":5,"80":9,"101":3}}],["rvc",{"2":{"120":1,"121":1}}],["rv20",{"2":{"90":1}}],["rv64gc",{"2":{"89":1}}],["rv64",{"2":{"83":1,"90":1}}],["rv64ilp32",{"2":{"37":2,"108":2,"109":2,"122":2}}],["rv32gc",{"2":{"89":1}}],["rv32",{"2":{"83":1,"90":1}}],["rvv1",{"2":{"90":1}}],["rvv",{"2":{"39":1,"89":5,"90":1}}],["rvp",{"2":{"16":1}}],["rv",{"2":{"1":1,"11":1,"51":2,"54":2,"63":2,"67":2,"71":2,"74":2,"77":2,"80":2,"101":1}}],["方便新手直接从ruyi",{"2":{"116":1}}],["方便用户直接使用",{"2":{"89":1}}],["方便",{"2":{"0":2,"10":1}}],["v运行环境",{"0":{"124":1},"1":{"125":1,"126":1}}],["v目标程序",{"0":{"126":1},"2":{"123":1}}],["v目标可执行程序的正确性",{"2":{"118":1}}],["v硬件设备",{"2":{"123":1}}],["validated",{"2":{"121":1}}],["variants",{"2":{"101":1}}],["variant",{"2":{"51":16,"54":17,"63":6,"67":4,"71":6,"74":10,"77":10,"80":14,"101":1}}],["vlmax输入与可伸缩向量不固定长度的",{"2":{"89":1}}],["v1",{"2":{"51":3,"54":3,"63":3,"67":3,"71":3,"74":3,"77":3,"80":3}}],["v0",{"0":{"48":1,"49":1,"52":1,"53":1,"55":1,"56":1,"57":1,"58":1,"61":1,"62":1,"65":1,"66":1,"68":1,"69":1,"72":1,"73":1,"75":1,"76":1,"78":1,"79":1},"1":{"49":1,"50":1,"51":1,"53":1,"54":1,"56":1,"58":1,"59":1,"60":1,"62":1,"63":1,"64":1,"66":1,"67":1,"69":1,"70":1,"71":1,"73":1,"74":1,"76":1,"77":1,"79":1,"80":1},"2":{"30":23,"32":1,"58":1,"62":1,"66":1,"69":1,"70":1,"72":1}}],["v集成开发环境的用户之间的交流和合作",{"2":{"23":1}}],["v集成开发环境相关的插件和扩展",{"2":{"23":1}}],["v集成开发环境所需的编译工具链",{"2":{"17":1}}],["v领域的专家",{"2":{"23":1}}],["virtual",{"2":{"22":1,"33":1,"110":3}}],["visionfive2",{"2":{"1":1,"11":1,"51":4,"54":4,"63":4,"67":4,"71":4,"74":4,"77":4,"80":4,"101":1}}],["visionfive",{"2":{"1":1,"11":1,"51":4,"54":4,"63":4,"67":4,"71":4,"74":4,"77":4,"80":4,"101":1}}],["v相关的文档",{"2":{"22":1}}],["v应用程序",{"2":{"22":2}}],["v指令的执行过程",{"2":{"22":1}}],["v指令集的应用程序",{"2":{"22":1}}],["v模拟器和调试器",{"2":{"22":2}}],["v编译器",{"2":{"22":1}}],["v项目",{"2":{"22":1}}],["v三种架构的主流linux系统",{"2":{"21":1,"22":1}}],["v系统镜像文件",{"2":{"20":1}}],["v生态系统的发展",{"2":{"17":1,"23":1}}],["v开发时",{"2":{"123":1}}],["v开发环境",{"0":{"113":1},"1":{"114":1,"115":1,"116":1,"117":1,"118":1,"119":1},"2":{"123":1}}],["v开发环境的使用指南",{"2":{"23":1}}],["v开发相关的资源",{"2":{"23":1}}],["v开发板的开发者们提供支持",{"2":{"122":1}}],["v开发板的sd卡通过读卡机接入pc",{"2":{"100":1}}],["v开发板以usb连接线接入pc或者risc",{"2":{"100":1}}],["v开发板提供镜像信息的维护与下载",{"2":{"99":1}}],["v开发板安装操作系统",{"0":{"99":1,"125":1},"1":{"100":1,"101":1},"2":{"123":1}}],["v开发板并为其安装系统镜像",{"2":{"92":1}}],["v开发板类型是丰富且不断扩展的",{"2":{"92":1}}],["v开发板",{"2":{"22":1,"101":1}}],["v开发板上进行运行和测试",{"2":{"17":1}}],["v开发者的集成开发环境将提供一系列专门针对risc",{"2":{"22":1}}],["v开发者使用的集成开发环境",{"2":{"22":2}}],["v开发者并推动risc",{"2":{"17":1}}],["v开发者提供一个开放的交流平台",{"2":{"17":1}}],["v的编译工具链",{"2":{"17":1}}],["v架构目标可执行程序以达到验证或者使用的目的",{"2":{"123":1}}],["v架构",{"2":{"22":1,"117":1}}],["v架构的工具和功能",{"2":{"22":1}}],["v架构的嵌入式设备上",{"2":{"22":1}}],["v架构的编译器",{"2":{"22":1}}],["v架构的可执行程序",{"2":{"17":1}}],["v架构设备上的软件和应用的工具箱",{"2":{"17":1}}],["ver>`",{"2":{"38":1}}],["version",{"2":{"22":1,"33":7,"49":2,"53":2,"56":2,"58":1,"62":1,"66":1,"69":1,"73":1,"76":2,"79":2,"95":1,"96":1,"104":1,"105":2,"111":1,"120":1,"121":2}}],["venv是自定义的虚拟环境名",{"2":{"111":1}}],["venv1",{"2":{"105":3,"117":2}}],["venv",{"2":{"33":2,"37":1,"40":4,"46":1,"96":6,"105":2,"108":1,"110":18,"111":9,"112":11,"117":3,"120":9,"121":2}}],["vector",{"2":{"16":1}}],["vega",{"2":{"1":1,"11":1,"51":3,"54":3,"74":4,"77":3,"80":3}}],["v",{"2":{"0":4,"1":7,"5":4,"6":2,"9":2,"10":6,"11":7,"14":1,"15":1,"16":2,"24":1,"33":1,"36":1,"51":56,"54":55,"60":2,"63":38,"67":36,"71":38,"74":51,"75":1,"77":55,"78":1,"80":55,"81":2,"83":4,"84":1,"85":1,"86":1,"87":1,"88":3,"89":4,"90":1,"92":1,"93":1,"94":1,"101":6,"102":1,"105":1,"110":4,"112":1,"114":1,"120":2,"121":1}}],["v设备也可以",{"2":{"123":1}}],["v设备上的应用程序",{"2":{"17":1}}],["v设备上调试应用程序等",{"2":{"0":1}}],["v设备有",{"2":{"1":1}}],["v设备专有向导页面",{"2":{"0":1}}],["v设备的集成和支持主要包括以下几个方面",{"2":{"0":1}}],["v设备",{"0":{"0":1,"1":1},"1":{"1":1,"2":1,"3":1},"2":{"29":1,"123":1}}]],"serializationVersion":2}';export{t as default}; diff --git a/assets/chunks/VPLocalSearchBox.C1YqNsMY.js b/assets/chunks/VPLocalSearchBox.BqS5s0On.js similarity index 99% rename from assets/chunks/VPLocalSearchBox.C1YqNsMY.js rename to assets/chunks/VPLocalSearchBox.BqS5s0On.js index 62fa4d0c..207d2873 100644 --- a/assets/chunks/VPLocalSearchBox.C1YqNsMY.js +++ b/assets/chunks/VPLocalSearchBox.BqS5s0On.js @@ -1,4 +1,4 @@ -var It=Object.defineProperty;var Dt=(o,e,t)=>e in o?It(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Oe=(o,e,t)=>Dt(o,typeof e!="symbol"?e+"":e,t);import{X as tt,s as oe,v as $e,ai as kt,aj as Ot,d as _t,G as xe,ak as rt,h as Fe,al as Rt,am as Mt,x as Lt,an as Pt,y as _e,R as de,Q as Ee,ao as zt,ap as Vt,Y as Bt,U as $t,aq as Wt,o as ee,b as Kt,j as k,a1 as Jt,k as j,ar as Ut,as as jt,at as Gt,c as re,n as at,e as Se,E as nt,F as it,a as ve,t as pe,au as Qt,p as qt,l as Ht,av as ot,aw as Yt,a7 as Zt,ad as Xt,ax as er,_ as tr}from"./framework.D4PmY8Hg.js";import{u as rr,c as ar}from"./theme.Cl2_Pwlj.js";const nr={en:()=>tt(()=>import("./@localSearchIndexen.FA3pwFm7.js"),[]),root:()=>tt(()=>import("./@localSearchIndexroot.lfomDKQb.js"),[])};/*! +var It=Object.defineProperty;var Dt=(o,e,t)=>e in o?It(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Oe=(o,e,t)=>Dt(o,typeof e!="symbol"?e+"":e,t);import{X as tt,s as oe,v as $e,ai as kt,aj as Ot,d as _t,G as xe,ak as rt,h as Fe,al as Rt,am as Mt,x as Lt,an as Pt,y as _e,R as de,Q as Ee,ao as zt,ap as Vt,Y as Bt,U as $t,aq as Wt,o as ee,b as Kt,j as k,a1 as Jt,k as j,ar as Ut,as as jt,at as Gt,c as re,n as at,e as Se,E as nt,F as it,a as ve,t as pe,au as Qt,p as qt,l as Ht,av as ot,aw as Yt,a7 as Zt,ad as Xt,ax as er,_ as tr}from"./framework.D4PmY8Hg.js";import{u as rr,c as ar}from"./theme.CGoF92O7.js";const nr={en:()=>tt(()=>import("./@localSearchIndexen.FA3pwFm7.js"),[]),root:()=>tt(()=>import("./@localSearchIndexroot.DwSe3cuN.js"),[])};/*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var yt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ne=yt.join(","),gt=typeof Element>"u",ue=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ce=!gt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Ie=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},ir=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},bt=function(e,t,r){if(Ie(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ne));return t&&ue.call(e,Ne)&&n.unshift(e),n=n.filter(r),n},wt=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!Ie(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=ue.call(i,Ne);h&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var d=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ie(d,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(d&&v){var m=o(d===!0?i.children:d.children,!0,r);r.flatten?n.push.apply(n,m):n.push({scopeParent:i,candidates:m})}else a.unshift.apply(a,i.children)}}return n},xt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||ir(e))&&!xt(e)?0:e.tabIndex},or=function(e,t){var r=se(e);return r<0&&t&&!xt(e)?0:r},sr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},Ft=function(e){return e.tagName==="INPUT"},ur=function(e){return Ft(e)&&e.type==="hidden"},lr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},cr=function(e,t){for(var r=0;rsummary:first-of-type"),i=a?e.parentElement:e;if(ue.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof n=="function"){for(var s=e;e;){var u=e.parentElement,l=Ce(e);if(u&&!u.shadowRoot&&n(u)===!0)return st(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(vr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return st(e);return!1},mr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},gr=function o(e){var t=[],r=[];return e.forEach(function(n,a){var i=!!n.scopeParent,s=i?n.scopeParent:n,u=or(s,i),l=i?o(n.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:a,tabIndex:u,item:n,isScope:i,content:l})}),r.sort(sr).reduce(function(n,a){return a.isScope?n.push.apply(n,a.content):n.push(a.content),n},[]).concat(t)},br=function(e,t){t=t||{};var r;return t.getShadowRoot?r=wt([e],t.includeContainer,{filter:We.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:yr}):r=bt(e,t.includeContainer,We.bind(null,t)),gr(r)},wr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=wt([e],t.includeContainer,{filter:De.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=bt(e,t.includeContainer,De.bind(null,t)),r},le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,Ne)===!1?!1:We(t,e)},xr=yt.concat("iframe").join(","),Re=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,xr)===!1?!1:De(t,e)};/*! diff --git a/assets/chunks/theme.Cl2_Pwlj.js b/assets/chunks/theme.CGoF92O7.js similarity index 99% rename from assets/chunks/theme.Cl2_Pwlj.js rename to assets/chunks/theme.CGoF92O7.js index d0af22ca..8c972619 100644 --- a/assets/chunks/theme.Cl2_Pwlj.js +++ b/assets/chunks/theme.CGoF92O7.js @@ -1,2 +1,2 @@ -const __vite__fileDeps=["assets/chunks/VPLocalSearchBox.C1YqNsMY.js","assets/chunks/framework.D4PmY8Hg.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]); -import{d as _,o as a,c,r as l,n as N,a as D,t as I,b as $,w as d,e as f,T as ve,_ as b,u as Ue,i as Ge,f as je,g as pe,h as y,j as v,k as r,p as B,l as H,m as z,q as ie,s as w,v as j,x as Z,y as R,z as he,A as ye,B as ze,C as qe,D as q,F as M,E,G as Pe,H as x,I as m,J as W,K as Le,L as ee,M as Y,N as te,O as Ke,P as Ve,Q as le,R as We,S as Se,U as oe,V as Re,W as Je,X as Ye,Y as Te,Z as Ie,$ as Qe,a0 as Xe,a1 as Ze,a2 as xe}from"./framework.D4PmY8Hg.js";const et=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),c("span",{class:N(["VPBadge",e.type])},[l(e.$slots,"default",{},()=>[D(I(e.text),1)])],2))}}),tt={key:0,class:"VPBackdrop"},ot=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),$(ve,{name:"fade"},{default:d(()=>[e.show?(a(),c("div",tt)):f("",!0)]),_:1}))}}),st=b(ot,[["__scopeId","data-v-54a304ca"]]),P=Ue;function nt(o,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(o,e):(o(),(n=!0)&&setTimeout(()=>n=!1,e))}}function ce(o){return/^\//.test(o)?o:`/${o}`}function fe(o){const{pathname:e,search:t,hash:n,protocol:s}=new URL(o,"http://a.com");if(Ge(o)||o.startsWith("#")||!s.startsWith("http")||!je(e))return o;const{site:i}=P(),u=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${n}`);return pe(u)}function J({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:n,theme:s,hash:i}=P(),u=y(()=>{var p,g;return{label:(p=e.value.locales[t.value])==null?void 0:p.label,link:((g=e.value.locales[t.value])==null?void 0:g.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([p,g])=>u.value.label===g.label?[]:{text:g.label,link:at(g.link||(p==="root"?"/":`/${p}/`),s.value.i18nRouting!==!1&&o,n.value.relativePath.slice(u.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:u}}function at(o,e,t,n){return e?o.replace(/\/$/,"")+ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):o}const rt=o=>(B("data-v-6ff51ddd"),o=o(),H(),o),it={class:"NotFound"},lt={class:"code"},ct={class:"title"},ut=rt(()=>v("div",{class:"divider"},null,-1)),dt={class:"quote"},vt={class:"action"},pt=["href","aria-label"],ht=_({__name:"NotFound",setup(o){const{theme:e}=P(),{currentLang:t}=J();return(n,s)=>{var i,u,h,p,g;return a(),c("div",it,[v("p",lt,I(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),v("h1",ct,I(((u=r(e).notFound)==null?void 0:u.title)??"PAGE NOT FOUND"),1),ut,v("blockquote",dt,I(((h=r(e).notFound)==null?void 0:h.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),v("div",vt,[v("a",{class:"link",href:r(pe)(r(t).link),"aria-label":((p=r(e).notFound)==null?void 0:p.linkLabel)??"go to home"},I(((g=r(e).notFound)==null?void 0:g.linkText)??"Take me home"),9,pt)])])}}}),ft=b(ht,[["__scopeId","data-v-6ff51ddd"]]);function we(o,e){if(Array.isArray(o))return Q(o);if(o==null)return[];e=ce(e);const t=Object.keys(o).sort((s,i)=>i.split("/").length-s.split("/").length).find(s=>e.startsWith(ce(s))),n=t?o[t]:[];return Array.isArray(n)?Q(n):Q(n.items,n.base)}function _t(o){const e=[];let t=0;for(const n in o){const s=o[n];if(s.items){t=e.push(s);continue}e[t]||e.push({items:[]}),e[t].items.push(s)}return e}function mt(o){const e=[];function t(n){for(const s of n)s.text&&s.link&&e.push({text:s.text,link:s.link,docFooterText:s.docFooterText}),s.items&&t(s.items)}return t(o),e}function ue(o,e){return Array.isArray(e)?e.some(t=>ue(o,t)):z(o,e.link)?!0:e.items?ue(o,e.items):!1}function Q(o,e){return[...o].map(t=>{const n={...t},s=n.base||e;return s&&n.link&&(n.link=s+n.link),n.items&&(n.items=Q(n.items,s)),n})}function O(){const{frontmatter:o,page:e,theme:t}=P(),n=ie("(min-width: 960px)"),s=w(!1),i=y(()=>{const C=t.value.sidebar,S=e.value.relativePath;return C?we(C,S):[]}),u=w(i.value);j(i,(C,S)=>{JSON.stringify(C)!==JSON.stringify(S)&&(u.value=i.value)});const h=y(()=>o.value.sidebar!==!1&&u.value.length>0&&o.value.layout!=="home"),p=y(()=>g?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),g=y(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),L=y(()=>h.value&&n.value),k=y(()=>h.value?_t(u.value):[]);function V(){s.value=!0}function T(){s.value=!1}function A(){s.value?T():V()}return{isOpen:s,sidebar:u,sidebarGroups:k,hasSidebar:h,hasAside:g,leftAside:p,isSidebarEnabled:L,open:V,close:T,toggle:A}}function kt(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),R(()=>{window.addEventListener("keyup",n)}),he(()=>{window.removeEventListener("keyup",n)});function n(s){s.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function bt(o){const{page:e,hash:t}=P(),n=w(!1),s=y(()=>o.value.collapsed!=null),i=y(()=>!!o.value.link),u=w(!1),h=()=>{u.value=z(e.value.relativePath,o.value.link)};j([e,o,t],h),R(h);const p=y(()=>u.value?!0:o.value.items?ue(e.value.relativePath,o.value.items):!1),g=y(()=>!!(o.value.items&&o.value.items.length));Z(()=>{n.value=!!(s.value&&o.value.collapsed)}),ye(()=>{(u.value||p.value)&&(n.value=!1)});function L(){s.value&&(n.value=!n.value)}return{collapsed:n,collapsible:s,isLink:i,isActiveLink:u,hasActiveLink:p,hasChildren:g,toggle:L}}function $t(){const{hasSidebar:o}=O(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const de=[];function Ne(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function _e(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{element:t,title:gt(t),link:"#"+t.id,level:n}});return yt(e,o)}function gt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function yt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,s]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(u=>u.level>=n&&u.level<=s),de.length=0;for(const{element:u,link:h}of o)de.push({element:u,link:h});const i=[];e:for(let u=0;u=0;p--){const g=o[p];if(g.level{requestAnimationFrame(i),window.addEventListener("scroll",n)}),ze(()=>{u(location.hash)}),he(()=>{window.removeEventListener("scroll",n)});function i(){if(!t.value)return;const h=window.scrollY,p=window.innerHeight,g=document.body.offsetHeight,L=Math.abs(h+p-g)<1,k=de.map(({element:T,link:A})=>({link:A,top:Lt(T)})).filter(({top:T})=>!Number.isNaN(T)).sort((T,A)=>T.top-A.top);if(!k.length){u(null);return}if(h<1){u(null);return}if(L){u(k[k.length-1].link);return}let V=null;for(const{link:T,top:A}of k){if(A>h+qe()+4)break;V=T}u(V)}function u(h){s&&s.classList.remove("active"),h==null?s=null:s=o.value.querySelector(`a[href="${decodeURIComponent(h)}"]`);const p=s;p?(p.classList.add("active"),e.value.style.top=p.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Lt(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const Vt=["href","title"],St=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const n=t.href.split("#")[1],s=document.getElementById(decodeURIComponent(n));s==null||s.focus({preventScroll:!0})}return(t,n)=>{const s=q("VPDocOutlineItem",!0);return a(),c("ul",{class:N(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),c(M,null,E(t.headers,({children:i,link:u,title:h})=>(a(),c("li",null,[v("a",{class:"outline-link",href:u,onClick:e,title:h},I(h),9,Vt),i!=null&&i.length?(a(),$(s,{key:0,headers:i},null,8,["headers"])):f("",!0)]))),256))],2)}}}),Me=b(St,[["__scopeId","data-v-53c99d69"]]),Tt={class:"content"},It={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},wt=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=P(),n=Pe([]);x(()=>{n.value=_e(e.value.outline??t.value.outline)});const s=w(),i=w();return Pt(s,i),(u,h)=>(a(),c("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:s},[v("div",Tt,[v("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),v("div",It,I(r(Ne)(r(t))),1),m(Me,{headers:n.value,root:!0},null,8,["headers"])])],2))}}),Nt=b(wt,[["__scopeId","data-v-f610f197"]]),Mt={class:"VPDocAsideCarbonAds"},At=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,n)=>(a(),c("div",Mt,[m(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ct=o=>(B("data-v-cb998dce"),o=o(),H(),o),Bt={class:"VPDocAside"},Ht=Ct(()=>v("div",{class:"spacer"},null,-1)),Et=_({__name:"VPDocAside",setup(o){const{theme:e}=P();return(t,n)=>(a(),c("div",Bt,[l(t.$slots,"aside-top",{},void 0,!0),l(t.$slots,"aside-outline-before",{},void 0,!0),m(Nt),l(t.$slots,"aside-outline-after",{},void 0,!0),Ht,l(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),$(At,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):f("",!0),l(t.$slots,"aside-ads-after",{},void 0,!0),l(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Ft=b(Et,[["__scopeId","data-v-cb998dce"]]);function Dt(){const{theme:o,page:e}=P();return y(()=>{const{text:t="Edit this page",pattern:n=""}=o.value.editLink||{};let s;return typeof n=="function"?s=n(e.value):s=n.replace(/:path/g,e.value.filePath),{url:s,text:t}})}function Ot(){const{page:o,theme:e,frontmatter:t}=P();return y(()=>{var g,L,k,V,T,A,C,S;const n=we(e.value.sidebar,o.value.relativePath),s=mt(n),i=Ut(s,U=>U.link.replace(/[?#].*$/,"")),u=i.findIndex(U=>z(o.value.relativePath,U.link)),h=((g=e.value.docFooter)==null?void 0:g.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:h?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((k=i[u-1])==null?void 0:k.docFooterText)??((V=i[u-1])==null?void 0:V.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((T=i[u-1])==null?void 0:T.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[u+1])==null?void 0:A.docFooterText)??((C=i[u+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((S=i[u+1])==null?void 0:S.link)}}})}function Ut(o,e){const t=new Set;return o.filter(n=>{const s=e(n);return t.has(s)?!1:t.add(s)})}const F=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.tag??(e.href?"a":"span")),n=y(()=>e.href&&Le.test(e.href)||e.target==="_blank");return(s,i)=>(a(),$(W(t.value),{class:N(["VPLink",{link:s.href,"vp-external-link-icon":n.value,"no-icon":s.noIcon}]),href:s.href?r(fe)(s.href):void 0,target:s.target??(n.value?"_blank":void 0),rel:s.rel??(n.value?"noreferrer":void 0)},{default:d(()=>[l(s.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Gt={class:"VPLastUpdated"},jt=["datetime"],zt=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,frontmatter:n,lang:s}=P(),i=y(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),u=y(()=>i.value.toISOString()),h=w("");return R(()=>{Z(()=>{var p,g,L;h.value=new Intl.DateTimeFormat((g=(p=e.value.lastUpdated)==null?void 0:p.formatOptions)!=null&&g.forceLocale?s.value:void 0,((L=e.value.lastUpdated)==null?void 0:L.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(i.value)})}),(p,g)=>{var L;return a(),c("p",Gt,[D(I(((L=r(e).lastUpdated)==null?void 0:L.text)||r(e).lastUpdatedText||"Last updated")+": ",1),v("time",{datetime:u.value},I(h.value),9,jt)])}}}),qt=b(zt,[["__scopeId","data-v-19a7ae4e"]]),Ae=o=>(B("data-v-5941af80"),o=o(),H(),o),Kt={key:0,class:"VPDocFooter"},Wt={key:0,class:"edit-info"},Rt={key:0,class:"edit-link"},Jt=Ae(()=>v("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),Yt={key:1,class:"last-updated"},Qt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Xt=Ae(()=>v("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),Zt={class:"pager"},xt=["innerHTML"],eo=["innerHTML"],to={class:"pager"},oo=["innerHTML"],so=["innerHTML"],no=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:n}=P(),s=Dt(),i=Ot(),u=y(()=>e.value.editLink&&n.value.editLink!==!1),h=y(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),p=y(()=>u.value||h.value||i.value.prev||i.value.next);return(g,L)=>{var k,V,T,A;return p.value?(a(),c("footer",Kt,[l(g.$slots,"doc-footer-before",{},void 0,!0),u.value||h.value?(a(),c("div",Wt,[u.value?(a(),c("div",Rt,[m(F,{class:"edit-link-button",href:r(s).url,"no-icon":!0},{default:d(()=>[Jt,D(" "+I(r(s).text),1)]),_:1},8,["href"])])):f("",!0),h.value?(a(),c("div",Yt,[m(qt)])):f("",!0)])):f("",!0),(k=r(i).prev)!=null&&k.link||(V=r(i).next)!=null&&V.link?(a(),c("nav",Qt,[Xt,v("div",Zt,[(T=r(i).prev)!=null&&T.link?(a(),$(F,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:d(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,xt),v("span",{class:"title",innerHTML:r(i).prev.text},null,8,eo)]}),_:1},8,["href"])):f("",!0)]),v("div",to,[(A=r(i).next)!=null&&A.link?(a(),$(F,{key:0,class:"pager-link next",href:r(i).next.link},{default:d(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,oo),v("span",{class:"title",innerHTML:r(i).next.text},null,8,so)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),ao=b(no,[["__scopeId","data-v-5941af80"]]),ro=o=>(B("data-v-e6f2a212"),o=o(),H(),o),io={class:"container"},lo=ro(()=>v("div",{class:"aside-curtain"},null,-1)),co={class:"aside-container"},uo={class:"aside-content"},vo={class:"content"},po={class:"content-container"},ho={class:"main"},fo=_({__name:"VPDoc",setup(o){const{theme:e}=P(),t=ee(),{hasSidebar:n,hasAside:s,leftAside:i}=O(),u=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(h,p)=>{const g=q("Content");return a(),c("div",{class:N(["VPDoc",{"has-sidebar":r(n),"has-aside":r(s)}])},[l(h.$slots,"doc-top",{},void 0,!0),v("div",io,[r(s)?(a(),c("div",{key:0,class:N(["aside",{"left-aside":r(i)}])},[lo,v("div",co,[v("div",uo,[m(Ft,null,{"aside-top":d(()=>[l(h.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":d(()=>[l(h.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":d(()=>[l(h.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(h.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(h.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(h.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),v("div",vo,[v("div",po,[l(h.$slots,"doc-before",{},void 0,!0),v("main",ho,[m(g,{class:N(["vp-doc",[u.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),m(ao,null,{"doc-footer-before":d(()=>[l(h.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),l(h.$slots,"doc-after",{},void 0,!0)])])]),l(h.$slots,"doc-bottom",{},void 0,!0)],2)}}}),_o=b(fo,[["__scopeId","data-v-e6f2a212"]]),mo=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.href&&Le.test(e.href)),n=y(()=>e.tag||e.href?"a":"button");return(s,i)=>(a(),$(W(n.value),{class:N(["VPButton",[s.size,s.theme]]),href:s.href?r(fe)(s.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:d(()=>[D(I(s.text),1)]),_:1},8,["class","href","target","rel"]))}}),ko=b(mo,[["__scopeId","data-v-c9cf0e3c"]]),bo=["src","alt"],$o=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const n=q("VPImage",!0);return e.image?(a(),c(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),c("img",Y({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(pe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,bo)):(a(),c(M,{key:1},[m(n,Y({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),m(n,Y({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),X=b($o,[["__scopeId","data-v-ab19afbb"]]),go=o=>(B("data-v-b10c5094"),o=o(),H(),o),yo={class:"container"},Po={class:"main"},Lo={key:0,class:"name"},Vo=["innerHTML"],So=["innerHTML"],To=["innerHTML"],Io={key:0,class:"actions"},wo={key:0,class:"image"},No={class:"image-container"},Mo=go(()=>v("div",{class:"image-bg"},null,-1)),Ao=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=te("hero-image-slot-exists");return(t,n)=>(a(),c("div",{class:N(["VPHero",{"has-image":t.image||r(e)}])},[v("div",yo,[v("div",Po,[l(t.$slots,"home-hero-info-before",{},void 0,!0),l(t.$slots,"home-hero-info",{},()=>[t.name?(a(),c("h1",Lo,[v("span",{innerHTML:t.name,class:"clip"},null,8,Vo)])):f("",!0),t.text?(a(),c("p",{key:1,innerHTML:t.text,class:"text"},null,8,So)):f("",!0),t.tagline?(a(),c("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,To)):f("",!0)],!0),l(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),c("div",Io,[(a(!0),c(M,null,E(t.actions,s=>(a(),c("div",{key:s.link,class:"action"},[m(ko,{tag:"a",size:"medium",theme:s.theme,text:s.text,href:s.link,target:s.target,rel:s.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),c("div",wo,[v("div",No,[Mo,l(t.$slots,"home-hero-image",{},()=>[t.image?(a(),$(X,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Co=b(Ao,[["__scopeId","data-v-b10c5094"]]),Bo=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=P();return(t,n)=>r(e).hero?(a(),$(Co,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":d(()=>[l(t.$slots,"home-hero-info-before")]),"home-hero-info":d(()=>[l(t.$slots,"home-hero-info")]),"home-hero-info-after":d(()=>[l(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":d(()=>[l(t.$slots,"home-hero-actions-after")]),"home-hero-image":d(()=>[l(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Ho=o=>(B("data-v-bd37d1a2"),o=o(),H(),o),Eo={class:"box"},Fo={key:0,class:"icon"},Do=["innerHTML"],Oo=["innerHTML"],Uo=["innerHTML"],Go={key:4,class:"link-text"},jo={class:"link-text-value"},zo=Ho(()=>v("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),qo=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),$(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:d(()=>[v("article",Eo,[typeof e.icon=="object"&&e.icon.wrap?(a(),c("div",Fo,[m(X,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),$(X,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Do)):f("",!0),v("h2",{class:"title",innerHTML:e.title},null,8,Oo),e.details?(a(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,Uo)):f("",!0),e.linkText?(a(),c("div",Go,[v("p",jo,[D(I(e.linkText)+" ",1),zo])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Ko=b(qo,[["__scopeId","data-v-bd37d1a2"]]),Wo={key:0,class:"VPFeatures"},Ro={class:"container"},Jo={class:"items"},Yo=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=y(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,s)=>n.features?(a(),c("div",Wo,[v("div",Ro,[v("div",Jo,[(a(!0),c(M,null,E(n.features,i=>(a(),c("div",{key:i.title,class:N(["item",[t.value]])},[m(Ko,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),Qo=b(Yo,[["__scopeId","data-v-b1eea84a"]]),Xo=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=P();return(t,n)=>r(e).features?(a(),$(Qo,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):f("",!0)}}),Zo=_({__name:"VPHomeContent",setup(o){const{width:e}=Ke({initialWidth:0,includeScrollbar:!1});return(t,n)=>(a(),c("div",{class:"vp-doc container",style:Ve(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[l(t.$slots,"default",{},void 0,!0)],4))}}),xo=b(Zo,[["__scopeId","data-v-c141a4bd"]]),es={class:"VPHome"},ts=_({__name:"VPHome",setup(o){const{frontmatter:e}=P();return(t,n)=>{const s=q("Content");return a(),c("div",es,[l(t.$slots,"home-hero-before",{},void 0,!0),m(Bo,null,{"home-hero-info-before":d(()=>[l(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),l(t.$slots,"home-hero-after",{},void 0,!0),l(t.$slots,"home-features-before",{},void 0,!0),m(Xo),l(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),$(xo,{key:0},{default:d(()=>[m(s)]),_:1})):(a(),$(s,{key:1}))])}}}),os=b(ts,[["__scopeId","data-v-07b1ad08"]]),ss={},ns={class:"VPPage"};function as(o,e){const t=q("Content");return a(),c("div",ns,[l(o.$slots,"page-top"),m(t),l(o.$slots,"page-bottom")])}const rs=b(ss,[["render",as]]),is=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=P(),{hasSidebar:n}=O();return(s,i)=>(a(),c("div",{class:N(["VPContent",{"has-sidebar":r(n),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?l(s.$slots,"not-found",{key:0},()=>[m(ft)],!0):r(t).layout==="page"?(a(),$(rs,{key:1},{"page-top":d(()=>[l(s.$slots,"page-top",{},void 0,!0)]),"page-bottom":d(()=>[l(s.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),$(os,{key:2},{"home-hero-before":d(()=>[l(s.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":d(()=>[l(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(s.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":d(()=>[l(s.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":d(()=>[l(s.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":d(()=>[l(s.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),$(W(r(t).layout),{key:3})):(a(),$(_o,{key:4},{"doc-top":d(()=>[l(s.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":d(()=>[l(s.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":d(()=>[l(s.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":d(()=>[l(s.$slots,"doc-before",{},void 0,!0)]),"doc-after":d(()=>[l(s.$slots,"doc-after",{},void 0,!0)]),"aside-top":d(()=>[l(s.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":d(()=>[l(s.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(s.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(s.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(s.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":d(()=>[l(s.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ls=b(is,[["__scopeId","data-v-9a6c75ad"]]),cs={class:"container"},us=["innerHTML"],ds=["innerHTML"],vs=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=P(),{hasSidebar:n}=O();return(s,i)=>r(e).footer&&r(t).footer!==!1?(a(),c("footer",{key:0,class:N(["VPFooter",{"has-sidebar":r(n)}])},[v("div",cs,[r(e).footer.message?(a(),c("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,us)):f("",!0),r(e).footer.copyright?(a(),c("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,ds)):f("",!0)])],2)):f("",!0)}}),ps=b(vs,[["__scopeId","data-v-566314d4"]]);function hs(){const{theme:o,frontmatter:e}=P(),t=Pe([]),n=y(()=>t.value.length>0);return x(()=>{t.value=_e(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:n}}const fs=o=>(B("data-v-883964e0"),o=o(),H(),o),_s={class:"menu-text"},ms=fs(()=>v("span",{class:"vpi-chevron-right icon"},null,-1)),ks={class:"header"},bs={class:"outline"},$s=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=P(),n=w(!1),s=w(0),i=w(),u=w();function h(k){var V;(V=i.value)!=null&&V.contains(k.target)||(n.value=!1)}j(n,k=>{if(k){document.addEventListener("click",h);return}document.removeEventListener("click",h)}),le("Escape",()=>{n.value=!1}),x(()=>{n.value=!1});function p(){n.value=!n.value,s.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function g(k){k.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),We(()=>{n.value=!1}))}function L(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(k,V)=>(a(),c("div",{class:"VPLocalNavOutlineDropdown",style:Ve({"--vp-vh":s.value+"px"}),ref_key:"main",ref:i},[k.headers.length>0?(a(),c("button",{key:0,onClick:p,class:N({open:n.value})},[v("span",_s,I(r(Ne)(r(t))),1),ms],2)):(a(),c("button",{key:1,onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)),m(ve,{name:"flyout"},{default:d(()=>[n.value?(a(),c("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:g},[v("div",ks,[v("a",{class:"top-link",href:"#",onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)]),v("div",bs,[m(Me,{headers:k.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),gs=b($s,[["__scopeId","data-v-883964e0"]]),ys=o=>(B("data-v-2488c25a"),o=o(),H(),o),Ps={class:"container"},Ls=["aria-expanded"],Vs=ys(()=>v("span",{class:"vpi-align-left menu-icon"},null,-1)),Ss={class:"menu-text"},Ts=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=P(),{hasSidebar:n}=O(),{headers:s}=hs(),{y:i}=Se(),u=w(0);R(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{s.value=_e(t.value.outline??e.value.outline)});const h=y(()=>s.value.length===0),p=y(()=>h.value&&!n.value),g=y(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:h.value,fixed:p.value}));return(L,k)=>r(t).layout!=="home"&&(!p.value||r(i)>=u.value)?(a(),c("div",{key:0,class:N(g.value)},[v("div",Ps,[r(n)?(a(),c("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:k[0]||(k[0]=V=>L.$emit("open-menu"))},[Vs,v("span",Ss,I(r(e).sidebarMenuLabel||"Menu"),1)],8,Ls)):f("",!0),m(gs,{headers:r(s),navHeight:u.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Is=b(Ts,[["__scopeId","data-v-2488c25a"]]);function ws(){const o=w(!1);function e(){o.value=!0,window.addEventListener("resize",s)}function t(){o.value=!1,window.removeEventListener("resize",s)}function n(){o.value?t():e()}function s(){window.outerWidth>=768&&t()}const i=ee();return j(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:n}}const Ns={},Ms={class:"VPSwitch",type:"button",role:"switch"},As={class:"check"},Cs={key:0,class:"icon"};function Bs(o,e){return a(),c("button",Ms,[v("span",As,[o.$slots.default?(a(),c("span",Cs,[l(o.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Hs=b(Ns,[["render",Bs],["__scopeId","data-v-b4ccac88"]]),Ce=o=>(B("data-v-7df97737"),o=o(),H(),o),Es=Ce(()=>v("span",{class:"vpi-sun sun"},null,-1)),Fs=Ce(()=>v("span",{class:"vpi-moon moon"},null,-1)),Ds=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=P(),n=te("toggle-appearance",()=>{e.value=!e.value}),s=y(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(i,u)=>(a(),$(Hs,{title:s.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(n)},{default:d(()=>[Es,Fs]),_:1},8,["title","aria-checked","onClick"]))}}),me=b(Ds,[["__scopeId","data-v-7df97737"]]),Os={key:0,class:"VPNavBarAppearance"},Us=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=P();return(t,n)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",Os,[m(me)])):f("",!0)}}),Gs=b(Us,[["__scopeId","data-v-283b26e9"]]),ke=w();let Be=!1,re=0;function js(o){const e=w(!1);if(oe){!Be&&zs(),re++;const t=j(ke,n=>{var s,i,u;n===o.el.value||(s=o.el.value)!=null&&s.contains(n)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(u=o.onBlur)==null||u.call(o))});he(()=>{t(),re--,re||qs()})}return Re(e)}function zs(){document.addEventListener("focusin",He),Be=!0,ke.value=document.activeElement}function qs(){document.removeEventListener("focusin",He)}function He(){ke.value=document.activeElement}const Ks={class:"VPMenuLink"},Ws=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=P();return(t,n)=>(a(),c("div",Ks,[m(F,{class:N({active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:d(()=>[D(I(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),se=b(Ws,[["__scopeId","data-v-f51f088d"]]),Rs={class:"VPMenuGroup"},Js={key:0,class:"title"},Ys=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Rs,[e.text?(a(),c("p",Js,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,n=>(a(),c(M,null,["link"in n?(a(),$(se,{key:0,item:n},null,8,["item"])):f("",!0)],64))),256))]))}}),Qs=b(Ys,[["__scopeId","data-v-a6b0397c"]]),Xs={class:"VPMenu"},Zs={key:0,class:"items"},xs=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),c("div",Xs,[e.items?(a(),c("div",Zs,[(a(!0),c(M,null,E(e.items,n=>(a(),c(M,{key:n.text},["link"in n?(a(),$(se,{key:0,item:n},null,8,["item"])):(a(),$(Qs,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0),l(e.$slots,"default",{},void 0,!0)]))}}),en=b(xs,[["__scopeId","data-v-e42ed9b3"]]),tn=o=>(B("data-v-af5898d3"),o=o(),H(),o),on=["aria-expanded","aria-label"],sn={key:0,class:"text"},nn=["innerHTML"],an=tn(()=>v("span",{class:"vpi-chevron-down text-icon"},null,-1)),rn={key:1,class:"vpi-more-horizontal icon"},ln={class:"menu"},cn=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=w(!1),t=w();js({el:t,onBlur:n});function n(){e.value=!1}return(s,i)=>(a(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=u=>e.value=!0),onMouseleave:i[2]||(i[2]=u=>e.value=!1)},[v("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":s.label,onClick:i[0]||(i[0]=u=>e.value=!e.value)},[s.button||s.icon?(a(),c("span",sn,[s.icon?(a(),c("span",{key:0,class:N([s.icon,"option-icon"])},null,2)):f("",!0),s.button?(a(),c("span",{key:1,innerHTML:s.button},null,8,nn)):f("",!0),an])):(a(),c("span",rn))],8,on),v("div",ln,[m(en,{items:s.items},{default:d(()=>[l(s.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),be=b(cn,[["__scopeId","data-v-af5898d3"]]),un=["href","aria-label","innerHTML"],dn=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,s)=>(a(),c("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,un))}}),vn=b(dn,[["__scopeId","data-v-358b6670"]]),pn={class:"VPSocialLinks"},hn=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),c("div",pn,[(a(!0),c(M,null,E(e.links,({link:n,icon:s,ariaLabel:i})=>(a(),$(vn,{key:n,icon:s,link:n,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),$e=b(hn,[["__scopeId","data-v-e71e869c"]]),fn={key:0,class:"group translations"},_n={class:"trans-title"},mn={key:1,class:"group"},kn={class:"item appearance"},bn={class:"label"},$n={class:"appearance-action"},gn={key:2,class:"group"},yn={class:"item social-links"},Pn=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=P(),{localeLinks:n,currentLang:s}=J({correspondingLink:!0}),i=y(()=>n.value.length&&s.value.label||e.value.appearance||t.value.socialLinks);return(u,h)=>i.value?(a(),$(be,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:d(()=>[r(n).length&&r(s).label?(a(),c("div",fn,[v("p",_n,I(r(s).label),1),(a(!0),c(M,null,E(r(n),p=>(a(),$(se,{key:p.link,item:p},null,8,["item"]))),128))])):f("",!0),r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",mn,[v("div",kn,[v("p",bn,I(r(t).darkModeSwitchLabel||"Appearance"),1),v("div",$n,[m(me)])])])):f("",!0),r(t).socialLinks?(a(),c("div",gn,[v("div",yn,[m($e,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),Ln=b(Pn,[["__scopeId","data-v-8e87c032"]]),Vn=o=>(B("data-v-6bee1efd"),o=o(),H(),o),Sn=["aria-expanded"],Tn=Vn(()=>v("span",{class:"container"},[v("span",{class:"top"}),v("span",{class:"middle"}),v("span",{class:"bottom"})],-1)),In=[Tn],wn=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),c("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},In,10,Sn))}}),Nn=b(wn,[["__scopeId","data-v-6bee1efd"]]),Mn=["innerHTML"],An=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=P();return(t,n)=>(a(),$(F,{class:N({VPNavBarMenuLink:!0,active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:d(()=>[v("span",{innerHTML:t.item.text},null,8,Mn)]),_:1},8,["class","href","noIcon","target","rel"]))}}),Cn=b(An,[["__scopeId","data-v-08fbf4b6"]]),Bn=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=P(),n=i=>"link"in i?z(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(n),s=y(()=>n(e.item));return(i,u)=>(a(),$(be,{class:N({VPNavBarMenuGroup:!0,active:r(z)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||s.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Hn=o=>(B("data-v-f732b5d0"),o=o(),H(),o),En={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Fn=Hn(()=>v("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Dn=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=P();return(t,n)=>r(e).nav?(a(),c("nav",En,[Fn,(a(!0),c(M,null,E(r(e).nav,s=>(a(),c(M,{key:s.text},["link"in s?(a(),$(Cn,{key:0,item:s},null,8,["item"])):(a(),$(Bn,{key:1,item:s},null,8,["item"]))],64))),128))])):f("",!0)}}),On=b(Dn,[["__scopeId","data-v-f732b5d0"]]);function Un(o){const{localeIndex:e,theme:t}=P();function n(s){var A,C,S;const i=s.split("."),u=(A=t.value.search)==null?void 0:A.options,h=u&&typeof u=="object",p=h&&((S=(C=u.locales)==null?void 0:C[e.value])==null?void 0:S.translations)||null,g=h&&u.translations||null;let L=p,k=g,V=o;const T=i.pop();for(const U of i){let G=null;const K=V==null?void 0:V[U];K&&(G=V=K);const ne=k==null?void 0:k[U];ne&&(G=k=ne);const ae=L==null?void 0:L[U];ae&&(G=L=ae),K||(V=G),ne||(k=G),ae||(L=G)}return(L==null?void 0:L[T])??(k==null?void 0:k[T])??(V==null?void 0:V[T])??""}return n}const Gn=["aria-label"],jn={class:"DocSearch-Button-Container"},zn=v("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),qn={class:"DocSearch-Button-Placeholder"},Kn=v("span",{class:"DocSearch-Button-Keys"},[v("kbd",{class:"DocSearch-Button-Key"}),v("kbd",{class:"DocSearch-Button-Key"},"K")],-1),ge=_({__name:"VPNavBarSearchButton",setup(o){const t=Un({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,s)=>(a(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[v("span",jn,[zn,v("span",qn,I(r(t)("button.buttonText")),1)]),Kn],8,Gn))}}),Wn={class:"VPNavBarSearch"},Rn={id:"local-search"},Jn={key:1,id:"docsearch"},Yn=_({__name:"VPNavBarSearch",setup(o){const e=Je(()=>Ye(()=>import("./VPLocalSearchBox.C1YqNsMY.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:n}=P(),s=w(!1),i=w(!1);R(()=>{});function u(){s.value||(s.value=!0,setTimeout(h,16))}function h(){const k=new Event("keydown");k.key="k",k.metaKey=!0,window.dispatchEvent(k),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||h()},16)}function p(k){const V=k.target,T=V.tagName;return V.isContentEditable||T==="INPUT"||T==="SELECT"||T==="TEXTAREA"}const g=w(!1);le("k",k=>{(k.ctrlKey||k.metaKey)&&(k.preventDefault(),g.value=!0)}),le("/",k=>{p(k)||(k.preventDefault(),g.value=!0)});const L="local";return(k,V)=>{var T;return a(),c("div",Wn,[r(L)==="local"?(a(),c(M,{key:0},[g.value?(a(),$(r(e),{key:0,onClose:V[0]||(V[0]=A=>g.value=!1)})):f("",!0),v("div",Rn,[m(ge,{onClick:V[1]||(V[1]=A=>g.value=!0)})])],64)):r(L)==="algolia"?(a(),c(M,{key:1},[s.value?(a(),$(r(t),{key:0,algolia:((T=r(n).search)==null?void 0:T.options)??r(n).algolia,onVnodeBeforeMount:V[2]||(V[2]=A=>i.value=!0)},null,8,["algolia"])):f("",!0),i.value?f("",!0):(a(),c("div",Jn,[m(ge,{onClick:u})]))],64)):f("",!0)])}}}),Qn=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=P();return(t,n)=>r(e).socialLinks?(a(),$($e,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Xn=b(Qn,[["__scopeId","data-v-ef6192dc"]]),Zn=["href","rel","target"],xn={key:1},ea={key:2},ta=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=P(),{hasSidebar:n}=O(),{currentLang:s}=J(),i=y(()=>{var p;return typeof t.value.logoLink=="string"?t.value.logoLink:(p=t.value.logoLink)==null?void 0:p.link}),u=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.rel}),h=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.target});return(p,g)=>(a(),c("div",{class:N(["VPNavBarTitle",{"has-sidebar":r(n)}])},[v("a",{class:"title",href:i.value??r(fe)(r(s).link),rel:u.value,target:h.value},[l(p.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),$(X,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):f("",!0),r(t).siteTitle?(a(),c("span",xn,I(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),c("span",ea,I(r(e).title),1)):f("",!0),l(p.$slots,"nav-bar-title-after",{},void 0,!0)],8,Zn)],2))}}),oa=b(ta,[["__scopeId","data-v-0ad69264"]]),sa={class:"items"},na={class:"title"},aa=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=P(),{localeLinks:t,currentLang:n}=J({correspondingLink:!0});return(s,i)=>r(t).length&&r(n).label?(a(),$(be,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:d(()=>[v("div",sa,[v("p",na,I(r(n).label),1),(a(!0),c(M,null,E(r(t),u=>(a(),$(se,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),ra=b(aa,[["__scopeId","data-v-acee064b"]]),ia=o=>(B("data-v-844edcde"),o=o(),H(),o),la={class:"wrapper"},ca={class:"container"},ua={class:"title"},da={class:"content"},va={class:"content-body"},pa=ia(()=>v("div",{class:"divider"},[v("div",{class:"divider-line"})],-1)),ha=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const{y:e}=Se(),{hasSidebar:t}=O(),{frontmatter:n}=P(),s=w({});return ye(()=>{s.value={"has-sidebar":t.value,home:n.value.layout==="home",top:e.value===0}}),(i,u)=>(a(),c("div",{class:N(["VPNavBar",s.value])},[v("div",la,[v("div",ca,[v("div",ua,[m(oa,null,{"nav-bar-title-before":d(()=>[l(i.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(i.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),v("div",da,[v("div",va,[l(i.$slots,"nav-bar-content-before",{},void 0,!0),m(Yn,{class:"search"}),m(On,{class:"menu"}),m(ra,{class:"translations"}),m(Gs,{class:"appearance"}),m(Xn,{class:"social-links"}),m(Ln,{class:"extra"}),l(i.$slots,"nav-bar-content-after",{},void 0,!0),m(Nn,{class:"hamburger",active:i.isScreenOpen,onClick:u[0]||(u[0]=h=>i.$emit("toggle-screen"))},null,8,["active"])])])])]),pa],2))}}),fa=b(ha,[["__scopeId","data-v-844edcde"]]),_a={key:0,class:"VPNavScreenAppearance"},ma={class:"text"},ka=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=P();return(n,s)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",_a,[v("p",ma,I(r(t).darkModeSwitchLabel||"Appearance"),1),m(me)])):f("",!0)}}),ba=b(ka,[["__scopeId","data-v-338d9b48"]]),$a=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,n)=>(a(),$(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),ga=b($a,[["__scopeId","data-v-1a934d60"]]),ya=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,n)=>(a(),$(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:d(()=>[D(I(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ee=b(ya,[["__scopeId","data-v-aea78dd1"]]),Pa={class:"VPNavScreenMenuGroupSection"},La={key:0,class:"title"},Va=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Pa,[e.text?(a(),c("p",La,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,n=>(a(),$(Ee,{key:n.text,item:n},null,8,["item"]))),128))]))}}),Sa=b(Va,[["__scopeId","data-v-f60dbfa7"]]),Ta=o=>(B("data-v-d2212c70"),o=o(),H(),o),Ia=["aria-controls","aria-expanded"],wa=["innerHTML"],Na=Ta(()=>v("span",{class:"vpi-plus button-icon"},null,-1)),Ma=["id"],Aa={key:1,class:"group"},Ca=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=w(!1),n=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function s(){t.value=!t.value}return(i,u)=>(a(),c("div",{class:N(["VPNavScreenMenuGroup",{open:t.value}])},[v("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:s},[v("span",{class:"button-text",innerHTML:i.text},null,8,wa),Na],8,Ia),v("div",{id:n.value,class:"items"},[(a(!0),c(M,null,E(i.items,h=>(a(),c(M,{key:h.text},["link"in h?(a(),c("div",{key:h.text,class:"item"},[m(Ee,{item:h},null,8,["item"])])):(a(),c("div",Aa,[m(Sa,{text:h.text,items:h.items},null,8,["text","items"])]))],64))),128))],8,Ma)],2))}}),Ba=b(Ca,[["__scopeId","data-v-d2212c70"]]),Ha={key:0,class:"VPNavScreenMenu"},Ea=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=P();return(t,n)=>r(e).nav?(a(),c("nav",Ha,[(a(!0),c(M,null,E(r(e).nav,s=>(a(),c(M,{key:s.text},["link"in s?(a(),$(ga,{key:0,item:s},null,8,["item"])):(a(),$(Ba,{key:1,text:s.text||"",items:s.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Fa=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=P();return(t,n)=>r(e).socialLinks?(a(),$($e,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Fe=o=>(B("data-v-516e4bc3"),o=o(),H(),o),Da=Fe(()=>v("span",{class:"vpi-languages icon lang"},null,-1)),Oa=Fe(()=>v("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Ua={class:"list"},Ga=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=J({correspondingLink:!0}),n=w(!1);function s(){n.value=!n.value}return(i,u)=>r(e).length&&r(t).label?(a(),c("div",{key:0,class:N(["VPNavScreenTranslations",{open:n.value}])},[v("button",{class:"title",onClick:s},[Da,D(" "+I(r(t).label)+" ",1),Oa]),v("ul",Ua,[(a(!0),c(M,null,E(r(e),h=>(a(),c("li",{key:h.link,class:"item"},[m(F,{class:"link",href:h.link},{default:d(()=>[D(I(h.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),ja=b(Ga,[["__scopeId","data-v-516e4bc3"]]),za={class:"container"},qa=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=w(null),t=Te(oe?document.body:null);return(n,s)=>(a(),$(ve,{name:"fade",onEnter:s[0]||(s[0]=i=>t.value=!0),onAfterLeave:s[1]||(s[1]=i=>t.value=!1)},{default:d(()=>[n.open?(a(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[v("div",za,[l(n.$slots,"nav-screen-content-before",{},void 0,!0),m(Ea,{class:"menu"}),m(ja,{class:"translations"}),m(ba,{class:"appearance"}),m(Fa,{class:"social-links"}),l(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),Ka=b(qa,[["__scopeId","data-v-57cce842"]]),Wa={key:0,class:"VPNav"},Ra=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=ws(),{frontmatter:s}=P(),i=y(()=>s.value.navbar!==!1);return Ie("close-screen",t),Z(()=>{oe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(u,h)=>i.value?(a(),c("header",Wa,[m(fa,{"is-screen-open":r(e),onToggleScreen:r(n)},{"nav-bar-title-before":d(()=>[l(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":d(()=>[l(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":d(()=>[l(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),m(Ka,{open:r(e)},{"nav-screen-content-before":d(()=>[l(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":d(()=>[l(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),Ja=b(Ra,[["__scopeId","data-v-7ad780c2"]]),De=o=>(B("data-v-c24f735a"),o=o(),H(),o),Ya=["role","tabindex"],Qa=De(()=>v("div",{class:"indicator"},null,-1)),Xa=De(()=>v("span",{class:"vpi-chevron-right caret-icon"},null,-1)),Za=[Xa],xa={key:1,class:"items"},er=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:n,isLink:s,isActiveLink:i,hasActiveLink:u,hasChildren:h,toggle:p}=bt(y(()=>e.item)),g=y(()=>h.value?"section":"div"),L=y(()=>s.value?"a":"div"),k=y(()=>h.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),V=y(()=>s.value?void 0:"button"),T=y(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":s.value},{"is-active":i.value},{"has-active":u.value}]);function A(S){"key"in S&&S.key!=="Enter"||!e.item.link&&p()}function C(){e.item.link&&p()}return(S,U)=>{const G=q("VPSidebarItem",!0);return a(),$(W(g.value),{class:N(["VPSidebarItem",T.value])},{default:d(()=>[S.item.text?(a(),c("div",Y({key:0,class:"item",role:V.value},Xe(S.item.items?{click:A,keydown:A}:{},!0),{tabindex:S.item.items&&0}),[Qa,S.item.link?(a(),$(F,{key:0,tag:L.value,class:"link",href:S.item.link,rel:S.item.rel,target:S.item.target},{default:d(()=>[(a(),$(W(k.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),$(W(k.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null&&S.item.items&&S.item.items.length?(a(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Qe(C,["enter"]),tabindex:"0"},Za,32)):f("",!0)],16,Ya)):f("",!0),S.item.items&&S.item.items.length?(a(),c("div",xa,[S.depth<5?(a(!0),c(M,{key:0},E(S.item.items,K=>(a(),$(G,{key:K.text,item:K,depth:S.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),tr=b(er,[["__scopeId","data-v-c24f735a"]]),Oe=o=>(B("data-v-4871f9f5"),o=o(),H(),o),or=Oe(()=>v("div",{class:"curtain"},null,-1)),sr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},nr=Oe(()=>v("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),ar=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=O(),n=o,s=w(null),i=Te(oe?document.body:null);return j([n,s],()=>{var u;n.open?(i.value=!0,(u=s.value)==null||u.focus()):i.value=!1},{immediate:!0,flush:"post"}),(u,h)=>r(t)?(a(),c("aside",{key:0,class:N(["VPSidebar",{open:u.open}]),ref_key:"navEl",ref:s,onClick:h[0]||(h[0]=Ze(()=>{},["stop"]))},[or,v("nav",sr,[nr,l(u.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),c(M,null,E(r(e),p=>(a(),c("div",{key:p.text,class:"group"},[m(tr,{item:p,depth:0},null,8,["item"])]))),128)),l(u.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),rr=b(ar,[["__scopeId","data-v-4871f9f5"]]),ir=_({__name:"VPSkipLink",setup(o){const e=ee(),t=w();j(()=>e.path,()=>t.value.focus());function n({target:s}){const i=document.getElementById(decodeURIComponent(s.hash).slice(1));if(i){const u=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",u)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",u),i.focus(),window.scrollTo(0,0)}}return(s,i)=>(a(),c(M,null,[v("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),v("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),lr=b(ir,[["__scopeId","data-v-c8291ffa"]]),cr=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:n}=O(),s=ee();j(()=>s.path,n),kt(e,n);const{frontmatter:i}=P(),u=xe(),h=y(()=>!!u["home-hero-image"]);return Ie("hero-image-slot-exists",h),(p,g)=>{const L=q("Content");return r(i).layout!==!1?(a(),c("div",{key:0,class:N(["Layout",r(i).pageClass])},[l(p.$slots,"layout-top",{},void 0,!0),m(lr),m(st,{class:"backdrop",show:r(e),onClick:r(n)},null,8,["show","onClick"]),m(Ja,null,{"nav-bar-title-before":d(()=>[l(p.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(p.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":d(()=>[l(p.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":d(()=>[l(p.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":d(()=>[l(p.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":d(()=>[l(p.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),m(Is,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),m(rr,{open:r(e)},{"sidebar-nav-before":d(()=>[l(p.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":d(()=>[l(p.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),m(ls,null,{"page-top":d(()=>[l(p.$slots,"page-top",{},void 0,!0)]),"page-bottom":d(()=>[l(p.$slots,"page-bottom",{},void 0,!0)]),"not-found":d(()=>[l(p.$slots,"not-found",{},void 0,!0)]),"home-hero-before":d(()=>[l(p.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":d(()=>[l(p.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(p.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(p.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(p.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(p.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":d(()=>[l(p.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":d(()=>[l(p.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":d(()=>[l(p.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":d(()=>[l(p.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":d(()=>[l(p.$slots,"doc-before",{},void 0,!0)]),"doc-after":d(()=>[l(p.$slots,"doc-after",{},void 0,!0)]),"doc-top":d(()=>[l(p.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":d(()=>[l(p.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":d(()=>[l(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":d(()=>[l(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":d(()=>[l(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),m(ps),l(p.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),$(L,{key:1}))}}}),ur=b(cr,[["__scopeId","data-v-d8b57b2d"]]),vr={Layout:ur,enhanceApp:({app:o})=>{o.component("Badge",et)}};export{Un as c,vr as t,P as u}; +const __vite__fileDeps=["assets/chunks/VPLocalSearchBox.BqS5s0On.js","assets/chunks/framework.D4PmY8Hg.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]); +import{d as _,o as a,c,r as l,n as N,a as D,t as I,b as $,w as d,e as f,T as ve,_ as b,u as Ue,i as Ge,f as je,g as pe,h as y,j as v,k as r,p as B,l as H,m as z,q as ie,s as w,v as j,x as Z,y as R,z as he,A as ye,B as ze,C as qe,D as q,F as M,E,G as Pe,H as x,I as m,J as W,K as Le,L as ee,M as Y,N as te,O as Ke,P as Ve,Q as le,R as We,S as Se,U as oe,V as Re,W as Je,X as Ye,Y as Te,Z as Ie,$ as Qe,a0 as Xe,a1 as Ze,a2 as xe}from"./framework.D4PmY8Hg.js";const et=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),c("span",{class:N(["VPBadge",e.type])},[l(e.$slots,"default",{},()=>[D(I(e.text),1)])],2))}}),tt={key:0,class:"VPBackdrop"},ot=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),$(ve,{name:"fade"},{default:d(()=>[e.show?(a(),c("div",tt)):f("",!0)]),_:1}))}}),st=b(ot,[["__scopeId","data-v-54a304ca"]]),P=Ue;function nt(o,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(o,e):(o(),(n=!0)&&setTimeout(()=>n=!1,e))}}function ce(o){return/^\//.test(o)?o:`/${o}`}function fe(o){const{pathname:e,search:t,hash:n,protocol:s}=new URL(o,"http://a.com");if(Ge(o)||o.startsWith("#")||!s.startsWith("http")||!je(e))return o;const{site:i}=P(),u=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${n}`);return pe(u)}function J({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:n,theme:s,hash:i}=P(),u=y(()=>{var p,g;return{label:(p=e.value.locales[t.value])==null?void 0:p.label,link:((g=e.value.locales[t.value])==null?void 0:g.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:y(()=>Object.entries(e.value.locales).flatMap(([p,g])=>u.value.label===g.label?[]:{text:g.label,link:at(g.link||(p==="root"?"/":`/${p}/`),s.value.i18nRouting!==!1&&o,n.value.relativePath.slice(u.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:u}}function at(o,e,t,n){return e?o.replace(/\/$/,"")+ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):o}const rt=o=>(B("data-v-6ff51ddd"),o=o(),H(),o),it={class:"NotFound"},lt={class:"code"},ct={class:"title"},ut=rt(()=>v("div",{class:"divider"},null,-1)),dt={class:"quote"},vt={class:"action"},pt=["href","aria-label"],ht=_({__name:"NotFound",setup(o){const{theme:e}=P(),{currentLang:t}=J();return(n,s)=>{var i,u,h,p,g;return a(),c("div",it,[v("p",lt,I(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),v("h1",ct,I(((u=r(e).notFound)==null?void 0:u.title)??"PAGE NOT FOUND"),1),ut,v("blockquote",dt,I(((h=r(e).notFound)==null?void 0:h.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),v("div",vt,[v("a",{class:"link",href:r(pe)(r(t).link),"aria-label":((p=r(e).notFound)==null?void 0:p.linkLabel)??"go to home"},I(((g=r(e).notFound)==null?void 0:g.linkText)??"Take me home"),9,pt)])])}}}),ft=b(ht,[["__scopeId","data-v-6ff51ddd"]]);function we(o,e){if(Array.isArray(o))return Q(o);if(o==null)return[];e=ce(e);const t=Object.keys(o).sort((s,i)=>i.split("/").length-s.split("/").length).find(s=>e.startsWith(ce(s))),n=t?o[t]:[];return Array.isArray(n)?Q(n):Q(n.items,n.base)}function _t(o){const e=[];let t=0;for(const n in o){const s=o[n];if(s.items){t=e.push(s);continue}e[t]||e.push({items:[]}),e[t].items.push(s)}return e}function mt(o){const e=[];function t(n){for(const s of n)s.text&&s.link&&e.push({text:s.text,link:s.link,docFooterText:s.docFooterText}),s.items&&t(s.items)}return t(o),e}function ue(o,e){return Array.isArray(e)?e.some(t=>ue(o,t)):z(o,e.link)?!0:e.items?ue(o,e.items):!1}function Q(o,e){return[...o].map(t=>{const n={...t},s=n.base||e;return s&&n.link&&(n.link=s+n.link),n.items&&(n.items=Q(n.items,s)),n})}function O(){const{frontmatter:o,page:e,theme:t}=P(),n=ie("(min-width: 960px)"),s=w(!1),i=y(()=>{const C=t.value.sidebar,S=e.value.relativePath;return C?we(C,S):[]}),u=w(i.value);j(i,(C,S)=>{JSON.stringify(C)!==JSON.stringify(S)&&(u.value=i.value)});const h=y(()=>o.value.sidebar!==!1&&u.value.length>0&&o.value.layout!=="home"),p=y(()=>g?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),g=y(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),L=y(()=>h.value&&n.value),k=y(()=>h.value?_t(u.value):[]);function V(){s.value=!0}function T(){s.value=!1}function A(){s.value?T():V()}return{isOpen:s,sidebar:u,sidebarGroups:k,hasSidebar:h,hasAside:g,leftAside:p,isSidebarEnabled:L,open:V,close:T,toggle:A}}function kt(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),R(()=>{window.addEventListener("keyup",n)}),he(()=>{window.removeEventListener("keyup",n)});function n(s){s.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function bt(o){const{page:e,hash:t}=P(),n=w(!1),s=y(()=>o.value.collapsed!=null),i=y(()=>!!o.value.link),u=w(!1),h=()=>{u.value=z(e.value.relativePath,o.value.link)};j([e,o,t],h),R(h);const p=y(()=>u.value?!0:o.value.items?ue(e.value.relativePath,o.value.items):!1),g=y(()=>!!(o.value.items&&o.value.items.length));Z(()=>{n.value=!!(s.value&&o.value.collapsed)}),ye(()=>{(u.value||p.value)&&(n.value=!1)});function L(){s.value&&(n.value=!n.value)}return{collapsed:n,collapsible:s,isLink:i,isActiveLink:u,hasActiveLink:p,hasChildren:g,toggle:L}}function $t(){const{hasSidebar:o}=O(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const de=[];function Ne(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function _e(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{element:t,title:gt(t),link:"#"+t.id,level:n}});return yt(e,o)}function gt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function yt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,s]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(u=>u.level>=n&&u.level<=s),de.length=0;for(const{element:u,link:h}of o)de.push({element:u,link:h});const i=[];e:for(let u=0;u=0;p--){const g=o[p];if(g.level{requestAnimationFrame(i),window.addEventListener("scroll",n)}),ze(()=>{u(location.hash)}),he(()=>{window.removeEventListener("scroll",n)});function i(){if(!t.value)return;const h=window.scrollY,p=window.innerHeight,g=document.body.offsetHeight,L=Math.abs(h+p-g)<1,k=de.map(({element:T,link:A})=>({link:A,top:Lt(T)})).filter(({top:T})=>!Number.isNaN(T)).sort((T,A)=>T.top-A.top);if(!k.length){u(null);return}if(h<1){u(null);return}if(L){u(k[k.length-1].link);return}let V=null;for(const{link:T,top:A}of k){if(A>h+qe()+4)break;V=T}u(V)}function u(h){s&&s.classList.remove("active"),h==null?s=null:s=o.value.querySelector(`a[href="${decodeURIComponent(h)}"]`);const p=s;p?(p.classList.add("active"),e.value.style.top=p.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Lt(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const Vt=["href","title"],St=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const n=t.href.split("#")[1],s=document.getElementById(decodeURIComponent(n));s==null||s.focus({preventScroll:!0})}return(t,n)=>{const s=q("VPDocOutlineItem",!0);return a(),c("ul",{class:N(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),c(M,null,E(t.headers,({children:i,link:u,title:h})=>(a(),c("li",null,[v("a",{class:"outline-link",href:u,onClick:e,title:h},I(h),9,Vt),i!=null&&i.length?(a(),$(s,{key:0,headers:i},null,8,["headers"])):f("",!0)]))),256))],2)}}}),Me=b(St,[["__scopeId","data-v-53c99d69"]]),Tt={class:"content"},It={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},wt=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=P(),n=Pe([]);x(()=>{n.value=_e(e.value.outline??t.value.outline)});const s=w(),i=w();return Pt(s,i),(u,h)=>(a(),c("nav",{"aria-labelledby":"doc-outline-aria-label",class:N(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:s},[v("div",Tt,[v("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),v("div",It,I(r(Ne)(r(t))),1),m(Me,{headers:n.value,root:!0},null,8,["headers"])])],2))}}),Nt=b(wt,[["__scopeId","data-v-f610f197"]]),Mt={class:"VPDocAsideCarbonAds"},At=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,n)=>(a(),c("div",Mt,[m(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ct=o=>(B("data-v-cb998dce"),o=o(),H(),o),Bt={class:"VPDocAside"},Ht=Ct(()=>v("div",{class:"spacer"},null,-1)),Et=_({__name:"VPDocAside",setup(o){const{theme:e}=P();return(t,n)=>(a(),c("div",Bt,[l(t.$slots,"aside-top",{},void 0,!0),l(t.$slots,"aside-outline-before",{},void 0,!0),m(Nt),l(t.$slots,"aside-outline-after",{},void 0,!0),Ht,l(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),$(At,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):f("",!0),l(t.$slots,"aside-ads-after",{},void 0,!0),l(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Ft=b(Et,[["__scopeId","data-v-cb998dce"]]);function Dt(){const{theme:o,page:e}=P();return y(()=>{const{text:t="Edit this page",pattern:n=""}=o.value.editLink||{};let s;return typeof n=="function"?s=n(e.value):s=n.replace(/:path/g,e.value.filePath),{url:s,text:t}})}function Ot(){const{page:o,theme:e,frontmatter:t}=P();return y(()=>{var g,L,k,V,T,A,C,S;const n=we(e.value.sidebar,o.value.relativePath),s=mt(n),i=Ut(s,U=>U.link.replace(/[?#].*$/,"")),u=i.findIndex(U=>z(o.value.relativePath,U.link)),h=((g=e.value.docFooter)==null?void 0:g.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((L=e.value.docFooter)==null?void 0:L.next)===!1&&!t.value.next||t.value.next===!1;return{prev:h?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((k=i[u-1])==null?void 0:k.docFooterText)??((V=i[u-1])==null?void 0:V.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((T=i[u-1])==null?void 0:T.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[u+1])==null?void 0:A.docFooterText)??((C=i[u+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((S=i[u+1])==null?void 0:S.link)}}})}function Ut(o,e){const t=new Set;return o.filter(n=>{const s=e(n);return t.has(s)?!1:t.add(s)})}const F=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.tag??(e.href?"a":"span")),n=y(()=>e.href&&Le.test(e.href)||e.target==="_blank");return(s,i)=>(a(),$(W(t.value),{class:N(["VPLink",{link:s.href,"vp-external-link-icon":n.value,"no-icon":s.noIcon}]),href:s.href?r(fe)(s.href):void 0,target:s.target??(n.value?"_blank":void 0),rel:s.rel??(n.value?"noreferrer":void 0)},{default:d(()=>[l(s.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Gt={class:"VPLastUpdated"},jt=["datetime"],zt=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,frontmatter:n,lang:s}=P(),i=y(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),u=y(()=>i.value.toISOString()),h=w("");return R(()=>{Z(()=>{var p,g,L;h.value=new Intl.DateTimeFormat((g=(p=e.value.lastUpdated)==null?void 0:p.formatOptions)!=null&&g.forceLocale?s.value:void 0,((L=e.value.lastUpdated)==null?void 0:L.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(i.value)})}),(p,g)=>{var L;return a(),c("p",Gt,[D(I(((L=r(e).lastUpdated)==null?void 0:L.text)||r(e).lastUpdatedText||"Last updated")+": ",1),v("time",{datetime:u.value},I(h.value),9,jt)])}}}),qt=b(zt,[["__scopeId","data-v-19a7ae4e"]]),Ae=o=>(B("data-v-5941af80"),o=o(),H(),o),Kt={key:0,class:"VPDocFooter"},Wt={key:0,class:"edit-info"},Rt={key:0,class:"edit-link"},Jt=Ae(()=>v("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),Yt={key:1,class:"last-updated"},Qt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Xt=Ae(()=>v("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),Zt={class:"pager"},xt=["innerHTML"],eo=["innerHTML"],to={class:"pager"},oo=["innerHTML"],so=["innerHTML"],no=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:n}=P(),s=Dt(),i=Ot(),u=y(()=>e.value.editLink&&n.value.editLink!==!1),h=y(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),p=y(()=>u.value||h.value||i.value.prev||i.value.next);return(g,L)=>{var k,V,T,A;return p.value?(a(),c("footer",Kt,[l(g.$slots,"doc-footer-before",{},void 0,!0),u.value||h.value?(a(),c("div",Wt,[u.value?(a(),c("div",Rt,[m(F,{class:"edit-link-button",href:r(s).url,"no-icon":!0},{default:d(()=>[Jt,D(" "+I(r(s).text),1)]),_:1},8,["href"])])):f("",!0),h.value?(a(),c("div",Yt,[m(qt)])):f("",!0)])):f("",!0),(k=r(i).prev)!=null&&k.link||(V=r(i).next)!=null&&V.link?(a(),c("nav",Qt,[Xt,v("div",Zt,[(T=r(i).prev)!=null&&T.link?(a(),$(F,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:d(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,xt),v("span",{class:"title",innerHTML:r(i).prev.text},null,8,eo)]}),_:1},8,["href"])):f("",!0)]),v("div",to,[(A=r(i).next)!=null&&A.link?(a(),$(F,{key:0,class:"pager-link next",href:r(i).next.link},{default:d(()=>{var C;return[v("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,oo),v("span",{class:"title",innerHTML:r(i).next.text},null,8,so)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),ao=b(no,[["__scopeId","data-v-5941af80"]]),ro=o=>(B("data-v-e6f2a212"),o=o(),H(),o),io={class:"container"},lo=ro(()=>v("div",{class:"aside-curtain"},null,-1)),co={class:"aside-container"},uo={class:"aside-content"},vo={class:"content"},po={class:"content-container"},ho={class:"main"},fo=_({__name:"VPDoc",setup(o){const{theme:e}=P(),t=ee(),{hasSidebar:n,hasAside:s,leftAside:i}=O(),u=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(h,p)=>{const g=q("Content");return a(),c("div",{class:N(["VPDoc",{"has-sidebar":r(n),"has-aside":r(s)}])},[l(h.$slots,"doc-top",{},void 0,!0),v("div",io,[r(s)?(a(),c("div",{key:0,class:N(["aside",{"left-aside":r(i)}])},[lo,v("div",co,[v("div",uo,[m(Ft,null,{"aside-top":d(()=>[l(h.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":d(()=>[l(h.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":d(()=>[l(h.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(h.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(h.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(h.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),v("div",vo,[v("div",po,[l(h.$slots,"doc-before",{},void 0,!0),v("main",ho,[m(g,{class:N(["vp-doc",[u.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),m(ao,null,{"doc-footer-before":d(()=>[l(h.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),l(h.$slots,"doc-after",{},void 0,!0)])])]),l(h.$slots,"doc-bottom",{},void 0,!0)],2)}}}),_o=b(fo,[["__scopeId","data-v-e6f2a212"]]),mo=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.href&&Le.test(e.href)),n=y(()=>e.tag||e.href?"a":"button");return(s,i)=>(a(),$(W(n.value),{class:N(["VPButton",[s.size,s.theme]]),href:s.href?r(fe)(s.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:d(()=>[D(I(s.text),1)]),_:1},8,["class","href","target","rel"]))}}),ko=b(mo,[["__scopeId","data-v-c9cf0e3c"]]),bo=["src","alt"],$o=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const n=q("VPImage",!0);return e.image?(a(),c(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),c("img",Y({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(pe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,bo)):(a(),c(M,{key:1},[m(n,Y({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),m(n,Y({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),X=b($o,[["__scopeId","data-v-ab19afbb"]]),go=o=>(B("data-v-b10c5094"),o=o(),H(),o),yo={class:"container"},Po={class:"main"},Lo={key:0,class:"name"},Vo=["innerHTML"],So=["innerHTML"],To=["innerHTML"],Io={key:0,class:"actions"},wo={key:0,class:"image"},No={class:"image-container"},Mo=go(()=>v("div",{class:"image-bg"},null,-1)),Ao=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=te("hero-image-slot-exists");return(t,n)=>(a(),c("div",{class:N(["VPHero",{"has-image":t.image||r(e)}])},[v("div",yo,[v("div",Po,[l(t.$slots,"home-hero-info-before",{},void 0,!0),l(t.$slots,"home-hero-info",{},()=>[t.name?(a(),c("h1",Lo,[v("span",{innerHTML:t.name,class:"clip"},null,8,Vo)])):f("",!0),t.text?(a(),c("p",{key:1,innerHTML:t.text,class:"text"},null,8,So)):f("",!0),t.tagline?(a(),c("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,To)):f("",!0)],!0),l(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),c("div",Io,[(a(!0),c(M,null,E(t.actions,s=>(a(),c("div",{key:s.link,class:"action"},[m(ko,{tag:"a",size:"medium",theme:s.theme,text:s.text,href:s.link,target:s.target,rel:s.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),c("div",wo,[v("div",No,[Mo,l(t.$slots,"home-hero-image",{},()=>[t.image?(a(),$(X,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Co=b(Ao,[["__scopeId","data-v-b10c5094"]]),Bo=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=P();return(t,n)=>r(e).hero?(a(),$(Co,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":d(()=>[l(t.$slots,"home-hero-info-before")]),"home-hero-info":d(()=>[l(t.$slots,"home-hero-info")]),"home-hero-info-after":d(()=>[l(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":d(()=>[l(t.$slots,"home-hero-actions-after")]),"home-hero-image":d(()=>[l(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Ho=o=>(B("data-v-bd37d1a2"),o=o(),H(),o),Eo={class:"box"},Fo={key:0,class:"icon"},Do=["innerHTML"],Oo=["innerHTML"],Uo=["innerHTML"],Go={key:4,class:"link-text"},jo={class:"link-text-value"},zo=Ho(()=>v("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),qo=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),$(F,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:d(()=>[v("article",Eo,[typeof e.icon=="object"&&e.icon.wrap?(a(),c("div",Fo,[m(X,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),$(X,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Do)):f("",!0),v("h2",{class:"title",innerHTML:e.title},null,8,Oo),e.details?(a(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,Uo)):f("",!0),e.linkText?(a(),c("div",Go,[v("p",jo,[D(I(e.linkText)+" ",1),zo])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Ko=b(qo,[["__scopeId","data-v-bd37d1a2"]]),Wo={key:0,class:"VPFeatures"},Ro={class:"container"},Jo={class:"items"},Yo=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=y(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,s)=>n.features?(a(),c("div",Wo,[v("div",Ro,[v("div",Jo,[(a(!0),c(M,null,E(n.features,i=>(a(),c("div",{key:i.title,class:N(["item",[t.value]])},[m(Ko,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),Qo=b(Yo,[["__scopeId","data-v-b1eea84a"]]),Xo=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=P();return(t,n)=>r(e).features?(a(),$(Qo,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):f("",!0)}}),Zo=_({__name:"VPHomeContent",setup(o){const{width:e}=Ke({initialWidth:0,includeScrollbar:!1});return(t,n)=>(a(),c("div",{class:"vp-doc container",style:Ve(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[l(t.$slots,"default",{},void 0,!0)],4))}}),xo=b(Zo,[["__scopeId","data-v-c141a4bd"]]),es={class:"VPHome"},ts=_({__name:"VPHome",setup(o){const{frontmatter:e}=P();return(t,n)=>{const s=q("Content");return a(),c("div",es,[l(t.$slots,"home-hero-before",{},void 0,!0),m(Bo,null,{"home-hero-info-before":d(()=>[l(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),l(t.$slots,"home-hero-after",{},void 0,!0),l(t.$slots,"home-features-before",{},void 0,!0),m(Xo),l(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),$(xo,{key:0},{default:d(()=>[m(s)]),_:1})):(a(),$(s,{key:1}))])}}}),os=b(ts,[["__scopeId","data-v-07b1ad08"]]),ss={},ns={class:"VPPage"};function as(o,e){const t=q("Content");return a(),c("div",ns,[l(o.$slots,"page-top"),m(t),l(o.$slots,"page-bottom")])}const rs=b(ss,[["render",as]]),is=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=P(),{hasSidebar:n}=O();return(s,i)=>(a(),c("div",{class:N(["VPContent",{"has-sidebar":r(n),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?l(s.$slots,"not-found",{key:0},()=>[m(ft)],!0):r(t).layout==="page"?(a(),$(rs,{key:1},{"page-top":d(()=>[l(s.$slots,"page-top",{},void 0,!0)]),"page-bottom":d(()=>[l(s.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),$(os,{key:2},{"home-hero-before":d(()=>[l(s.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":d(()=>[l(s.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(s.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(s.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(s.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(s.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":d(()=>[l(s.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":d(()=>[l(s.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":d(()=>[l(s.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),$(W(r(t).layout),{key:3})):(a(),$(_o,{key:4},{"doc-top":d(()=>[l(s.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":d(()=>[l(s.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":d(()=>[l(s.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":d(()=>[l(s.$slots,"doc-before",{},void 0,!0)]),"doc-after":d(()=>[l(s.$slots,"doc-after",{},void 0,!0)]),"aside-top":d(()=>[l(s.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":d(()=>[l(s.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(s.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(s.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(s.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":d(()=>[l(s.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ls=b(is,[["__scopeId","data-v-9a6c75ad"]]),cs={class:"container"},us=["innerHTML"],ds=["innerHTML"],vs=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=P(),{hasSidebar:n}=O();return(s,i)=>r(e).footer&&r(t).footer!==!1?(a(),c("footer",{key:0,class:N(["VPFooter",{"has-sidebar":r(n)}])},[v("div",cs,[r(e).footer.message?(a(),c("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,us)):f("",!0),r(e).footer.copyright?(a(),c("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,ds)):f("",!0)])],2)):f("",!0)}}),ps=b(vs,[["__scopeId","data-v-566314d4"]]);function hs(){const{theme:o,frontmatter:e}=P(),t=Pe([]),n=y(()=>t.value.length>0);return x(()=>{t.value=_e(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:n}}const fs=o=>(B("data-v-883964e0"),o=o(),H(),o),_s={class:"menu-text"},ms=fs(()=>v("span",{class:"vpi-chevron-right icon"},null,-1)),ks={class:"header"},bs={class:"outline"},$s=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=P(),n=w(!1),s=w(0),i=w(),u=w();function h(k){var V;(V=i.value)!=null&&V.contains(k.target)||(n.value=!1)}j(n,k=>{if(k){document.addEventListener("click",h);return}document.removeEventListener("click",h)}),le("Escape",()=>{n.value=!1}),x(()=>{n.value=!1});function p(){n.value=!n.value,s.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function g(k){k.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),We(()=>{n.value=!1}))}function L(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(k,V)=>(a(),c("div",{class:"VPLocalNavOutlineDropdown",style:Ve({"--vp-vh":s.value+"px"}),ref_key:"main",ref:i},[k.headers.length>0?(a(),c("button",{key:0,onClick:p,class:N({open:n.value})},[v("span",_s,I(r(Ne)(r(t))),1),ms],2)):(a(),c("button",{key:1,onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)),m(ve,{name:"flyout"},{default:d(()=>[n.value?(a(),c("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:g},[v("div",ks,[v("a",{class:"top-link",href:"#",onClick:L},I(r(t).returnToTopLabel||"Return to top"),1)]),v("div",bs,[m(Me,{headers:k.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),gs=b($s,[["__scopeId","data-v-883964e0"]]),ys=o=>(B("data-v-2488c25a"),o=o(),H(),o),Ps={class:"container"},Ls=["aria-expanded"],Vs=ys(()=>v("span",{class:"vpi-align-left menu-icon"},null,-1)),Ss={class:"menu-text"},Ts=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=P(),{hasSidebar:n}=O(),{headers:s}=hs(),{y:i}=Se(),u=w(0);R(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{s.value=_e(t.value.outline??e.value.outline)});const h=y(()=>s.value.length===0),p=y(()=>h.value&&!n.value),g=y(()=>({VPLocalNav:!0,"has-sidebar":n.value,empty:h.value,fixed:p.value}));return(L,k)=>r(t).layout!=="home"&&(!p.value||r(i)>=u.value)?(a(),c("div",{key:0,class:N(g.value)},[v("div",Ps,[r(n)?(a(),c("button",{key:0,class:"menu","aria-expanded":L.open,"aria-controls":"VPSidebarNav",onClick:k[0]||(k[0]=V=>L.$emit("open-menu"))},[Vs,v("span",Ss,I(r(e).sidebarMenuLabel||"Menu"),1)],8,Ls)):f("",!0),m(gs,{headers:r(s),navHeight:u.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Is=b(Ts,[["__scopeId","data-v-2488c25a"]]);function ws(){const o=w(!1);function e(){o.value=!0,window.addEventListener("resize",s)}function t(){o.value=!1,window.removeEventListener("resize",s)}function n(){o.value?t():e()}function s(){window.outerWidth>=768&&t()}const i=ee();return j(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:n}}const Ns={},Ms={class:"VPSwitch",type:"button",role:"switch"},As={class:"check"},Cs={key:0,class:"icon"};function Bs(o,e){return a(),c("button",Ms,[v("span",As,[o.$slots.default?(a(),c("span",Cs,[l(o.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Hs=b(Ns,[["render",Bs],["__scopeId","data-v-b4ccac88"]]),Ce=o=>(B("data-v-7df97737"),o=o(),H(),o),Es=Ce(()=>v("span",{class:"vpi-sun sun"},null,-1)),Fs=Ce(()=>v("span",{class:"vpi-moon moon"},null,-1)),Ds=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=P(),n=te("toggle-appearance",()=>{e.value=!e.value}),s=y(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(i,u)=>(a(),$(Hs,{title:s.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(n)},{default:d(()=>[Es,Fs]),_:1},8,["title","aria-checked","onClick"]))}}),me=b(Ds,[["__scopeId","data-v-7df97737"]]),Os={key:0,class:"VPNavBarAppearance"},Us=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=P();return(t,n)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",Os,[m(me)])):f("",!0)}}),Gs=b(Us,[["__scopeId","data-v-283b26e9"]]),ke=w();let Be=!1,re=0;function js(o){const e=w(!1);if(oe){!Be&&zs(),re++;const t=j(ke,n=>{var s,i,u;n===o.el.value||(s=o.el.value)!=null&&s.contains(n)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(u=o.onBlur)==null||u.call(o))});he(()=>{t(),re--,re||qs()})}return Re(e)}function zs(){document.addEventListener("focusin",He),Be=!0,ke.value=document.activeElement}function qs(){document.removeEventListener("focusin",He)}function He(){ke.value=document.activeElement}const Ks={class:"VPMenuLink"},Ws=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=P();return(t,n)=>(a(),c("div",Ks,[m(F,{class:N({active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:d(()=>[D(I(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),se=b(Ws,[["__scopeId","data-v-f51f088d"]]),Rs={class:"VPMenuGroup"},Js={key:0,class:"title"},Ys=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Rs,[e.text?(a(),c("p",Js,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,n=>(a(),c(M,null,["link"in n?(a(),$(se,{key:0,item:n},null,8,["item"])):f("",!0)],64))),256))]))}}),Qs=b(Ys,[["__scopeId","data-v-a6b0397c"]]),Xs={class:"VPMenu"},Zs={key:0,class:"items"},xs=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),c("div",Xs,[e.items?(a(),c("div",Zs,[(a(!0),c(M,null,E(e.items,n=>(a(),c(M,{key:n.text},["link"in n?(a(),$(se,{key:0,item:n},null,8,["item"])):(a(),$(Qs,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0),l(e.$slots,"default",{},void 0,!0)]))}}),en=b(xs,[["__scopeId","data-v-e42ed9b3"]]),tn=o=>(B("data-v-af5898d3"),o=o(),H(),o),on=["aria-expanded","aria-label"],sn={key:0,class:"text"},nn=["innerHTML"],an=tn(()=>v("span",{class:"vpi-chevron-down text-icon"},null,-1)),rn={key:1,class:"vpi-more-horizontal icon"},ln={class:"menu"},cn=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=w(!1),t=w();js({el:t,onBlur:n});function n(){e.value=!1}return(s,i)=>(a(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=u=>e.value=!0),onMouseleave:i[2]||(i[2]=u=>e.value=!1)},[v("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":s.label,onClick:i[0]||(i[0]=u=>e.value=!e.value)},[s.button||s.icon?(a(),c("span",sn,[s.icon?(a(),c("span",{key:0,class:N([s.icon,"option-icon"])},null,2)):f("",!0),s.button?(a(),c("span",{key:1,innerHTML:s.button},null,8,nn)):f("",!0),an])):(a(),c("span",rn))],8,on),v("div",ln,[m(en,{items:s.items},{default:d(()=>[l(s.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),be=b(cn,[["__scopeId","data-v-af5898d3"]]),un=["href","aria-label","innerHTML"],dn=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(n,s)=>(a(),c("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,un))}}),vn=b(dn,[["__scopeId","data-v-358b6670"]]),pn={class:"VPSocialLinks"},hn=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),c("div",pn,[(a(!0),c(M,null,E(e.links,({link:n,icon:s,ariaLabel:i})=>(a(),$(vn,{key:n,icon:s,link:n,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),$e=b(hn,[["__scopeId","data-v-e71e869c"]]),fn={key:0,class:"group translations"},_n={class:"trans-title"},mn={key:1,class:"group"},kn={class:"item appearance"},bn={class:"label"},$n={class:"appearance-action"},gn={key:2,class:"group"},yn={class:"item social-links"},Pn=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=P(),{localeLinks:n,currentLang:s}=J({correspondingLink:!0}),i=y(()=>n.value.length&&s.value.label||e.value.appearance||t.value.socialLinks);return(u,h)=>i.value?(a(),$(be,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:d(()=>[r(n).length&&r(s).label?(a(),c("div",fn,[v("p",_n,I(r(s).label),1),(a(!0),c(M,null,E(r(n),p=>(a(),$(se,{key:p.link,item:p},null,8,["item"]))),128))])):f("",!0),r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",mn,[v("div",kn,[v("p",bn,I(r(t).darkModeSwitchLabel||"Appearance"),1),v("div",$n,[m(me)])])])):f("",!0),r(t).socialLinks?(a(),c("div",gn,[v("div",yn,[m($e,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),Ln=b(Pn,[["__scopeId","data-v-8e87c032"]]),Vn=o=>(B("data-v-6bee1efd"),o=o(),H(),o),Sn=["aria-expanded"],Tn=Vn(()=>v("span",{class:"container"},[v("span",{class:"top"}),v("span",{class:"middle"}),v("span",{class:"bottom"})],-1)),In=[Tn],wn=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),c("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},In,10,Sn))}}),Nn=b(wn,[["__scopeId","data-v-6bee1efd"]]),Mn=["innerHTML"],An=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=P();return(t,n)=>(a(),$(F,{class:N({VPNavBarMenuLink:!0,active:r(z)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:d(()=>[v("span",{innerHTML:t.item.text},null,8,Mn)]),_:1},8,["class","href","noIcon","target","rel"]))}}),Cn=b(An,[["__scopeId","data-v-08fbf4b6"]]),Bn=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=P(),n=i=>"link"in i?z(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(n),s=y(()=>n(e.item));return(i,u)=>(a(),$(be,{class:N({VPNavBarMenuGroup:!0,active:r(z)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||s.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Hn=o=>(B("data-v-f732b5d0"),o=o(),H(),o),En={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Fn=Hn(()=>v("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),Dn=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=P();return(t,n)=>r(e).nav?(a(),c("nav",En,[Fn,(a(!0),c(M,null,E(r(e).nav,s=>(a(),c(M,{key:s.text},["link"in s?(a(),$(Cn,{key:0,item:s},null,8,["item"])):(a(),$(Bn,{key:1,item:s},null,8,["item"]))],64))),128))])):f("",!0)}}),On=b(Dn,[["__scopeId","data-v-f732b5d0"]]);function Un(o){const{localeIndex:e,theme:t}=P();function n(s){var A,C,S;const i=s.split("."),u=(A=t.value.search)==null?void 0:A.options,h=u&&typeof u=="object",p=h&&((S=(C=u.locales)==null?void 0:C[e.value])==null?void 0:S.translations)||null,g=h&&u.translations||null;let L=p,k=g,V=o;const T=i.pop();for(const U of i){let G=null;const K=V==null?void 0:V[U];K&&(G=V=K);const ne=k==null?void 0:k[U];ne&&(G=k=ne);const ae=L==null?void 0:L[U];ae&&(G=L=ae),K||(V=G),ne||(k=G),ae||(L=G)}return(L==null?void 0:L[T])??(k==null?void 0:k[T])??(V==null?void 0:V[T])??""}return n}const Gn=["aria-label"],jn={class:"DocSearch-Button-Container"},zn=v("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),qn={class:"DocSearch-Button-Placeholder"},Kn=v("span",{class:"DocSearch-Button-Keys"},[v("kbd",{class:"DocSearch-Button-Key"}),v("kbd",{class:"DocSearch-Button-Key"},"K")],-1),ge=_({__name:"VPNavBarSearchButton",setup(o){const t=Un({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(n,s)=>(a(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[v("span",jn,[zn,v("span",qn,I(r(t)("button.buttonText")),1)]),Kn],8,Gn))}}),Wn={class:"VPNavBarSearch"},Rn={id:"local-search"},Jn={key:1,id:"docsearch"},Yn=_({__name:"VPNavBarSearch",setup(o){const e=Je(()=>Ye(()=>import("./VPLocalSearchBox.BqS5s0On.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:n}=P(),s=w(!1),i=w(!1);R(()=>{});function u(){s.value||(s.value=!0,setTimeout(h,16))}function h(){const k=new Event("keydown");k.key="k",k.metaKey=!0,window.dispatchEvent(k),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||h()},16)}function p(k){const V=k.target,T=V.tagName;return V.isContentEditable||T==="INPUT"||T==="SELECT"||T==="TEXTAREA"}const g=w(!1);le("k",k=>{(k.ctrlKey||k.metaKey)&&(k.preventDefault(),g.value=!0)}),le("/",k=>{p(k)||(k.preventDefault(),g.value=!0)});const L="local";return(k,V)=>{var T;return a(),c("div",Wn,[r(L)==="local"?(a(),c(M,{key:0},[g.value?(a(),$(r(e),{key:0,onClose:V[0]||(V[0]=A=>g.value=!1)})):f("",!0),v("div",Rn,[m(ge,{onClick:V[1]||(V[1]=A=>g.value=!0)})])],64)):r(L)==="algolia"?(a(),c(M,{key:1},[s.value?(a(),$(r(t),{key:0,algolia:((T=r(n).search)==null?void 0:T.options)??r(n).algolia,onVnodeBeforeMount:V[2]||(V[2]=A=>i.value=!0)},null,8,["algolia"])):f("",!0),i.value?f("",!0):(a(),c("div",Jn,[m(ge,{onClick:u})]))],64)):f("",!0)])}}}),Qn=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=P();return(t,n)=>r(e).socialLinks?(a(),$($e,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Xn=b(Qn,[["__scopeId","data-v-ef6192dc"]]),Zn=["href","rel","target"],xn={key:1},ea={key:2},ta=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=P(),{hasSidebar:n}=O(),{currentLang:s}=J(),i=y(()=>{var p;return typeof t.value.logoLink=="string"?t.value.logoLink:(p=t.value.logoLink)==null?void 0:p.link}),u=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.rel}),h=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.target});return(p,g)=>(a(),c("div",{class:N(["VPNavBarTitle",{"has-sidebar":r(n)}])},[v("a",{class:"title",href:i.value??r(fe)(r(s).link),rel:u.value,target:h.value},[l(p.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),$(X,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):f("",!0),r(t).siteTitle?(a(),c("span",xn,I(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),c("span",ea,I(r(e).title),1)):f("",!0),l(p.$slots,"nav-bar-title-after",{},void 0,!0)],8,Zn)],2))}}),oa=b(ta,[["__scopeId","data-v-0ad69264"]]),sa={class:"items"},na={class:"title"},aa=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=P(),{localeLinks:t,currentLang:n}=J({correspondingLink:!0});return(s,i)=>r(t).length&&r(n).label?(a(),$(be,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:d(()=>[v("div",sa,[v("p",na,I(r(n).label),1),(a(!0),c(M,null,E(r(t),u=>(a(),$(se,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),ra=b(aa,[["__scopeId","data-v-acee064b"]]),ia=o=>(B("data-v-844edcde"),o=o(),H(),o),la={class:"wrapper"},ca={class:"container"},ua={class:"title"},da={class:"content"},va={class:"content-body"},pa=ia(()=>v("div",{class:"divider"},[v("div",{class:"divider-line"})],-1)),ha=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const{y:e}=Se(),{hasSidebar:t}=O(),{frontmatter:n}=P(),s=w({});return ye(()=>{s.value={"has-sidebar":t.value,home:n.value.layout==="home",top:e.value===0}}),(i,u)=>(a(),c("div",{class:N(["VPNavBar",s.value])},[v("div",la,[v("div",ca,[v("div",ua,[m(oa,null,{"nav-bar-title-before":d(()=>[l(i.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(i.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),v("div",da,[v("div",va,[l(i.$slots,"nav-bar-content-before",{},void 0,!0),m(Yn,{class:"search"}),m(On,{class:"menu"}),m(ra,{class:"translations"}),m(Gs,{class:"appearance"}),m(Xn,{class:"social-links"}),m(Ln,{class:"extra"}),l(i.$slots,"nav-bar-content-after",{},void 0,!0),m(Nn,{class:"hamburger",active:i.isScreenOpen,onClick:u[0]||(u[0]=h=>i.$emit("toggle-screen"))},null,8,["active"])])])])]),pa],2))}}),fa=b(ha,[["__scopeId","data-v-844edcde"]]),_a={key:0,class:"VPNavScreenAppearance"},ma={class:"text"},ka=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=P();return(n,s)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",_a,[v("p",ma,I(r(t).darkModeSwitchLabel||"Appearance"),1),m(me)])):f("",!0)}}),ba=b(ka,[["__scopeId","data-v-338d9b48"]]),$a=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,n)=>(a(),$(F,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),ga=b($a,[["__scopeId","data-v-1a934d60"]]),ya=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,n)=>(a(),$(F,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:d(()=>[D(I(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ee=b(ya,[["__scopeId","data-v-aea78dd1"]]),Pa={class:"VPNavScreenMenuGroupSection"},La={key:0,class:"title"},Va=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Pa,[e.text?(a(),c("p",La,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,n=>(a(),$(Ee,{key:n.text,item:n},null,8,["item"]))),128))]))}}),Sa=b(Va,[["__scopeId","data-v-f60dbfa7"]]),Ta=o=>(B("data-v-d2212c70"),o=o(),H(),o),Ia=["aria-controls","aria-expanded"],wa=["innerHTML"],Na=Ta(()=>v("span",{class:"vpi-plus button-icon"},null,-1)),Ma=["id"],Aa={key:1,class:"group"},Ca=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=w(!1),n=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function s(){t.value=!t.value}return(i,u)=>(a(),c("div",{class:N(["VPNavScreenMenuGroup",{open:t.value}])},[v("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:s},[v("span",{class:"button-text",innerHTML:i.text},null,8,wa),Na],8,Ia),v("div",{id:n.value,class:"items"},[(a(!0),c(M,null,E(i.items,h=>(a(),c(M,{key:h.text},["link"in h?(a(),c("div",{key:h.text,class:"item"},[m(Ee,{item:h},null,8,["item"])])):(a(),c("div",Aa,[m(Sa,{text:h.text,items:h.items},null,8,["text","items"])]))],64))),128))],8,Ma)],2))}}),Ba=b(Ca,[["__scopeId","data-v-d2212c70"]]),Ha={key:0,class:"VPNavScreenMenu"},Ea=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=P();return(t,n)=>r(e).nav?(a(),c("nav",Ha,[(a(!0),c(M,null,E(r(e).nav,s=>(a(),c(M,{key:s.text},["link"in s?(a(),$(ga,{key:0,item:s},null,8,["item"])):(a(),$(Ba,{key:1,text:s.text||"",items:s.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Fa=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=P();return(t,n)=>r(e).socialLinks?(a(),$($e,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Fe=o=>(B("data-v-516e4bc3"),o=o(),H(),o),Da=Fe(()=>v("span",{class:"vpi-languages icon lang"},null,-1)),Oa=Fe(()=>v("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Ua={class:"list"},Ga=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=J({correspondingLink:!0}),n=w(!1);function s(){n.value=!n.value}return(i,u)=>r(e).length&&r(t).label?(a(),c("div",{key:0,class:N(["VPNavScreenTranslations",{open:n.value}])},[v("button",{class:"title",onClick:s},[Da,D(" "+I(r(t).label)+" ",1),Oa]),v("ul",Ua,[(a(!0),c(M,null,E(r(e),h=>(a(),c("li",{key:h.link,class:"item"},[m(F,{class:"link",href:h.link},{default:d(()=>[D(I(h.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),ja=b(Ga,[["__scopeId","data-v-516e4bc3"]]),za={class:"container"},qa=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=w(null),t=Te(oe?document.body:null);return(n,s)=>(a(),$(ve,{name:"fade",onEnter:s[0]||(s[0]=i=>t.value=!0),onAfterLeave:s[1]||(s[1]=i=>t.value=!1)},{default:d(()=>[n.open?(a(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[v("div",za,[l(n.$slots,"nav-screen-content-before",{},void 0,!0),m(Ea,{class:"menu"}),m(ja,{class:"translations"}),m(ba,{class:"appearance"}),m(Fa,{class:"social-links"}),l(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),Ka=b(qa,[["__scopeId","data-v-57cce842"]]),Wa={key:0,class:"VPNav"},Ra=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=ws(),{frontmatter:s}=P(),i=y(()=>s.value.navbar!==!1);return Ie("close-screen",t),Z(()=>{oe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(u,h)=>i.value?(a(),c("header",Wa,[m(fa,{"is-screen-open":r(e),onToggleScreen:r(n)},{"nav-bar-title-before":d(()=>[l(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":d(()=>[l(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":d(()=>[l(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),m(Ka,{open:r(e)},{"nav-screen-content-before":d(()=>[l(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":d(()=>[l(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),Ja=b(Ra,[["__scopeId","data-v-7ad780c2"]]),De=o=>(B("data-v-c24f735a"),o=o(),H(),o),Ya=["role","tabindex"],Qa=De(()=>v("div",{class:"indicator"},null,-1)),Xa=De(()=>v("span",{class:"vpi-chevron-right caret-icon"},null,-1)),Za=[Xa],xa={key:1,class:"items"},er=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:n,isLink:s,isActiveLink:i,hasActiveLink:u,hasChildren:h,toggle:p}=bt(y(()=>e.item)),g=y(()=>h.value?"section":"div"),L=y(()=>s.value?"a":"div"),k=y(()=>h.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),V=y(()=>s.value?void 0:"button"),T=y(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":s.value},{"is-active":i.value},{"has-active":u.value}]);function A(S){"key"in S&&S.key!=="Enter"||!e.item.link&&p()}function C(){e.item.link&&p()}return(S,U)=>{const G=q("VPSidebarItem",!0);return a(),$(W(g.value),{class:N(["VPSidebarItem",T.value])},{default:d(()=>[S.item.text?(a(),c("div",Y({key:0,class:"item",role:V.value},Xe(S.item.items?{click:A,keydown:A}:{},!0),{tabindex:S.item.items&&0}),[Qa,S.item.link?(a(),$(F,{key:0,tag:L.value,class:"link",href:S.item.link,rel:S.item.rel,target:S.item.target},{default:d(()=>[(a(),$(W(k.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),$(W(k.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null&&S.item.items&&S.item.items.length?(a(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Qe(C,["enter"]),tabindex:"0"},Za,32)):f("",!0)],16,Ya)):f("",!0),S.item.items&&S.item.items.length?(a(),c("div",xa,[S.depth<5?(a(!0),c(M,{key:0},E(S.item.items,K=>(a(),$(G,{key:K.text,item:K,depth:S.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),tr=b(er,[["__scopeId","data-v-c24f735a"]]),Oe=o=>(B("data-v-4871f9f5"),o=o(),H(),o),or=Oe(()=>v("div",{class:"curtain"},null,-1)),sr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},nr=Oe(()=>v("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),ar=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=O(),n=o,s=w(null),i=Te(oe?document.body:null);return j([n,s],()=>{var u;n.open?(i.value=!0,(u=s.value)==null||u.focus()):i.value=!1},{immediate:!0,flush:"post"}),(u,h)=>r(t)?(a(),c("aside",{key:0,class:N(["VPSidebar",{open:u.open}]),ref_key:"navEl",ref:s,onClick:h[0]||(h[0]=Ze(()=>{},["stop"]))},[or,v("nav",sr,[nr,l(u.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),c(M,null,E(r(e),p=>(a(),c("div",{key:p.text,class:"group"},[m(tr,{item:p,depth:0},null,8,["item"])]))),128)),l(u.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),rr=b(ar,[["__scopeId","data-v-4871f9f5"]]),ir=_({__name:"VPSkipLink",setup(o){const e=ee(),t=w();j(()=>e.path,()=>t.value.focus());function n({target:s}){const i=document.getElementById(decodeURIComponent(s.hash).slice(1));if(i){const u=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",u)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",u),i.focus(),window.scrollTo(0,0)}}return(s,i)=>(a(),c(M,null,[v("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),v("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}}),lr=b(ir,[["__scopeId","data-v-c8291ffa"]]),cr=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:n}=O(),s=ee();j(()=>s.path,n),kt(e,n);const{frontmatter:i}=P(),u=xe(),h=y(()=>!!u["home-hero-image"]);return Ie("hero-image-slot-exists",h),(p,g)=>{const L=q("Content");return r(i).layout!==!1?(a(),c("div",{key:0,class:N(["Layout",r(i).pageClass])},[l(p.$slots,"layout-top",{},void 0,!0),m(lr),m(st,{class:"backdrop",show:r(e),onClick:r(n)},null,8,["show","onClick"]),m(Ja,null,{"nav-bar-title-before":d(()=>[l(p.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":d(()=>[l(p.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":d(()=>[l(p.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":d(()=>[l(p.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":d(()=>[l(p.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":d(()=>[l(p.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),m(Is,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),m(rr,{open:r(e)},{"sidebar-nav-before":d(()=>[l(p.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":d(()=>[l(p.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),m(ls,null,{"page-top":d(()=>[l(p.$slots,"page-top",{},void 0,!0)]),"page-bottom":d(()=>[l(p.$slots,"page-bottom",{},void 0,!0)]),"not-found":d(()=>[l(p.$slots,"not-found",{},void 0,!0)]),"home-hero-before":d(()=>[l(p.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":d(()=>[l(p.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":d(()=>[l(p.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":d(()=>[l(p.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":d(()=>[l(p.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":d(()=>[l(p.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":d(()=>[l(p.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":d(()=>[l(p.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":d(()=>[l(p.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":d(()=>[l(p.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":d(()=>[l(p.$slots,"doc-before",{},void 0,!0)]),"doc-after":d(()=>[l(p.$slots,"doc-after",{},void 0,!0)]),"doc-top":d(()=>[l(p.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":d(()=>[l(p.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":d(()=>[l(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":d(()=>[l(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":d(()=>[l(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":d(()=>[l(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":d(()=>[l(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":d(()=>[l(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),m(ps),l(p.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),$(L,{key:1}))}}}),ur=b(cr,[["__scopeId","data-v-d8b57b2d"]]),vr={Layout:ur,enhanceApp:({app:o})=>{o.component("Badge",et)}};export{Un as c,vr as t,P as u}; diff --git a/assets/en_index.md.dmgImlb6.js b/assets/en_index.md.IRM4U9Pz.js similarity index 90% rename from assets/en_index.md.dmgImlb6.js rename to assets/en_index.md.IRM4U9Pz.js index 9c7a4f97..7ad93a2d 100644 --- a/assets/en_index.md.dmgImlb6.js +++ b/assets/en_index.md.IRM4U9Pz.js @@ -1 +1 @@ -import{_ as e,c as t,o as n}from"./chunks/framework.D4PmY8Hg.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"RuyiSDK Doc","text":"","tagline":"English version WIP","actions":[{"theme":"brand","text":"Quick Start","link":"/en/introduction/index"},{"theme":"alt","text":"Github","link":"https://github.com/RuyiSDK/ruyi"}]},"features":[{"title":"RISCV-GCC","details":"WIP"},{"title":"LLVM","details":"WIP"}]},"headers":[],"relativePath":"en/index.md","filePath":"en/index.md","lastUpdated":1718624874000}'),i={name:"en/index.md"};function a(o,r,s,d,c,l){return n(),t("div")}const u=e(i,[["render",a]]);export{p as __pageData,u as default}; +import{_ as e,c as t,o as n}from"./chunks/framework.D4PmY8Hg.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"RuyiSDK Doc","text":"","tagline":"English version WIP","actions":[{"theme":"brand","text":"Quick Start","link":"/en/introduction/index"},{"theme":"alt","text":"Github","link":"https://github.com/RuyiSDK/ruyi"}]},"features":[{"title":"RISCV-GCC","details":"WIP"},{"title":"LLVM","details":"WIP"}]},"headers":[],"relativePath":"en/index.md","filePath":"en/index.md","lastUpdated":1718675566000}'),i={name:"en/index.md"};function a(o,r,s,d,c,l){return n(),t("div")}const u=e(i,[["render",a]]);export{p as __pageData,u as default}; diff --git a/assets/en_index.md.dmgImlb6.lean.js b/assets/en_index.md.IRM4U9Pz.lean.js similarity index 90% rename from assets/en_index.md.dmgImlb6.lean.js rename to assets/en_index.md.IRM4U9Pz.lean.js index 9c7a4f97..7ad93a2d 100644 --- a/assets/en_index.md.dmgImlb6.lean.js +++ b/assets/en_index.md.IRM4U9Pz.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as n}from"./chunks/framework.D4PmY8Hg.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"RuyiSDK Doc","text":"","tagline":"English version WIP","actions":[{"theme":"brand","text":"Quick Start","link":"/en/introduction/index"},{"theme":"alt","text":"Github","link":"https://github.com/RuyiSDK/ruyi"}]},"features":[{"title":"RISCV-GCC","details":"WIP"},{"title":"LLVM","details":"WIP"}]},"headers":[],"relativePath":"en/index.md","filePath":"en/index.md","lastUpdated":1718624874000}'),i={name:"en/index.md"};function a(o,r,s,d,c,l){return n(),t("div")}const u=e(i,[["render",a]]);export{p as __pageData,u as default}; +import{_ as e,c as t,o as n}from"./chunks/framework.D4PmY8Hg.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"RuyiSDK Doc","text":"","tagline":"English version WIP","actions":[{"theme":"brand","text":"Quick Start","link":"/en/introduction/index"},{"theme":"alt","text":"Github","link":"https://github.com/RuyiSDK/ruyi"}]},"features":[{"title":"RISCV-GCC","details":"WIP"},{"title":"LLVM","details":"WIP"}]},"headers":[],"relativePath":"en/index.md","filePath":"en/index.md","lastUpdated":1718675566000}'),i={name:"en/index.md"};function a(o,r,s,d,c,l){return n(),t("div")}const u=e(i,[["render",a]]);export{p as __pageData,u as default}; diff --git a/assets/en_introduction_index.md.bXikIOrS.js b/assets/en_introduction_index.md.DOdtZ-ST.js similarity index 88% rename from assets/en_introduction_index.md.bXikIOrS.js rename to assets/en_introduction_index.md.DOdtZ-ST.js index 01908736..a1f82f1e 100644 --- a/assets/en_introduction_index.md.bXikIOrS.js +++ b/assets/en_introduction_index.md.DOdtZ-ST.js @@ -1 +1 @@ -import{_ as t,c as a,o,j as e,a as n}from"./chunks/framework.D4PmY8Hg.js";const x=JSON.parse('{"title":"TODO","description":"","frontmatter":{},"headers":[],"relativePath":"en/introduction/index.md","filePath":"en/introduction/index.md","lastUpdated":1718624874000}'),d={name:"en/introduction/index.md"},r=e("h1",{id:"todo",tabindex:"-1"},[n("TODO "),e("a",{class:"header-anchor",href:"#todo","aria-label":'Permalink to "TODO"'},"​")],-1),i=[r];function s(c,_,l,p,h,m){return o(),a("div",null,i)}const u=t(d,[["render",s]]);export{x as __pageData,u as default}; +import{_ as t,c as a,o,j as e,a as n}from"./chunks/framework.D4PmY8Hg.js";const x=JSON.parse('{"title":"TODO","description":"","frontmatter":{},"headers":[],"relativePath":"en/introduction/index.md","filePath":"en/introduction/index.md","lastUpdated":1718675566000}'),d={name:"en/introduction/index.md"},r=e("h1",{id:"todo",tabindex:"-1"},[n("TODO "),e("a",{class:"header-anchor",href:"#todo","aria-label":'Permalink to "TODO"'},"​")],-1),i=[r];function s(c,_,l,p,h,m){return o(),a("div",null,i)}const u=t(d,[["render",s]]);export{x as __pageData,u as default}; diff --git a/assets/en_introduction_index.md.bXikIOrS.lean.js b/assets/en_introduction_index.md.DOdtZ-ST.lean.js similarity index 88% rename from assets/en_introduction_index.md.bXikIOrS.lean.js rename to assets/en_introduction_index.md.DOdtZ-ST.lean.js index 01908736..a1f82f1e 100644 --- a/assets/en_introduction_index.md.bXikIOrS.lean.js +++ b/assets/en_introduction_index.md.DOdtZ-ST.lean.js @@ -1 +1 @@ -import{_ as t,c as a,o,j as e,a as n}from"./chunks/framework.D4PmY8Hg.js";const x=JSON.parse('{"title":"TODO","description":"","frontmatter":{},"headers":[],"relativePath":"en/introduction/index.md","filePath":"en/introduction/index.md","lastUpdated":1718624874000}'),d={name:"en/introduction/index.md"},r=e("h1",{id:"todo",tabindex:"-1"},[n("TODO "),e("a",{class:"header-anchor",href:"#todo","aria-label":'Permalink to "TODO"'},"​")],-1),i=[r];function s(c,_,l,p,h,m){return o(),a("div",null,i)}const u=t(d,[["render",s]]);export{x as __pageData,u as default}; +import{_ as t,c as a,o,j as e,a as n}from"./chunks/framework.D4PmY8Hg.js";const x=JSON.parse('{"title":"TODO","description":"","frontmatter":{},"headers":[],"relativePath":"en/introduction/index.md","filePath":"en/introduction/index.md","lastUpdated":1718675566000}'),d={name:"en/introduction/index.md"},r=e("h1",{id:"todo",tabindex:"-1"},[n("TODO "),e("a",{class:"header-anchor",href:"#todo","aria-label":'Permalink to "TODO"'},"​")],-1),i=[r];function s(c,_,l,p,h,m){return o(),a("div",null,i)}const u=t(d,[["render",s]]);export{x as __pageData,u as default}; diff --git a/assets/zh_devices_index.md.SHrYcQit.js b/assets/zh_devices_index.md.B_hSiSsC.js similarity index 98% rename from assets/zh_devices_index.md.SHrYcQit.js rename to assets/zh_devices_index.md.B_hSiSsC.js index db150170..a2c2cb51 100644 --- a/assets/zh_devices_index.md.SHrYcQit.js +++ b/assets/zh_devices_index.md.B_hSiSsC.js @@ -1 +1 @@ -import{_ as i,c as e,o as a,a3 as l}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"RuyiSDK集成的RISC-V设备","description":"","frontmatter":{},"headers":[],"relativePath":"zh/devices/index.md","filePath":"zh/devices/index.md","lastUpdated":1718624874000}'),s={name:"zh/devices/index.md"},t=l('

RuyiSDK集成的RISC-V设备

RuyiSDK对RISC-V设备的集成和支持主要包括以下几个方面:

  1. 提供RISC-V 开发板适用镜像信息维护与下载、开发板系统安装引导程序,方便 RISC-V 开发者获取指定开发板可用的OS并可方便的安装OS的安装。RuyiSDK集成了多种可用的操作系统供用户选择。
  2. 提供RISC-V 开发板对应的演示程序、开发资料和相关工具(含适用的编译工具链、模拟器等)的信息维护和下载,方便 RISC-V 开发者快速上手。
  3. 在集成开发环境中增加RISC-V设备专有向导页面、实现开发环境和运行环境的文件传输、支持在RISC-V设备上调试应用程序等。

支持的RISC-V设备

目前对硬件设备的集成主要体现在包管理器(设备安装器),可以通过 ruyi device provision命令查询,已经集成的RISC-V设备有:

  1. Allwinner Nezha D1
  2. Canaan Kendryte K230
  3. Milk-V Duo
  4. Milk-V Duo S
  5. Milk-V Mars
  6. Milk-V Mars CM
  7. Milk-V Meles
  8. Milk-V Pioneer Box
  9. Milk-V Vega
  10. SiFive HiFive Unmatched
  11. Sipeed Lichee RV
  12. Sipeed LicheePi 4A
  13. StarFive VisionFive
  14. StarFive VisionFive2

从RuyiSDK开始使用设备

获取并安装OS

可以通过下载安装最新的 ruyi 包管理器工具并执行以下命令为设备安装系统:

bash
$ ruyi device provision

按照引导信息一步步执行即可。

',11),r=[t];function o(n,d,h,c,p,S){return a(),e("div",null,r)}const V=i(s,[["render",o]]);export{k as __pageData,V as default}; +import{_ as i,c as e,o as a,a3 as l}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"RuyiSDK集成的RISC-V设备","description":"","frontmatter":{},"headers":[],"relativePath":"zh/devices/index.md","filePath":"zh/devices/index.md","lastUpdated":1718675566000}'),s={name:"zh/devices/index.md"},t=l('

RuyiSDK集成的RISC-V设备

RuyiSDK对RISC-V设备的集成和支持主要包括以下几个方面:

  1. 提供RISC-V 开发板适用镜像信息维护与下载、开发板系统安装引导程序,方便 RISC-V 开发者获取指定开发板可用的OS并可方便的安装OS的安装。RuyiSDK集成了多种可用的操作系统供用户选择。
  2. 提供RISC-V 开发板对应的演示程序、开发资料和相关工具(含适用的编译工具链、模拟器等)的信息维护和下载,方便 RISC-V 开发者快速上手。
  3. 在集成开发环境中增加RISC-V设备专有向导页面、实现开发环境和运行环境的文件传输、支持在RISC-V设备上调试应用程序等。

支持的RISC-V设备

目前对硬件设备的集成主要体现在包管理器(设备安装器),可以通过 ruyi device provision命令查询,已经集成的RISC-V设备有:

  1. Allwinner Nezha D1
  2. Canaan Kendryte K230
  3. Milk-V Duo
  4. Milk-V Duo S
  5. Milk-V Mars
  6. Milk-V Mars CM
  7. Milk-V Meles
  8. Milk-V Pioneer Box
  9. Milk-V Vega
  10. SiFive HiFive Unmatched
  11. Sipeed Lichee RV
  12. Sipeed LicheePi 4A
  13. StarFive VisionFive
  14. StarFive VisionFive2

从RuyiSDK开始使用设备

获取并安装OS

可以通过下载安装最新的 ruyi 包管理器工具并执行以下命令为设备安装系统:

bash
$ ruyi device provision

按照引导信息一步步执行即可。

',11),r=[t];function o(n,d,h,c,p,S){return a(),e("div",null,r)}const V=i(s,[["render",o]]);export{k as __pageData,V as default}; diff --git a/assets/zh_devices_index.md.SHrYcQit.lean.js b/assets/zh_devices_index.md.B_hSiSsC.lean.js similarity index 85% rename from assets/zh_devices_index.md.SHrYcQit.lean.js rename to assets/zh_devices_index.md.B_hSiSsC.lean.js index 0c5f5727..eeca592f 100644 --- a/assets/zh_devices_index.md.SHrYcQit.lean.js +++ b/assets/zh_devices_index.md.B_hSiSsC.lean.js @@ -1 +1 @@ -import{_ as i,c as e,o as a,a3 as l}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"RuyiSDK集成的RISC-V设备","description":"","frontmatter":{},"headers":[],"relativePath":"zh/devices/index.md","filePath":"zh/devices/index.md","lastUpdated":1718624874000}'),s={name:"zh/devices/index.md"},t=l("",11),r=[t];function o(n,d,h,c,p,S){return a(),e("div",null,r)}const V=i(s,[["render",o]]);export{k as __pageData,V as default}; +import{_ as i,c as e,o as a,a3 as l}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"RuyiSDK集成的RISC-V设备","description":"","frontmatter":{},"headers":[],"relativePath":"zh/devices/index.md","filePath":"zh/devices/index.md","lastUpdated":1718675566000}'),s={name:"zh/devices/index.md"},t=l("",11),r=[t];function o(n,d,h,c,p,S){return a(),e("div",null,r)}const V=i(s,[["render",o]]);export{k as __pageData,V as default}; diff --git a/assets/zh_index.md.R7f61pLy.js b/assets/zh_index.md.B2Jl1qMC.js similarity index 91% rename from assets/zh_index.md.R7f61pLy.js rename to assets/zh_index.md.B2Jl1qMC.js index 83b25086..c930865e 100644 --- a/assets/zh_index.md.R7f61pLy.js +++ b/assets/zh_index.md.B2Jl1qMC.js @@ -1 +1 @@ -import{_ as t,c as e,o as a}from"./chunks/framework.D4PmY8Hg.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"RuyiSDK 文档","text":"","tagline":"本手册包含了 RuyiSDK 如何构建、如何使用的相关内容。","actions":[{"theme":"brand","text":"快速开始","link":"/zh/introduction/index"},{"theme":"alt","text":"Github","link":"https://github.com/RuyiSDK/ruyi"}]},"features":[{"title":"RISCV-GCC","details":"TODO"},{"title":"LLVM","details":"TODO"}]},"headers":[],"relativePath":"zh/index.md","filePath":"zh/index.md","lastUpdated":1718624874000}'),i={name:"zh/index.md"};function n(o,r,s,d,c,l){return a(),e("div")}const p=t(i,[["render",n]]);export{m as __pageData,p as default}; +import{_ as t,c as e,o as a}from"./chunks/framework.D4PmY8Hg.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"RuyiSDK 文档","text":"","tagline":"本手册包含了 RuyiSDK 如何构建、如何使用的相关内容。","actions":[{"theme":"brand","text":"快速开始","link":"/zh/introduction/index"},{"theme":"alt","text":"Github","link":"https://github.com/RuyiSDK/ruyi"}]},"features":[{"title":"RISCV-GCC","details":"TODO"},{"title":"LLVM","details":"TODO"}]},"headers":[],"relativePath":"zh/index.md","filePath":"zh/index.md","lastUpdated":1718675566000}'),i={name:"zh/index.md"};function n(o,r,s,d,c,l){return a(),e("div")}const p=t(i,[["render",n]]);export{m as __pageData,p as default}; diff --git a/assets/zh_index.md.R7f61pLy.lean.js b/assets/zh_index.md.B2Jl1qMC.lean.js similarity index 91% rename from assets/zh_index.md.R7f61pLy.lean.js rename to assets/zh_index.md.B2Jl1qMC.lean.js index 83b25086..c930865e 100644 --- a/assets/zh_index.md.R7f61pLy.lean.js +++ b/assets/zh_index.md.B2Jl1qMC.lean.js @@ -1 +1 @@ -import{_ as t,c as e,o as a}from"./chunks/framework.D4PmY8Hg.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"RuyiSDK 文档","text":"","tagline":"本手册包含了 RuyiSDK 如何构建、如何使用的相关内容。","actions":[{"theme":"brand","text":"快速开始","link":"/zh/introduction/index"},{"theme":"alt","text":"Github","link":"https://github.com/RuyiSDK/ruyi"}]},"features":[{"title":"RISCV-GCC","details":"TODO"},{"title":"LLVM","details":"TODO"}]},"headers":[],"relativePath":"zh/index.md","filePath":"zh/index.md","lastUpdated":1718624874000}'),i={name:"zh/index.md"};function n(o,r,s,d,c,l){return a(),e("div")}const p=t(i,[["render",n]]);export{m as __pageData,p as default}; +import{_ as t,c as e,o as a}from"./chunks/framework.D4PmY8Hg.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"RuyiSDK 文档","text":"","tagline":"本手册包含了 RuyiSDK 如何构建、如何使用的相关内容。","actions":[{"theme":"brand","text":"快速开始","link":"/zh/introduction/index"},{"theme":"alt","text":"Github","link":"https://github.com/RuyiSDK/ruyi"}]},"features":[{"title":"RISCV-GCC","details":"TODO"},{"title":"LLVM","details":"TODO"}]},"headers":[],"relativePath":"zh/index.md","filePath":"zh/index.md","lastUpdated":1718675566000}'),i={name:"zh/index.md"};function n(o,r,s,d,c,l){return a(),e("div")}const p=t(i,[["render",n]]);export{m as __pageData,p as default}; diff --git a/assets/zh_introduction_index.md.Cx1w8Gv1.js b/assets/zh_introduction_index.md.Bc_KVu0K.js similarity index 67% rename from assets/zh_introduction_index.md.Cx1w8Gv1.js rename to assets/zh_introduction_index.md.Bc_KVu0K.js index 15203117..141ae350 100644 --- a/assets/zh_introduction_index.md.Cx1w8Gv1.js +++ b/assets/zh_introduction_index.md.Bc_KVu0K.js @@ -1,8 +1,8 @@ -import{_ as a,c as e,o as i,a3 as r}from"./chunks/framework.D4PmY8Hg.js";const l="/docs/assets/ruyisdk.DlLqNkX-.png",m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"zh/introduction/index.md","filePath":"zh/introduction/index.md","lastUpdated":1718624874000}'),t={name:"zh/introduction/index.md"},s=r(`

Hello Ruyi

欢迎来到 RuyiSDK 相关介绍内容,以下是本文相关内容:

  1. [什么是 RuyiSDK](## 介绍)
  2. [为什么会有 RuyiSDK](## 背景)
  3. [RuyiSDK 有什么用](## 功能)
  4. [我可以在什么设备上运行](## 支持的设备)
  5. [RuyiSDK 的原理是什么](## RuyiSDK 架构示意图)
  6. [我该从何开始](## 让我们开始吧!)

介绍

RuyiSDK 是一个由中科院软件所(ISCAS)所启动的开源项目,该项目旨在为 RISC-V 开发者提供一个便捷、完善的开发环境。其提供了相关最新的硬件信息、软件支持,例如在[支持的设备](## 支持的设备)中有提供相关支持硬件情况;软件层面提供了镜像(如 RevyOS)、工具链、包管理器等。

其最终目标是希望为 RISC-V 开发者提供一个完善、便捷的开发环境,使得 RISC-V 成为主流架构,以及建设并运营一个完善的社区以便开发者交流。最终希望 RuyiSDK 可以走向国际化,为全球的 RISC-V 开发者提供开发的便捷。

背景

RISC-V 是第五代精简指令集,由加州伯克利分校所发起的一个开源项目,相比 Cisc 而言更具精简性,指令执行效率更高。开源使其能够更加方便的运用在不同的领域,目前在 IoT、智能家居、芯片设计、操作系统、软件开发等领域都有应用。

而在过往针对 RISC-V 的开发面临的问题在于相关资讯没有统一的平台,使得开发者从最开始的学习、再到开发应用的效率大幅降低,而 RuyiSDK 的出现就是为了解决这些问题。

功能

RuyiSDK 分为以下三个部分:

Ruyi 包管理器

该包管理器是一个在线的软件源,在该包管理器中,我们提供了如下内容:

1. 工具链
+import{_ as a,c as e,o as i,a3 as r}from"./chunks/framework.D4PmY8Hg.js";const l="/docs/assets/ruyisdk.DlLqNkX-.png",b=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"zh/introduction/index.md","filePath":"zh/introduction/index.md","lastUpdated":1718675566000}'),t={name:"zh/introduction/index.md"},s=r(`

Hello Ruyi

欢迎来到 RuyiSDK 相关介绍内容,以下是本文相关内容:

  1. 什么是 RuyiSDK
  2. 为什么会有 RuyiSDK
  3. RuyiSDK 有什么用
  4. 我可以在什么设备上运行
  5. RuyiSDK 的原理是什么
  6. 我该从何开始

介绍

RuyiSDK 是一个由中科院软件所(ISCAS)所启动的开源项目,该项目旨在为 RISC-V 开发者提供一个便捷、完善的开发环境。其提供了相关最新的硬件信息、软件支持,例如在[支持的设备](## 支持的设备)中有提供相关支持硬件情况;软件层面提供了镜像(如 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:适用于入门级开发和教育用途。
  2. Canaan Kendryte K230:专为 AI 应用设计。
  3. Milk-V Duo:小巧灵活,适合嵌入式应用。
  4. Milk-V Duo S:提供更强的处理能力。
  5. Milk-V Mars:适合物联网应用。
  6. Milk-V Mars CM:集成多种通信接口。
  7. Milk-V Meles:高性能嵌入式开发。
  8. Milk-V Pioneer Box:适用于边缘计算。
  9. Milk-V Vega:高性能计算设备。
  10. SiFive HiFive Unmatched:适合高性能开发和研究。
  11. Sipeed Lichee RV:适合入门和教育。
  12. Sipeed LicheePi 4A:提供更高的性能和更多的接口。
  13. StarFive VisionFive:支持多种 AI 和物联网应用。
  14. StarFive VisionFive2:升级版,提供更强的计算能力。

文档可能更新不及时,查看最新支持的设备请通过指令ruyi device provision查询。

RuyiSDK 架构示意图

image

让我们开始吧!

从 RuyiSDK 开始使用设备!

获取并安装OS

开始的第一步:

bash
$ ruyi device provision

该指令会识别硬件信息,并且开始自动执行对应程序为用户自动部署 RISC-V 开发环境,按照引导信息一步步执行即可。

',33),n=[s];function o(h,p,d,c,u,k){return i(),e("div",null,n)}const f=a(t,[["render",o]]);export{m as __pageData,f as default}; +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:适用于入门级开发和教育用途。
  2. Canaan Kendryte K230:专为 AI 应用设计。
  3. Milk-V Duo:小巧灵活,适合嵌入式应用。
  4. Milk-V Duo S:提供更强的处理能力。
  5. Milk-V Mars:适合物联网应用。
  6. Milk-V Mars CM:集成多种通信接口。
  7. Milk-V Meles:高性能嵌入式开发。
  8. Milk-V Pioneer Box:适用于边缘计算。
  9. Milk-V Vega:高性能计算设备。
  10. SiFive HiFive Unmatched:适合高性能开发和研究。
  11. Sipeed Lichee RV:适合入门和教育。
  12. Sipeed LicheePi 4A:提供更高的性能和更多的接口。
  13. StarFive VisionFive:支持多种 AI 和物联网应用。
  14. StarFive VisionFive2:升级版,提供更强的计算能力。

文档可能更新不及时,查看最新支持的设备请通过指令ruyi device provision查询。

RuyiSDK-架构示意图

image

让我们开始吧!

从 RuyiSDK 开始使用设备!

获取并安装OS

开始的第一步:

bash
$ ruyi device provision

该指令会识别硬件信息,并且开始自动执行对应程序为用户自动部署 RISC-V 开发环境,按照引导信息一步步执行即可。

',33),n=[s];function o(h,p,d,c,u,k){return i(),e("div",null,n)}const m=a(t,[["render",o]]);export{b as __pageData,m as default}; diff --git a/assets/zh_introduction_index.md.Cx1w8Gv1.lean.js b/assets/zh_introduction_index.md.Bc_KVu0K.lean.js similarity index 54% rename from assets/zh_introduction_index.md.Cx1w8Gv1.lean.js rename to assets/zh_introduction_index.md.Bc_KVu0K.lean.js index 79e4c274..03a3bdd9 100644 --- a/assets/zh_introduction_index.md.Cx1w8Gv1.lean.js +++ b/assets/zh_introduction_index.md.Bc_KVu0K.lean.js @@ -1 +1 @@ -import{_ as a,c as e,o as i,a3 as r}from"./chunks/framework.D4PmY8Hg.js";const l="/docs/assets/ruyisdk.DlLqNkX-.png",m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"zh/introduction/index.md","filePath":"zh/introduction/index.md","lastUpdated":1718624874000}'),t={name:"zh/introduction/index.md"},s=r("",33),n=[s];function o(h,p,d,c,u,k){return i(),e("div",null,n)}const f=a(t,[["render",o]]);export{m as __pageData,f as default}; +import{_ as a,c as e,o as i,a3 as r}from"./chunks/framework.D4PmY8Hg.js";const l="/docs/assets/ruyisdk.DlLqNkX-.png",b=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"zh/introduction/index.md","filePath":"zh/introduction/index.md","lastUpdated":1718675566000}'),t={name:"zh/introduction/index.md"},s=r("",33),n=[s];function o(h,p,d,c,u,k){return i(),e("div",null,n)}const m=a(t,[["render",o]]);export{b as __pageData,m as default}; diff --git a/assets/zh_introduction_requirement.md.Dy7XWLXi.js b/assets/zh_introduction_requirement.md.hm-IkXTF.js similarity index 99% rename from assets/zh_introduction_requirement.md.Dy7XWLXi.js rename to assets/zh_introduction_requirement.md.hm-IkXTF.js index e07eb0f9..fc4819b0 100644 --- a/assets/zh_introduction_requirement.md.Dy7XWLXi.js +++ b/assets/zh_introduction_requirement.md.hm-IkXTF.js @@ -1 +1 @@ -import{_ as i,c as l,o,a3 as r}from"./chunks/framework.D4PmY8Hg.js";const S=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"zh/introduction/requirement.md","filePath":"zh/introduction/requirement.md","lastUpdated":1718624874000}'),t={name:"zh/introduction/requirement.md"},e=r('

介绍

RuyiSDK 是一个旨在提供给一个一体化集成开发环境的产品计划。从 2023 年开始筹备,计划用三年时间为 RISC-V 开发者提供一个完整的、全家桶式的全功能开发环境。

RuyiSDK 的目标

  1. 开发者购买了 (几乎) 任何一款 RISC-V 开发板或模组,都可以通过 RuyiSDK 系统获得硬件资料说明、固件 / 软件更新、调试支持等。
  2. 开发者可以指定任何常用的 RISC-V 扩展指令集架构组合,都可以通过 RuyiSDK 系统生成客户所需的操作系统、工具链、语言执行环境 (运行时或虚拟机)、计算库、应用框架等。尤其强调 RuyiSDK 将完全支持 Vector 0.7.1 和 RVP 0.5.2 等已经大规模硅化的草案 标准 (or 厂商定制扩展)。
  3. 培育运营一个活跃全面的开发者交流社区。

RuyiSDK 架构示意图

![[1703147196780.png]]RuyiSDK 的组成

RuyiSDK 主要包含了一个组件管理器(也称为包管理器,Ruyi Repo)、一个集成开发环境(Ruyi IDE)、一个开发者交流社区;

  • 组件管理器包含一个在线软件源 (Ruyi Repo) 和 一个包管理工具(ruyi)。在线软件源即 Ruyi Repo 集中存储了RISC-V集成开发环境所需的编译工具链、调试工具、模拟器、运行环境、文档、代码、工具、target系统镜像等内容;包管理器工具则是用于与在线软件源交互的工具,它提供了一套命令行接口(ruyi)或图形用户界面(GUI未来可能提供),使开发者能够搜索、安装、更新和管理软件包。包管理工具负责从在线软件源中获取软件包的信息,解析软件包的依赖关系,并自动处理依赖关系的下载和安装。

  • 集成开发环境(Ruyi IDE)则是一个专门用来开发能够运行在RISC-V架构设备上的软件和应用的工具箱。可以帮助开发者编写和测试自己的程序。

    想象一下,你要做一款能够运行在RISC-V设备上的应用程序,比如用C或者C++语言开发一个图像识别的程序,Ruyi IDE 就像是一个你的工作室,里面有各种各样的工具可以帮助你完成这个任务。首先创建项目,从RuyiSDK包管理器中下载和安装所需的编译工具链、调试工具、模拟器等工具,然后在文本编辑器中完成对代码的编辑,接着对项目进行编译构建获得RISC-V架构的可执行程序,最后在模拟器或者RISC-V开发板上进行运行和测试。如果代码需要调试,也可通过调试工具进行代码调试。这一过程和x86下的开发、编译构建、调试、运行的流程是一致的,只是适用于当前开发语言及目标运行设备的RISC-V的编译工具链、模拟器等软件和工具都可以从Ruyi Repo中获取,在安装和IDE初始设置时都已经被集成到 Ruyi IDE 之中,用户无需为环境搭建耗费精力。

  • 开发者交流社区则提供文档和教程、论坛和技术讨论区、博客和文档等等功能,目的是为RISC-V开发者提供一个开放的交流平台,提供互助式技术支持和资源共享,聚集RISC-V开发者并推动RISC-V生态系统的发展。

RuyiSDK 模块需求说明

说明:这是一个初步的需求设想,具体还需要结合技术可行性等进行进一步的调整。供参考。

RUYI 包管理器

RUYI在线软件源(Ruyi Repo)

  1. 软件源的管理内容包括以下内容:
    1. GNU和LLVM编译工具链
    2. 调试工具(GDB、LLDB)
    3. 模拟器(qemu、spike,……)
    4. 运行环境(sysroot / rootfs)
    5. 工具:包括且不限于Ruyi IDE、架构图中的各种工具等
    6. 代码(库、示例 etc.)
    7. 文档
    8. 目标运行环境的RISC-V系统镜像文件
  2. 软件源内包的元数据包含并不限于:发布厂商、版本信息、资源类型、下载链接、文档资源等各种信息(支持属性扩展)等属性信息;如编译工具链有不同厂商发布的,不同版本的软件资源需要进行管理(如GNU和LLVM目前有三种类型:upstream、PLCT、xthead,随着版本的更新和发布,每种类型会产生诸如vX.X这种多个版本)。

RUYI包管理工具(ruyi)

  1. 实现一套命令行接口(CLI),用于与在线软件源交互。
    1. 使开发者能够搜索、安装、更新、卸载和管理软件包。

    2. 包管理工具负责从在线软件源中获取软件包的信息,解析软件包的依赖关系,并自动处理依赖关系的下载和安装。

    3. 能够支持工具自身的升级、卸载;

    4. 能够支持在线软件源中不同类型、不同版本、不同厂商、不同适用环境的软件包的搜索:

      • 按照name搜索
      • 按照版本搜索
      • 按照可支持的扩展指令集搜索
      • 按照资源类型搜索
      • 按照可适用的开发板(或目标运行环境)搜索
      • ……
  2. 实现一套图形用户界面(GUI)工具,用于与在线软件源交互。功能与上述CLI接口类似;(待定)
  3. 三架构支持:工具需要支持x86、aarch64、RISC-V三种架构的主流Linux系统(包含但不限于openEuler、Debian、Ubuntu、Fedora等);

Ruyi IDE

针对RISC-V开发者使用的集成开发环境(IDE)需要具备如下功能:

  1. 项目管理工具:提供项目管理功能,使开发者能够轻松创建、组织和管理他们的RISC-V项目。这包括创建新项目、导入现有项目、管理依赖和库等。

  2. 代码编辑器:提供一个功能强大的代码编辑器,支持开发语言的语法高亮显示、代码自动完成、代码导航、智能感知、错误检查、代码片段管理、版本控制集成、调试支持等功能,以提高开发效率、减少错误,并提供更好的代码编写和维护体验。

    • 代码编辑器常见功能详细说明:

      1. 语法高亮(Syntax Highlighting):根据编程语言的语法规则,对代码进行着色,以增强可读性和代码理解性。
      2. 自动完成(Auto Completion):根据当前上下文,在输入代码的过程中自动弹出变量、函数、类名等的建议,以加快编码速度和减少拼写错误。
      3. 智能感知(Intelligent Code Sense):通过静态分析和语义理解,提供关于代码中变量、函数、类等的详细信息,如类型、参数列表、返回值等,以帮助开发者编写正确的代码。
      4. 代码导航(Code Navigation):提供快速导航到代码的不同部分,如跳转到定义处、跳转到引用处、跳转到函数调用等,以便快速定位和浏览代码。
      5. 重构工具(Refactoring Tools):提供一系列操作,如重命名、提取函数、提取变量等,以帮助开发者改善代码的结构和可维护性。
      6. 调试支持(Debugging Support):提供集成的调试器,使开发者能够设置断点、单步执行代码、查看变量的值等,以便调试和排查代码中的问题。
      7. 版本控制集成(Version Control Integration):与版本控制系统(如Git)集成,提供对代码版本的管理、提交、比较和合并等功能。
      8. 错误检查(Error Checking):即时检测代码中的语法错误、潜在的逻辑错误或常见的编码错误,并给出相应的警告或错误提示。
      9. 代码片段管理(Code Snippet Management):提供可重用的代码片段库,包括预定义的模板或用户自定义的代码片段,以便快速插入常用代码块。
      10. 文档生成(Documentation Generation):根据代码中的注释或特定的标记语言,自动生成代码文档或API文档。
    • 语言插件: 支持C、C++、Java、JavaScript、Python、Rust、Fortran、SAIL、Dart、Chisel等不同的语言类型;

  3. RISC-V编译器/解释器支持:集成RISC-V架构的编译器/解释器,使开发者能够编译和构建基于RISC-V指令集的应用程序。(这里不同语言存在差异,需要一一区别和定义)

  4. RISC-V模拟器和调试器:集成一个RISC-V模拟器和调试器,可以模拟和调试RISC-V指令的执行过程。开发者可以在IDE中设置断点、单步执行代码,并查看变量的值和内存的状态,以进行程序的调试和分析。

  5. 代码分析和优化:提供代码分析工具,帮助开发者发现潜在的性能问题和错误,并提供优化建议。这包括静态代码分析、性能分析和内存分析等功能,以帮助开发者编写更高效和可靠的RISC-V应用程序。

  6. 集成文档和教程:提供与RISC-V相关的文档、教程和示例代码的集成,以帮助开发者学习和使用RISC-V架构。这样,开发者可以在IDE中方便地查阅文档和学习相关知识,加快他们的开发过程。

  7. 语言虚拟机或运行时环境:一些语言需要在运行时依赖于相应的解释器或语言虚拟机。如Python需要在运行时依赖于相应的解释器或语言虚拟机(如CPython、Jython等)。因此,IDE需要与这些解释器或虚拟机进行集成,以便在IDE中直接运行和调试Python代码。

  8. 代码执行环境管理:如Python开发中通常会使用虚拟环境(Virtual Environment)来管理依赖和隔离项目环境。IDE可以提供对虚拟环境的支持,使开发者能够方便地创建、激活和管理虚拟环境。

  9. 交互式解释器和调试器:如Python具有交互式解释器(REPL)的特性,可以在命令行环境中逐行执行代码。IDE可以集成交互式解释器,使开发者能够在IDE中直接执行和调试代码片段,以便进行快速的实验和调试。

  10. 包管理和库支持:很多开发语言都有丰富的第三方库和包管理工具。如Python是pip、conda等。IDE可以提供对这些工具的集成,以便开发者能够方便地搜索、安装和管理各种Python库和依赖项。

针对RISC-V开发者使用的集成开发环境(IDE)需要具备如下特点:

  1. 可扩展性和插件支持:支持插件系统,使开发者能够根据自己的需求扩展和定制IDE。这样,他们可以集成其他工具、添加自定义功能,并与其他开发者共享他们的插件。
  2. 并行编译能力: IDE中,能够为一个项目同时生成不同的运行环境(RISC-V开发板)编译构建出适用该开发板的可执行程序。(待定)
  3. 跨平台兼容性,三架构支持: Ruyi IDE 本身的安装程序需要支持x86、aarch64、RISC-V三种架构的主流Linux系统(包含但不限于openEuler、Debian、Ubuntu、Fedora等);
  4. 定制化: 可视化的集成开发环境的界面部分,除去继承开源软件的部分,自研发/改动部分界面需要个性化定制。
  5. 性能: 要求 Ruyi IDE 能够流畅地运行在主流的PC设备上。

我们希望,当使用 Ruyi IDE 进行例如图像识别应用程序的开发时,能够得到如下步骤所描述的功能支持:

  1. 打开 Ruyi IDE,并创建一个新的项目或工程。在项目中,你可以组织和管理你的代码文件、资源文件和配置文件等。
  2. 在集成开发环境的文本编辑器中,创建一个新的C/C++源代码文件。在该文件中,你可以编写程序,如图像识别算法的逻辑和实现。
  3. 使用语法高亮功能,集成开发环境会根据编程语言的语法规则,对你的代码进行着色,以增强可读性和代码理解性。
  4. 在编写代码的过程中,Ruyi IDE 提供自动完成功能,根据当前上下文,自动弹出变量、函数和类名的建议,以加快编码速度和减少拼写错误。
  5. 在代码编写过程中,集成开发环境提供智能感知功能,通过静态分析和语义理解,提供关于代码中变量、函数、类等的详细信息,如类型、参数列表、返回值等,以帮助你编写正确的代码。
  6. 在集成开发环境中,你可以使用代码导航功能,快速跳转到代码的不同部分,如跳转到函数的定义处、跳转到变量的引用处,以便快速定位和浏览代码。
  7. 在编写完代码后,使用集成开发环境提供的构建工具进行项目的构建。这可能涉及选择适当的编译选项、设置编译器路径和库路径,以及处理依赖关系。
  8. Ruyi IDE 通常提供调试器功能,你可以设置断点、逐行调试代码,并观察变量的值,以解决代码中的错误和问题。
  9. 如果需要提高图像识别程序的性能,你可以使用Ruyi IDE 中的性能分析工具,检查代码的瓶颈并进行优化。
  10. 一旦你完成了开发和调试,Ruyi IDE 提供了部署工具,你可以将编译好的图像识别应用程序部署到RISC-V架构的嵌入式设备上,并进行远程调试和监视。
  11. 在开发过程中,Ruyi IDE 还提供版本控制集成工具,帮助你管理代码的版本、进行代码的协作开发和团队协作。如果遇到技术问题,可以在开发者社区进行技术交流获取帮助。
  12. 最后,Ruyi IDE 还提供文档生成工具,可以自动生成代码文档或API文档,帮助你记录和分享你的代码。

通过 Ruyi IDE 的支持,你可以更高效地开发图像识别应用程序,利用其提供的各种工具和功能,加速开发过程、减少错误,并提供更好的代码编写和维护体验。

总之,RISC-V开发者的集成开发环境将提供一系列专门针对RISC-V架构的工具和功能(这些工具从包管理器中获取),以帮助开发者更轻松、高效地开发RISC-V应用程序。同时,它提供直观的用户界面、高度可定制的功能和良好的扩展性,以满足不同开发者的需求。

开发者社区

一个开发者交流社区需要具备以下功能:

  1. 主页/官方网站: 用来汇聚关于 RuyiSDK 宣发、推广、使用、交流需要的一切资源,是第一级别入口。
  2. 开发者管理: 用户的注册、登录等账号有关的管理。
  3. 统计功能: 对主页累计访问量、软件下载次数、用户注册量等信息进行统计,这是用户维护方持续了解开发者社区活跃程度的一种技术支持手段。
  4. 文档和教程:社区可能提供详细的文档和教程,涵盖RISC-V开发环境的使用指南、编程技巧、调试技巧等方面的内容,帮助开发者快速上手和解决常见问题。
  5. 论坛和讨论区:提供一个讨论区或论坛,让开发者可以发表问题、分享经验、提供建议等。其他开发者可以回复和讨论,促进交流和知识共享。
  6. 博客和文章:提供开发者撰写博客文章的功能,可以分享技术经验、教程、最佳实践等内容。其他开发者可以浏览和评论这些文章,从中获得有价值的信息。
  7. 问答平台:类似于问答社区,开发者可以发布问题,其他开发者可以回答问题或提供解决方案。这样的平台可以快速解决开发过程中的疑问和难题。
  8. 资源共享:开发者可以共享和下载与RISC-V开发相关的资源,如代码示例、项目模板、库文件等。这有助于加快开发速度和提高效率。
  9. 活动和会议:社区可以组织定期的在线活动、研讨会或会议,让开发者聚集在一起,分享最新的技术趋势、案例研究和实践经验。
  10. 专家支持:社区可能吸引一些RISC-V领域的专家,他们可以提供指导、解答问题,甚至组织在线培训或指导课程,帮助开发者更好地利用集成开发环境进行开发。
  11. 插件和扩展:开发者可以共享和下载与RISC-V集成开发环境相关的插件和扩展,以增强开发环境的功能和灵活性。
  12. 就业和项目机会:社区可以提供就业和项目机会的发布平台,帮助开发者寻找合适的工作机会或参与感兴趣的项目。
  13. 积分和奖励机制:社区可以设立积分和奖励机制,鼓励开发者积极参与交流和贡献。例如,回答问题、分享文章或贡献代码可以获得积分或奖励,提高其在社区中的声誉。

这样的一个开发者交流社区可以促进RISC-V集成开发环境的用户之间的交流和合作,提供技术支持和资源共享,增加开发者的学习和开发效率,推动RISC-V生态系统的发展。

',28),a=[e];function n(u,p,R,s,I,y){return o(),l("div",null,a)}const d=i(t,[["render",n]]);export{S as __pageData,d as default}; +import{_ as i,c as l,o,a3 as r}from"./chunks/framework.D4PmY8Hg.js";const S=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"zh/introduction/requirement.md","filePath":"zh/introduction/requirement.md","lastUpdated":1718675566000}'),t={name:"zh/introduction/requirement.md"},e=r('

介绍

RuyiSDK 是一个旨在提供给一个一体化集成开发环境的产品计划。从 2023 年开始筹备,计划用三年时间为 RISC-V 开发者提供一个完整的、全家桶式的全功能开发环境。

RuyiSDK 的目标

  1. 开发者购买了 (几乎) 任何一款 RISC-V 开发板或模组,都可以通过 RuyiSDK 系统获得硬件资料说明、固件 / 软件更新、调试支持等。
  2. 开发者可以指定任何常用的 RISC-V 扩展指令集架构组合,都可以通过 RuyiSDK 系统生成客户所需的操作系统、工具链、语言执行环境 (运行时或虚拟机)、计算库、应用框架等。尤其强调 RuyiSDK 将完全支持 Vector 0.7.1 和 RVP 0.5.2 等已经大规模硅化的草案 标准 (or 厂商定制扩展)。
  3. 培育运营一个活跃全面的开发者交流社区。

RuyiSDK 架构示意图

![[1703147196780.png]]RuyiSDK 的组成

RuyiSDK 主要包含了一个组件管理器(也称为包管理器,Ruyi Repo)、一个集成开发环境(Ruyi IDE)、一个开发者交流社区;

  • 组件管理器包含一个在线软件源 (Ruyi Repo) 和 一个包管理工具(ruyi)。在线软件源即 Ruyi Repo 集中存储了RISC-V集成开发环境所需的编译工具链、调试工具、模拟器、运行环境、文档、代码、工具、target系统镜像等内容;包管理器工具则是用于与在线软件源交互的工具,它提供了一套命令行接口(ruyi)或图形用户界面(GUI未来可能提供),使开发者能够搜索、安装、更新和管理软件包。包管理工具负责从在线软件源中获取软件包的信息,解析软件包的依赖关系,并自动处理依赖关系的下载和安装。

  • 集成开发环境(Ruyi IDE)则是一个专门用来开发能够运行在RISC-V架构设备上的软件和应用的工具箱。可以帮助开发者编写和测试自己的程序。

    想象一下,你要做一款能够运行在RISC-V设备上的应用程序,比如用C或者C++语言开发一个图像识别的程序,Ruyi IDE 就像是一个你的工作室,里面有各种各样的工具可以帮助你完成这个任务。首先创建项目,从RuyiSDK包管理器中下载和安装所需的编译工具链、调试工具、模拟器等工具,然后在文本编辑器中完成对代码的编辑,接着对项目进行编译构建获得RISC-V架构的可执行程序,最后在模拟器或者RISC-V开发板上进行运行和测试。如果代码需要调试,也可通过调试工具进行代码调试。这一过程和x86下的开发、编译构建、调试、运行的流程是一致的,只是适用于当前开发语言及目标运行设备的RISC-V的编译工具链、模拟器等软件和工具都可以从Ruyi Repo中获取,在安装和IDE初始设置时都已经被集成到 Ruyi IDE 之中,用户无需为环境搭建耗费精力。

  • 开发者交流社区则提供文档和教程、论坛和技术讨论区、博客和文档等等功能,目的是为RISC-V开发者提供一个开放的交流平台,提供互助式技术支持和资源共享,聚集RISC-V开发者并推动RISC-V生态系统的发展。

RuyiSDK 模块需求说明

说明:这是一个初步的需求设想,具体还需要结合技术可行性等进行进一步的调整。供参考。

RUYI 包管理器

RUYI在线软件源(Ruyi Repo)

  1. 软件源的管理内容包括以下内容:
    1. GNU和LLVM编译工具链
    2. 调试工具(GDB、LLDB)
    3. 模拟器(qemu、spike,……)
    4. 运行环境(sysroot / rootfs)
    5. 工具:包括且不限于Ruyi IDE、架构图中的各种工具等
    6. 代码(库、示例 etc.)
    7. 文档
    8. 目标运行环境的RISC-V系统镜像文件
  2. 软件源内包的元数据包含并不限于:发布厂商、版本信息、资源类型、下载链接、文档资源等各种信息(支持属性扩展)等属性信息;如编译工具链有不同厂商发布的,不同版本的软件资源需要进行管理(如GNU和LLVM目前有三种类型:upstream、PLCT、xthead,随着版本的更新和发布,每种类型会产生诸如vX.X这种多个版本)。

RUYI包管理工具(ruyi)

  1. 实现一套命令行接口(CLI),用于与在线软件源交互。
    1. 使开发者能够搜索、安装、更新、卸载和管理软件包。

    2. 包管理工具负责从在线软件源中获取软件包的信息,解析软件包的依赖关系,并自动处理依赖关系的下载和安装。

    3. 能够支持工具自身的升级、卸载;

    4. 能够支持在线软件源中不同类型、不同版本、不同厂商、不同适用环境的软件包的搜索:

      • 按照name搜索
      • 按照版本搜索
      • 按照可支持的扩展指令集搜索
      • 按照资源类型搜索
      • 按照可适用的开发板(或目标运行环境)搜索
      • ……
  2. 实现一套图形用户界面(GUI)工具,用于与在线软件源交互。功能与上述CLI接口类似;(待定)
  3. 三架构支持:工具需要支持x86、aarch64、RISC-V三种架构的主流Linux系统(包含但不限于openEuler、Debian、Ubuntu、Fedora等);

Ruyi IDE

针对RISC-V开发者使用的集成开发环境(IDE)需要具备如下功能:

  1. 项目管理工具:提供项目管理功能,使开发者能够轻松创建、组织和管理他们的RISC-V项目。这包括创建新项目、导入现有项目、管理依赖和库等。

  2. 代码编辑器:提供一个功能强大的代码编辑器,支持开发语言的语法高亮显示、代码自动完成、代码导航、智能感知、错误检查、代码片段管理、版本控制集成、调试支持等功能,以提高开发效率、减少错误,并提供更好的代码编写和维护体验。

    • 代码编辑器常见功能详细说明:

      1. 语法高亮(Syntax Highlighting):根据编程语言的语法规则,对代码进行着色,以增强可读性和代码理解性。
      2. 自动完成(Auto Completion):根据当前上下文,在输入代码的过程中自动弹出变量、函数、类名等的建议,以加快编码速度和减少拼写错误。
      3. 智能感知(Intelligent Code Sense):通过静态分析和语义理解,提供关于代码中变量、函数、类等的详细信息,如类型、参数列表、返回值等,以帮助开发者编写正确的代码。
      4. 代码导航(Code Navigation):提供快速导航到代码的不同部分,如跳转到定义处、跳转到引用处、跳转到函数调用等,以便快速定位和浏览代码。
      5. 重构工具(Refactoring Tools):提供一系列操作,如重命名、提取函数、提取变量等,以帮助开发者改善代码的结构和可维护性。
      6. 调试支持(Debugging Support):提供集成的调试器,使开发者能够设置断点、单步执行代码、查看变量的值等,以便调试和排查代码中的问题。
      7. 版本控制集成(Version Control Integration):与版本控制系统(如Git)集成,提供对代码版本的管理、提交、比较和合并等功能。
      8. 错误检查(Error Checking):即时检测代码中的语法错误、潜在的逻辑错误或常见的编码错误,并给出相应的警告或错误提示。
      9. 代码片段管理(Code Snippet Management):提供可重用的代码片段库,包括预定义的模板或用户自定义的代码片段,以便快速插入常用代码块。
      10. 文档生成(Documentation Generation):根据代码中的注释或特定的标记语言,自动生成代码文档或API文档。
    • 语言插件: 支持C、C++、Java、JavaScript、Python、Rust、Fortran、SAIL、Dart、Chisel等不同的语言类型;

  3. RISC-V编译器/解释器支持:集成RISC-V架构的编译器/解释器,使开发者能够编译和构建基于RISC-V指令集的应用程序。(这里不同语言存在差异,需要一一区别和定义)

  4. RISC-V模拟器和调试器:集成一个RISC-V模拟器和调试器,可以模拟和调试RISC-V指令的执行过程。开发者可以在IDE中设置断点、单步执行代码,并查看变量的值和内存的状态,以进行程序的调试和分析。

  5. 代码分析和优化:提供代码分析工具,帮助开发者发现潜在的性能问题和错误,并提供优化建议。这包括静态代码分析、性能分析和内存分析等功能,以帮助开发者编写更高效和可靠的RISC-V应用程序。

  6. 集成文档和教程:提供与RISC-V相关的文档、教程和示例代码的集成,以帮助开发者学习和使用RISC-V架构。这样,开发者可以在IDE中方便地查阅文档和学习相关知识,加快他们的开发过程。

  7. 语言虚拟机或运行时环境:一些语言需要在运行时依赖于相应的解释器或语言虚拟机。如Python需要在运行时依赖于相应的解释器或语言虚拟机(如CPython、Jython等)。因此,IDE需要与这些解释器或虚拟机进行集成,以便在IDE中直接运行和调试Python代码。

  8. 代码执行环境管理:如Python开发中通常会使用虚拟环境(Virtual Environment)来管理依赖和隔离项目环境。IDE可以提供对虚拟环境的支持,使开发者能够方便地创建、激活和管理虚拟环境。

  9. 交互式解释器和调试器:如Python具有交互式解释器(REPL)的特性,可以在命令行环境中逐行执行代码。IDE可以集成交互式解释器,使开发者能够在IDE中直接执行和调试代码片段,以便进行快速的实验和调试。

  10. 包管理和库支持:很多开发语言都有丰富的第三方库和包管理工具。如Python是pip、conda等。IDE可以提供对这些工具的集成,以便开发者能够方便地搜索、安装和管理各种Python库和依赖项。

针对RISC-V开发者使用的集成开发环境(IDE)需要具备如下特点:

  1. 可扩展性和插件支持:支持插件系统,使开发者能够根据自己的需求扩展和定制IDE。这样,他们可以集成其他工具、添加自定义功能,并与其他开发者共享他们的插件。
  2. 并行编译能力: IDE中,能够为一个项目同时生成不同的运行环境(RISC-V开发板)编译构建出适用该开发板的可执行程序。(待定)
  3. 跨平台兼容性,三架构支持: Ruyi IDE 本身的安装程序需要支持x86、aarch64、RISC-V三种架构的主流Linux系统(包含但不限于openEuler、Debian、Ubuntu、Fedora等);
  4. 定制化: 可视化的集成开发环境的界面部分,除去继承开源软件的部分,自研发/改动部分界面需要个性化定制。
  5. 性能: 要求 Ruyi IDE 能够流畅地运行在主流的PC设备上。

我们希望,当使用 Ruyi IDE 进行例如图像识别应用程序的开发时,能够得到如下步骤所描述的功能支持:

  1. 打开 Ruyi IDE,并创建一个新的项目或工程。在项目中,你可以组织和管理你的代码文件、资源文件和配置文件等。
  2. 在集成开发环境的文本编辑器中,创建一个新的C/C++源代码文件。在该文件中,你可以编写程序,如图像识别算法的逻辑和实现。
  3. 使用语法高亮功能,集成开发环境会根据编程语言的语法规则,对你的代码进行着色,以增强可读性和代码理解性。
  4. 在编写代码的过程中,Ruyi IDE 提供自动完成功能,根据当前上下文,自动弹出变量、函数和类名的建议,以加快编码速度和减少拼写错误。
  5. 在代码编写过程中,集成开发环境提供智能感知功能,通过静态分析和语义理解,提供关于代码中变量、函数、类等的详细信息,如类型、参数列表、返回值等,以帮助你编写正确的代码。
  6. 在集成开发环境中,你可以使用代码导航功能,快速跳转到代码的不同部分,如跳转到函数的定义处、跳转到变量的引用处,以便快速定位和浏览代码。
  7. 在编写完代码后,使用集成开发环境提供的构建工具进行项目的构建。这可能涉及选择适当的编译选项、设置编译器路径和库路径,以及处理依赖关系。
  8. Ruyi IDE 通常提供调试器功能,你可以设置断点、逐行调试代码,并观察变量的值,以解决代码中的错误和问题。
  9. 如果需要提高图像识别程序的性能,你可以使用Ruyi IDE 中的性能分析工具,检查代码的瓶颈并进行优化。
  10. 一旦你完成了开发和调试,Ruyi IDE 提供了部署工具,你可以将编译好的图像识别应用程序部署到RISC-V架构的嵌入式设备上,并进行远程调试和监视。
  11. 在开发过程中,Ruyi IDE 还提供版本控制集成工具,帮助你管理代码的版本、进行代码的协作开发和团队协作。如果遇到技术问题,可以在开发者社区进行技术交流获取帮助。
  12. 最后,Ruyi IDE 还提供文档生成工具,可以自动生成代码文档或API文档,帮助你记录和分享你的代码。

通过 Ruyi IDE 的支持,你可以更高效地开发图像识别应用程序,利用其提供的各种工具和功能,加速开发过程、减少错误,并提供更好的代码编写和维护体验。

总之,RISC-V开发者的集成开发环境将提供一系列专门针对RISC-V架构的工具和功能(这些工具从包管理器中获取),以帮助开发者更轻松、高效地开发RISC-V应用程序。同时,它提供直观的用户界面、高度可定制的功能和良好的扩展性,以满足不同开发者的需求。

开发者社区

一个开发者交流社区需要具备以下功能:

  1. 主页/官方网站: 用来汇聚关于 RuyiSDK 宣发、推广、使用、交流需要的一切资源,是第一级别入口。
  2. 开发者管理: 用户的注册、登录等账号有关的管理。
  3. 统计功能: 对主页累计访问量、软件下载次数、用户注册量等信息进行统计,这是用户维护方持续了解开发者社区活跃程度的一种技术支持手段。
  4. 文档和教程:社区可能提供详细的文档和教程,涵盖RISC-V开发环境的使用指南、编程技巧、调试技巧等方面的内容,帮助开发者快速上手和解决常见问题。
  5. 论坛和讨论区:提供一个讨论区或论坛,让开发者可以发表问题、分享经验、提供建议等。其他开发者可以回复和讨论,促进交流和知识共享。
  6. 博客和文章:提供开发者撰写博客文章的功能,可以分享技术经验、教程、最佳实践等内容。其他开发者可以浏览和评论这些文章,从中获得有价值的信息。
  7. 问答平台:类似于问答社区,开发者可以发布问题,其他开发者可以回答问题或提供解决方案。这样的平台可以快速解决开发过程中的疑问和难题。
  8. 资源共享:开发者可以共享和下载与RISC-V开发相关的资源,如代码示例、项目模板、库文件等。这有助于加快开发速度和提高效率。
  9. 活动和会议:社区可以组织定期的在线活动、研讨会或会议,让开发者聚集在一起,分享最新的技术趋势、案例研究和实践经验。
  10. 专家支持:社区可能吸引一些RISC-V领域的专家,他们可以提供指导、解答问题,甚至组织在线培训或指导课程,帮助开发者更好地利用集成开发环境进行开发。
  11. 插件和扩展:开发者可以共享和下载与RISC-V集成开发环境相关的插件和扩展,以增强开发环境的功能和灵活性。
  12. 就业和项目机会:社区可以提供就业和项目机会的发布平台,帮助开发者寻找合适的工作机会或参与感兴趣的项目。
  13. 积分和奖励机制:社区可以设立积分和奖励机制,鼓励开发者积极参与交流和贡献。例如,回答问题、分享文章或贡献代码可以获得积分或奖励,提高其在社区中的声誉。

这样的一个开发者交流社区可以促进RISC-V集成开发环境的用户之间的交流和合作,提供技术支持和资源共享,增加开发者的学习和开发效率,推动RISC-V生态系统的发展。

',28),a=[e];function n(u,p,R,s,I,y){return o(),l("div",null,a)}const d=i(t,[["render",n]]);export{S as __pageData,d as default}; diff --git a/assets/zh_introduction_requirement.md.Dy7XWLXi.lean.js b/assets/zh_introduction_requirement.md.hm-IkXTF.lean.js similarity index 85% rename from assets/zh_introduction_requirement.md.Dy7XWLXi.lean.js rename to assets/zh_introduction_requirement.md.hm-IkXTF.lean.js index 5ed766c4..3291acbb 100644 --- a/assets/zh_introduction_requirement.md.Dy7XWLXi.lean.js +++ b/assets/zh_introduction_requirement.md.hm-IkXTF.lean.js @@ -1 +1 @@ -import{_ as i,c as l,o,a3 as r}from"./chunks/framework.D4PmY8Hg.js";const S=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"zh/introduction/requirement.md","filePath":"zh/introduction/requirement.md","lastUpdated":1718624874000}'),t={name:"zh/introduction/requirement.md"},e=r("",28),a=[e];function n(u,p,R,s,I,y){return o(),l("div",null,a)}const d=i(t,[["render",n]]);export{S as __pageData,d as default}; +import{_ as i,c as l,o,a3 as r}from"./chunks/framework.D4PmY8Hg.js";const S=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"zh/introduction/requirement.md","filePath":"zh/introduction/requirement.md","lastUpdated":1718675566000}'),t={name:"zh/introduction/requirement.md"},e=r("",28),a=[e];function n(u,p,R,s,I,y){return o(),l("div",null,a)}const d=i(t,[["render",n]]);export{S as __pageData,d as default}; diff --git a/assets/zh_plan_index.md.D35ekciP.js b/assets/zh_plan_index.md.DCyo_2vq.js similarity index 98% rename from assets/zh_plan_index.md.D35ekciP.js rename to assets/zh_plan_index.md.DCyo_2vq.js index c09768cf..e69a6e53 100644 --- a/assets/zh_plan_index.md.D35ekciP.js +++ b/assets/zh_plan_index.md.DCyo_2vq.js @@ -1 +1 @@ -import{_ as t,c as d,o as r,a3 as a}from"./chunks/framework.D4PmY8Hg.js";const v=JSON.parse('{"title":"版本规划路线图","description":"","frontmatter":{},"headers":[],"relativePath":"zh/plan/index.md","filePath":"zh/plan/index.md","lastUpdated":1718624874000}'),i={name:"zh/plan/index.md"},e=a('

版本规划路线图

RuyiSDK 是一个旨在提供给一个一体化集成开发环境的产品计划。从 2023 年开始筹备,计划用三年时间为 RISC-V 开发者提供一个完整的、全家桶式的全功能开发环境。

RUYISDK 版本计划

里程碑版本

RuyiSDK 计划以每半年为一个里程碑版本周期来推动 RuyiSDK 的不断完善,目前计划中的里程碑版本有:

  • 23.06 (计划发布时间:2023年6月)
  • 23.12 (计划发布时间:2023年12月)
  • 24.06 (计划发布时间:2024年6月)
  • 24.12 (计划发布时间:2024年12月)
  • 25.06 (计划发布时间:2025年6月)
  • 25.12 (计划发布时间:2025年12月)

敏捷开发版本计划

自2024年1月开始,RuyiSDK 切换为更加敏捷的开发迭代模式,预期每 2 周发布一个开发版本,提供一些新功能,如包管理器能力迭代、RuyiSDK软件源提供新的软件包或者软件包版本升级、或工具链、板卡的新增适配等等,这些更新将以 release note 的方式公开。

  • 发布日期默认每双周周二发布;发布周期内遇3日以上节假日的,延迟一周发布;

  • 敏捷开发版本执行敏捷测试方式:

    • 代码冻结日期在发布日期的上一周周四/周五;
    • 代码冻结日~发布日:执行新特性的测试验证和基础功能回归测试;
    • 发布日~下一次代码冻结日:完成回归测试用例更新和执行全面回归测试;

RUYISDK 规划

2024目标

  • RuyiSDK官网上线。
  • 支持50多种RISC-V设备。
  • 支持运行≥7个流行的Linux发行版。将增加对openKylin和Gentoo的支持。
  • 提供多种图形化IDE环境,包括对Eclipse和VSCode的支持。
  • 服务≥10000名注册开发者。
  • 支持计划于2024年发布的SG2044和SG2380。

敏捷开发版本排期

滚动发行版本号发布日期代码冻结日期备注
v0.32024.01.162024.01.12
v0.42024.01.302024.01.26
v0.52024.02.272024.02.23春节,跳过一次
v0.62024.03.122024.03.08
v0.72024.03.262024.03.22
v0.82024.04.092024.04.07
v0.92024.04.232024.04.19
v0.102024.05.142024.05.10劳动节,延迟一周发布
v0.112024.05.282024.05.24
v0.122024.06.112024.06.06端午节
v0.132024.06.252024.06.21
v0.142024.07.092024.07.05
v0.152024.07.232024.07.19
v0.162024.08.062024.08.02
v0.172024.08.202024.08.16
v0.182024.09.032024.08.30
v0.192024.09.242024.09.20中秋节,延迟一周发布
v0.202024.10.152024.10.11国庆节,延迟一周发布
v0.212024.10.292024.10.25
v0.222024.11.122024.11.08
v0.232024.11.262024.11.22
v0.242024.12.102024.12.06
v0.252024.12.242024.12.20
',14),l=[e];function o(n,h,s,u,c,_){return r(),d("div",null,l)}const S=t(i,[["render",o]]);export{v as __pageData,S as default}; +import{_ as t,c as d,o as r,a3 as a}from"./chunks/framework.D4PmY8Hg.js";const v=JSON.parse('{"title":"版本规划路线图","description":"","frontmatter":{},"headers":[],"relativePath":"zh/plan/index.md","filePath":"zh/plan/index.md","lastUpdated":1718675566000}'),i={name:"zh/plan/index.md"},e=a('

版本规划路线图

RuyiSDK 是一个旨在提供给一个一体化集成开发环境的产品计划。从 2023 年开始筹备,计划用三年时间为 RISC-V 开发者提供一个完整的、全家桶式的全功能开发环境。

RUYISDK 版本计划

里程碑版本

RuyiSDK 计划以每半年为一个里程碑版本周期来推动 RuyiSDK 的不断完善,目前计划中的里程碑版本有:

  • 23.06 (计划发布时间:2023年6月)
  • 23.12 (计划发布时间:2023年12月)
  • 24.06 (计划发布时间:2024年6月)
  • 24.12 (计划发布时间:2024年12月)
  • 25.06 (计划发布时间:2025年6月)
  • 25.12 (计划发布时间:2025年12月)

敏捷开发版本计划

自2024年1月开始,RuyiSDK 切换为更加敏捷的开发迭代模式,预期每 2 周发布一个开发版本,提供一些新功能,如包管理器能力迭代、RuyiSDK软件源提供新的软件包或者软件包版本升级、或工具链、板卡的新增适配等等,这些更新将以 release note 的方式公开。

  • 发布日期默认每双周周二发布;发布周期内遇3日以上节假日的,延迟一周发布;

  • 敏捷开发版本执行敏捷测试方式:

    • 代码冻结日期在发布日期的上一周周四/周五;
    • 代码冻结日~发布日:执行新特性的测试验证和基础功能回归测试;
    • 发布日~下一次代码冻结日:完成回归测试用例更新和执行全面回归测试;

RUYISDK 规划

2024目标

  • RuyiSDK官网上线。
  • 支持50多种RISC-V设备。
  • 支持运行≥7个流行的Linux发行版。将增加对openKylin和Gentoo的支持。
  • 提供多种图形化IDE环境,包括对Eclipse和VSCode的支持。
  • 服务≥10000名注册开发者。
  • 支持计划于2024年发布的SG2044和SG2380。

敏捷开发版本排期

滚动发行版本号发布日期代码冻结日期备注
v0.32024.01.162024.01.12
v0.42024.01.302024.01.26
v0.52024.02.272024.02.23春节,跳过一次
v0.62024.03.122024.03.08
v0.72024.03.262024.03.22
v0.82024.04.092024.04.07
v0.92024.04.232024.04.19
v0.102024.05.142024.05.10劳动节,延迟一周发布
v0.112024.05.282024.05.24
v0.122024.06.112024.06.06端午节
v0.132024.06.252024.06.21
v0.142024.07.092024.07.05
v0.152024.07.232024.07.19
v0.162024.08.062024.08.02
v0.172024.08.202024.08.16
v0.182024.09.032024.08.30
v0.192024.09.242024.09.20中秋节,延迟一周发布
v0.202024.10.152024.10.11国庆节,延迟一周发布
v0.212024.10.292024.10.25
v0.222024.11.122024.11.08
v0.232024.11.262024.11.22
v0.242024.12.102024.12.06
v0.252024.12.242024.12.20
',14),l=[e];function o(n,h,s,u,c,_){return r(),d("div",null,l)}const S=t(i,[["render",o]]);export{v as __pageData,S as default}; diff --git a/assets/zh_plan_index.md.D35ekciP.lean.js b/assets/zh_plan_index.md.DCyo_2vq.lean.js similarity index 85% rename from assets/zh_plan_index.md.D35ekciP.lean.js rename to assets/zh_plan_index.md.DCyo_2vq.lean.js index eb3a8a33..c3910e72 100644 --- a/assets/zh_plan_index.md.D35ekciP.lean.js +++ b/assets/zh_plan_index.md.DCyo_2vq.lean.js @@ -1 +1 @@ -import{_ as t,c as d,o as r,a3 as a}from"./chunks/framework.D4PmY8Hg.js";const v=JSON.parse('{"title":"版本规划路线图","description":"","frontmatter":{},"headers":[],"relativePath":"zh/plan/index.md","filePath":"zh/plan/index.md","lastUpdated":1718624874000}'),i={name:"zh/plan/index.md"},e=a("",14),l=[e];function o(n,h,s,u,c,_){return r(),d("div",null,l)}const S=t(i,[["render",o]]);export{v as __pageData,S as default}; +import{_ as t,c as d,o as r,a3 as a}from"./chunks/framework.D4PmY8Hg.js";const v=JSON.parse('{"title":"版本规划路线图","description":"","frontmatter":{},"headers":[],"relativePath":"zh/plan/index.md","filePath":"zh/plan/index.md","lastUpdated":1718675566000}'),i={name:"zh/plan/index.md"},e=a("",14),l=[e];function o(n,h,s,u,c,_){return r(),d("div",null,l)}const S=t(i,[["render",o]]);export{v as __pageData,S as default}; diff --git a/assets/zh_ruyi_getstarted_index.md.BrTCZS-O.js b/assets/zh_ruyi_getstarted_index.md.MWEt3k8n.js similarity index 99% rename from assets/zh_ruyi_getstarted_index.md.BrTCZS-O.js rename to assets/zh_ruyi_getstarted_index.md.MWEt3k8n.js index 88b5ce57..dcb763e5 100644 --- a/assets/zh_ruyi_getstarted_index.md.BrTCZS-O.js +++ b/assets/zh_ruyi_getstarted_index.md.MWEt3k8n.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const c=JSON.parse('{"title":"开始","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/getstarted/index.md","filePath":"zh/ruyi/getstarted/index.md","lastUpdated":1718624874000}'),h={name:"zh/ruyi/getstarted/index.md"},t=n(`

开始

安装依赖软件

RUYI 包管理器依赖一些外部工具,需要手动安装

Debian/Ubuntu

bash
$ sudo apt-get install wget git tar bzip2 xz-utils zstd

Fedora/openEuler

bash
$ sudo apt-get install wget git tar bzip2 xz zstd

注意从 v0.6.0 版本开始 RUYI 包管理不再依赖 git,而是使用 pygit2 作为替代方案。

安装 RUYI 包管理器

GitHub ReleasesISCAS 镜像源下载最新版本,选择合适架构的预编译二进制下载,当前 RUYI 包管理支持 amd64 、arm64、 riscv64 架构编译环境。

这里以 amd64 架构环境为例进行安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/testing/ruyi.amd64.20231211
+import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const c=JSON.parse('{"title":"开始","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/getstarted/index.md","filePath":"zh/ruyi/getstarted/index.md","lastUpdated":1718675566000}'),h={name:"zh/ruyi/getstarted/index.md"},t=n(`

开始

安装依赖软件

RUYI 包管理器依赖一些外部工具,需要手动安装

Debian/Ubuntu

bash
$ sudo apt-get install wget git tar bzip2 xz-utils zstd

Fedora/openEuler

bash
$ sudo apt-get install wget git tar bzip2 xz zstd

注意从 v0.6.0 版本开始 RUYI 包管理不再依赖 git,而是使用 pygit2 作为替代方案。

安装 RUYI 包管理器

GitHub ReleasesISCAS 镜像源下载最新版本,选择合适架构的预编译二进制下载,当前 RUYI 包管理支持 amd64 、arm64、 riscv64 架构编译环境。

这里以 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
diff --git a/assets/zh_ruyi_getstarted_index.md.BrTCZS-O.lean.js b/assets/zh_ruyi_getstarted_index.md.MWEt3k8n.lean.js
similarity index 85%
rename from assets/zh_ruyi_getstarted_index.md.BrTCZS-O.lean.js
rename to assets/zh_ruyi_getstarted_index.md.MWEt3k8n.lean.js
index 6450f40b..fe39ce5e 100644
--- a/assets/zh_ruyi_getstarted_index.md.BrTCZS-O.lean.js
+++ b/assets/zh_ruyi_getstarted_index.md.MWEt3k8n.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const c=JSON.parse('{"title":"开始","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/getstarted/index.md","filePath":"zh/ruyi/getstarted/index.md","lastUpdated":1718624874000}'),h={name:"zh/ruyi/getstarted/index.md"},t=n("",64),l=[t];function p(e,k,F,r,d,g){return a(),i("div",null,l)}const o=s(h,[["render",p]]);export{c as __pageData,o as default};
+import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const c=JSON.parse('{"title":"开始","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/getstarted/index.md","filePath":"zh/ruyi/getstarted/index.md","lastUpdated":1718675566000}'),h={name:"zh/ruyi/getstarted/index.md"},t=n("",64),l=[t];function p(e,k,F,r,d,g){return a(),i("div",null,l)}const o=s(h,[["render",p]]);export{c as __pageData,o as default};
diff --git a/assets/zh_ruyi_index.md.DhMgs9w9.js b/assets/zh_ruyi_index.md.DkS5zeVg.js
similarity index 98%
rename from assets/zh_ruyi_index.md.DhMgs9w9.js
rename to assets/zh_ruyi_index.md.DkS5zeVg.js
index 1a90bc5c..57dddf07 100644
--- a/assets/zh_ruyi_index.md.DhMgs9w9.js
+++ b/assets/zh_ruyi_index.md.DkS5zeVg.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as i,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"RUYI 包管理器","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/index.md","filePath":"zh/ruyi/index.md","lastUpdated":1718624874000}'),e={name:"zh/ruyi/index.md"},l=n(`

RUYI 包管理器

RUYI 包管理是 RuyiSDK中负责管理RuyiSDK各种软件源的工具,用于管理工具链、模拟器、源码等各种二进制软件包和源码包。

支持的发行版平台

当前 RUYI 包管理器具有良好的平台兼容性以及多发行版兼容性,目前经过测试可用的环境有(仅限验证过的):

  • x86_64 Fedora 38
  • x86_64 Ubuntu 22.04 LTS
  • x86_64 openEuler 23.09
  • riscv64 RevyOS 20231210
  • riscv64 openEuler 23.09

上述操作系统链接参考本文文末的“附:外部链接”章节。

命令

RUYI 目前支持的命令如下:

bash
# 从配置的软件源更新本地软件包缓存
+import{_ as s,c as a,o as i,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"RUYI 包管理器","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/index.md","filePath":"zh/ruyi/index.md","lastUpdated":1718675566000}'),e={name:"zh/ruyi/index.md"},l=n(`

RUYI 包管理器

RUYI 包管理是 RuyiSDK中负责管理RuyiSDK各种软件源的工具,用于管理工具链、模拟器、源码等各种二进制软件包和源码包。

支持的发行版平台

当前 RUYI 包管理器具有良好的平台兼容性以及多发行版兼容性,目前经过测试可用的环境有(仅限验证过的):

  • x86_64 Fedora 38
  • x86_64 Ubuntu 22.04 LTS
  • x86_64 openEuler 23.09
  • riscv64 RevyOS 20231210
  • riscv64 openEuler 23.09

上述操作系统链接参考本文文末的“附:外部链接”章节。

命令

RUYI 目前支持的命令如下:

bash
# 从配置的软件源更新本地软件包缓存
 ruyi update
 
 # 从本地软件包缓存中列出可用软件包
diff --git a/assets/zh_ruyi_index.md.DhMgs9w9.lean.js b/assets/zh_ruyi_index.md.DkS5zeVg.lean.js
similarity index 69%
rename from assets/zh_ruyi_index.md.DhMgs9w9.lean.js
rename to assets/zh_ruyi_index.md.DkS5zeVg.lean.js
index 6259ec04..b8001bbc 100644
--- a/assets/zh_ruyi_index.md.DhMgs9w9.lean.js
+++ b/assets/zh_ruyi_index.md.DkS5zeVg.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as i,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"RUYI 包管理器","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/index.md","filePath":"zh/ruyi/index.md","lastUpdated":1718624874000}'),e={name:"zh/ruyi/index.md"},l=n("",13),r=[l];function t(p,h,k,o,d,c){return i(),a("div",null,r)}const F=s(e,[["render",t]]);export{y as __pageData,F as default};
+import{_ as s,c as a,o as i,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"RUYI 包管理器","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/index.md","filePath":"zh/ruyi/index.md","lastUpdated":1718675566000}'),e={name:"zh/ruyi/index.md"},l=n("",13),r=[l];function t(p,h,k,o,d,c){return i(),a("div",null,r)}const F=s(e,[["render",t]]);export{y as __pageData,F as default};
diff --git a/assets/zh_ruyi_updates_0.10.0.md.ClcHcnRO.js b/assets/zh_ruyi_updates_0.10.0.md.CVskd8cX.js
similarity index 99%
rename from assets/zh_ruyi_updates_0.10.0.md.ClcHcnRO.js
rename to assets/zh_ruyi_updates_0.10.0.md.CVskd8cX.js
index adfda78e..61554607 100644
--- a/assets/zh_ruyi_updates_0.10.0.md.ClcHcnRO.js
+++ b/assets/zh_ruyi_updates_0.10.0.md.CVskd8cX.js
@@ -1,4 +1,4 @@
-import{_ as t,c as e,o as n,a3 as l}from"./chunks/framework.D4PmY8Hg.js";const C=JSON.parse('{"title":"v0.10.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.10.0.md","filePath":"zh/ruyi/updates/0.10.0.md","lastUpdated":1718624874000}'),i={name:"zh/ruyi/updates/0.10.0.md"},d=l(`

v0.10.0 版本新增特性

  • news items 多语言支持
  • 板卡镜像刷写/文档支持增加到 28 款

安装 v0.10.0

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.10.0/ruyi.amd64
+import{_ as t,c as e,o as n,a3 as l}from"./chunks/framework.D4PmY8Hg.js";const C=JSON.parse('{"title":"v0.10.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.10.0.md","filePath":"zh/ruyi/updates/0.10.0.md","lastUpdated":1718675566000}'),i={name:"zh/ruyi/updates/0.10.0.md"},d=l(`

v0.10.0 版本新增特性

  • news items 多语言支持
  • 板卡镜像刷写/文档支持增加到 28 款

安装 v0.10.0

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.10.0/ruyi.amd64
 $ chmod +x ./ruyi.amd64
 $ sudo cp ./ruyi.amd64 /usr/local/bin/ruyi

在 riscv64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.10.0/ruyi.riscv64
 $ chmod +x ./ruyi.riscv64
diff --git a/assets/zh_ruyi_updates_0.10.0.md.ClcHcnRO.lean.js b/assets/zh_ruyi_updates_0.10.0.md.CVskd8cX.lean.js
similarity index 86%
rename from assets/zh_ruyi_updates_0.10.0.md.ClcHcnRO.lean.js
rename to assets/zh_ruyi_updates_0.10.0.md.CVskd8cX.lean.js
index 4f2a1ba2..7244272d 100644
--- a/assets/zh_ruyi_updates_0.10.0.md.ClcHcnRO.lean.js
+++ b/assets/zh_ruyi_updates_0.10.0.md.CVskd8cX.lean.js
@@ -1 +1 @@
-import{_ as t,c as e,o as n,a3 as l}from"./chunks/framework.D4PmY8Hg.js";const C=JSON.parse('{"title":"v0.10.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.10.0.md","filePath":"zh/ruyi/updates/0.10.0.md","lastUpdated":1718624874000}'),i={name:"zh/ruyi/updates/0.10.0.md"},d=l("",23),s=[d];function a(r,c,y,g,o,x){return n(),e("div",null,s)}const p=t(i,[["render",a]]);export{C as __pageData,p as default};
+import{_ as t,c as e,o as n,a3 as l}from"./chunks/framework.D4PmY8Hg.js";const C=JSON.parse('{"title":"v0.10.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.10.0.md","filePath":"zh/ruyi/updates/0.10.0.md","lastUpdated":1718675566000}'),i={name:"zh/ruyi/updates/0.10.0.md"},d=l("",23),s=[d];function a(r,c,y,g,o,x){return n(),e("div",null,s)}const p=t(i,[["render",a]]);export{C as __pageData,p as default};
diff --git a/assets/zh_ruyi_updates_0.11.0.md.uMy2JFT5.js b/assets/zh_ruyi_updates_0.11.0.md.D-fNb-_4.js
similarity index 99%
rename from assets/zh_ruyi_updates_0.11.0.md.uMy2JFT5.js
rename to assets/zh_ruyi_updates_0.11.0.md.D-fNb-_4.js
index d9556c5e..c729b130 100644
--- a/assets/zh_ruyi_updates_0.11.0.md.uMy2JFT5.js
+++ b/assets/zh_ruyi_updates_0.11.0.md.D-fNb-_4.js
@@ -1,4 +1,4 @@
-import{_ as t,c as e,o as n,a3 as l}from"./chunks/framework.D4PmY8Hg.js";const C=JSON.parse('{"title":"v0.11.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.11.0.md","filePath":"zh/ruyi/updates/0.11.0.md","lastUpdated":1718624874000}'),i={name:"zh/ruyi/updates/0.11.0.md"},d=l(`

v0.11.0 版本新增特性

  • 板卡镜像刷写/文档支持增加到 29 款

注意 0.11.0 版本会忽略 XDG_STATE_HOME 环境变量,如果在意这个问题请跳过这个版本,具体可以查看 issue #151

安装 v0.11.0

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.11.0/ruyi.amd64
+import{_ as t,c as e,o as n,a3 as l}from"./chunks/framework.D4PmY8Hg.js";const C=JSON.parse('{"title":"v0.11.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.11.0.md","filePath":"zh/ruyi/updates/0.11.0.md","lastUpdated":1718675566000}'),i={name:"zh/ruyi/updates/0.11.0.md"},d=l(`

v0.11.0 版本新增特性

  • 板卡镜像刷写/文档支持增加到 29 款

注意 0.11.0 版本会忽略 XDG_STATE_HOME 环境变量,如果在意这个问题请跳过这个版本,具体可以查看 issue #151

安装 v0.11.0

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.11.0/ruyi.amd64
 $ chmod +x ./ruyi.amd64
 $ sudo cp ./ruyi.amd64 /usr/local/bin/ruyi

在 riscv64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.11.0/ruyi.riscv64
 $ chmod +x ./ruyi.riscv64
diff --git a/assets/zh_ruyi_updates_0.11.0.md.uMy2JFT5.lean.js b/assets/zh_ruyi_updates_0.11.0.md.D-fNb-_4.lean.js
similarity index 86%
rename from assets/zh_ruyi_updates_0.11.0.md.uMy2JFT5.lean.js
rename to assets/zh_ruyi_updates_0.11.0.md.D-fNb-_4.lean.js
index ac17a1b1..e4f86ea0 100644
--- a/assets/zh_ruyi_updates_0.11.0.md.uMy2JFT5.lean.js
+++ b/assets/zh_ruyi_updates_0.11.0.md.D-fNb-_4.lean.js
@@ -1 +1 @@
-import{_ as t,c as e,o as n,a3 as l}from"./chunks/framework.D4PmY8Hg.js";const C=JSON.parse('{"title":"v0.11.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.11.0.md","filePath":"zh/ruyi/updates/0.11.0.md","lastUpdated":1718624874000}'),i={name:"zh/ruyi/updates/0.11.0.md"},d=l("",22),a=[d];function s(r,c,y,g,o,x){return n(),e("div",null,a)}const p=t(i,[["render",s]]);export{C as __pageData,p as default};
+import{_ as t,c as e,o as n,a3 as l}from"./chunks/framework.D4PmY8Hg.js";const C=JSON.parse('{"title":"v0.11.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.11.0.md","filePath":"zh/ruyi/updates/0.11.0.md","lastUpdated":1718675566000}'),i={name:"zh/ruyi/updates/0.11.0.md"},d=l("",22),a=[d];function s(r,c,y,g,o,x){return n(),e("div",null,a)}const p=t(i,[["render",s]]);export{C as __pageData,p as default};
diff --git a/assets/zh_ruyi_updates_0.12.0.md.SvOHyqAC.js b/assets/zh_ruyi_updates_0.12.0.md.BnRYCbxm.js
similarity index 99%
rename from assets/zh_ruyi_updates_0.12.0.md.SvOHyqAC.js
rename to assets/zh_ruyi_updates_0.12.0.md.BnRYCbxm.js
index e97914a2..7ec3328d 100644
--- a/assets/zh_ruyi_updates_0.12.0.md.SvOHyqAC.js
+++ b/assets/zh_ruyi_updates_0.12.0.md.BnRYCbxm.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"v0.12.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.12.0.md","filePath":"zh/ruyi/updates/0.12.0.md","lastUpdated":1718624874000}'),h={name:"zh/ruyi/updates/0.12.0.md"},t=n(`

v0.12.0 版本新增特性

  • 修复了先前 Pine64 Star64 Armbian 镜像无法下载的问题。
  • 对于部分必须由用户手工下载的文件,支持了相应的用户体验:按照当前系统语言设置,渲染相应的提示语。
  • 升级了 pygit2 依赖库版本到 1.5.0,以支持 libgit2 的 1.8 版本。
  • 修复了 0.11.0 版本中 XDG_STATE_HOME 环境变量被无视的问题。

安装 v0.12.0

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.12.0/ruyi.amd64
+import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"v0.12.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.12.0.md","filePath":"zh/ruyi/updates/0.12.0.md","lastUpdated":1718675566000}'),h={name:"zh/ruyi/updates/0.12.0.md"},t=n(`

v0.12.0 版本新增特性

  • 修复了先前 Pine64 Star64 Armbian 镜像无法下载的问题。
  • 对于部分必须由用户手工下载的文件,支持了相应的用户体验:按照当前系统语言设置,渲染相应的提示语。
  • 升级了 pygit2 依赖库版本到 1.5.0,以支持 libgit2 的 1.8 版本。
  • 修复了 0.11.0 版本中 XDG_STATE_HOME 环境变量被无视的问题。

安装 v0.12.0

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.12.0/ruyi.amd64
 $ chmod +x ./ruyi.amd64
 $ sudo cp ./ruyi.amd64 /usr/local/bin/ruyi

在 riscv64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.12.0/ruyi.riscv64
 $ chmod +x ./ruyi.riscv64
diff --git a/assets/zh_ruyi_updates_0.12.0.md.SvOHyqAC.lean.js b/assets/zh_ruyi_updates_0.12.0.md.BnRYCbxm.lean.js
similarity index 86%
rename from assets/zh_ruyi_updates_0.12.0.md.SvOHyqAC.lean.js
rename to assets/zh_ruyi_updates_0.12.0.md.BnRYCbxm.lean.js
index 314954f6..67cc56b7 100644
--- a/assets/zh_ruyi_updates_0.12.0.md.SvOHyqAC.lean.js
+++ b/assets/zh_ruyi_updates_0.12.0.md.BnRYCbxm.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"v0.12.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.12.0.md","filePath":"zh/ruyi/updates/0.12.0.md","lastUpdated":1718624874000}'),h={name:"zh/ruyi/updates/0.12.0.md"},t=n("",11),l=[t];function p(e,k,F,r,d,c){return a(),i("div",null,l)}const o=s(h,[["render",p]]);export{y as __pageData,o as default};
+import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"v0.12.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.12.0.md","filePath":"zh/ruyi/updates/0.12.0.md","lastUpdated":1718675566000}'),h={name:"zh/ruyi/updates/0.12.0.md"},t=n("",11),l=[t];function p(e,k,F,r,d,c){return a(),i("div",null,l)}const o=s(h,[["render",p]]);export{y as __pageData,o as default};
diff --git a/assets/zh_ruyi_updates_0.3.0.md.BWhXIER1.js b/assets/zh_ruyi_updates_0.3.0.md.BV1nNQLD.js
similarity index 99%
rename from assets/zh_ruyi_updates_0.3.0.md.BWhXIER1.js
rename to assets/zh_ruyi_updates_0.3.0.md.BV1nNQLD.js
index 00a63eba..38e8891b 100644
--- a/assets/zh_ruyi_updates_0.3.0.md.BWhXIER1.js
+++ b/assets/zh_ruyi_updates_0.3.0.md.BV1nNQLD.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const E=JSON.parse('{"title":"v0.3.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.3.0.md","filePath":"zh/ruyi/updates/0.3.0.md","lastUpdated":1718624874000}'),h={name:"zh/ruyi/updates/0.3.0.md"},l=n(`

v0.3.0 版本新增特性

bash
ruyi news
+import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const E=JSON.parse('{"title":"v0.3.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.3.0.md","filePath":"zh/ruyi/updates/0.3.0.md","lastUpdated":1718675566000}'),h={name:"zh/ruyi/updates/0.3.0.md"},l=n(`

v0.3.0 版本新增特性

bash
ruyi news
 # 新闻
 ruyi device
 # 板卡镜像刷写

安装 v0.3.0

v0.3.0 版本的稳定二进制为 0.3.0 。

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.3.0/ruyi.amd64
diff --git a/assets/zh_ruyi_updates_0.3.0.md.BWhXIER1.lean.js b/assets/zh_ruyi_updates_0.3.0.md.BV1nNQLD.lean.js
similarity index 86%
rename from assets/zh_ruyi_updates_0.3.0.md.BWhXIER1.lean.js
rename to assets/zh_ruyi_updates_0.3.0.md.BV1nNQLD.lean.js
index 1c5704f5..e575cc95 100644
--- a/assets/zh_ruyi_updates_0.3.0.md.BWhXIER1.lean.js
+++ b/assets/zh_ruyi_updates_0.3.0.md.BV1nNQLD.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const E=JSON.parse('{"title":"v0.3.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.3.0.md","filePath":"zh/ruyi/updates/0.3.0.md","lastUpdated":1718624874000}'),h={name:"zh/ruyi/updates/0.3.0.md"},l=n("",24),k=[l];function p(t,e,F,d,r,y){return a(),i("div",null,k)}const C=s(h,[["render",p]]);export{E as __pageData,C as default};
+import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const E=JSON.parse('{"title":"v0.3.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.3.0.md","filePath":"zh/ruyi/updates/0.3.0.md","lastUpdated":1718675566000}'),h={name:"zh/ruyi/updates/0.3.0.md"},l=n("",24),k=[l];function p(t,e,F,d,r,y){return a(),i("div",null,k)}const C=s(h,[["render",p]]);export{E as __pageData,C as default};
diff --git a/assets/zh_ruyi_updates_0.4.0.md.lB_P7ERF.js b/assets/zh_ruyi_updates_0.4.0.md.BgPVjIFM.js
similarity index 99%
rename from assets/zh_ruyi_updates_0.4.0.md.lB_P7ERF.js
rename to assets/zh_ruyi_updates_0.4.0.md.BgPVjIFM.js
index ab5ed539..27c799fb 100644
--- a/assets/zh_ruyi_updates_0.4.0.md.lB_P7ERF.js
+++ b/assets/zh_ruyi_updates_0.4.0.md.BgPVjIFM.js
@@ -1,4 +1,4 @@
-import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"v0.4.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.4.0.md","filePath":"zh/ruyi/updates/0.4.0.md","lastUpdated":1718624874000}'),n={name:"zh/ruyi/updates/0.4.0.md"},a=s(`

v0.4.0 版本新增特性

bash
ruyi device
+import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"v0.4.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.4.0.md","filePath":"zh/ruyi/updates/0.4.0.md","lastUpdated":1718675566000}'),n={name:"zh/ruyi/updates/0.4.0.md"},a=s(`

v0.4.0 版本新增特性

bash
ruyi device
 # 板卡镜像刷写

安装 v0.4.0

v0.4.0 版本的稳定二进制为 0.4.0 。

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.4.0/ruyi.amd64
 $ chmod +x ./ruyi.amd64
 $ sudo cp ./ruyi.amd64 /usr/local/bin/ruyi

在 riscv64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.4.0/ruyi.riscv64
diff --git a/assets/zh_ruyi_updates_0.4.0.md.lB_P7ERF.lean.js b/assets/zh_ruyi_updates_0.4.0.md.BgPVjIFM.lean.js
similarity index 86%
rename from assets/zh_ruyi_updates_0.4.0.md.lB_P7ERF.lean.js
rename to assets/zh_ruyi_updates_0.4.0.md.BgPVjIFM.lean.js
index dedb2198..62962dd6 100644
--- a/assets/zh_ruyi_updates_0.4.0.md.lB_P7ERF.lean.js
+++ b/assets/zh_ruyi_updates_0.4.0.md.BgPVjIFM.lean.js
@@ -1 +1 @@
-import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"v0.4.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.4.0.md","filePath":"zh/ruyi/updates/0.4.0.md","lastUpdated":1718624874000}'),n={name:"zh/ruyi/updates/0.4.0.md"},a=s("",17),l=[a];function d(r,h,c,p,o,y){return i(),e("div",null,l)}const F=t(n,[["render",d]]);export{k as __pageData,F as default};
+import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"v0.4.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.4.0.md","filePath":"zh/ruyi/updates/0.4.0.md","lastUpdated":1718675566000}'),n={name:"zh/ruyi/updates/0.4.0.md"},a=s("",17),l=[a];function d(r,h,c,p,o,y){return i(),e("div",null,l)}const F=t(n,[["render",d]]);export{k as __pageData,F as default};
diff --git a/assets/zh_ruyi_updates_0.5.0.md.DErlqVcV.js b/assets/zh_ruyi_updates_0.5.0.md.C5otbDdo.js
similarity index 99%
rename from assets/zh_ruyi_updates_0.5.0.md.DErlqVcV.js
rename to assets/zh_ruyi_updates_0.5.0.md.C5otbDdo.js
index e3b701eb..5d433035 100644
--- a/assets/zh_ruyi_updates_0.5.0.md.DErlqVcV.js
+++ b/assets/zh_ruyi_updates_0.5.0.md.C5otbDdo.js
@@ -1,4 +1,4 @@
-import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const o=JSON.parse('{"title":"v0.5.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.5.0.md","filePath":"zh/ruyi/updates/0.5.0.md","lastUpdated":1718624874000}'),n={name:"zh/ruyi/updates/0.5.0.md"},a=s(`

v0.5.0 版本新增特性

  • 板卡镜像刷写支持增加到 9 款
  • 镜像源换源支持

安装 v0.5.0

v0.5.0 版本的稳定二进制为 0.5.0 。

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.5.0/ruyi.amd64
+import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const o=JSON.parse('{"title":"v0.5.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.5.0.md","filePath":"zh/ruyi/updates/0.5.0.md","lastUpdated":1718675566000}'),n={name:"zh/ruyi/updates/0.5.0.md"},a=s(`

v0.5.0 版本新增特性

  • 板卡镜像刷写支持增加到 9 款
  • 镜像源换源支持

安装 v0.5.0

v0.5.0 版本的稳定二进制为 0.5.0 。

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.5.0/ruyi.amd64
 $ chmod +x ./ruyi.amd64
 $ sudo cp ./ruyi.amd64 /usr/local/bin/ruyi

在 riscv64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.5.0/ruyi.riscv64
 $ chmod +x ./ruyi.riscv64
diff --git a/assets/zh_ruyi_updates_0.5.0.md.DErlqVcV.lean.js b/assets/zh_ruyi_updates_0.5.0.md.C5otbDdo.lean.js
similarity index 86%
rename from assets/zh_ruyi_updates_0.5.0.md.DErlqVcV.lean.js
rename to assets/zh_ruyi_updates_0.5.0.md.C5otbDdo.lean.js
index b9e67687..444d5e22 100644
--- a/assets/zh_ruyi_updates_0.5.0.md.DErlqVcV.lean.js
+++ b/assets/zh_ruyi_updates_0.5.0.md.C5otbDdo.lean.js
@@ -1 +1 @@
-import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const o=JSON.parse('{"title":"v0.5.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.5.0.md","filePath":"zh/ruyi/updates/0.5.0.md","lastUpdated":1718624874000}'),n={name:"zh/ruyi/updates/0.5.0.md"},a=s("",21),l=[a];function d(r,p,h,c,k,y){return i(),e("div",null,l)}const F=t(n,[["render",d]]);export{o as __pageData,F as default};
+import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const o=JSON.parse('{"title":"v0.5.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.5.0.md","filePath":"zh/ruyi/updates/0.5.0.md","lastUpdated":1718675566000}'),n={name:"zh/ruyi/updates/0.5.0.md"},a=s("",21),l=[a];function d(r,p,h,c,k,y){return i(),e("div",null,l)}const F=t(n,[["render",d]]);export{o as __pageData,F as default};
diff --git a/assets/zh_ruyi_updates_0.6.0.md.Dy-fRhJJ.js b/assets/zh_ruyi_updates_0.6.0.md.Ba1BrHrd.js
similarity index 99%
rename from assets/zh_ruyi_updates_0.6.0.md.Dy-fRhJJ.js
rename to assets/zh_ruyi_updates_0.6.0.md.Ba1BrHrd.js
index 484b4cbb..4bae68eb 100644
--- a/assets/zh_ruyi_updates_0.6.0.md.Dy-fRhJJ.js
+++ b/assets/zh_ruyi_updates_0.6.0.md.Ba1BrHrd.js
@@ -1,4 +1,4 @@
-import{_ as t,c as e,o as i,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const x=JSON.parse('{"title":"v0.6.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.6.0.md","filePath":"zh/ruyi/updates/0.6.0.md","lastUpdated":1718624874000}'),l={name:"zh/ruyi/updates/0.6.0.md"},s=n(`

v0.6.0 版本新增特性

  • 使用 pygit2 替代对 git 的依赖
  • SiFive HiFive Unmatched 镜像支持增加到 5 种

安装 v0.6.0

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.6.0/ruyi.amd64
+import{_ as t,c as e,o as i,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const x=JSON.parse('{"title":"v0.6.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.6.0.md","filePath":"zh/ruyi/updates/0.6.0.md","lastUpdated":1718675566000}'),l={name:"zh/ruyi/updates/0.6.0.md"},s=n(`

v0.6.0 版本新增特性

  • 使用 pygit2 替代对 git 的依赖
  • SiFive HiFive Unmatched 镜像支持增加到 5 种

安装 v0.6.0

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.6.0/ruyi.amd64
 $ chmod +x ./ruyi.amd64
 $ sudo cp ./ruyi.amd64 /usr/local/bin/ruyi

注意 v0.6.0 版本的 riscv64 二进制可能无法正常工作,请使用更新的版本。

检查安装版本:

bash
$ ruyi version
 Ruyi 0.6.0
diff --git a/assets/zh_ruyi_updates_0.6.0.md.Dy-fRhJJ.lean.js b/assets/zh_ruyi_updates_0.6.0.md.Ba1BrHrd.lean.js
similarity index 86%
rename from assets/zh_ruyi_updates_0.6.0.md.Dy-fRhJJ.lean.js
rename to assets/zh_ruyi_updates_0.6.0.md.Ba1BrHrd.lean.js
index 96158812..58de4c7f 100644
--- a/assets/zh_ruyi_updates_0.6.0.md.Dy-fRhJJ.lean.js
+++ b/assets/zh_ruyi_updates_0.6.0.md.Ba1BrHrd.lean.js
@@ -1 +1 @@
-import{_ as t,c as e,o as i,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const x=JSON.parse('{"title":"v0.6.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.6.0.md","filePath":"zh/ruyi/updates/0.6.0.md","lastUpdated":1718624874000}'),l={name:"zh/ruyi/updates/0.6.0.md"},s=n("",16),d=[s];function a(r,c,y,o,g,h){return i(),e("div",null,d)}const k=t(l,[["render",a]]);export{x as __pageData,k as default};
+import{_ as t,c as e,o as i,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const x=JSON.parse('{"title":"v0.6.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.6.0.md","filePath":"zh/ruyi/updates/0.6.0.md","lastUpdated":1718675566000}'),l={name:"zh/ruyi/updates/0.6.0.md"},s=n("",16),d=[s];function a(r,c,y,o,g,h){return i(),e("div",null,d)}const k=t(l,[["render",a]]);export{x as __pageData,k as default};
diff --git a/assets/zh_ruyi_updates_0.7.0.md.DG4THnfW.js b/assets/zh_ruyi_updates_0.7.0.md.Dx9cz4Ke.js
similarity index 99%
rename from assets/zh_ruyi_updates_0.7.0.md.DG4THnfW.js
rename to assets/zh_ruyi_updates_0.7.0.md.Dx9cz4Ke.js
index 87ff197d..8551f577 100644
--- a/assets/zh_ruyi_updates_0.7.0.md.DG4THnfW.js
+++ b/assets/zh_ruyi_updates_0.7.0.md.Dx9cz4Ke.js
@@ -1,4 +1,4 @@
-import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"v0.7.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.7.0.md","filePath":"zh/ruyi/updates/0.7.0.md","lastUpdated":1718624874000}'),n={name:"zh/ruyi/updates/0.7.0.md"},a=s(`

v0.7.0 版本新增特性

  • 板卡镜像刷写支持增加到 13 款
  • 修复 v0.6.0 版本 riscv64 二进制无法工作的问题

安装 v0.7.0

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.7.0/ruyi.amd64
+import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"v0.7.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.7.0.md","filePath":"zh/ruyi/updates/0.7.0.md","lastUpdated":1718675566000}'),n={name:"zh/ruyi/updates/0.7.0.md"},a=s(`

v0.7.0 版本新增特性

  • 板卡镜像刷写支持增加到 13 款
  • 修复 v0.6.0 版本 riscv64 二进制无法工作的问题

安装 v0.7.0

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.7.0/ruyi.amd64
 $ chmod +x ./ruyi.amd64
 $ sudo cp ./ruyi.amd64 /usr/local/bin/ruyi

在 riscv64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.7.0/ruyi.riscv64
 $ chmod +x ./ruyi.riscv64
diff --git a/assets/zh_ruyi_updates_0.7.0.md.DG4THnfW.lean.js b/assets/zh_ruyi_updates_0.7.0.md.Dx9cz4Ke.lean.js
similarity index 86%
rename from assets/zh_ruyi_updates_0.7.0.md.DG4THnfW.lean.js
rename to assets/zh_ruyi_updates_0.7.0.md.Dx9cz4Ke.lean.js
index f1fbf904..6e830f40 100644
--- a/assets/zh_ruyi_updates_0.7.0.md.DG4THnfW.lean.js
+++ b/assets/zh_ruyi_updates_0.7.0.md.Dx9cz4Ke.lean.js
@@ -1 +1 @@
-import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"v0.7.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.7.0.md","filePath":"zh/ruyi/updates/0.7.0.md","lastUpdated":1718624874000}'),n={name:"zh/ruyi/updates/0.7.0.md"},a=s("",18),l=[a];function d(r,c,h,y,p,g){return i(),e("div",null,l)}const F=t(n,[["render",d]]);export{k as __pageData,F as default};
+import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"v0.7.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.7.0.md","filePath":"zh/ruyi/updates/0.7.0.md","lastUpdated":1718675566000}'),n={name:"zh/ruyi/updates/0.7.0.md"},a=s("",18),l=[a];function d(r,c,h,y,p,g){return i(),e("div",null,l)}const F=t(n,[["render",d]]);export{k as __pageData,F as default};
diff --git a/assets/zh_ruyi_updates_0.8.1.md.xxIV8y3g.js b/assets/zh_ruyi_updates_0.8.1.md.jbM4_cxh.js
similarity index 99%
rename from assets/zh_ruyi_updates_0.8.1.md.xxIV8y3g.js
rename to assets/zh_ruyi_updates_0.8.1.md.jbM4_cxh.js
index 6cb50b25..590f9293 100644
--- a/assets/zh_ruyi_updates_0.8.1.md.xxIV8y3g.js
+++ b/assets/zh_ruyi_updates_0.8.1.md.jbM4_cxh.js
@@ -1,4 +1,4 @@
-import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const o=JSON.parse('{"title":"v0.8.1 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.8.1.md","filePath":"zh/ruyi/updates/0.8.1.md","lastUpdated":1718624874000}'),n={name:"zh/ruyi/updates/0.8.1.md"},a=s(`

v0.8.1 版本新增特性

  • 从 0.8.0 版本开始,默认不允许以 root 用户运行 ruyi
  • 新增 Milkv-V Meles 板卡刷写,板卡镜像刷写支持增加到 14 款

安装 v0.8.1

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.8.1/ruyi.amd64
+import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const o=JSON.parse('{"title":"v0.8.1 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.8.1.md","filePath":"zh/ruyi/updates/0.8.1.md","lastUpdated":1718675566000}'),n={name:"zh/ruyi/updates/0.8.1.md"},a=s(`

v0.8.1 版本新增特性

  • 从 0.8.0 版本开始,默认不允许以 root 用户运行 ruyi
  • 新增 Milkv-V Meles 板卡刷写,板卡镜像刷写支持增加到 14 款

安装 v0.8.1

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.8.1/ruyi.amd64
 $ chmod +x ./ruyi.amd64
 $ sudo cp ./ruyi.amd64 /usr/local/bin/ruyi

在 riscv64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.8.1/ruyi.riscv64
 $ chmod +x ./ruyi.riscv64
diff --git a/assets/zh_ruyi_updates_0.8.1.md.xxIV8y3g.lean.js b/assets/zh_ruyi_updates_0.8.1.md.jbM4_cxh.lean.js
similarity index 86%
rename from assets/zh_ruyi_updates_0.8.1.md.xxIV8y3g.lean.js
rename to assets/zh_ruyi_updates_0.8.1.md.jbM4_cxh.lean.js
index c2e94ff1..ec80afe5 100644
--- a/assets/zh_ruyi_updates_0.8.1.md.xxIV8y3g.lean.js
+++ b/assets/zh_ruyi_updates_0.8.1.md.jbM4_cxh.lean.js
@@ -1 +1 @@
-import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const o=JSON.parse('{"title":"v0.8.1 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.8.1.md","filePath":"zh/ruyi/updates/0.8.1.md","lastUpdated":1718624874000}'),n={name:"zh/ruyi/updates/0.8.1.md"},a=s("",19),l=[a];function d(r,h,c,p,k,y){return i(),e("div",null,l)}const F=t(n,[["render",d]]);export{o as __pageData,F as default};
+import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const o=JSON.parse('{"title":"v0.8.1 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.8.1.md","filePath":"zh/ruyi/updates/0.8.1.md","lastUpdated":1718675566000}'),n={name:"zh/ruyi/updates/0.8.1.md"},a=s("",19),l=[a];function d(r,h,c,p,k,y){return i(),e("div",null,l)}const F=t(n,[["render",d]]);export{o as __pageData,F as default};
diff --git a/assets/zh_ruyi_updates_0.9.0.md.D1w7hrsJ.js b/assets/zh_ruyi_updates_0.9.0.md.D0E6ZqAA.js
similarity index 99%
rename from assets/zh_ruyi_updates_0.9.0.md.D1w7hrsJ.js
rename to assets/zh_ruyi_updates_0.9.0.md.D0E6ZqAA.js
index cba6104e..682b69c1 100644
--- a/assets/zh_ruyi_updates_0.9.0.md.D1w7hrsJ.js
+++ b/assets/zh_ruyi_updates_0.9.0.md.D0E6ZqAA.js
@@ -1,4 +1,4 @@
-import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"v0.9.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.9.0.md","filePath":"zh/ruyi/updates/0.9.0.md","lastUpdated":1718624874000}'),n={name:"zh/ruyi/updates/0.9.0.md"},a=s(`

v0.9.0 版本新增特性

  • 支持了 LZ4 格式压缩文件的解包
  • RuyiSDK 自 0.9 版本开始支持矽速(Sipeed)全线 RISC-V 产品,板卡镜像刷写支持增加到 20 款

安装 v0.9.0

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.9.0/ruyi.amd64
+import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"v0.9.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.9.0.md","filePath":"zh/ruyi/updates/0.9.0.md","lastUpdated":1718675566000}'),n={name:"zh/ruyi/updates/0.9.0.md"},a=s(`

v0.9.0 版本新增特性

  • 支持了 LZ4 格式压缩文件的解包
  • RuyiSDK 自 0.9 版本开始支持矽速(Sipeed)全线 RISC-V 产品,板卡镜像刷写支持增加到 20 款

安装 v0.9.0

在 amd64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.9.0/ruyi.amd64
 $ chmod +x ./ruyi.amd64
 $ sudo cp ./ruyi.amd64 /usr/local/bin/ruyi

在 riscv64 架构环境安装:

bash
$ wget https://mirror.iscas.ac.cn/ruyisdk/ruyi/releases/0.9.0/ruyi.riscv64
 $ chmod +x ./ruyi.riscv64
diff --git a/assets/zh_ruyi_updates_0.9.0.md.D1w7hrsJ.lean.js b/assets/zh_ruyi_updates_0.9.0.md.D0E6ZqAA.lean.js
similarity index 86%
rename from assets/zh_ruyi_updates_0.9.0.md.D1w7hrsJ.lean.js
rename to assets/zh_ruyi_updates_0.9.0.md.D0E6ZqAA.lean.js
index 16ac39ad..46c96079 100644
--- a/assets/zh_ruyi_updates_0.9.0.md.D1w7hrsJ.lean.js
+++ b/assets/zh_ruyi_updates_0.9.0.md.D0E6ZqAA.lean.js
@@ -1 +1 @@
-import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"v0.9.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.9.0.md","filePath":"zh/ruyi/updates/0.9.0.md","lastUpdated":1718624874000}'),n={name:"zh/ruyi/updates/0.9.0.md"},a=s("",19),l=[a];function d(r,c,h,p,y,g){return i(),e("div",null,l)}const F=t(n,[["render",d]]);export{k as __pageData,F as default};
+import{_ as t,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"v0.9.0 版本新增特性","description":"","frontmatter":{},"headers":[],"relativePath":"zh/ruyi/updates/0.9.0.md","filePath":"zh/ruyi/updates/0.9.0.md","lastUpdated":1718675566000}'),n={name:"zh/ruyi/updates/0.9.0.md"},a=s("",19),l=[a];function d(r,c,h,p,y,g){return i(),e("div",null,l)}const F=t(n,[["render",d]]);export{k as __pageData,F as default};
diff --git a/assets/zh_sdk_gnu_index.md.B-oFIiyF.js b/assets/zh_sdk_gnu_index.md.CgizZNtQ.js
similarity index 99%
rename from assets/zh_sdk_gnu_index.md.B-oFIiyF.js
rename to assets/zh_sdk_gnu_index.md.CgizZNtQ.js
index 79b53d04..e3dd2db8 100644
--- a/assets/zh_sdk_gnu_index.md.B-oFIiyF.js
+++ b/assets/zh_sdk_gnu_index.md.CgizZNtQ.js
@@ -1 +1 @@
-import{_ as e,c as a,o as t,a3 as r}from"./chunks/framework.D4PmY8Hg.js";const u=JSON.parse('{"title":"RuyiSDK GCC 工具链介绍","description":"","frontmatter":{},"headers":[],"relativePath":"zh/sdk/gnu/index.md","filePath":"zh/sdk/gnu/index.md","lastUpdated":1718624874000}'),c={name:"zh/sdk/gnu/index.md"},i=r('

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选项,由编译器自动配置选取合适的处理数量。

扩展支持

工具链版本扩展名称
Upstreami, 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, xtheadvector(RVV 0.7), xventanacondops
有特定优化,不支持 Zfinx, K, RVV1.0, Zc, Xcv 等系列扩展
RuyiSDK额外支持 RV64-ILP32, Profiles(RV20/22), zpn, zpsfoperand, zbpbo
',28),o=[i];function d(n,l,s,h,b,g){return t(),a("div",null,o)}const m=e(c,[["render",d]]);export{u as __pageData,m as default}; +import{_ as e,c as a,o as t,a3 as r}from"./chunks/framework.D4PmY8Hg.js";const u=JSON.parse('{"title":"RuyiSDK GCC 工具链介绍","description":"","frontmatter":{},"headers":[],"relativePath":"zh/sdk/gnu/index.md","filePath":"zh/sdk/gnu/index.md","lastUpdated":1718675566000}'),c={name:"zh/sdk/gnu/index.md"},i=r('

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选项,由编译器自动配置选取合适的处理数量。

扩展支持

工具链版本扩展名称
Upstreami, 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, xtheadvector(RVV 0.7), xventanacondops
有特定优化,不支持 Zfinx, K, RVV1.0, Zc, Xcv 等系列扩展
RuyiSDK额外支持 RV64-ILP32, Profiles(RV20/22), zpn, zpsfoperand, zbpbo
',28),o=[i];function d(n,l,s,h,b,g){return t(),a("div",null,o)}const m=e(c,[["render",d]]);export{u as __pageData,m as default}; diff --git a/assets/zh_sdk_gnu_index.md.B-oFIiyF.lean.js b/assets/zh_sdk_gnu_index.md.CgizZNtQ.lean.js similarity index 85% rename from assets/zh_sdk_gnu_index.md.B-oFIiyF.lean.js rename to assets/zh_sdk_gnu_index.md.CgizZNtQ.lean.js index 256d09d4..224bd4f4 100644 --- a/assets/zh_sdk_gnu_index.md.B-oFIiyF.lean.js +++ b/assets/zh_sdk_gnu_index.md.CgizZNtQ.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o as t,a3 as r}from"./chunks/framework.D4PmY8Hg.js";const u=JSON.parse('{"title":"RuyiSDK GCC 工具链介绍","description":"","frontmatter":{},"headers":[],"relativePath":"zh/sdk/gnu/index.md","filePath":"zh/sdk/gnu/index.md","lastUpdated":1718624874000}'),c={name:"zh/sdk/gnu/index.md"},i=r("",28),o=[i];function d(n,l,s,h,b,g){return t(),a("div",null,o)}const m=e(c,[["render",d]]);export{u as __pageData,m as default}; +import{_ as e,c as a,o as t,a3 as r}from"./chunks/framework.D4PmY8Hg.js";const u=JSON.parse('{"title":"RuyiSDK GCC 工具链介绍","description":"","frontmatter":{},"headers":[],"relativePath":"zh/sdk/gnu/index.md","filePath":"zh/sdk/gnu/index.md","lastUpdated":1718675566000}'),c={name:"zh/sdk/gnu/index.md"},i=r("",28),o=[i];function d(n,l,s,h,b,g){return t(),a("div",null,o)}const m=e(c,[["render",d]]);export{u as __pageData,m as default}; diff --git a/assets/zh_sdk_llvm_index.md.DyL0hJOR.js b/assets/zh_sdk_llvm_index.md.CrBzunRh.js similarity index 91% rename from assets/zh_sdk_llvm_index.md.DyL0hJOR.js rename to assets/zh_sdk_llvm_index.md.CrBzunRh.js index 93c47b4d..f575381b 100644 --- a/assets/zh_sdk_llvm_index.md.DyL0hJOR.js +++ b/assets/zh_sdk_llvm_index.md.CrBzunRh.js @@ -1 +1 @@ -import{_ as t,c as a,o as s,j as e,a as o}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"RuyiSDK LLVM 工具链介绍","description":"","frontmatter":{},"headers":[],"relativePath":"zh/sdk/llvm/index.md","filePath":"zh/sdk/llvm/index.md","lastUpdated":1718624874000}'),d={name:"zh/sdk/llvm/index.md"},l=e("h1",{id:"ruyisdk-llvm-工具链介绍",tabindex:"-1"},[o("RuyiSDK LLVM 工具链介绍 "),e("a",{class:"header-anchor",href:"#ruyisdk-llvm-工具链介绍","aria-label":'Permalink to "RuyiSDK LLVM 工具链介绍"'},"​")],-1),n=e("blockquote",null,[e("p",null,"todo")],-1),r=[l,n];function i(c,_,m,h,p,u){return s(),a("div",null,r)}const x=t(d,[["render",i]]);export{k as __pageData,x as default}; +import{_ as t,c as a,o as s,j as e,a as o}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"RuyiSDK LLVM 工具链介绍","description":"","frontmatter":{},"headers":[],"relativePath":"zh/sdk/llvm/index.md","filePath":"zh/sdk/llvm/index.md","lastUpdated":1718675566000}'),d={name:"zh/sdk/llvm/index.md"},l=e("h1",{id:"ruyisdk-llvm-工具链介绍",tabindex:"-1"},[o("RuyiSDK LLVM 工具链介绍 "),e("a",{class:"header-anchor",href:"#ruyisdk-llvm-工具链介绍","aria-label":'Permalink to "RuyiSDK LLVM 工具链介绍"'},"​")],-1),n=e("blockquote",null,[e("p",null,"todo")],-1),r=[l,n];function i(c,_,m,h,p,u){return s(),a("div",null,r)}const x=t(d,[["render",i]]);export{k as __pageData,x as default}; diff --git a/assets/zh_sdk_llvm_index.md.DyL0hJOR.lean.js b/assets/zh_sdk_llvm_index.md.CrBzunRh.lean.js similarity index 91% rename from assets/zh_sdk_llvm_index.md.DyL0hJOR.lean.js rename to assets/zh_sdk_llvm_index.md.CrBzunRh.lean.js index 93c47b4d..f575381b 100644 --- a/assets/zh_sdk_llvm_index.md.DyL0hJOR.lean.js +++ b/assets/zh_sdk_llvm_index.md.CrBzunRh.lean.js @@ -1 +1 @@ -import{_ as t,c as a,o as s,j as e,a as o}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"RuyiSDK LLVM 工具链介绍","description":"","frontmatter":{},"headers":[],"relativePath":"zh/sdk/llvm/index.md","filePath":"zh/sdk/llvm/index.md","lastUpdated":1718624874000}'),d={name:"zh/sdk/llvm/index.md"},l=e("h1",{id:"ruyisdk-llvm-工具链介绍",tabindex:"-1"},[o("RuyiSDK LLVM 工具链介绍 "),e("a",{class:"header-anchor",href:"#ruyisdk-llvm-工具链介绍","aria-label":'Permalink to "RuyiSDK LLVM 工具链介绍"'},"​")],-1),n=e("blockquote",null,[e("p",null,"todo")],-1),r=[l,n];function i(c,_,m,h,p,u){return s(),a("div",null,r)}const x=t(d,[["render",i]]);export{k as __pageData,x as default}; +import{_ as t,c as a,o as s,j as e,a as o}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"RuyiSDK LLVM 工具链介绍","description":"","frontmatter":{},"headers":[],"relativePath":"zh/sdk/llvm/index.md","filePath":"zh/sdk/llvm/index.md","lastUpdated":1718675566000}'),d={name:"zh/sdk/llvm/index.md"},l=e("h1",{id:"ruyisdk-llvm-工具链介绍",tabindex:"-1"},[o("RuyiSDK LLVM 工具链介绍 "),e("a",{class:"header-anchor",href:"#ruyisdk-llvm-工具链介绍","aria-label":'Permalink to "RuyiSDK LLVM 工具链介绍"'},"​")],-1),n=e("blockquote",null,[e("p",null,"todo")],-1),r=[l,n];function i(c,_,m,h,p,u){return s(),a("div",null,r)}const x=t(d,[["render",i]]);export{k as __pageData,x as default}; diff --git a/assets/zh_usecase_index.md.CLJFG0wj.js b/assets/zh_usecase_index.md.DBxGRrPV.js similarity index 95% rename from assets/zh_usecase_index.md.CLJFG0wj.js rename to assets/zh_usecase_index.md.DBxGRrPV.js index 6c545bf0..51ae493e 100644 --- a/assets/zh_usecase_index.md.CLJFG0wj.js +++ b/assets/zh_usecase_index.md.DBxGRrPV.js @@ -1 +1 @@ -import{_ as e,c as a,o as t,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const x=JSON.parse('{"title":"RuyiSDK使用示例","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usecase/index.md","filePath":"zh/usecase/index.md","lastUpdated":1718624874000}'),i={name:"zh/usecase/index.md"},o=s('

RuyiSDK使用示例

以下案例是使用RuyiSDK搭建相关的开发或运行环境来实现的。希望通过一些小场景让大家更多的了解RuyiSDK的使用。

除了这里列举的环境外,RuyiSDK支持的编译工具链版本、RISC-V开发板类型是丰富且不断扩展的,这里未列举所有的情况,这些典型的场景供新用户参考和体验。

案例一:x86_64 上交叉编译并模拟运行 riscv64 可执行程序

案例二:在x86_64 PC+linux 上,接入RISC-V开发板并为其安装系统镜像

案例三:RISC-V 开发板上本地编译并运行 riscv64 可执行程序

',6),r=[o];function c(n,_,d,p,u,h){return t(),a("div",null,r)}const S=e(i,[["render",c]]);export{x as __pageData,S as default}; +import{_ as e,c as a,o as t,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const x=JSON.parse('{"title":"RuyiSDK使用示例","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usecase/index.md","filePath":"zh/usecase/index.md","lastUpdated":1718675566000}'),i={name:"zh/usecase/index.md"},o=s('

RuyiSDK使用示例

以下案例是使用RuyiSDK搭建相关的开发或运行环境来实现的。希望通过一些小场景让大家更多的了解RuyiSDK的使用。

除了这里列举的环境外,RuyiSDK支持的编译工具链版本、RISC-V开发板类型是丰富且不断扩展的,这里未列举所有的情况,这些典型的场景供新用户参考和体验。

案例一:x86_64 上交叉编译并模拟运行 riscv64 可执行程序

案例二:在x86_64 PC+linux 上,接入RISC-V开发板并为其安装系统镜像

案例三:RISC-V 开发板上本地编译并运行 riscv64 可执行程序

',6),r=[o];function c(n,_,d,p,u,h){return t(),a("div",null,r)}const S=e(i,[["render",c]]);export{x as __pageData,S as default}; diff --git a/assets/zh_usecase_index.md.CLJFG0wj.lean.js b/assets/zh_usecase_index.md.DBxGRrPV.lean.js similarity index 85% rename from assets/zh_usecase_index.md.CLJFG0wj.lean.js rename to assets/zh_usecase_index.md.DBxGRrPV.lean.js index 1c99f2ce..ee40351b 100644 --- a/assets/zh_usecase_index.md.CLJFG0wj.lean.js +++ b/assets/zh_usecase_index.md.DBxGRrPV.lean.js @@ -1 +1 @@ -import{_ as e,c as a,o as t,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const x=JSON.parse('{"title":"RuyiSDK使用示例","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usecase/index.md","filePath":"zh/usecase/index.md","lastUpdated":1718624874000}'),i={name:"zh/usecase/index.md"},o=s("",6),r=[o];function c(n,_,d,p,u,h){return t(),a("div",null,r)}const S=e(i,[["render",c]]);export{x as __pageData,S as default}; +import{_ as e,c as a,o as t,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const x=JSON.parse('{"title":"RuyiSDK使用示例","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usecase/index.md","filePath":"zh/usecase/index.md","lastUpdated":1718675566000}'),i={name:"zh/usecase/index.md"},o=s("",6),r=[o];function c(n,_,d,p,u,h){return t(),a("div",null,r)}const S=e(i,[["render",c]]);export{x as __pageData,S as default}; diff --git a/assets/zh_usecase_rvbook_index.md.Dn6xlM1G.js b/assets/zh_usecase_rvbook_index.md.9tantbSr.js similarity index 99% rename from assets/zh_usecase_rvbook_index.md.Dn6xlM1G.js rename to assets/zh_usecase_rvbook_index.md.9tantbSr.js index 4553b039..b2d1f5de 100644 --- a/assets/zh_usecase_rvbook_index.md.Dn6xlM1G.js +++ b/assets/zh_usecase_rvbook_index.md.9tantbSr.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a3 as e}from"./chunks/framework.D4PmY8Hg.js";const F=JSON.parse('{"title":"使用示例","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usecase/rvbook/index.md","filePath":"zh/usecase/rvbook/index.md","lastUpdated":1718624874000}'),l={name:"zh/usecase/rvbook/index.md"},t=e(`

使用示例

以开源基准测试程序 coremark 为例,展示从 ruyi 工具安装到使用 ruyi 工具搭建 RISC-V 的编译、模拟环境,完成 coremark 源码本地编译并在 Licheepi 4A开发板上运行的过程。

环境说明

硬件环境:Licheepi 4A开发板(th1520)

软件环境:Debian/openEuler for RISC-V

ruyi工具的安装

  1. [可选] 清除当前已经安装的 ruyi 工具及其所有数据
bash
ruyi self uninstall --purge
  1. 下载 ruyi 工具并为其赋可执行权限并配置到环境变量中:从ruyi GitHub ReleasesISCAS 镜像源下载最新的ruyi工具。
bash
# 下载riscv64版本的ruyi,将其放到path路径下,并赋予其可执行权限
+import{_ as s,c as i,o as a,a3 as e}from"./chunks/framework.D4PmY8Hg.js";const F=JSON.parse('{"title":"使用示例","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usecase/rvbook/index.md","filePath":"zh/usecase/rvbook/index.md","lastUpdated":1718675566000}'),l={name:"zh/usecase/rvbook/index.md"},t=e(`

使用示例

以开源基准测试程序 coremark 为例,展示从 ruyi 工具安装到使用 ruyi 工具搭建 RISC-V 的编译、模拟环境,完成 coremark 源码本地编译并在 Licheepi 4A开发板上运行的过程。

环境说明

硬件环境:Licheepi 4A开发板(th1520)

软件环境:Debian/openEuler for RISC-V

ruyi工具的安装

  1. [可选] 清除当前已经安装的 ruyi 工具及其所有数据
bash
ruyi self uninstall --purge
  1. 下载 ruyi 工具并为其赋可执行权限并配置到环境变量中:从ruyi GitHub ReleasesISCAS 镜像源下载最新的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
diff --git a/assets/zh_usecase_rvbook_index.md.Dn6xlM1G.lean.js b/assets/zh_usecase_rvbook_index.md.9tantbSr.lean.js
similarity index 85%
rename from assets/zh_usecase_rvbook_index.md.Dn6xlM1G.lean.js
rename to assets/zh_usecase_rvbook_index.md.9tantbSr.lean.js
index a989cf55..7a76c6dc 100644
--- a/assets/zh_usecase_rvbook_index.md.Dn6xlM1G.lean.js
+++ b/assets/zh_usecase_rvbook_index.md.9tantbSr.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a3 as e}from"./chunks/framework.D4PmY8Hg.js";const F=JSON.parse('{"title":"使用示例","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usecase/rvbook/index.md","filePath":"zh/usecase/rvbook/index.md","lastUpdated":1718624874000}'),l={name:"zh/usecase/rvbook/index.md"},t=e("",35),n=[t];function h(p,k,r,d,c,o){return a(),i("div",null,n)}const u=s(l,[["render",h]]);export{F as __pageData,u as default};
+import{_ as s,c as i,o as a,a3 as e}from"./chunks/framework.D4PmY8Hg.js";const F=JSON.parse('{"title":"使用示例","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usecase/rvbook/index.md","filePath":"zh/usecase/rvbook/index.md","lastUpdated":1718675566000}'),l={name:"zh/usecase/rvbook/index.md"},t=e("",35),n=[t];function h(p,k,r,d,c,o){return a(),i("div",null,n)}const u=s(l,[["render",h]]);export{F as __pageData,u as default};
diff --git a/assets/zh_usecase_setupos_index.md.BlPZtsz4.js b/assets/zh_usecase_setupos_index.md.CAuFrtVy.js
similarity index 99%
rename from assets/zh_usecase_setupos_index.md.BlPZtsz4.js
rename to assets/zh_usecase_setupos_index.md.CAuFrtVy.js
index 15cdc883..dec46564 100644
--- a/assets/zh_usecase_setupos_index.md.BlPZtsz4.js
+++ b/assets/zh_usecase_setupos_index.md.CAuFrtVy.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as n,a3 as e}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"为RISC-V开发板安装操作系统","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usecase/setupos/index.md","filePath":"zh/usecase/setupos/index.md","lastUpdated":1718624874000}'),p={name:"zh/usecase/setupos/index.md"},i=e(`

为RISC-V开发板安装操作系统

通过RuyiSDK操作系统安装器工具,为各种不同厂家、不同型号的RISC-V开发板提供镜像信息的维护与下载、开发板系统的安装引导。

环境说明

本操作在x86_64 PC & Ubuntu 22.04(linux系统皆可)下执行;RISC-V开发板以USB连接线接入PC或者RISC-V开发板的SD卡通过读卡机接入PC。

安装操作系统

ruyi 工具提供了为 RISC-V 开发板安装操作系统的功能,为任一型号的 RISC-V 开发板安装镜像都只需要执行:

bash
ruyi device provision

该命令将会返回工具目前所支持的RISC-V开发板,选择开发板后将返回所有支持指定开发板的操作系统:

RuyiSDK Device Provisioning Wizard
+import{_ as s,c as a,o as n,a3 as e}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"为RISC-V开发板安装操作系统","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usecase/setupos/index.md","filePath":"zh/usecase/setupos/index.md","lastUpdated":1718675566000}'),p={name:"zh/usecase/setupos/index.md"},i=e(`

为RISC-V开发板安装操作系统

通过RuyiSDK操作系统安装器工具,为各种不同厂家、不同型号的RISC-V开发板提供镜像信息的维护与下载、开发板系统的安装引导。

环境说明

本操作在x86_64 PC & Ubuntu 22.04(linux系统皆可)下执行;RISC-V开发板以USB连接线接入PC或者RISC-V开发板的SD卡通过读卡机接入PC。

安装操作系统

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.
diff --git a/assets/zh_usecase_setupos_index.md.BlPZtsz4.lean.js b/assets/zh_usecase_setupos_index.md.CAuFrtVy.lean.js
similarity index 86%
rename from assets/zh_usecase_setupos_index.md.BlPZtsz4.lean.js
rename to assets/zh_usecase_setupos_index.md.CAuFrtVy.lean.js
index 2db2fbef..74f1217b 100644
--- a/assets/zh_usecase_setupos_index.md.BlPZtsz4.lean.js
+++ b/assets/zh_usecase_setupos_index.md.CAuFrtVy.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as n,a3 as e}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"为RISC-V开发板安装操作系统","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usecase/setupos/index.md","filePath":"zh/usecase/setupos/index.md","lastUpdated":1718624874000}'),p={name:"zh/usecase/setupos/index.md"},i=e("",12),l=[i];function o(t,c,d,r,h,u){return n(),a("div",null,l)}const g=s(p,[["render",o]]);export{y as __pageData,g as default};
+import{_ as s,c as a,o as n,a3 as e}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"为RISC-V开发板安装操作系统","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usecase/setupos/index.md","filePath":"zh/usecase/setupos/index.md","lastUpdated":1718675566000}'),p={name:"zh/usecase/setupos/index.md"},i=e("",12),l=[i];function o(t,c,d,r,h,u){return n(),a("div",null,l)}const g=s(p,[["render",o]]);export{y as __pageData,g as default};
diff --git a/assets/zh_usecase_x86pc_index.md.5tYxznhl.js b/assets/zh_usecase_x86pc_index.md.B0T2iG_a.js
similarity index 99%
rename from assets/zh_usecase_x86pc_index.md.5tYxznhl.js
rename to assets/zh_usecase_x86pc_index.md.B0T2iG_a.js
index 87ed2651..d9b44c20 100644
--- a/assets/zh_usecase_x86pc_index.md.5tYxznhl.js
+++ b/assets/zh_usecase_x86pc_index.md.B0T2iG_a.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a3 as e}from"./chunks/framework.D4PmY8Hg.js";const u=JSON.parse('{"title":"使用示例","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usecase/x86pc/index.md","filePath":"zh/usecase/x86pc/index.md","lastUpdated":1718624874000}'),t={name:"zh/usecase/x86pc/index.md"},l=e(`

使用示例

以开源基准测试程序 coremark 为例,展示在x86_64 PC上实现从 ruyi 工具安装到使用 ruyi 工具搭建 RISC-V 的编译、模拟环境,完成 coremark 源码交叉编译并在 qemu 模拟器上成功执行的过程。

环境说明

硬件环境:x86_64

软件环境:Ubuntu 22.04

ruyi工具的安装

  1. [可选] 清除当前已经安装的 ruyi 工具及其所有数据
bash
ruyi self uninstall --purge
  1. 下载 ruyi 工具并为其赋可执行权限并配置到环境变量中:从ruyi GitHub ReleasesISCAS 镜像源下载最新的ruyi工具。
bash
wget -O /usr/local/bin/ruyi https://mirror.iscas.ac.cn/ruyisdk/ruyi/testing/0.10.0-beta.20240512/ruyi.amd64
+import{_ as s,c as i,o as a,a3 as e}from"./chunks/framework.D4PmY8Hg.js";const u=JSON.parse('{"title":"使用示例","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usecase/x86pc/index.md","filePath":"zh/usecase/x86pc/index.md","lastUpdated":1718675566000}'),t={name:"zh/usecase/x86pc/index.md"},l=e(`

使用示例

以开源基准测试程序 coremark 为例,展示在x86_64 PC上实现从 ruyi 工具安装到使用 ruyi 工具搭建 RISC-V 的编译、模拟环境,完成 coremark 源码交叉编译并在 qemu 模拟器上成功执行的过程。

环境说明

硬件环境:x86_64

软件环境:Ubuntu 22.04

ruyi工具的安装

  1. [可选] 清除当前已经安装的 ruyi 工具及其所有数据
bash
ruyi self uninstall --purge
  1. 下载 ruyi 工具并为其赋可执行权限并配置到环境变量中:从ruyi GitHub ReleasesISCAS 镜像源下载最新的ruyi工具。
bash
wget -O /usr/local/bin/ruyi https://mirror.iscas.ac.cn/ruyisdk/ruyi/testing/0.10.0-beta.20240512/ruyi.amd64
 sudo chmod +x ruyi
  1. 验证ruyi可否使用
bash
ruyi --version
  1. 查看ruyi帮助
bash
ruyi --help

使用ruyi工具部署开发环境:

  1. 查看软件仓软件包索引信息
bash
ruyi list
  1. 查看详细信息
bash
ruyi list -v
  1. 安装工具链:ruyi install <package-name>
bash
ruyi install  gnu-upstream
  1. 安装qemu
bash
ruyi install qemu-user-riscv-upstream
  1. 查看预置编译环境
bash
ruyi list profiles
  1. 由指定的工具链、模拟器配置建立 RUYI 虚拟环境venv1
bash
ruyi venv --help
 ruyi venv -t gnu-upstream -e qemu-user-riscv-upstream   generic  venv1
  1. 查看虚拟环境bin目录下已安装的工具链、模拟器
bash
ls venv1/bin
  1. 激活虚拟环境
. venv1/bin/ruyi-activate
  1. 检查虚拟环境中编译工具的版本信息
bash
riscv64-unknown-linux-gnu-gcc --version
 ruyi-qemu --version
  1. 下载解压coremark源码作为编译对象
bash
mkdir coremark && cd coremark
diff --git a/assets/zh_usecase_x86pc_index.md.5tYxznhl.lean.js b/assets/zh_usecase_x86pc_index.md.B0T2iG_a.lean.js
similarity index 85%
rename from assets/zh_usecase_x86pc_index.md.5tYxznhl.lean.js
rename to assets/zh_usecase_x86pc_index.md.B0T2iG_a.lean.js
index 5b793bc5..ecd38dc5 100644
--- a/assets/zh_usecase_x86pc_index.md.5tYxznhl.lean.js
+++ b/assets/zh_usecase_x86pc_index.md.B0T2iG_a.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a3 as e}from"./chunks/framework.D4PmY8Hg.js";const u=JSON.parse('{"title":"使用示例","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usecase/x86pc/index.md","filePath":"zh/usecase/x86pc/index.md","lastUpdated":1718624874000}'),t={name:"zh/usecase/x86pc/index.md"},l=e("",47),n=[l];function h(p,r,k,d,o,c){return a(),i("div",null,n)}const F=s(t,[["render",h]]);export{u as __pageData,F as default};
+import{_ as s,c as i,o as a,a3 as e}from"./chunks/framework.D4PmY8Hg.js";const u=JSON.parse('{"title":"使用示例","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usecase/x86pc/index.md","filePath":"zh/usecase/x86pc/index.md","lastUpdated":1718675566000}'),t={name:"zh/usecase/x86pc/index.md"},l=e("",47),n=[l];function h(p,r,k,d,o,c){return a(),i("div",null,n)}const F=s(t,[["render",h]]);export{u as __pageData,F as default};
diff --git a/assets/zh_usedirection_developmentside_environments_index.md.BNthRWcp.js b/assets/zh_usedirection_developmentside_environments_index.md.BVHWihz2.js
similarity index 99%
rename from assets/zh_usedirection_developmentside_environments_index.md.BNthRWcp.js
rename to assets/zh_usedirection_developmentside_environments_index.md.BVHWihz2.js
index 9b7dc021..3659bb42 100644
--- a/assets/zh_usedirection_developmentside_environments_index.md.BNthRWcp.js
+++ b/assets/zh_usedirection_developmentside_environments_index.md.BVHWihz2.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"RUYI 编译环境","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/developmentside/environments/index.md","filePath":"zh/usedirection/developmentside/environments/index.md","lastUpdated":1718624874000}'),t={name:"zh/usedirection/developmentside/environments/index.md"},l=n(`

RUYI 编译环境

与python 的虚拟环境类似,RUYI 包管理器工具使用 venv 命令应用配置到指定的工具链以建立编译环境。

RUYI 包管理预置的配置可以使用 ruyi list profiles 命令查看:

bash
$ ruyi list profiles
+import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"RUYI 编译环境","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/developmentside/environments/index.md","filePath":"zh/usedirection/developmentside/environments/index.md","lastUpdated":1718675566000}'),t={name:"zh/usedirection/developmentside/environments/index.md"},l=n(`

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'})
diff --git a/assets/zh_usedirection_developmentside_environments_index.md.BNthRWcp.lean.js b/assets/zh_usedirection_developmentside_environments_index.md.BVHWihz2.lean.js
similarity index 88%
rename from assets/zh_usedirection_developmentside_environments_index.md.BNthRWcp.lean.js
rename to assets/zh_usedirection_developmentside_environments_index.md.BVHWihz2.lean.js
index 41a6f450..5530f455 100644
--- a/assets/zh_usedirection_developmentside_environments_index.md.BNthRWcp.lean.js
+++ b/assets/zh_usedirection_developmentside_environments_index.md.BVHWihz2.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"RUYI 编译环境","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/developmentside/environments/index.md","filePath":"zh/usedirection/developmentside/environments/index.md","lastUpdated":1718624874000}'),t={name:"zh/usedirection/developmentside/environments/index.md"},l=n("",47),h=[l];function p(e,k,F,r,d,g){return a(),i("div",null,h)}const u=s(t,[["render",p]]);export{y as __pageData,u as default};
+import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"RUYI 编译环境","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/developmentside/environments/index.md","filePath":"zh/usedirection/developmentside/environments/index.md","lastUpdated":1718675566000}'),t={name:"zh/usedirection/developmentside/environments/index.md"},l=n("",47),h=[l];function p(e,k,F,r,d,g){return a(),i("div",null,h)}const u=s(t,[["render",p]]);export{y as __pageData,u as default};
diff --git a/assets/zh_usedirection_developmentside_index.md.DSFFQvw8.js b/assets/zh_usedirection_developmentside_index.md.J4JZvpbx.js
similarity index 99%
rename from assets/zh_usedirection_developmentside_index.md.DSFFQvw8.js
rename to assets/zh_usedirection_developmentside_index.md.J4JZvpbx.js
index 23c4ef19..516f731a 100644
--- a/assets/zh_usedirection_developmentside_index.md.DSFFQvw8.js
+++ b/assets/zh_usedirection_developmentside_index.md.J4JZvpbx.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"准备RISC-V开发环境","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/developmentside/index.md","filePath":"zh/usedirection/developmentside/index.md","lastUpdated":1718624874000}'),e={name:"zh/usedirection/developmentside/index.md"},l=n(`

准备RISC-V开发环境

安装 ruyi 包管理工具

RuyiSDK包管理工具目前提供了Linux系统 amd64、arm64、riscv64 三种架构平台下的安装程序,可以按需在ruyi GitHub ReleasesISCAS 镜像源下载体验。

包管理工具的安装非常简单,只需下载ruyi工具预构建的二进制文件,将下载的文件去掉后缀重命名为 ruyi,并使其具有可执行权限,最后放入 $PATH 路径下就可以开始了。具体的使用可参考ruyi仓库文档

在安装完成后最常用的命令一般需要有:

bash

+import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"准备RISC-V开发环境","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/developmentside/index.md","filePath":"zh/usedirection/developmentside/index.md","lastUpdated":1718675566000}'),e={name:"zh/usedirection/developmentside/index.md"},l=n(`

准备RISC-V开发环境

安装 ruyi 包管理工具

RuyiSDK包管理工具目前提供了Linux系统 amd64、arm64、riscv64 三种架构平台下的安装程序,可以按需在ruyi GitHub ReleasesISCAS 镜像源下载体验。

包管理工具的安装非常简单,只需下载ruyi工具预构建的二进制文件,将下载的文件去掉后缀重命名为 ruyi,并使其具有可执行权限,最后放入 $PATH 路径下就可以开始了。具体的使用可参考ruyi仓库文档

在安装完成后最常用的命令一般需要有:

bash

 #查看工具版本(由于ruyi滚动发版,请注意关注版本信息,建议使用最新版本)
 ruyi -V
 
diff --git a/assets/zh_usedirection_developmentside_index.md.DSFFQvw8.lean.js b/assets/zh_usedirection_developmentside_index.md.J4JZvpbx.lean.js
similarity index 87%
rename from assets/zh_usedirection_developmentside_index.md.DSFFQvw8.lean.js
rename to assets/zh_usedirection_developmentside_index.md.J4JZvpbx.lean.js
index e16b3c75..b79fcd83 100644
--- a/assets/zh_usedirection_developmentside_index.md.DSFFQvw8.lean.js
+++ b/assets/zh_usedirection_developmentside_index.md.J4JZvpbx.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"准备RISC-V开发环境","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/developmentside/index.md","filePath":"zh/usedirection/developmentside/index.md","lastUpdated":1718624874000}'),e={name:"zh/usedirection/developmentside/index.md"},l=n("",23),t=[l];function p(h,r,k,d,c,o){return a(),i("div",null,t)}const g=s(e,[["render",p]]);export{y as __pageData,g as default};
+import{_ as s,c as i,o as a,a3 as n}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"准备RISC-V开发环境","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/developmentside/index.md","filePath":"zh/usedirection/developmentside/index.md","lastUpdated":1718675566000}'),e={name:"zh/usedirection/developmentside/index.md"},l=n("",23),t=[l];function p(h,r,k,d,c,o){return a(),i("div",null,t)}const g=s(e,[["render",p]]);export{y as __pageData,g as default};
diff --git a/assets/zh_usedirection_developmentside_sources_coremark_index.md.C6ZEySC6.js b/assets/zh_usedirection_developmentside_sources_coremark_index.md.CjbjcmEq.js
similarity index 99%
rename from assets/zh_usedirection_developmentside_sources_coremark_index.md.C6ZEySC6.js
rename to assets/zh_usedirection_developmentside_sources_coremark_index.md.CjbjcmEq.js
index b9091e14..8c20532e 100644
--- a/assets/zh_usedirection_developmentside_sources_coremark_index.md.C6ZEySC6.js
+++ b/assets/zh_usedirection_developmentside_sources_coremark_index.md.CjbjcmEq.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a3 as h}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"使用编译环境进行 Coremark 构建","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/developmentside/sources/coremark/index.md","filePath":"zh/usedirection/developmentside/sources/coremark/index.md","lastUpdated":1718624874000}'),k={name:"zh/usedirection/developmentside/sources/coremark/index.md"},n=h(`

使用编译环境进行 Coremark 构建

本文使用 Milkv-Duo 编译环境,构建 coremark 。

首先进入编译环境:

bash
$ . milkv-venv/bin/ruyi-activate
+import{_ as s,c as i,o as a,a3 as h}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"使用编译环境进行 Coremark 构建","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/developmentside/sources/coremark/index.md","filePath":"zh/usedirection/developmentside/sources/coremark/index.md","lastUpdated":1718675566000}'),k={name:"zh/usedirection/developmentside/sources/coremark/index.md"},n=h(`

使用编译环境进行 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
diff --git a/assets/zh_usedirection_developmentside_sources_coremark_index.md.C6ZEySC6.lean.js b/assets/zh_usedirection_developmentside_sources_coremark_index.md.CjbjcmEq.lean.js
similarity index 88%
rename from assets/zh_usedirection_developmentside_sources_coremark_index.md.C6ZEySC6.lean.js
rename to assets/zh_usedirection_developmentside_sources_coremark_index.md.CjbjcmEq.lean.js
index d9917606..31712bb8 100644
--- a/assets/zh_usedirection_developmentside_sources_coremark_index.md.C6ZEySC6.lean.js
+++ b/assets/zh_usedirection_developmentside_sources_coremark_index.md.CjbjcmEq.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a3 as h}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"使用编译环境进行 Coremark 构建","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/developmentside/sources/coremark/index.md","filePath":"zh/usedirection/developmentside/sources/coremark/index.md","lastUpdated":1718624874000}'),k={name:"zh/usedirection/developmentside/sources/coremark/index.md"},n=h("",23),t=[n];function l(p,e,F,r,d,g){return a(),i("div",null,t)}const E=s(k,[["render",l]]);export{y as __pageData,E as default};
+import{_ as s,c as i,o as a,a3 as h}from"./chunks/framework.D4PmY8Hg.js";const y=JSON.parse('{"title":"使用编译环境进行 Coremark 构建","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/developmentside/sources/coremark/index.md","filePath":"zh/usedirection/developmentside/sources/coremark/index.md","lastUpdated":1718675566000}'),k={name:"zh/usedirection/developmentside/sources/coremark/index.md"},n=h("",23),t=[n];function l(p,e,F,r,d,g){return a(),i("div",null,t)}const E=s(k,[["render",l]]);export{y as __pageData,E as default};
diff --git a/assets/zh_usedirection_developmentside_typeselection_index.md.Bpwhr1dX.js b/assets/zh_usedirection_developmentside_typeselection_index.md.CDoipKGs.js
similarity index 98%
rename from assets/zh_usedirection_developmentside_typeselection_index.md.Bpwhr1dX.js
rename to assets/zh_usedirection_developmentside_typeselection_index.md.CDoipKGs.js
index 4ebd6e00..b1e665da 100644
--- a/assets/zh_usedirection_developmentside_typeselection_index.md.Bpwhr1dX.js
+++ b/assets/zh_usedirection_developmentside_typeselection_index.md.CDoipKGs.js
@@ -1 +1 @@
-import{_ as t,c as e,o as d,a3 as r}from"./chunks/framework.D4PmY8Hg.js";const m=JSON.parse('{"title":"RuyiSDK中编译工具链类型简介","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/developmentside/typeselection/index.md","filePath":"zh/usedirection/developmentside/typeselection/index.md","lastUpdated":1718624874000}'),i={name:"zh/usedirection/developmentside/typeselection/index.md"},a=r('

RuyiSDK中编译工具链类型简介

编译工具链存在实现了不同扩展指令集而形成不同版本实现的现状。这种现象是由于处理器架构的发展、厂商定制和优化、标准和规范的演进以及特定应用需求等因素相互作用的结果。

  1. 处理器架构的发展:随着时间的推移,处理器架构不断演进和改进。新的处理器架构可能引入了新的指令集扩展,以提供更高的性能、更多的功能和更好的能效。为了充分利用这些新的指令集扩展,需要更新和升级编译工具链。因此,不同版本的编译工具链可以支持不同处理器架构的特定指令集,并满足不同处理器版本的需求。
  2. 厂商定制和优化:不同的处理器厂商可能对同一个扩展指令集进行了不同程度的定制和优化。它们可能通过改进指令执行流程、优化编译器生成的代码、添加特定的硬件加速器等方式,针对自己的处理器架构实现了特定版本的编译工具链。这样可以最大限度地发挥其处理器的性能和功能,并提供与其他竞争对手不同的优势。
  3. 标准和规范的演进:某些扩展指令集是由标准和规范定义的。然而,即使在同一个指令集标准下,不同版本的工具链也可能存在细微的差异和改进,以提供更好的性能、稳定性或兼容性。
  4. 特定应用需求:某些特定的应用领域可能对扩展指令集有特殊的需求。例如,嵌入式系统、机器学习、图像处理等领域可能需要针对特定指令集的优化和定制。不同版本的编译工具链可以提供针对这些特定应用领域的优化和支持,以满足其特定的需求。

上述原因导致了编译工具链版本的多样性,这样的多样性为开发者提供了更多选择,并可以根据具体需求和目标平台选择适合的编译工具链版本。

RuyiSDK计划为持有不同RISC-V开发板的开发者们提供支持,让他们在RuyiSDK这个中心化的工具中便捷的获取使用和开发所需的支持。目前RuyiSDK已经提供的编译工具链有如下几种:

编译工具链类型说明
GNU工具链gnu-upstream
gnu-plct'gnu-plct(==0.20240324.0)' 支持了香山南湖微架构
gnu-plct-xtheadfor xuantie
gnu-plct-rv64ilp32-elf非通用工具链,支持 rv64ilp32 的裸机工具链,目标代码格式是elf。[仓库] [文章]
LLVM工具链llvm-upstream
QEMU模拟器qemu-system-riscv-upstream
qemu-user-riscv-upstream
qemu-user-riscv-xthead
',6),s=[a];function l(n,o,c,p,u,h){return d(),e("div",null,s)}const f=t(i,[["render",l]]);export{m as __pageData,f as default}; +import{_ as t,c as e,o as d,a3 as r}from"./chunks/framework.D4PmY8Hg.js";const m=JSON.parse('{"title":"RuyiSDK中编译工具链类型简介","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/developmentside/typeselection/index.md","filePath":"zh/usedirection/developmentside/typeselection/index.md","lastUpdated":1718675566000}'),i={name:"zh/usedirection/developmentside/typeselection/index.md"},a=r('

RuyiSDK中编译工具链类型简介

编译工具链存在实现了不同扩展指令集而形成不同版本实现的现状。这种现象是由于处理器架构的发展、厂商定制和优化、标准和规范的演进以及特定应用需求等因素相互作用的结果。

  1. 处理器架构的发展:随着时间的推移,处理器架构不断演进和改进。新的处理器架构可能引入了新的指令集扩展,以提供更高的性能、更多的功能和更好的能效。为了充分利用这些新的指令集扩展,需要更新和升级编译工具链。因此,不同版本的编译工具链可以支持不同处理器架构的特定指令集,并满足不同处理器版本的需求。
  2. 厂商定制和优化:不同的处理器厂商可能对同一个扩展指令集进行了不同程度的定制和优化。它们可能通过改进指令执行流程、优化编译器生成的代码、添加特定的硬件加速器等方式,针对自己的处理器架构实现了特定版本的编译工具链。这样可以最大限度地发挥其处理器的性能和功能,并提供与其他竞争对手不同的优势。
  3. 标准和规范的演进:某些扩展指令集是由标准和规范定义的。然而,即使在同一个指令集标准下,不同版本的工具链也可能存在细微的差异和改进,以提供更好的性能、稳定性或兼容性。
  4. 特定应用需求:某些特定的应用领域可能对扩展指令集有特殊的需求。例如,嵌入式系统、机器学习、图像处理等领域可能需要针对特定指令集的优化和定制。不同版本的编译工具链可以提供针对这些特定应用领域的优化和支持,以满足其特定的需求。

上述原因导致了编译工具链版本的多样性,这样的多样性为开发者提供了更多选择,并可以根据具体需求和目标平台选择适合的编译工具链版本。

RuyiSDK计划为持有不同RISC-V开发板的开发者们提供支持,让他们在RuyiSDK这个中心化的工具中便捷的获取使用和开发所需的支持。目前RuyiSDK已经提供的编译工具链有如下几种:

编译工具链类型说明
GNU工具链gnu-upstream
gnu-plct'gnu-plct(==0.20240324.0)' 支持了香山南湖微架构
gnu-plct-xtheadfor xuantie
gnu-plct-rv64ilp32-elf非通用工具链,支持 rv64ilp32 的裸机工具链,目标代码格式是elf。[仓库] [文章]
LLVM工具链llvm-upstream
QEMU模拟器qemu-system-riscv-upstream
qemu-user-riscv-upstream
qemu-user-riscv-xthead
',6),s=[a];function l(n,o,c,p,u,h){return d(),e("div",null,s)}const f=t(i,[["render",l]]);export{m as __pageData,f as default}; diff --git a/assets/zh_usedirection_developmentside_typeselection_index.md.Bpwhr1dX.lean.js b/assets/zh_usedirection_developmentside_typeselection_index.md.CDoipKGs.lean.js similarity index 88% rename from assets/zh_usedirection_developmentside_typeselection_index.md.Bpwhr1dX.lean.js rename to assets/zh_usedirection_developmentside_typeselection_index.md.CDoipKGs.lean.js index c306a4d6..82552fa4 100644 --- a/assets/zh_usedirection_developmentside_typeselection_index.md.Bpwhr1dX.lean.js +++ b/assets/zh_usedirection_developmentside_typeselection_index.md.CDoipKGs.lean.js @@ -1 +1 @@ -import{_ as t,c as e,o as d,a3 as r}from"./chunks/framework.D4PmY8Hg.js";const m=JSON.parse('{"title":"RuyiSDK中编译工具链类型简介","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/developmentside/typeselection/index.md","filePath":"zh/usedirection/developmentside/typeselection/index.md","lastUpdated":1718624874000}'),i={name:"zh/usedirection/developmentside/typeselection/index.md"},a=r("",6),s=[a];function l(n,o,c,p,u,h){return d(),e("div",null,s)}const f=t(i,[["render",l]]);export{m as __pageData,f as default}; +import{_ as t,c as e,o as d,a3 as r}from"./chunks/framework.D4PmY8Hg.js";const m=JSON.parse('{"title":"RuyiSDK中编译工具链类型简介","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/developmentside/typeselection/index.md","filePath":"zh/usedirection/developmentside/typeselection/index.md","lastUpdated":1718675566000}'),i={name:"zh/usedirection/developmentside/typeselection/index.md"},a=r("",6),s=[a];function l(n,o,c,p,u,h){return d(),e("div",null,s)}const f=t(i,[["render",l]]);export{m as __pageData,f as default}; diff --git a/assets/zh_usedirection_index.md.DtzZprXS.js b/assets/zh_usedirection_index.md.BsLbuPdO.js similarity index 96% rename from assets/zh_usedirection_index.md.DtzZprXS.js rename to assets/zh_usedirection_index.md.BsLbuPdO.js index 594354d9..b35e1420 100644 --- a/assets/zh_usedirection_index.md.DtzZprXS.js +++ b/assets/zh_usedirection_index.md.BsLbuPdO.js @@ -1 +1 @@ -import{_ as i,c as e,o as t,a3 as a}from"./chunks/framework.D4PmY8Hg.js";const h=JSON.parse('{"title":"使用RuyiSDK","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/index.md","filePath":"zh/usedirection/index.md","lastUpdated":1718624874000}'),l={name:"zh/usedirection/index.md"},o=a('

使用RuyiSDK

开发者在进行RISC-V开发时,主要的设备包括开发侧的个人电脑(开发环境)和运行侧的RISC-V设备(运行环境)。

开发环境目前更多的是x86_64架构的个人电脑,但是一些高性能的RISC-V设备也可以。在开发侧,通常完成目标可执行程序的准备工作:

  1. 准备RISC-V开发环境,如安装编译工具链、模拟器、调试工具等等
  2. 准备代码
  3. 编译代码
  4. 模拟运行
  5. 调试

运行环境主要是RISC-V硬件设备。在运行侧,通常用来运行RISC-V架构目标可执行程序以达到验证或者使用的目的。

  1. 为RISC-V开发板安装操作系统
  2. 安装目标程序运行所需的运行时环境/语言虚拟机等软件(通常由操作系统提供)
  3. 运行RISC-V目标程序

RuyiSDK针对上述常见的需求提供了包管理器、安装器、集成开发环境来为开发者提供方便。

',7),r=[o];function s(n,_,d,c,p,S){return t(),e("div",null,r)}const R=i(l,[["render",s]]);export{h as __pageData,R as default}; +import{_ as i,c as e,o as t,a3 as a}from"./chunks/framework.D4PmY8Hg.js";const h=JSON.parse('{"title":"使用RuyiSDK","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/index.md","filePath":"zh/usedirection/index.md","lastUpdated":1718675566000}'),l={name:"zh/usedirection/index.md"},o=a('

使用RuyiSDK

开发者在进行RISC-V开发时,主要的设备包括开发侧的个人电脑(开发环境)和运行侧的RISC-V设备(运行环境)。

开发环境目前更多的是x86_64架构的个人电脑,但是一些高性能的RISC-V设备也可以。在开发侧,通常完成目标可执行程序的准备工作:

  1. 准备RISC-V开发环境,如安装编译工具链、模拟器、调试工具等等
  2. 准备代码
  3. 编译代码
  4. 模拟运行
  5. 调试

运行环境主要是RISC-V硬件设备。在运行侧,通常用来运行RISC-V架构目标可执行程序以达到验证或者使用的目的。

  1. 为RISC-V开发板安装操作系统
  2. 安装目标程序运行所需的运行时环境/语言虚拟机等软件(通常由操作系统提供)
  3. 运行RISC-V目标程序

RuyiSDK针对上述常见的需求提供了包管理器、安装器、集成开发环境来为开发者提供方便。

',7),r=[o];function s(n,_,d,c,p,S){return t(),e("div",null,r)}const R=i(l,[["render",s]]);export{h as __pageData,R as default}; diff --git a/assets/zh_usedirection_index.md.DtzZprXS.lean.js b/assets/zh_usedirection_index.md.BsLbuPdO.lean.js similarity index 85% rename from assets/zh_usedirection_index.md.DtzZprXS.lean.js rename to assets/zh_usedirection_index.md.BsLbuPdO.lean.js index 3afbfde2..710f50b2 100644 --- a/assets/zh_usedirection_index.md.DtzZprXS.lean.js +++ b/assets/zh_usedirection_index.md.BsLbuPdO.lean.js @@ -1 +1 @@ -import{_ as i,c as e,o as t,a3 as a}from"./chunks/framework.D4PmY8Hg.js";const h=JSON.parse('{"title":"使用RuyiSDK","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/index.md","filePath":"zh/usedirection/index.md","lastUpdated":1718624874000}'),l={name:"zh/usedirection/index.md"},o=a("",7),r=[o];function s(n,_,d,c,p,S){return t(),e("div",null,r)}const R=i(l,[["render",s]]);export{h as __pageData,R as default}; +import{_ as i,c as e,o as t,a3 as a}from"./chunks/framework.D4PmY8Hg.js";const h=JSON.parse('{"title":"使用RuyiSDK","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/index.md","filePath":"zh/usedirection/index.md","lastUpdated":1718675566000}'),l={name:"zh/usedirection/index.md"},o=a("",7),r=[o];function s(n,_,d,c,p,S){return t(),e("div",null,r)}const R=i(l,[["render",s]]);export{h as __pageData,R as default}; diff --git a/assets/zh_usedirection_operationside_index.md.C6Vxbl1I.js b/assets/zh_usedirection_operationside_index.md.C-2POAno.js similarity index 96% rename from assets/zh_usedirection_operationside_index.md.C6Vxbl1I.js rename to assets/zh_usedirection_operationside_index.md.C-2POAno.js index 530e28ee..47adedc0 100644 --- a/assets/zh_usedirection_operationside_index.md.C6Vxbl1I.js +++ b/assets/zh_usedirection_operationside_index.md.C-2POAno.js @@ -1 +1 @@ -import{_ as a,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"准备RISC-V运行环境","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/operationside/index.md","filePath":"zh/usedirection/operationside/index.md","lastUpdated":1718624874000}'),t={name:"zh/usedirection/operationside/index.md"},n=s('

准备RISC-V运行环境

为RISC-V开发板安装操作系统

可以通过下载安装最新的 ruyi 包管理器工具并执行以下命令为设备安装系统:

bash
$ ruyi device provision

按照引导信息一步步执行即可。

运行RISC-V目标程序

C程序,直接运行即可。

其它高级语言,如Java程序,python等,需要先安装运行时环境或语言虚拟机。

',8),r=[n];function o(d,h,c,p,l,_){return i(),e("div",null,r)}const v=a(t,[["render",o]]);export{k as __pageData,v as default}; +import{_ as a,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"准备RISC-V运行环境","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/operationside/index.md","filePath":"zh/usedirection/operationside/index.md","lastUpdated":1718675566000}'),t={name:"zh/usedirection/operationside/index.md"},n=s('

准备RISC-V运行环境

为RISC-V开发板安装操作系统

可以通过下载安装最新的 ruyi 包管理器工具并执行以下命令为设备安装系统:

bash
$ ruyi device provision

按照引导信息一步步执行即可。

运行RISC-V目标程序

C程序,直接运行即可。

其它高级语言,如Java程序,python等,需要先安装运行时环境或语言虚拟机。

',8),r=[n];function o(d,h,c,p,l,_){return i(),e("div",null,r)}const v=a(t,[["render",o]]);export{k as __pageData,v as default}; diff --git a/assets/zh_usedirection_operationside_index.md.C6Vxbl1I.lean.js b/assets/zh_usedirection_operationside_index.md.C-2POAno.lean.js similarity index 87% rename from assets/zh_usedirection_operationside_index.md.C6Vxbl1I.lean.js rename to assets/zh_usedirection_operationside_index.md.C-2POAno.lean.js index ba71fdb7..f4e522de 100644 --- a/assets/zh_usedirection_operationside_index.md.C6Vxbl1I.lean.js +++ b/assets/zh_usedirection_operationside_index.md.C-2POAno.lean.js @@ -1 +1 @@ -import{_ as a,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"准备RISC-V运行环境","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/operationside/index.md","filePath":"zh/usedirection/operationside/index.md","lastUpdated":1718624874000}'),t={name:"zh/usedirection/operationside/index.md"},n=s("",8),r=[n];function o(d,h,c,p,l,_){return i(),e("div",null,r)}const v=a(t,[["render",o]]);export{k as __pageData,v as default}; +import{_ as a,c as e,o as i,a3 as s}from"./chunks/framework.D4PmY8Hg.js";const k=JSON.parse('{"title":"准备RISC-V运行环境","description":"","frontmatter":{},"headers":[],"relativePath":"zh/usedirection/operationside/index.md","filePath":"zh/usedirection/operationside/index.md","lastUpdated":1718675566000}'),t={name:"zh/usedirection/operationside/index.md"},n=s("",8),r=[n];function o(d,h,c,p,l,_){return i(),e("div",null,r)}const v=a(t,[["render",o]]);export{k as __pageData,v as default}; diff --git a/en/index.html b/en/index.html index a4a70ffc..8eab1f15 100644 --- a/en/index.html +++ b/en/index.html @@ -8,17 +8,17 @@ - + - - + +
Skip to content

RuyiSDK Doc

English version WIP

- + \ No newline at end of file diff --git a/en/introduction/index.html b/en/introduction/index.html index 8878f7db..cd331bf3 100644 --- a/en/introduction/index.html +++ b/en/introduction/index.html @@ -8,17 +8,17 @@ - + - - + + -
Skip to content

TODO

Last updated:

- +
Skip to content

TODO

Last updated:

+ \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index 0e515990..e2fcd34f 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"zh_usecase_x86pc_index.md":"5tYxznhl","zh_introduction_requirement.md":"Dy7XWLXi","zh_devices_index.md":"SHrYcQit","zh_ruyi_updates_0.11.0.md":"uMy2JFT5","en_introduction_index.md":"bXikIOrS","zh_ruyi_updates_0.8.1.md":"xxIV8y3g","en_index.md":"dmgImlb6","zh_ruyi_updates_0.5.0.md":"DErlqVcV","zh_ruyi_updates_0.12.0.md":"SvOHyqAC","zh_sdk_gnu_index.md":"B-oFIiyF","zh_sdk_llvm_index.md":"DyL0hJOR","zh_usecase_index.md":"CLJFG0wj","zh_usecase_rvbook_index.md":"Dn6xlM1G","zh_index.md":"R7f61pLy","zh_usecase_setupos_index.md":"BlPZtsz4","zh_ruyi_getstarted_index.md":"BrTCZS-O","zh_plan_index.md":"D35ekciP","zh_ruyi_updates_0.4.0.md":"lB_P7ERF","zh_introduction_index.md":"Cx1w8Gv1","zh_ruyi_index.md":"DhMgs9w9","zh_ruyi_updates_0.10.0.md":"ClcHcnRO","zh_ruyi_updates_0.7.0.md":"DG4THnfW","zh_ruyi_updates_0.9.0.md":"D1w7hrsJ","zh_usedirection_developmentside_index.md":"DSFFQvw8","zh_ruyi_updates_0.3.0.md":"BWhXIER1","zh_usedirection_developmentside_typeselection_index.md":"Bpwhr1dX","zh_usedirection_index.md":"DtzZprXS","zh_usedirection_operationside_index.md":"C6Vxbl1I","zh_usedirection_developmentside_sources_coremark_index.md":"C6ZEySC6","zh_ruyi_updates_0.6.0.md":"Dy-fRhJJ","zh_usedirection_developmentside_environments_index.md":"BNthRWcp"} +{"zh_ruyi_getstarted_index.md":"MWEt3k8n","en_index.md":"IRM4U9Pz","en_introduction_index.md":"DOdtZ-ST","zh_ruyi_updates_0.4.0.md":"BgPVjIFM","zh_sdk_llvm_index.md":"CrBzunRh","zh_ruyi_updates_0.3.0.md":"BV1nNQLD","zh_ruyi_updates_0.9.0.md":"D0E6ZqAA","zh_ruyi_updates_0.8.1.md":"jbM4_cxh","zh_plan_index.md":"DCyo_2vq","zh_usedirection_developmentside_sources_coremark_index.md":"CjbjcmEq","zh_usecase_rvbook_index.md":"9tantbSr","zh_usecase_setupos_index.md":"CAuFrtVy","zh_ruyi_updates_0.12.0.md":"BnRYCbxm","zh_usedirection_operationside_index.md":"C-2POAno","zh_ruyi_updates_0.6.0.md":"Ba1BrHrd","zh_usedirection_developmentside_typeselection_index.md":"CDoipKGs","zh_introduction_index.md":"Bc_KVu0K","zh_usedirection_developmentside_environments_index.md":"BVHWihz2","zh_ruyi_index.md":"DkS5zeVg","zh_index.md":"B2Jl1qMC","zh_usedirection_index.md":"BsLbuPdO","zh_ruyi_updates_0.5.0.md":"C5otbDdo","zh_usedirection_developmentside_index.md":"J4JZvpbx","zh_ruyi_updates_0.11.0.md":"D-fNb-_4","zh_devices_index.md":"B_hSiSsC","zh_introduction_requirement.md":"hm-IkXTF","zh_usecase_x86pc_index.md":"B0T2iG_a","zh_ruyi_updates_0.10.0.md":"CVskd8cX","zh_usecase_index.md":"DBxGRrPV","zh_ruyi_updates_0.7.0.md":"Dx9cz4Ke","zh_sdk_gnu_index.md":"CgizZNtQ"} diff --git a/zh/devices/index.html b/zh/devices/index.html index c96c4d19..3e7e46fb 100644 --- a/zh/devices/index.html +++ b/zh/devices/index.html @@ -8,17 +8,17 @@ - + - - + + -
Skip to content

RuyiSDK集成的RISC-V设备

RuyiSDK对RISC-V设备的集成和支持主要包括以下几个方面:

  1. 提供RISC-V 开发板适用镜像信息维护与下载、开发板系统安装引导程序,方便 RISC-V 开发者获取指定开发板可用的OS并可方便的安装OS的安装。RuyiSDK集成了多种可用的操作系统供用户选择。
  2. 提供RISC-V 开发板对应的演示程序、开发资料和相关工具(含适用的编译工具链、模拟器等)的信息维护和下载,方便 RISC-V 开发者快速上手。
  3. 在集成开发环境中增加RISC-V设备专有向导页面、实现开发环境和运行环境的文件传输、支持在RISC-V设备上调试应用程序等。

支持的RISC-V设备

目前对硬件设备的集成主要体现在包管理器(设备安装器),可以通过 ruyi device provision命令查询,已经集成的RISC-V设备有:

  1. Allwinner Nezha D1
  2. Canaan Kendryte K230
  3. Milk-V Duo
  4. Milk-V Duo S
  5. Milk-V Mars
  6. Milk-V Mars CM
  7. Milk-V Meles
  8. Milk-V Pioneer Box
  9. Milk-V Vega
  10. SiFive HiFive Unmatched
  11. Sipeed Lichee RV
  12. Sipeed LicheePi 4A
  13. StarFive VisionFive
  14. StarFive VisionFive2

从RuyiSDK开始使用设备

获取并安装OS

可以通过下载安装最新的 ruyi 包管理器工具并执行以下命令为设备安装系统:

bash
$ ruyi device provision

按照引导信息一步步执行即可。

- +
Skip to content

RuyiSDK集成的RISC-V设备

RuyiSDK对RISC-V设备的集成和支持主要包括以下几个方面:

  1. 提供RISC-V 开发板适用镜像信息维护与下载、开发板系统安装引导程序,方便 RISC-V 开发者获取指定开发板可用的OS并可方便的安装OS的安装。RuyiSDK集成了多种可用的操作系统供用户选择。
  2. 提供RISC-V 开发板对应的演示程序、开发资料和相关工具(含适用的编译工具链、模拟器等)的信息维护和下载,方便 RISC-V 开发者快速上手。
  3. 在集成开发环境中增加RISC-V设备专有向导页面、实现开发环境和运行环境的文件传输、支持在RISC-V设备上调试应用程序等。

支持的RISC-V设备

目前对硬件设备的集成主要体现在包管理器(设备安装器),可以通过 ruyi device provision命令查询,已经集成的RISC-V设备有:

  1. Allwinner Nezha D1
  2. Canaan Kendryte K230
  3. Milk-V Duo
  4. Milk-V Duo S
  5. Milk-V Mars
  6. Milk-V Mars CM
  7. Milk-V Meles
  8. Milk-V Pioneer Box
  9. Milk-V Vega
  10. SiFive HiFive Unmatched
  11. Sipeed Lichee RV
  12. Sipeed LicheePi 4A
  13. StarFive VisionFive
  14. StarFive VisionFive2

从RuyiSDK开始使用设备

获取并安装OS

可以通过下载安装最新的 ruyi 包管理器工具并执行以下命令为设备安装系统:

bash
$ ruyi device provision

按照引导信息一步步执行即可。

+ \ No newline at end of file diff --git a/zh/index.html b/zh/index.html index 275635e7..5d014ef5 100644 --- a/zh/index.html +++ b/zh/index.html @@ -8,17 +8,17 @@ - + - - + +
Skip to content

RuyiSDK 文档

本手册包含了 RuyiSDK 如何构建、如何使用的相关内容。

- + \ No newline at end of file diff --git a/zh/introduction/index.html b/zh/introduction/index.html index e047839d..05ae18cf 100644 --- a/zh/introduction/index.html +++ b/zh/introduction/index.html @@ -8,24 +8,24 @@ - + - - + + -
Skip to content

Hello Ruyi

欢迎来到 RuyiSDK 相关介绍内容,以下是本文相关内容:

  1. [什么是 RuyiSDK](## 介绍)
  2. [为什么会有 RuyiSDK](## 背景)
  3. [RuyiSDK 有什么用](## 功能)
  4. [我可以在什么设备上运行](## 支持的设备)
  5. [RuyiSDK 的原理是什么](## RuyiSDK 架构示意图)
  6. [我该从何开始](## 让我们开始吧!)

介绍

RuyiSDK 是一个由中科院软件所(ISCAS)所启动的开源项目,该项目旨在为 RISC-V 开发者提供一个便捷、完善的开发环境。其提供了相关最新的硬件信息、软件支持,例如在[支持的设备](## 支持的设备)中有提供相关支持硬件情况;软件层面提供了镜像(如 RevyOS)、工具链、包管理器等。

其最终目标是希望为 RISC-V 开发者提供一个完善、便捷的开发环境,使得 RISC-V 成为主流架构,以及建设并运营一个完善的社区以便开发者交流。最终希望 RuyiSDK 可以走向国际化,为全球的 RISC-V 开发者提供开发的便捷。

背景

RISC-V 是第五代精简指令集,由加州伯克利分校所发起的一个开源项目,相比 Cisc 而言更具精简性,指令执行效率更高。开源使其能够更加方便的运用在不同的领域,目前在 IoT、智能家居、芯片设计、操作系统、软件开发等领域都有应用。

而在过往针对 RISC-V 的开发面临的问题在于相关资讯没有统一的平台,使得开发者从最开始的学习、再到开发应用的效率大幅降低,而 RuyiSDK 的出现就是为了解决这些问题。

功能

RuyiSDK 分为以下三个部分:

Ruyi 包管理器

该包管理器是一个在线的软件源,在该包管理器中,我们提供了如下内容:

1. 工具链
+    
Skip to content

Hello Ruyi

欢迎来到 RuyiSDK 相关介绍内容,以下是本文相关内容:

  1. 什么是 RuyiSDK
  2. 为什么会有 RuyiSDK
  3. RuyiSDK 有什么用
  4. 我可以在什么设备上运行
  5. RuyiSDK 的原理是什么
  6. 我该从何开始

介绍

RuyiSDK 是一个由中科院软件所(ISCAS)所启动的开源项目,该项目旨在为 RISC-V 开发者提供一个便捷、完善的开发环境。其提供了相关最新的硬件信息、软件支持,例如在[支持的设备](## 支持的设备)中有提供相关支持硬件情况;软件层面提供了镜像(如 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:适用于入门级开发和教育用途。
  2. Canaan Kendryte K230:专为 AI 应用设计。
  3. Milk-V Duo:小巧灵活,适合嵌入式应用。
  4. Milk-V Duo S:提供更强的处理能力。
  5. Milk-V Mars:适合物联网应用。
  6. Milk-V Mars CM:集成多种通信接口。
  7. Milk-V Meles:高性能嵌入式开发。
  8. Milk-V Pioneer Box:适用于边缘计算。
  9. Milk-V Vega:高性能计算设备。
  10. SiFive HiFive Unmatched:适合高性能开发和研究。
  11. Sipeed Lichee RV:适合入门和教育。
  12. Sipeed LicheePi 4A:提供更高的性能和更多的接口。
  13. StarFive VisionFive:支持多种 AI 和物联网应用。
  14. StarFive VisionFive2:升级版,提供更强的计算能力。

文档可能更新不及时,查看最新支持的设备请通过指令ruyi device provision查询。

RuyiSDK 架构示意图

image

让我们开始吧!

从 RuyiSDK 开始使用设备!

获取并安装OS

开始的第一步:

bash
$ ruyi device provision

该指令会识别硬件信息,并且开始自动执行对应程序为用户自动部署 RISC-V 开发环境,按照引导信息一步步执行即可。

- +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:适用于入门级开发和教育用途。
  2. Canaan Kendryte K230:专为 AI 应用设计。
  3. Milk-V Duo:小巧灵活,适合嵌入式应用。
  4. Milk-V Duo S:提供更强的处理能力。
  5. Milk-V Mars:适合物联网应用。
  6. Milk-V Mars CM:集成多种通信接口。
  7. Milk-V Meles:高性能嵌入式开发。
  8. Milk-V Pioneer Box:适用于边缘计算。
  9. Milk-V Vega:高性能计算设备。
  10. SiFive HiFive Unmatched:适合高性能开发和研究。
  11. Sipeed Lichee RV:适合入门和教育。
  12. Sipeed LicheePi 4A:提供更高的性能和更多的接口。
  13. StarFive VisionFive:支持多种 AI 和物联网应用。
  14. StarFive VisionFive2:升级版,提供更强的计算能力。

文档可能更新不及时,查看最新支持的设备请通过指令ruyi device provision查询。

RuyiSDK-架构示意图

image

让我们开始吧!

从 RuyiSDK 开始使用设备!

获取并安装OS

开始的第一步:

bash
$ ruyi device provision

该指令会识别硬件信息,并且开始自动执行对应程序为用户自动部署 RISC-V 开发环境,按照引导信息一步步执行即可。

+ \ No newline at end of file diff --git a/zh/introduction/requirement.html b/zh/introduction/requirement.html index 54a60267..6a98bfc4 100644 --- a/zh/introduction/requirement.html +++ b/zh/introduction/requirement.html @@ -8,17 +8,17 @@ - + - - + + -
Skip to content

介绍

RuyiSDK 是一个旨在提供给一个一体化集成开发环境的产品计划。从 2023 年开始筹备,计划用三年时间为 RISC-V 开发者提供一个完整的、全家桶式的全功能开发环境。

RuyiSDK 的目标

  1. 开发者购买了 (几乎) 任何一款 RISC-V 开发板或模组,都可以通过 RuyiSDK 系统获得硬件资料说明、固件 / 软件更新、调试支持等。
  2. 开发者可以指定任何常用的 RISC-V 扩展指令集架构组合,都可以通过 RuyiSDK 系统生成客户所需的操作系统、工具链、语言执行环境 (运行时或虚拟机)、计算库、应用框架等。尤其强调 RuyiSDK 将完全支持 Vector 0.7.1 和 RVP 0.5.2 等已经大规模硅化的草案 标准 (or 厂商定制扩展)。
  3. 培育运营一个活跃全面的开发者交流社区。

RuyiSDK 架构示意图

![[1703147196780.png]]RuyiSDK 的组成

RuyiSDK 主要包含了一个组件管理器(也称为包管理器,Ruyi Repo)、一个集成开发环境(Ruyi IDE)、一个开发者交流社区;

  • 组件管理器包含一个在线软件源 (Ruyi Repo) 和 一个包管理工具(ruyi)。在线软件源即 Ruyi Repo 集中存储了RISC-V集成开发环境所需的编译工具链、调试工具、模拟器、运行环境、文档、代码、工具、target系统镜像等内容;包管理器工具则是用于与在线软件源交互的工具,它提供了一套命令行接口(ruyi)或图形用户界面(GUI未来可能提供),使开发者能够搜索、安装、更新和管理软件包。包管理工具负责从在线软件源中获取软件包的信息,解析软件包的依赖关系,并自动处理依赖关系的下载和安装。

  • 集成开发环境(Ruyi IDE)则是一个专门用来开发能够运行在RISC-V架构设备上的软件和应用的工具箱。可以帮助开发者编写和测试自己的程序。

    想象一下,你要做一款能够运行在RISC-V设备上的应用程序,比如用C或者C++语言开发一个图像识别的程序,Ruyi IDE 就像是一个你的工作室,里面有各种各样的工具可以帮助你完成这个任务。首先创建项目,从RuyiSDK包管理器中下载和安装所需的编译工具链、调试工具、模拟器等工具,然后在文本编辑器中完成对代码的编辑,接着对项目进行编译构建获得RISC-V架构的可执行程序,最后在模拟器或者RISC-V开发板上进行运行和测试。如果代码需要调试,也可通过调试工具进行代码调试。这一过程和x86下的开发、编译构建、调试、运行的流程是一致的,只是适用于当前开发语言及目标运行设备的RISC-V的编译工具链、模拟器等软件和工具都可以从Ruyi Repo中获取,在安装和IDE初始设置时都已经被集成到 Ruyi IDE 之中,用户无需为环境搭建耗费精力。

  • 开发者交流社区则提供文档和教程、论坛和技术讨论区、博客和文档等等功能,目的是为RISC-V开发者提供一个开放的交流平台,提供互助式技术支持和资源共享,聚集RISC-V开发者并推动RISC-V生态系统的发展。

RuyiSDK 模块需求说明

说明:这是一个初步的需求设想,具体还需要结合技术可行性等进行进一步的调整。供参考。

RUYI 包管理器

RUYI在线软件源(Ruyi Repo)

  1. 软件源的管理内容包括以下内容:
    1. GNU和LLVM编译工具链
    2. 调试工具(GDB、LLDB)
    3. 模拟器(qemu、spike,……)
    4. 运行环境(sysroot / rootfs)
    5. 工具:包括且不限于Ruyi IDE、架构图中的各种工具等
    6. 代码(库、示例 etc.)
    7. 文档
    8. 目标运行环境的RISC-V系统镜像文件
  2. 软件源内包的元数据包含并不限于:发布厂商、版本信息、资源类型、下载链接、文档资源等各种信息(支持属性扩展)等属性信息;如编译工具链有不同厂商发布的,不同版本的软件资源需要进行管理(如GNU和LLVM目前有三种类型:upstream、PLCT、xthead,随着版本的更新和发布,每种类型会产生诸如vX.X这种多个版本)。

RUYI包管理工具(ruyi)

  1. 实现一套命令行接口(CLI),用于与在线软件源交互。
    1. 使开发者能够搜索、安装、更新、卸载和管理软件包。

    2. 包管理工具负责从在线软件源中获取软件包的信息,解析软件包的依赖关系,并自动处理依赖关系的下载和安装。

    3. 能够支持工具自身的升级、卸载;

    4. 能够支持在线软件源中不同类型、不同版本、不同厂商、不同适用环境的软件包的搜索:

      • 按照name搜索
      • 按照版本搜索
      • 按照可支持的扩展指令集搜索
      • 按照资源类型搜索
      • 按照可适用的开发板(或目标运行环境)搜索
      • ……
  2. 实现一套图形用户界面(GUI)工具,用于与在线软件源交互。功能与上述CLI接口类似;(待定)
  3. 三架构支持:工具需要支持x86、aarch64、RISC-V三种架构的主流Linux系统(包含但不限于openEuler、Debian、Ubuntu、Fedora等);

Ruyi IDE

针对RISC-V开发者使用的集成开发环境(IDE)需要具备如下功能:

  1. 项目管理工具:提供项目管理功能,使开发者能够轻松创建、组织和管理他们的RISC-V项目。这包括创建新项目、导入现有项目、管理依赖和库等。

  2. 代码编辑器:提供一个功能强大的代码编辑器,支持开发语言的语法高亮显示、代码自动完成、代码导航、智能感知、错误检查、代码片段管理、版本控制集成、调试支持等功能,以提高开发效率、减少错误,并提供更好的代码编写和维护体验。

    • 代码编辑器常见功能详细说明:

      1. 语法高亮(Syntax Highlighting):根据编程语言的语法规则,对代码进行着色,以增强可读性和代码理解性。
      2. 自动完成(Auto Completion):根据当前上下文,在输入代码的过程中自动弹出变量、函数、类名等的建议,以加快编码速度和减少拼写错误。
      3. 智能感知(Intelligent Code Sense):通过静态分析和语义理解,提供关于代码中变量、函数、类等的详细信息,如类型、参数列表、返回值等,以帮助开发者编写正确的代码。
      4. 代码导航(Code Navigation):提供快速导航到代码的不同部分,如跳转到定义处、跳转到引用处、跳转到函数调用等,以便快速定位和浏览代码。
      5. 重构工具(Refactoring Tools):提供一系列操作,如重命名、提取函数、提取变量等,以帮助开发者改善代码的结构和可维护性。
      6. 调试支持(Debugging Support):提供集成的调试器,使开发者能够设置断点、单步执行代码、查看变量的值等,以便调试和排查代码中的问题。
      7. 版本控制集成(Version Control Integration):与版本控制系统(如Git)集成,提供对代码版本的管理、提交、比较和合并等功能。
      8. 错误检查(Error Checking):即时检测代码中的语法错误、潜在的逻辑错误或常见的编码错误,并给出相应的警告或错误提示。
      9. 代码片段管理(Code Snippet Management):提供可重用的代码片段库,包括预定义的模板或用户自定义的代码片段,以便快速插入常用代码块。
      10. 文档生成(Documentation Generation):根据代码中的注释或特定的标记语言,自动生成代码文档或API文档。
    • 语言插件: 支持C、C++、Java、JavaScript、Python、Rust、Fortran、SAIL、Dart、Chisel等不同的语言类型;

  3. RISC-V编译器/解释器支持:集成RISC-V架构的编译器/解释器,使开发者能够编译和构建基于RISC-V指令集的应用程序。(这里不同语言存在差异,需要一一区别和定义)

  4. RISC-V模拟器和调试器:集成一个RISC-V模拟器和调试器,可以模拟和调试RISC-V指令的执行过程。开发者可以在IDE中设置断点、单步执行代码,并查看变量的值和内存的状态,以进行程序的调试和分析。

  5. 代码分析和优化:提供代码分析工具,帮助开发者发现潜在的性能问题和错误,并提供优化建议。这包括静态代码分析、性能分析和内存分析等功能,以帮助开发者编写更高效和可靠的RISC-V应用程序。

  6. 集成文档和教程:提供与RISC-V相关的文档、教程和示例代码的集成,以帮助开发者学习和使用RISC-V架构。这样,开发者可以在IDE中方便地查阅文档和学习相关知识,加快他们的开发过程。

  7. 语言虚拟机或运行时环境:一些语言需要在运行时依赖于相应的解释器或语言虚拟机。如Python需要在运行时依赖于相应的解释器或语言虚拟机(如CPython、Jython等)。因此,IDE需要与这些解释器或虚拟机进行集成,以便在IDE中直接运行和调试Python代码。

  8. 代码执行环境管理:如Python开发中通常会使用虚拟环境(Virtual Environment)来管理依赖和隔离项目环境。IDE可以提供对虚拟环境的支持,使开发者能够方便地创建、激活和管理虚拟环境。

  9. 交互式解释器和调试器:如Python具有交互式解释器(REPL)的特性,可以在命令行环境中逐行执行代码。IDE可以集成交互式解释器,使开发者能够在IDE中直接执行和调试代码片段,以便进行快速的实验和调试。

  10. 包管理和库支持:很多开发语言都有丰富的第三方库和包管理工具。如Python是pip、conda等。IDE可以提供对这些工具的集成,以便开发者能够方便地搜索、安装和管理各种Python库和依赖项。

针对RISC-V开发者使用的集成开发环境(IDE)需要具备如下特点:

  1. 可扩展性和插件支持:支持插件系统,使开发者能够根据自己的需求扩展和定制IDE。这样,他们可以集成其他工具、添加自定义功能,并与其他开发者共享他们的插件。
  2. 并行编译能力: IDE中,能够为一个项目同时生成不同的运行环境(RISC-V开发板)编译构建出适用该开发板的可执行程序。(待定)
  3. 跨平台兼容性,三架构支持: Ruyi IDE 本身的安装程序需要支持x86、aarch64、RISC-V三种架构的主流Linux系统(包含但不限于openEuler、Debian、Ubuntu、Fedora等);
  4. 定制化: 可视化的集成开发环境的界面部分,除去继承开源软件的部分,自研发/改动部分界面需要个性化定制。
  5. 性能: 要求 Ruyi IDE 能够流畅地运行在主流的PC设备上。

我们希望,当使用 Ruyi IDE 进行例如图像识别应用程序的开发时,能够得到如下步骤所描述的功能支持:

  1. 打开 Ruyi IDE,并创建一个新的项目或工程。在项目中,你可以组织和管理你的代码文件、资源文件和配置文件等。
  2. 在集成开发环境的文本编辑器中,创建一个新的C/C++源代码文件。在该文件中,你可以编写程序,如图像识别算法的逻辑和实现。
  3. 使用语法高亮功能,集成开发环境会根据编程语言的语法规则,对你的代码进行着色,以增强可读性和代码理解性。
  4. 在编写代码的过程中,Ruyi IDE 提供自动完成功能,根据当前上下文,自动弹出变量、函数和类名的建议,以加快编码速度和减少拼写错误。
  5. 在代码编写过程中,集成开发环境提供智能感知功能,通过静态分析和语义理解,提供关于代码中变量、函数、类等的详细信息,如类型、参数列表、返回值等,以帮助你编写正确的代码。
  6. 在集成开发环境中,你可以使用代码导航功能,快速跳转到代码的不同部分,如跳转到函数的定义处、跳转到变量的引用处,以便快速定位和浏览代码。
  7. 在编写完代码后,使用集成开发环境提供的构建工具进行项目的构建。这可能涉及选择适当的编译选项、设置编译器路径和库路径,以及处理依赖关系。
  8. Ruyi IDE 通常提供调试器功能,你可以设置断点、逐行调试代码,并观察变量的值,以解决代码中的错误和问题。
  9. 如果需要提高图像识别程序的性能,你可以使用Ruyi IDE 中的性能分析工具,检查代码的瓶颈并进行优化。
  10. 一旦你完成了开发和调试,Ruyi IDE 提供了部署工具,你可以将编译好的图像识别应用程序部署到RISC-V架构的嵌入式设备上,并进行远程调试和监视。
  11. 在开发过程中,Ruyi IDE 还提供版本控制集成工具,帮助你管理代码的版本、进行代码的协作开发和团队协作。如果遇到技术问题,可以在开发者社区进行技术交流获取帮助。
  12. 最后,Ruyi IDE 还提供文档生成工具,可以自动生成代码文档或API文档,帮助你记录和分享你的代码。

通过 Ruyi IDE 的支持,你可以更高效地开发图像识别应用程序,利用其提供的各种工具和功能,加速开发过程、减少错误,并提供更好的代码编写和维护体验。

总之,RISC-V开发者的集成开发环境将提供一系列专门针对RISC-V架构的工具和功能(这些工具从包管理器中获取),以帮助开发者更轻松、高效地开发RISC-V应用程序。同时,它提供直观的用户界面、高度可定制的功能和良好的扩展性,以满足不同开发者的需求。

开发者社区

一个开发者交流社区需要具备以下功能:

  1. 主页/官方网站: 用来汇聚关于 RuyiSDK 宣发、推广、使用、交流需要的一切资源,是第一级别入口。
  2. 开发者管理: 用户的注册、登录等账号有关的管理。
  3. 统计功能: 对主页累计访问量、软件下载次数、用户注册量等信息进行统计,这是用户维护方持续了解开发者社区活跃程度的一种技术支持手段。
  4. 文档和教程:社区可能提供详细的文档和教程,涵盖RISC-V开发环境的使用指南、编程技巧、调试技巧等方面的内容,帮助开发者快速上手和解决常见问题。
  5. 论坛和讨论区:提供一个讨论区或论坛,让开发者可以发表问题、分享经验、提供建议等。其他开发者可以回复和讨论,促进交流和知识共享。
  6. 博客和文章:提供开发者撰写博客文章的功能,可以分享技术经验、教程、最佳实践等内容。其他开发者可以浏览和评论这些文章,从中获得有价值的信息。
  7. 问答平台:类似于问答社区,开发者可以发布问题,其他开发者可以回答问题或提供解决方案。这样的平台可以快速解决开发过程中的疑问和难题。
  8. 资源共享:开发者可以共享和下载与RISC-V开发相关的资源,如代码示例、项目模板、库文件等。这有助于加快开发速度和提高效率。
  9. 活动和会议:社区可以组织定期的在线活动、研讨会或会议,让开发者聚集在一起,分享最新的技术趋势、案例研究和实践经验。
  10. 专家支持:社区可能吸引一些RISC-V领域的专家,他们可以提供指导、解答问题,甚至组织在线培训或指导课程,帮助开发者更好地利用集成开发环境进行开发。
  11. 插件和扩展:开发者可以共享和下载与RISC-V集成开发环境相关的插件和扩展,以增强开发环境的功能和灵活性。
  12. 就业和项目机会:社区可以提供就业和项目机会的发布平台,帮助开发者寻找合适的工作机会或参与感兴趣的项目。
  13. 积分和奖励机制:社区可以设立积分和奖励机制,鼓励开发者积极参与交流和贡献。例如,回答问题、分享文章或贡献代码可以获得积分或奖励,提高其在社区中的声誉。

这样的一个开发者交流社区可以促进RISC-V集成开发环境的用户之间的交流和合作,提供技术支持和资源共享,增加开发者的学习和开发效率,推动RISC-V生态系统的发展。

- +
Skip to content

介绍

RuyiSDK 是一个旨在提供给一个一体化集成开发环境的产品计划。从 2023 年开始筹备,计划用三年时间为 RISC-V 开发者提供一个完整的、全家桶式的全功能开发环境。

RuyiSDK 的目标

  1. 开发者购买了 (几乎) 任何一款 RISC-V 开发板或模组,都可以通过 RuyiSDK 系统获得硬件资料说明、固件 / 软件更新、调试支持等。
  2. 开发者可以指定任何常用的 RISC-V 扩展指令集架构组合,都可以通过 RuyiSDK 系统生成客户所需的操作系统、工具链、语言执行环境 (运行时或虚拟机)、计算库、应用框架等。尤其强调 RuyiSDK 将完全支持 Vector 0.7.1 和 RVP 0.5.2 等已经大规模硅化的草案 标准 (or 厂商定制扩展)。
  3. 培育运营一个活跃全面的开发者交流社区。

RuyiSDK 架构示意图

![[1703147196780.png]]RuyiSDK 的组成

RuyiSDK 主要包含了一个组件管理器(也称为包管理器,Ruyi Repo)、一个集成开发环境(Ruyi IDE)、一个开发者交流社区;

  • 组件管理器包含一个在线软件源 (Ruyi Repo) 和 一个包管理工具(ruyi)。在线软件源即 Ruyi Repo 集中存储了RISC-V集成开发环境所需的编译工具链、调试工具、模拟器、运行环境、文档、代码、工具、target系统镜像等内容;包管理器工具则是用于与在线软件源交互的工具,它提供了一套命令行接口(ruyi)或图形用户界面(GUI未来可能提供),使开发者能够搜索、安装、更新和管理软件包。包管理工具负责从在线软件源中获取软件包的信息,解析软件包的依赖关系,并自动处理依赖关系的下载和安装。

  • 集成开发环境(Ruyi IDE)则是一个专门用来开发能够运行在RISC-V架构设备上的软件和应用的工具箱。可以帮助开发者编写和测试自己的程序。

    想象一下,你要做一款能够运行在RISC-V设备上的应用程序,比如用C或者C++语言开发一个图像识别的程序,Ruyi IDE 就像是一个你的工作室,里面有各种各样的工具可以帮助你完成这个任务。首先创建项目,从RuyiSDK包管理器中下载和安装所需的编译工具链、调试工具、模拟器等工具,然后在文本编辑器中完成对代码的编辑,接着对项目进行编译构建获得RISC-V架构的可执行程序,最后在模拟器或者RISC-V开发板上进行运行和测试。如果代码需要调试,也可通过调试工具进行代码调试。这一过程和x86下的开发、编译构建、调试、运行的流程是一致的,只是适用于当前开发语言及目标运行设备的RISC-V的编译工具链、模拟器等软件和工具都可以从Ruyi Repo中获取,在安装和IDE初始设置时都已经被集成到 Ruyi IDE 之中,用户无需为环境搭建耗费精力。

  • 开发者交流社区则提供文档和教程、论坛和技术讨论区、博客和文档等等功能,目的是为RISC-V开发者提供一个开放的交流平台,提供互助式技术支持和资源共享,聚集RISC-V开发者并推动RISC-V生态系统的发展。

RuyiSDK 模块需求说明

说明:这是一个初步的需求设想,具体还需要结合技术可行性等进行进一步的调整。供参考。

RUYI 包管理器

RUYI在线软件源(Ruyi Repo)

  1. 软件源的管理内容包括以下内容:
    1. GNU和LLVM编译工具链
    2. 调试工具(GDB、LLDB)
    3. 模拟器(qemu、spike,……)
    4. 运行环境(sysroot / rootfs)
    5. 工具:包括且不限于Ruyi IDE、架构图中的各种工具等
    6. 代码(库、示例 etc.)
    7. 文档
    8. 目标运行环境的RISC-V系统镜像文件
  2. 软件源内包的元数据包含并不限于:发布厂商、版本信息、资源类型、下载链接、文档资源等各种信息(支持属性扩展)等属性信息;如编译工具链有不同厂商发布的,不同版本的软件资源需要进行管理(如GNU和LLVM目前有三种类型:upstream、PLCT、xthead,随着版本的更新和发布,每种类型会产生诸如vX.X这种多个版本)。

RUYI包管理工具(ruyi)

  1. 实现一套命令行接口(CLI),用于与在线软件源交互。
    1. 使开发者能够搜索、安装、更新、卸载和管理软件包。

    2. 包管理工具负责从在线软件源中获取软件包的信息,解析软件包的依赖关系,并自动处理依赖关系的下载和安装。

    3. 能够支持工具自身的升级、卸载;

    4. 能够支持在线软件源中不同类型、不同版本、不同厂商、不同适用环境的软件包的搜索:

      • 按照name搜索
      • 按照版本搜索
      • 按照可支持的扩展指令集搜索
      • 按照资源类型搜索
      • 按照可适用的开发板(或目标运行环境)搜索
      • ……
  2. 实现一套图形用户界面(GUI)工具,用于与在线软件源交互。功能与上述CLI接口类似;(待定)
  3. 三架构支持:工具需要支持x86、aarch64、RISC-V三种架构的主流Linux系统(包含但不限于openEuler、Debian、Ubuntu、Fedora等);

Ruyi IDE

针对RISC-V开发者使用的集成开发环境(IDE)需要具备如下功能:

  1. 项目管理工具:提供项目管理功能,使开发者能够轻松创建、组织和管理他们的RISC-V项目。这包括创建新项目、导入现有项目、管理依赖和库等。

  2. 代码编辑器:提供一个功能强大的代码编辑器,支持开发语言的语法高亮显示、代码自动完成、代码导航、智能感知、错误检查、代码片段管理、版本控制集成、调试支持等功能,以提高开发效率、减少错误,并提供更好的代码编写和维护体验。

    • 代码编辑器常见功能详细说明:

      1. 语法高亮(Syntax Highlighting):根据编程语言的语法规则,对代码进行着色,以增强可读性和代码理解性。
      2. 自动完成(Auto Completion):根据当前上下文,在输入代码的过程中自动弹出变量、函数、类名等的建议,以加快编码速度和减少拼写错误。
      3. 智能感知(Intelligent Code Sense):通过静态分析和语义理解,提供关于代码中变量、函数、类等的详细信息,如类型、参数列表、返回值等,以帮助开发者编写正确的代码。
      4. 代码导航(Code Navigation):提供快速导航到代码的不同部分,如跳转到定义处、跳转到引用处、跳转到函数调用等,以便快速定位和浏览代码。
      5. 重构工具(Refactoring Tools):提供一系列操作,如重命名、提取函数、提取变量等,以帮助开发者改善代码的结构和可维护性。
      6. 调试支持(Debugging Support):提供集成的调试器,使开发者能够设置断点、单步执行代码、查看变量的值等,以便调试和排查代码中的问题。
      7. 版本控制集成(Version Control Integration):与版本控制系统(如Git)集成,提供对代码版本的管理、提交、比较和合并等功能。
      8. 错误检查(Error Checking):即时检测代码中的语法错误、潜在的逻辑错误或常见的编码错误,并给出相应的警告或错误提示。
      9. 代码片段管理(Code Snippet Management):提供可重用的代码片段库,包括预定义的模板或用户自定义的代码片段,以便快速插入常用代码块。
      10. 文档生成(Documentation Generation):根据代码中的注释或特定的标记语言,自动生成代码文档或API文档。
    • 语言插件: 支持C、C++、Java、JavaScript、Python、Rust、Fortran、SAIL、Dart、Chisel等不同的语言类型;

  3. RISC-V编译器/解释器支持:集成RISC-V架构的编译器/解释器,使开发者能够编译和构建基于RISC-V指令集的应用程序。(这里不同语言存在差异,需要一一区别和定义)

  4. RISC-V模拟器和调试器:集成一个RISC-V模拟器和调试器,可以模拟和调试RISC-V指令的执行过程。开发者可以在IDE中设置断点、单步执行代码,并查看变量的值和内存的状态,以进行程序的调试和分析。

  5. 代码分析和优化:提供代码分析工具,帮助开发者发现潜在的性能问题和错误,并提供优化建议。这包括静态代码分析、性能分析和内存分析等功能,以帮助开发者编写更高效和可靠的RISC-V应用程序。

  6. 集成文档和教程:提供与RISC-V相关的文档、教程和示例代码的集成,以帮助开发者学习和使用RISC-V架构。这样,开发者可以在IDE中方便地查阅文档和学习相关知识,加快他们的开发过程。

  7. 语言虚拟机或运行时环境:一些语言需要在运行时依赖于相应的解释器或语言虚拟机。如Python需要在运行时依赖于相应的解释器或语言虚拟机(如CPython、Jython等)。因此,IDE需要与这些解释器或虚拟机进行集成,以便在IDE中直接运行和调试Python代码。

  8. 代码执行环境管理:如Python开发中通常会使用虚拟环境(Virtual Environment)来管理依赖和隔离项目环境。IDE可以提供对虚拟环境的支持,使开发者能够方便地创建、激活和管理虚拟环境。

  9. 交互式解释器和调试器:如Python具有交互式解释器(REPL)的特性,可以在命令行环境中逐行执行代码。IDE可以集成交互式解释器,使开发者能够在IDE中直接执行和调试代码片段,以便进行快速的实验和调试。

  10. 包管理和库支持:很多开发语言都有丰富的第三方库和包管理工具。如Python是pip、conda等。IDE可以提供对这些工具的集成,以便开发者能够方便地搜索、安装和管理各种Python库和依赖项。

针对RISC-V开发者使用的集成开发环境(IDE)需要具备如下特点:

  1. 可扩展性和插件支持:支持插件系统,使开发者能够根据自己的需求扩展和定制IDE。这样,他们可以集成其他工具、添加自定义功能,并与其他开发者共享他们的插件。
  2. 并行编译能力: IDE中,能够为一个项目同时生成不同的运行环境(RISC-V开发板)编译构建出适用该开发板的可执行程序。(待定)
  3. 跨平台兼容性,三架构支持: Ruyi IDE 本身的安装程序需要支持x86、aarch64、RISC-V三种架构的主流Linux系统(包含但不限于openEuler、Debian、Ubuntu、Fedora等);
  4. 定制化: 可视化的集成开发环境的界面部分,除去继承开源软件的部分,自研发/改动部分界面需要个性化定制。
  5. 性能: 要求 Ruyi IDE 能够流畅地运行在主流的PC设备上。

我们希望,当使用 Ruyi IDE 进行例如图像识别应用程序的开发时,能够得到如下步骤所描述的功能支持:

  1. 打开 Ruyi IDE,并创建一个新的项目或工程。在项目中,你可以组织和管理你的代码文件、资源文件和配置文件等。
  2. 在集成开发环境的文本编辑器中,创建一个新的C/C++源代码文件。在该文件中,你可以编写程序,如图像识别算法的逻辑和实现。
  3. 使用语法高亮功能,集成开发环境会根据编程语言的语法规则,对你的代码进行着色,以增强可读性和代码理解性。
  4. 在编写代码的过程中,Ruyi IDE 提供自动完成功能,根据当前上下文,自动弹出变量、函数和类名的建议,以加快编码速度和减少拼写错误。
  5. 在代码编写过程中,集成开发环境提供智能感知功能,通过静态分析和语义理解,提供关于代码中变量、函数、类等的详细信息,如类型、参数列表、返回值等,以帮助你编写正确的代码。
  6. 在集成开发环境中,你可以使用代码导航功能,快速跳转到代码的不同部分,如跳转到函数的定义处、跳转到变量的引用处,以便快速定位和浏览代码。
  7. 在编写完代码后,使用集成开发环境提供的构建工具进行项目的构建。这可能涉及选择适当的编译选项、设置编译器路径和库路径,以及处理依赖关系。
  8. Ruyi IDE 通常提供调试器功能,你可以设置断点、逐行调试代码,并观察变量的值,以解决代码中的错误和问题。
  9. 如果需要提高图像识别程序的性能,你可以使用Ruyi IDE 中的性能分析工具,检查代码的瓶颈并进行优化。
  10. 一旦你完成了开发和调试,Ruyi IDE 提供了部署工具,你可以将编译好的图像识别应用程序部署到RISC-V架构的嵌入式设备上,并进行远程调试和监视。
  11. 在开发过程中,Ruyi IDE 还提供版本控制集成工具,帮助你管理代码的版本、进行代码的协作开发和团队协作。如果遇到技术问题,可以在开发者社区进行技术交流获取帮助。
  12. 最后,Ruyi IDE 还提供文档生成工具,可以自动生成代码文档或API文档,帮助你记录和分享你的代码。

通过 Ruyi IDE 的支持,你可以更高效地开发图像识别应用程序,利用其提供的各种工具和功能,加速开发过程、减少错误,并提供更好的代码编写和维护体验。

总之,RISC-V开发者的集成开发环境将提供一系列专门针对RISC-V架构的工具和功能(这些工具从包管理器中获取),以帮助开发者更轻松、高效地开发RISC-V应用程序。同时,它提供直观的用户界面、高度可定制的功能和良好的扩展性,以满足不同开发者的需求。

开发者社区

一个开发者交流社区需要具备以下功能:

  1. 主页/官方网站: 用来汇聚关于 RuyiSDK 宣发、推广、使用、交流需要的一切资源,是第一级别入口。
  2. 开发者管理: 用户的注册、登录等账号有关的管理。
  3. 统计功能: 对主页累计访问量、软件下载次数、用户注册量等信息进行统计,这是用户维护方持续了解开发者社区活跃程度的一种技术支持手段。
  4. 文档和教程:社区可能提供详细的文档和教程,涵盖RISC-V开发环境的使用指南、编程技巧、调试技巧等方面的内容,帮助开发者快速上手和解决常见问题。
  5. 论坛和讨论区:提供一个讨论区或论坛,让开发者可以发表问题、分享经验、提供建议等。其他开发者可以回复和讨论,促进交流和知识共享。
  6. 博客和文章:提供开发者撰写博客文章的功能,可以分享技术经验、教程、最佳实践等内容。其他开发者可以浏览和评论这些文章,从中获得有价值的信息。
  7. 问答平台:类似于问答社区,开发者可以发布问题,其他开发者可以回答问题或提供解决方案。这样的平台可以快速解决开发过程中的疑问和难题。
  8. 资源共享:开发者可以共享和下载与RISC-V开发相关的资源,如代码示例、项目模板、库文件等。这有助于加快开发速度和提高效率。
  9. 活动和会议:社区可以组织定期的在线活动、研讨会或会议,让开发者聚集在一起,分享最新的技术趋势、案例研究和实践经验。
  10. 专家支持:社区可能吸引一些RISC-V领域的专家,他们可以提供指导、解答问题,甚至组织在线培训或指导课程,帮助开发者更好地利用集成开发环境进行开发。
  11. 插件和扩展:开发者可以共享和下载与RISC-V集成开发环境相关的插件和扩展,以增强开发环境的功能和灵活性。
  12. 就业和项目机会:社区可以提供就业和项目机会的发布平台,帮助开发者寻找合适的工作机会或参与感兴趣的项目。
  13. 积分和奖励机制:社区可以设立积分和奖励机制,鼓励开发者积极参与交流和贡献。例如,回答问题、分享文章或贡献代码可以获得积分或奖励,提高其在社区中的声誉。

这样的一个开发者交流社区可以促进RISC-V集成开发环境的用户之间的交流和合作,提供技术支持和资源共享,增加开发者的学习和开发效率,推动RISC-V生态系统的发展。

+ \ No newline at end of file diff --git a/zh/plan/index.html b/zh/plan/index.html index 873eeb45..aba4f4a6 100644 --- a/zh/plan/index.html +++ b/zh/plan/index.html @@ -8,17 +8,17 @@ - + - - + + -
Skip to content

版本规划路线图

RuyiSDK 是一个旨在提供给一个一体化集成开发环境的产品计划。从 2023 年开始筹备,计划用三年时间为 RISC-V 开发者提供一个完整的、全家桶式的全功能开发环境。

RUYISDK 版本计划

里程碑版本

RuyiSDK 计划以每半年为一个里程碑版本周期来推动 RuyiSDK 的不断完善,目前计划中的里程碑版本有:

  • 23.06 (计划发布时间:2023年6月)
  • 23.12 (计划发布时间:2023年12月)
  • 24.06 (计划发布时间:2024年6月)
  • 24.12 (计划发布时间:2024年12月)
  • 25.06 (计划发布时间:2025年6月)
  • 25.12 (计划发布时间:2025年12月)

敏捷开发版本计划

自2024年1月开始,RuyiSDK 切换为更加敏捷的开发迭代模式,预期每 2 周发布一个开发版本,提供一些新功能,如包管理器能力迭代、RuyiSDK软件源提供新的软件包或者软件包版本升级、或工具链、板卡的新增适配等等,这些更新将以 release note 的方式公开。

  • 发布日期默认每双周周二发布;发布周期内遇3日以上节假日的,延迟一周发布;

  • 敏捷开发版本执行敏捷测试方式:

    • 代码冻结日期在发布日期的上一周周四/周五;
    • 代码冻结日~发布日:执行新特性的测试验证和基础功能回归测试;
    • 发布日~下一次代码冻结日:完成回归测试用例更新和执行全面回归测试;

RUYISDK 规划

2024目标

  • RuyiSDK官网上线。
  • 支持50多种RISC-V设备。
  • 支持运行≥7个流行的Linux发行版。将增加对openKylin和Gentoo的支持。
  • 提供多种图形化IDE环境,包括对Eclipse和VSCode的支持。
  • 服务≥10000名注册开发者。
  • 支持计划于2024年发布的SG2044和SG2380。

敏捷开发版本排期

滚动发行版本号发布日期代码冻结日期备注
v0.32024.01.162024.01.12
v0.42024.01.302024.01.26
v0.52024.02.272024.02.23春节,跳过一次
v0.62024.03.122024.03.08
v0.72024.03.262024.03.22
v0.82024.04.092024.04.07
v0.92024.04.232024.04.19
v0.102024.05.142024.05.10劳动节,延迟一周发布
v0.112024.05.282024.05.24
v0.122024.06.112024.06.06端午节
v0.132024.06.252024.06.21
v0.142024.07.092024.07.05
v0.152024.07.232024.07.19
v0.162024.08.062024.08.02
v0.172024.08.202024.08.16
v0.182024.09.032024.08.30
v0.192024.09.242024.09.20中秋节,延迟一周发布
v0.202024.10.152024.10.11国庆节,延迟一周发布
v0.212024.10.292024.10.25
v0.222024.11.122024.11.08
v0.232024.11.262024.11.22
v0.242024.12.102024.12.06
v0.252024.12.242024.12.20
- +
Skip to content

版本规划路线图

RuyiSDK 是一个旨在提供给一个一体化集成开发环境的产品计划。从 2023 年开始筹备,计划用三年时间为 RISC-V 开发者提供一个完整的、全家桶式的全功能开发环境。

RUYISDK 版本计划

里程碑版本

RuyiSDK 计划以每半年为一个里程碑版本周期来推动 RuyiSDK 的不断完善,目前计划中的里程碑版本有:

  • 23.06 (计划发布时间:2023年6月)
  • 23.12 (计划发布时间:2023年12月)
  • 24.06 (计划发布时间:2024年6月)
  • 24.12 (计划发布时间:2024年12月)
  • 25.06 (计划发布时间:2025年6月)
  • 25.12 (计划发布时间:2025年12月)

敏捷开发版本计划

自2024年1月开始,RuyiSDK 切换为更加敏捷的开发迭代模式,预期每 2 周发布一个开发版本,提供一些新功能,如包管理器能力迭代、RuyiSDK软件源提供新的软件包或者软件包版本升级、或工具链、板卡的新增适配等等,这些更新将以 release note 的方式公开。

  • 发布日期默认每双周周二发布;发布周期内遇3日以上节假日的,延迟一周发布;

  • 敏捷开发版本执行敏捷测试方式:

    • 代码冻结日期在发布日期的上一周周四/周五;
    • 代码冻结日~发布日:执行新特性的测试验证和基础功能回归测试;
    • 发布日~下一次代码冻结日:完成回归测试用例更新和执行全面回归测试;

RUYISDK 规划

2024目标

  • RuyiSDK官网上线。
  • 支持50多种RISC-V设备。
  • 支持运行≥7个流行的Linux发行版。将增加对openKylin和Gentoo的支持。
  • 提供多种图形化IDE环境,包括对Eclipse和VSCode的支持。
  • 服务≥10000名注册开发者。
  • 支持计划于2024年发布的SG2044和SG2380。

敏捷开发版本排期

滚动发行版本号发布日期代码冻结日期备注
v0.32024.01.162024.01.12
v0.42024.01.302024.01.26
v0.52024.02.272024.02.23春节,跳过一次
v0.62024.03.122024.03.08
v0.72024.03.262024.03.22
v0.82024.04.092024.04.07
v0.92024.04.232024.04.19
v0.102024.05.142024.05.10劳动节,延迟一周发布
v0.112024.05.282024.05.24
v0.122024.06.112024.06.06端午节
v0.132024.06.252024.06.21
v0.142024.07.092024.07.05
v0.152024.07.232024.07.19
v0.162024.08.062024.08.02
v0.172024.08.202024.08.16
v0.182024.09.032024.08.30
v0.192024.09.242024.09.20中秋节,延迟一周发布
v0.202024.10.152024.10.11国庆节,延迟一周发布
v0.212024.10.292024.10.25
v0.222024.11.122024.11.08
v0.232024.11.262024.11.22
v0.242024.12.102024.12.06
v0.252024.12.242024.12.20
+ \ No newline at end of file diff --git a/zh/ruyi/getstarted/index.html b/zh/ruyi/getstarted/index.html index 830145b5..ea0a3630 100644 --- a/zh/ruyi/getstarted/index.html +++ b/zh/ruyi/getstarted/index.html @@ -8,11 +8,11 @@ - + - - + + @@ -79,8 +79,8 @@ # match_expr parameter should be in format `<op><ver>`, where `<op>` 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 包管理自身的升级可能会需要超级用户权限,而 RUYI 包管理被设计为避免进行需要超级用户权限的操作。 故在需要升级 RUYI 包管理时您需要手动进行该操作,即首先卸载 RUYI 包管理器,再执行安装 RUYI 包管理器的过程, 这个过程中您可以自主选择是否保留旧的软件包缓存和 RUYI 软件包。

镜像信息的维护与下载、开发板系统的安装引导

执行如下命令并按照引导执行即可下载所需系统镜像,为设备安装系统:

bash
$ ruyi device provision
- +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 包管理自身的升级可能会需要超级用户权限,而 RUYI 包管理被设计为避免进行需要超级用户权限的操作。 故在需要升级 RUYI 包管理时您需要手动进行该操作,即首先卸载 RUYI 包管理器,再执行安装 RUYI 包管理器的过程, 这个过程中您可以自主选择是否保留旧的软件包缓存和 RUYI 软件包。

镜像信息的维护与下载、开发板系统的安装引导

执行如下命令并按照引导执行即可下载所需系统镜像,为设备安装系统:

bash
$ ruyi device provision
+ \ No newline at end of file diff --git a/zh/ruyi/index.html b/zh/ruyi/index.html index 7df0b336..3835a840 100644 --- a/zh/ruyi/index.html +++ b/zh/ruyi/index.html @@ -8,11 +8,11 @@ - + - - + + @@ -45,8 +45,8 @@ ruyi admin # 卸载 RUYI 包管理器 -ruyi self uninstall

功能持续更新中,可以通过 ruyi -h 查看 ruyi 支持的命令。

附:外部链接

- +ruyi self uninstall

功能持续更新中,可以通过 ruyi -h 查看 ruyi 支持的命令。

附:外部链接

+ \ No newline at end of file diff --git a/zh/ruyi/updates/0.10.0.html b/zh/ruyi/updates/0.10.0.html index 0952b5aa..8432d59e 100644 --- a/zh/ruyi/updates/0.10.0.html +++ b/zh/ruyi/updates/0.10.0.html @@ -8,11 +8,11 @@ - + - - + + @@ -37,8 +37,8 @@ project's sources from the project's official website: * certifi: https://github.com/certifi/python-certifi

i18n 支持

从 0.10.0 版本开始, ruyi news items 将根据运行环境 locales 自动选择显示的语言。

板卡镜像刷写

从 0.10.0 版本开始,板卡镜像刷写功能所支持的板卡增加到 28 款。

本次主要增加了沁恒 RISC-V 单片机系列的文档支持。

板卡支持列表:

开发板版本镜像刷写方式
Allwinner Nezha D1Allwinner Nezha D1 (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Canaan Kendryte K230Canaan Kendryte K230 (generic variant)Canaan Kendryte K230 Official CanMV Debian SDKdd
Canaan Kendryte K510Canaan Kendryte K510 (generic variant)Canaan Kendryte K510 Official Buildroot SDK (documentation-only)
Canaan Kendryte K230 Official CanMV Ubuntu SDKdd
Milk-V DuoMilk-V Duo (64M RAM)Milk-V Duo Official buildroot SDK (64M RAM)dd
Milk-V Duo Official buildroot SDK (64M RAM, with Python)dd
Milk-V Duo (256M RAM)Milk-V Duo Official buildroot SDK (256M RAM)dd
Milk-V Duo Official buildroot SDK (256M RAM, with Python)dd
Milk-V Duo SMilk-V Duo S (generic variant)Milk-V Duo S Official buildroot SDK (FreeRTOS, on SD card)dd
Milk-V MarsMilk-V Mars (generic variant)Milk-V Mars Official Debian Desktop SDK (on SD card)dd
Milk-V Mars CMMilk-V Mars CM (generic variant)Milk-V Mars CM Official Debian Desktop SDK (on SD card)dd
Milk-V MelesMilk-V Meles (4G RAM)RevyOS for Milk-V Meles (4G RAM)fastboot
Milk-V Meles (8G RAM)RevyOS for Milk-V Meles (8G RAM)fastboot
Milk-V VegaMilk-V Vega (generic variant)Milk-V Vega Official Buildroot SDK (documentation-only)
Milk-V Pioneer BoxMilk-V Pioneer Box (v1.3)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
RevyOS for Milk-V Pioneerdd
Milk-V Pioneer Box (v1.2)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
Milk-V Pioneer Box (v1.1)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
SiFive HiFive UnmatchedSiFive HiFive Unmatched (generic variant)openEuler RISC-V (base system) for SiFive HiFive Unmatcheddd
openKylin for SiFive HiFive Unmatcheddd
openEuler RISC-V (XFCE) for SiFive HiFive Unmatcheddd
OpenWrt for SiFive HiFive Unmatcheddd
Ubuntu Server for SiFive HiFive Unmatcheddd
Sipeed Lichee Cluster 4ASipeed Lichee Cluster 4A (8G RAM)RevyOS for Sipeed Lichee Cluster 4A (8G RAM)fastboot
Sipeed Lichee Cluster 4A (16G RAM)RevyOS for Sipeed Lichee Cluster 4A (16G RAM)fastboot
Sipeed Lichee Console 4ASipeed Lichee Console 4A (8G RAM)RevyOS for Sipeed Lichee Console 4A (8G RAM)fastboot
Sipeed Lichee Console 4A (16G RAM)RevyOS for Sipeed Lichee Console 4A (16G RAM)fastboot
Sipeed Lichee RVSipeed Lichee RV (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Sipeed LicheeRV NanoSipeed LicheeRV Nano (generic variant)Sipeed LicheeRV Nano Official buildroot SDK (Linux & FreeRTOS)dd
Debian for Sipeed LicheeRV Nano (from https://github.com/Fishwaldo)dd
Sipeed Maix-ISipeed Maix-I (generic variant)Sipeed Maix-I Official FreeRTOS SDK (documentation-only)
Sipeed Tang Mega 138K ProSipeed Tang Mega 138K Pro (generic variant)Sipeed Tang Mega 138K Pro FPGA & FreeRTOS SDK (documentation-only)
Sipeed Tang Mega 138K Pro FPGA & RT-Thread SDK (documentation-only)
Sipeed LicheePi 4ASipeed LicheePi 4A (8G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (8G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (8G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (8G RAM)fastboot
Sipeed LicheePi 4A (16G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (16G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (16G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (16G RAM)fastboot
StarFive VisionFiveStarFive VisionFive (generic variant)openEuler RISC-V (base system) for StarFive VisionFivedd
openEuler RISC-V (XFCE) for StarFive VisionFivedd
StarFive VisionFive2StarFive VisionFive2 (generic variant)openEuler RISC-V (base system) for StarFive VisionFive2dd
openEuler RISC-V (XFCE) for StarFive VisionFive2dd
WCH CH32V103 EVBWCH CH32V103 EVB (CH32V103C6T6)WCH CH32V103 EVB FreeRTOS SDK (documentation-only)
WCH CH32V103 EVB FreeRTOS PlatformIO SDK (documentation-only)
WCH CH32V103 EVB RT-Thread SDK (documentation-only)
WCH CH32V103 EVB (CH32V103C8T6)WCH CH32V103 EVB FreeRTOS SDK (documentation-only)
WCH CH32V103 EVB FreeRTOS PlatformIO SDK (documentation-only)
WCH CH32V103 EVB RT-Thread SDK (documentation-only)
WCH CH32V103 EVB (CH32V103C8U6)WCH CH32V103 EVB FreeRTOS SDK (documentation-only)
WCH CH32V103 EVB FreeRTOS PlatformIO SDK (documentation-only)
WCH CH32V103 EVB RT-Thread SDK (documentation-only)
WCH CH32V103 EVB (CH32V103R8T6)WCH CH32V103 EVB FreeRTOS SDK (documentation-only)
WCH CH32V103 EVB FreeRTOS PlatformIO SDK (documentation-only)
WCH CH32V103 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVBWCH CH32V203 EVB (CH32V203C6T6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203C8T6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203C8U6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203F6P6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203F8P6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203F8U6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203G6U6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203G8R6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203K6T6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203K8T6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203RBT6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V208 EVBWCH CH32V208 EVB (CH32V208CBU6)WCH CH32V208 EVB FreeRTOS SDK (documentation-only)
WCH CH32V208 EVB RT-Thread SDK (documentation-only)
WCH CH32V208 EVB (CH32V208GBU6)WCH CH32V208 EVB FreeRTOS SDK (documentation-only)
WCH CH32V208 EVB RT-Thread SDK (documentation-only)
WCH CH32V208 EVB (CH32V208RBT6)WCH CH32V208 EVB FreeRTOS SDK (documentation-only)
WCH CH32V208 EVB RT-Thread SDK (documentation-only)
WCH CH32V208 EVB (CH32V208WBU6)WCH CH32V208 EVB FreeRTOS SDK (documentation-only)
WCH CH32V208 EVB RT-Thread SDK (documentation-only)
WCH CH32V303 EVBWCH CH32V303 EVB (CH32V303CBT6)WCH CH32V303 EVB FreeRTOS SDK (documentation-only)
WCH CH32V303 EVB RT-Thread SDK (documentation-only)
WCH CH32V303 EVB (CH32V303RBT6)WCH CH32V303 EVB FreeRTOS SDK (documentation-only)
WCH CH32V303 EVB RT-Thread SDK (documentation-only)
WCH CH32V303 EVB (CH32V303RCT6)WCH CH32V303 EVB FreeRTOS SDK (documentation-only)
WCH CH32V303 EVB RT-Thread SDK (documentation-only)
WCH CH32V303 EVB (CH32V303VCT6)WCH CH32V303 EVB FreeRTOS SDK (documentation-only)
WCH CH32V303 EVB RT-Thread SDK (documentation-only)
WCH CH32V305 EVBWCH CH32V305 EVB (CH32V305FBP6)WCH CH32V305 EVB FreeRTOS SDK (documentation-only)
WCH CH32V305 EVB FreeRTOS SDK (documentation-only)
WCH CH32V305 EVB (CH32V305GBU6)WCH CH32V305 EVB FreeRTOS SDK (documentation-only)
WCH CH32V305 EVB FreeRTOS SDK (documentation-only)
WCH CH32V305 EVB (CH32V305RBT6)WCH CH32V305 EVB FreeRTOS SDK (documentation-only)
WCH CH32V305 EVB FreeRTOS SDK (documentation-only)
WCH CH32V307 EVBWCH CH32V307 EVB (CH32V307RCT6)WCH CH32V307 EVB FreeRTOS SDK (documentation-only)
WCH CH32V307 EVB RT-Thread SDK (documentation-only)
WCH CH32V307 EVB (CH32V307WCU6)WCH CH32V307 EVB FreeRTOS SDK (documentation-only)
WCH CH32V307 EVB RT-Thread SDK (documentation-only)
WCH CH32V307 EVB (CH32V307VCT6)WCH CH32V307 EVB FreeRTOS SDK (documentation-only)
WCH CH32V307 EVB RT-Thread SDK (documentation-only)
WCH CH582F EVBWCH CH582F EVB (generic variant)WCH CH582F EVB FreeRTOS SDK (documentation-only)
WCH CH582F EVB RT-Thread SDK (documentation-only)
WCH CH592X EVBWCH CH592X EVB (generic variant)WCH CH592X EVB FreeRTOS SDK (documentation-only)
WCH CH592X EVB RT-Thread SDK (documentation-only)

刷写工具根据板卡的不同依赖 ddfastboot 命令。

在使用普通用户调用 dd 命令刷写镜像失败时,RUYI 将尝试调用 sudo 提权。

在使用 fastboot 工具刷写镜像时, RUYI 则只会使用当前普通用户,故需要用户自行配置 udev 规则。这里提供示例规则仅供参考:

SUBSYSTEM=="usb", ATTR{idVendor}="2345", ATTR{idProduct}=="7654", MODE="0666", GROUP="plugdev"
-SUBSYSTEM=="usb", ATTR{idVendor}="1234", ATTR{idProduct}=="8888", MODE="0666", GROUP="plugdev"

需要注意的是一些镜像的解包需要占用大量的磁盘空间,使用 RUYI 工具刷写镜像前请务必留足磁盘空间; 一些厂家提供的镜像在刷写后并不会自动扩展分区来充分利用整块磁盘,而需要用户自行扩展磁盘分区大小。

- +SUBSYSTEM=="usb", ATTR{idVendor}="1234", ATTR{idProduct}=="8888", MODE="0666", GROUP="plugdev"

需要注意的是一些镜像的解包需要占用大量的磁盘空间,使用 RUYI 工具刷写镜像前请务必留足磁盘空间; 一些厂家提供的镜像在刷写后并不会自动扩展分区来充分利用整块磁盘,而需要用户自行扩展磁盘分区大小。

+ \ No newline at end of file diff --git a/zh/ruyi/updates/0.11.0.html b/zh/ruyi/updates/0.11.0.html index 1035e568..b78c7754 100644 --- a/zh/ruyi/updates/0.11.0.html +++ b/zh/ruyi/updates/0.11.0.html @@ -8,11 +8,11 @@ - + - - + + @@ -37,8 +37,8 @@ project's sources from the project's official website: * certifi: https://github.com/certifi/python-certifi

板卡镜像刷写

从 0.11.0 版本开始,板卡镜像刷写功能所支持的板卡增加到 29 款。

新增 Pine64 Star64 的 Armbian 镜像。

板卡支持列表:

开发板版本镜像刷写方式
Allwinner Nezha D1Allwinner Nezha D1 (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Canaan Kendryte K230Canaan Kendryte K230 (generic variant)Canaan Kendryte K230 Official CanMV Debian SDKdd
Canaan Kendryte K510Canaan Kendryte K510 (generic variant)Canaan Kendryte K510 Official Buildroot SDK (documentation-only)
Canaan Kendryte K230 Official CanMV Ubuntu SDKdd
Milk-V DuoMilk-V Duo (64M RAM)Milk-V Duo Official buildroot SDK (64M RAM)dd
Milk-V Duo Official buildroot SDK (64M RAM, with Python)dd
Milk-V Duo (256M RAM)Milk-V Duo Official buildroot SDK (256M RAM)dd
Milk-V Duo Official buildroot SDK (256M RAM, with Python)dd
Milk-V Duo SMilk-V Duo S (generic variant)Milk-V Duo S Official buildroot SDK (FreeRTOS, on SD card)dd
Milk-V MarsMilk-V Mars (generic variant)Milk-V Mars Official Debian Desktop SDK (on SD card)dd
Milk-V Mars CMMilk-V Mars CM (generic variant)Milk-V Mars CM Official Debian Desktop SDK (on SD card)dd
Milk-V MelesMilk-V Meles (4G RAM)RevyOS for Milk-V Meles (4G RAM)fastboot
Milk-V Meles (8G RAM)RevyOS for Milk-V Meles (8G RAM)fastboot
Milk-V VegaMilk-V Vega (generic variant)Milk-V Vega Official Buildroot SDK (documentation-only)
Pine64 Star64Pine64 Star64 (generic variant)Armbian for Pine64 Star64dd
Milk-V Pioneer BoxMilk-V Pioneer Box (v1.3)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
RevyOS for Milk-V Pioneerdd
Milk-V Pioneer Box (v1.2)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
Milk-V Pioneer Box (v1.1)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
SiFive HiFive UnmatchedSiFive HiFive Unmatched (generic variant)openEuler RISC-V (base system) for SiFive HiFive Unmatcheddd
openKylin for SiFive HiFive Unmatcheddd
openEuler RISC-V (XFCE) for SiFive HiFive Unmatcheddd
OpenWrt for SiFive HiFive Unmatcheddd
Ubuntu Server for SiFive HiFive Unmatcheddd
Sipeed Lichee Cluster 4ASipeed Lichee Cluster 4A (8G RAM)RevyOS for Sipeed Lichee Cluster 4A (8G RAM)fastboot
Sipeed Lichee Cluster 4A (16G RAM)RevyOS for Sipeed Lichee Cluster 4A (16G RAM)fastboot
Sipeed Lichee Console 4ASipeed Lichee Console 4A (8G RAM)RevyOS for Sipeed Lichee Console 4A (8G RAM)fastboot
Sipeed Lichee Console 4A (16G RAM)RevyOS for Sipeed Lichee Console 4A (16G RAM)fastboot
Sipeed Lichee RVSipeed Lichee RV (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Sipeed LicheeRV NanoSipeed LicheeRV Nano (generic variant)Sipeed LicheeRV Nano Official buildroot SDK (Linux & FreeRTOS)dd
Debian for Sipeed LicheeRV Nano (from https://github.com/Fishwaldo)dd
Sipeed Maix-ISipeed Maix-I (generic variant)Sipeed Maix-I Official FreeRTOS SDK (documentation-only)
Sipeed Tang Mega 138K ProSipeed Tang Mega 138K Pro (generic variant)Sipeed Tang Mega 138K Pro FPGA & FreeRTOS SDK (documentation-only)
Sipeed Tang Mega 138K Pro FPGA & RT-Thread SDK (documentation-only)
Sipeed LicheePi 4ASipeed LicheePi 4A (8G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (8G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (8G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (8G RAM)fastboot
Sipeed LicheePi 4A (16G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (16G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (16G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (16G RAM)fastboot
StarFive VisionFiveStarFive VisionFive (generic variant)openEuler RISC-V (base system) for StarFive VisionFivedd
openEuler RISC-V (XFCE) for StarFive VisionFivedd
StarFive VisionFive2StarFive VisionFive2 (generic variant)openEuler RISC-V (base system) for StarFive VisionFive2dd
openEuler RISC-V (XFCE) for StarFive VisionFive2dd
WCH CH32V103 EVBWCH CH32V103 EVB (CH32V103C6T6)WCH CH32V103 EVB FreeRTOS SDK (documentation-only)
WCH CH32V103 EVB FreeRTOS PlatformIO SDK (documentation-only)
WCH CH32V103 EVB RT-Thread SDK (documentation-only)
WCH CH32V103 EVB (CH32V103C8T6)WCH CH32V103 EVB FreeRTOS SDK (documentation-only)
WCH CH32V103 EVB FreeRTOS PlatformIO SDK (documentation-only)
WCH CH32V103 EVB RT-Thread SDK (documentation-only)
WCH CH32V103 EVB (CH32V103C8U6)WCH CH32V103 EVB FreeRTOS SDK (documentation-only)
WCH CH32V103 EVB FreeRTOS PlatformIO SDK (documentation-only)
WCH CH32V103 EVB RT-Thread SDK (documentation-only)
WCH CH32V103 EVB (CH32V103R8T6)WCH CH32V103 EVB FreeRTOS SDK (documentation-only)
WCH CH32V103 EVB FreeRTOS PlatformIO SDK (documentation-only)
WCH CH32V103 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVBWCH CH32V203 EVB (CH32V203C6T6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203C8T6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203C8U6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203F6P6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203F8P6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203F8U6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203G6U6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203G8R6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203K6T6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203K8T6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V203 EVB (CH32V203RBT6)WCH CH32V203 EVB FreeRTOS SDK (documentation-only)
WCH CH32V203 EVB RT-Thread SDK (documentation-only)
WCH CH32V208 EVBWCH CH32V208 EVB (CH32V208CBU6)WCH CH32V208 EVB FreeRTOS SDK (documentation-only)
WCH CH32V208 EVB RT-Thread SDK (documentation-only)
WCH CH32V208 EVB (CH32V208GBU6)WCH CH32V208 EVB FreeRTOS SDK (documentation-only)
WCH CH32V208 EVB RT-Thread SDK (documentation-only)
WCH CH32V208 EVB (CH32V208RBT6)WCH CH32V208 EVB FreeRTOS SDK (documentation-only)
WCH CH32V208 EVB RT-Thread SDK (documentation-only)
WCH CH32V208 EVB (CH32V208WBU6)WCH CH32V208 EVB FreeRTOS SDK (documentation-only)
WCH CH32V208 EVB RT-Thread SDK (documentation-only)
WCH CH32V303 EVBWCH CH32V303 EVB (CH32V303CBT6)WCH CH32V303 EVB FreeRTOS SDK (documentation-only)
WCH CH32V303 EVB RT-Thread SDK (documentation-only)
WCH CH32V303 EVB (CH32V303RBT6)WCH CH32V303 EVB FreeRTOS SDK (documentation-only)
WCH CH32V303 EVB RT-Thread SDK (documentation-only)
WCH CH32V303 EVB (CH32V303RCT6)WCH CH32V303 EVB FreeRTOS SDK (documentation-only)
WCH CH32V303 EVB RT-Thread SDK (documentation-only)
WCH CH32V303 EVB (CH32V303VCT6)WCH CH32V303 EVB FreeRTOS SDK (documentation-only)
WCH CH32V303 EVB RT-Thread SDK (documentation-only)
WCH CH32V305 EVBWCH CH32V305 EVB (CH32V305FBP6)WCH CH32V305 EVB FreeRTOS SDK (documentation-only)
WCH CH32V305 EVB FreeRTOS SDK (documentation-only)
WCH CH32V305 EVB (CH32V305GBU6)WCH CH32V305 EVB FreeRTOS SDK (documentation-only)
WCH CH32V305 EVB FreeRTOS SDK (documentation-only)
WCH CH32V305 EVB (CH32V305RBT6)WCH CH32V305 EVB FreeRTOS SDK (documentation-only)
WCH CH32V305 EVB FreeRTOS SDK (documentation-only)
WCH CH32V307 EVBWCH CH32V307 EVB (CH32V307RCT6)WCH CH32V307 EVB FreeRTOS SDK (documentation-only)
WCH CH32V307 EVB RT-Thread SDK (documentation-only)
WCH CH32V307 EVB (CH32V307WCU6)WCH CH32V307 EVB FreeRTOS SDK (documentation-only)
WCH CH32V307 EVB RT-Thread SDK (documentation-only)
WCH CH32V307 EVB (CH32V307VCT6)WCH CH32V307 EVB FreeRTOS SDK (documentation-only)
WCH CH32V307 EVB RT-Thread SDK (documentation-only)
WCH CH582F EVBWCH CH582F EVB (generic variant)WCH CH582F EVB FreeRTOS SDK (documentation-only)
WCH CH582F EVB RT-Thread SDK (documentation-only)
WCH CH592X EVBWCH CH592X EVB (generic variant)WCH CH592X EVB FreeRTOS SDK (documentation-only)
WCH CH592X EVB RT-Thread SDK (documentation-only)

刷写工具根据板卡的不同依赖 ddfastboot 命令。

在使用普通用户调用 dd 命令刷写镜像失败时,RUYI 将尝试调用 sudo 提权。

在使用 fastboot 工具刷写镜像时, RUYI 则只会使用当前普通用户,故需要用户自行配置 udev 规则。这里提供示例规则仅供参考:

SUBSYSTEM=="usb", ATTR{idVendor}="2345", ATTR{idProduct}=="7654", MODE="0666", GROUP="plugdev"
-SUBSYSTEM=="usb", ATTR{idVendor}="1234", ATTR{idProduct}=="8888", MODE="0666", GROUP="plugdev"

需要注意的是一些镜像的解包需要占用大量的磁盘空间,使用 RUYI 工具刷写镜像前请务必留足磁盘空间; 一些厂家提供的镜像在刷写后并不会自动扩展分区来充分利用整块磁盘,而需要用户自行扩展磁盘分区大小。

- +SUBSYSTEM=="usb", ATTR{idVendor}="1234", ATTR{idProduct}=="8888", MODE="0666", GROUP="plugdev"

需要注意的是一些镜像的解包需要占用大量的磁盘空间,使用 RUYI 工具刷写镜像前请务必留足磁盘空间; 一些厂家提供的镜像在刷写后并不会自动扩展分区来充分利用整块磁盘,而需要用户自行扩展磁盘分区大小。

+ \ No newline at end of file diff --git a/zh/ruyi/updates/0.12.0.html b/zh/ruyi/updates/0.12.0.html index ee1fe7b6..2a5bd55c 100644 --- a/zh/ruyi/updates/0.12.0.html +++ b/zh/ruyi/updates/0.12.0.html @@ -8,11 +8,11 @@ - + - - + + @@ -36,8 +36,8 @@ License 2.0 (https://mozilla.org/MPL/2.0/). You can get the respective project's sources from the project's official website: -* certifi: https://github.com/certifi/python-certifi - +* certifi: https://github.com/certifi/python-certifi + \ No newline at end of file diff --git a/zh/ruyi/updates/0.3.0.html b/zh/ruyi/updates/0.3.0.html index c285e629..2b0fbbe7 100644 --- a/zh/ruyi/updates/0.3.0.html +++ b/zh/ruyi/updates/0.3.0.html @@ -8,11 +8,11 @@ - + - - + + @@ -114,8 +114,8 @@ 2. Milk-V Pioneer Box 3. Sipeed LicheePi 4A -Choice? (1-3)

注意刷写镜像的操作需要调用 sudo 以提权。除了荔枝派 4A 由 fastboot 自动识别设备,当前支持的其他设备镜像均需要用户手动指定目标刷写设备以执行 dd 命令。

- +Choice? (1-3)

注意刷写镜像的操作需要调用 sudo 以提权。除了荔枝派 4A 由 fastboot 自动识别设备,当前支持的其他设备镜像均需要用户手动指定目标刷写设备以执行 dd 命令。

+ \ No newline at end of file diff --git a/zh/ruyi/updates/0.4.0.html b/zh/ruyi/updates/0.4.0.html index 879bd696..80471a6e 100644 --- a/zh/ruyi/updates/0.4.0.html +++ b/zh/ruyi/updates/0.4.0.html @@ -8,11 +8,11 @@ - + - - + + @@ -26,8 +26,8 @@ Ruyi 0.4.0 Copyright (C) 2023 Institute of Software, Chinese Academy of Sciences (ISCAS). All rights reserved. -License: Apache-2.0 <https://www.apache.org/licenses/LICENSE-2.0>

从 0.4.0 开始使用 GitHub 托管默认软件源。

板卡镜像刷写

在 0.4.0 版本,板卡镜像刷写功能所支持的板卡增加到 7 款,同时优化了命令逻辑。

板卡支持列表:

开发板版本镜像刷写方式
Allwinner Nezha D1Allwinner Nezha D1 (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Milk-V DuoMilk-V Duo (64M RAM)Milk-V Duo Official buildroot SDK (64M RAM)dd
Milk-V Duo Official buildroot SDK (64M RAM, with Python)dd
Milk-V Duo (256M RAM)Milk-V Duo Official buildroot SDK (256M RAM)dd
Milk-V Duo Official buildroot SDK (256M RAM, with Python)dd
Milk-V Pioneer BoxMilk-V Pioneer Box (v1.3)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
RevyOS for Milk-V Pioneerdd
Milk-V Pioneer Box (v1.2)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
Milk-V Pioneer Box (v1.1)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
Sipeed Lichee RVSipeed Lichee RV (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Sipeed LicheePi 4ASipeed LicheePi 4A (8G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (8G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (8G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (8G RAM)fastboot
Sipeed LicheePi 4A (16G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (16G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (16G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (16G RAM)fastboot
StarFive VisionFiveStarFive VisionFive (generic variant)openEuler RISC-V (base system) for StarFive VisionFivedd
openEuler RISC-V (XFCE) for StarFive VisionFivedd
StarFive VisionFive2StarFive VisionFive2 (generic variant)openEuler RISC-V (base system) for StarFive VisionFive2dd
openEuler RISC-V (XFCE) for StarFive VisionFive2dd

刷写工具根据板卡的不同依赖 ddfastboot 命令, RUYI 将自动调用 sudo 提权。

需要注意的是一些镜像的解包需要占用大量的磁盘空间,使用 RUYI 工具刷写镜像前请务必留足磁盘空间; 一些厂家提供的镜像在刷写后并不会自动扩展分区来充分利用整块磁盘,而需要用户自行扩展磁盘分区大小。

- +License: Apache-2.0 <https://www.apache.org/licenses/LICENSE-2.0>

从 0.4.0 开始使用 GitHub 托管默认软件源。

板卡镜像刷写

在 0.4.0 版本,板卡镜像刷写功能所支持的板卡增加到 7 款,同时优化了命令逻辑。

板卡支持列表:

开发板版本镜像刷写方式
Allwinner Nezha D1Allwinner Nezha D1 (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Milk-V DuoMilk-V Duo (64M RAM)Milk-V Duo Official buildroot SDK (64M RAM)dd
Milk-V Duo Official buildroot SDK (64M RAM, with Python)dd
Milk-V Duo (256M RAM)Milk-V Duo Official buildroot SDK (256M RAM)dd
Milk-V Duo Official buildroot SDK (256M RAM, with Python)dd
Milk-V Pioneer BoxMilk-V Pioneer Box (v1.3)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
RevyOS for Milk-V Pioneerdd
Milk-V Pioneer Box (v1.2)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
Milk-V Pioneer Box (v1.1)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
Sipeed Lichee RVSipeed Lichee RV (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Sipeed LicheePi 4ASipeed LicheePi 4A (8G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (8G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (8G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (8G RAM)fastboot
Sipeed LicheePi 4A (16G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (16G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (16G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (16G RAM)fastboot
StarFive VisionFiveStarFive VisionFive (generic variant)openEuler RISC-V (base system) for StarFive VisionFivedd
openEuler RISC-V (XFCE) for StarFive VisionFivedd
StarFive VisionFive2StarFive VisionFive2 (generic variant)openEuler RISC-V (base system) for StarFive VisionFive2dd
openEuler RISC-V (XFCE) for StarFive VisionFive2dd

刷写工具根据板卡的不同依赖 ddfastboot 命令, RUYI 将自动调用 sudo 提权。

需要注意的是一些镜像的解包需要占用大量的磁盘空间,使用 RUYI 工具刷写镜像前请务必留足磁盘空间; 一些厂家提供的镜像在刷写后并不会自动扩展分区来充分利用整块磁盘,而需要用户自行扩展磁盘分区大小。

+ \ No newline at end of file diff --git a/zh/ruyi/updates/0.5.0.html b/zh/ruyi/updates/0.5.0.html index d451f071..fe6a55d5 100644 --- a/zh/ruyi/updates/0.5.0.html +++ b/zh/ruyi/updates/0.5.0.html @@ -8,11 +8,11 @@ - + - - + + @@ -44,8 +44,8 @@ $ cat > ~/.config/ruyi/config.toml <<EOF [repo] remote = "https://example.domain/path/repo.git" -EOF - +EOF + \ No newline at end of file diff --git a/zh/ruyi/updates/0.6.0.html b/zh/ruyi/updates/0.6.0.html index c990984a..925e2684 100644 --- a/zh/ruyi/updates/0.6.0.html +++ b/zh/ruyi/updates/0.6.0.html @@ -8,11 +8,11 @@ - + - - + + @@ -23,8 +23,8 @@ Ruyi 0.6.0 Copyright (C) 2023 Institute of Software, Chinese Academy of Sciences (ISCAS). All rights reserved. -License: Apache-2.0 <https://www.apache.org/licenses/LICENSE-2.0>

依赖变化

从 v0.6.0 版本开始 RUYI 包管理不再依赖 git,而是使用 pygit2 作为替代方案。

板卡镜像刷写

在 0.6.0 版本, SiFive HiFive Unmatched 镜像支持增加到 5 种。

板卡支持列表:

开发板版本镜像刷写方式
Allwinner Nezha D1Allwinner Nezha D1 (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Canaan Kendryte K230Canaan Kendryte K230 (generic variant)Canaan Kendryte K230 Official CanMV Debian SDKdd
Canaan Kendryte K230 Official CanMV Ubuntu SDKdd
Milk-V DuoMilk-V Duo (64M RAM)Milk-V Duo Official buildroot SDK (64M RAM)dd
Milk-V Duo Official buildroot SDK (64M RAM, with Python)dd
Milk-V Duo (256M RAM)Milk-V Duo Official buildroot SDK (256M RAM)dd
Milk-V Duo Official buildroot SDK (256M RAM, with Python)dd
Milk-V Pioneer BoxMilk-V Pioneer Box (v1.3)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
RevyOS for Milk-V Pioneerdd
Milk-V Pioneer Box (v1.2)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
Milk-V Pioneer Box (v1.1)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
SiFive HiFive UnmatchedSiFive HiFive Unmatched (generic variant)openEuler RISC-V (base system) for SiFive HiFive Unmatcheddd
openKylin for SiFive HiFive Unmatcheddd
openEuler RISC-V (XFCE) for SiFive HiFive Unmatcheddd
OpenWrt for SiFive HiFive Unmatcheddd
Ubuntu Server for SiFive HiFive Unmatcheddd
Sipeed Lichee RVSipeed Lichee RV (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Sipeed LicheePi 4ASipeed LicheePi 4A (8G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (8G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (8G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (8G RAM)fastboot
Sipeed LicheePi 4A (16G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (16G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (16G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (16G RAM)fastboot
StarFive VisionFiveStarFive VisionFive (generic variant)openEuler RISC-V (base system) for StarFive VisionFivedd
openEuler RISC-V (XFCE) for StarFive VisionFivedd
StarFive VisionFive2StarFive VisionFive2 (generic variant)openEuler RISC-V (base system) for StarFive VisionFive2dd
openEuler RISC-V (XFCE) for StarFive VisionFive2dd

刷写工具根据板卡的不同依赖 ddfastboot 命令, RUYI 将自动调用 sudo 提权。

需要注意的是一些镜像的解包需要占用大量的磁盘空间,使用 RUYI 工具刷写镜像前请务必留足磁盘空间; 一些厂家提供的镜像在刷写后并不会自动扩展分区来充分利用整块磁盘,而需要用户自行扩展磁盘分区大小。

- +License: Apache-2.0 <https://www.apache.org/licenses/LICENSE-2.0>

依赖变化

从 v0.6.0 版本开始 RUYI 包管理不再依赖 git,而是使用 pygit2 作为替代方案。

板卡镜像刷写

在 0.6.0 版本, SiFive HiFive Unmatched 镜像支持增加到 5 种。

板卡支持列表:

开发板版本镜像刷写方式
Allwinner Nezha D1Allwinner Nezha D1 (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Canaan Kendryte K230Canaan Kendryte K230 (generic variant)Canaan Kendryte K230 Official CanMV Debian SDKdd
Canaan Kendryte K230 Official CanMV Ubuntu SDKdd
Milk-V DuoMilk-V Duo (64M RAM)Milk-V Duo Official buildroot SDK (64M RAM)dd
Milk-V Duo Official buildroot SDK (64M RAM, with Python)dd
Milk-V Duo (256M RAM)Milk-V Duo Official buildroot SDK (256M RAM)dd
Milk-V Duo Official buildroot SDK (256M RAM, with Python)dd
Milk-V Pioneer BoxMilk-V Pioneer Box (v1.3)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
RevyOS for Milk-V Pioneerdd
Milk-V Pioneer Box (v1.2)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
Milk-V Pioneer Box (v1.1)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
SiFive HiFive UnmatchedSiFive HiFive Unmatched (generic variant)openEuler RISC-V (base system) for SiFive HiFive Unmatcheddd
openKylin for SiFive HiFive Unmatcheddd
openEuler RISC-V (XFCE) for SiFive HiFive Unmatcheddd
OpenWrt for SiFive HiFive Unmatcheddd
Ubuntu Server for SiFive HiFive Unmatcheddd
Sipeed Lichee RVSipeed Lichee RV (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Sipeed LicheePi 4ASipeed LicheePi 4A (8G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (8G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (8G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (8G RAM)fastboot
Sipeed LicheePi 4A (16G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (16G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (16G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (16G RAM)fastboot
StarFive VisionFiveStarFive VisionFive (generic variant)openEuler RISC-V (base system) for StarFive VisionFivedd
openEuler RISC-V (XFCE) for StarFive VisionFivedd
StarFive VisionFive2StarFive VisionFive2 (generic variant)openEuler RISC-V (base system) for StarFive VisionFive2dd
openEuler RISC-V (XFCE) for StarFive VisionFive2dd

刷写工具根据板卡的不同依赖 ddfastboot 命令, RUYI 将自动调用 sudo 提权。

需要注意的是一些镜像的解包需要占用大量的磁盘空间,使用 RUYI 工具刷写镜像前请务必留足磁盘空间; 一些厂家提供的镜像在刷写后并不会自动扩展分区来充分利用整块磁盘,而需要用户自行扩展磁盘分区大小。

+ \ No newline at end of file diff --git a/zh/ruyi/updates/0.7.0.html b/zh/ruyi/updates/0.7.0.html index 28d3877a..cc50128d 100644 --- a/zh/ruyi/updates/0.7.0.html +++ b/zh/ruyi/updates/0.7.0.html @@ -8,11 +8,11 @@ - + - - + + @@ -27,8 +27,8 @@ Ruyi 0.7.0 Copyright (C) 2023 Institute of Software, Chinese Academy of Sciences (ISCAS). All rights reserved. -License: Apache-2.0 <https://www.apache.org/licenses/LICENSE-2.0>

板卡镜像刷写

在 0.7.0 版本,板卡镜像刷写功能所支持的板卡增加到 13 款。

注意 Milkv-V Vega 暂时没有提供官方镜像下载,故此处只提供了文档链接而没有刷写支持。

板卡支持列表:

开发板版本镜像刷写方式
Allwinner Nezha D1Allwinner Nezha D1 (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Canaan Kendryte K230Canaan Kendryte K230 (generic variant)Canaan Kendryte K230 Official CanMV Debian SDKdd
Canaan Kendryte K230 Official CanMV Ubuntu SDKdd
Milk-V DuoMilk-V Duo (64M RAM)Milk-V Duo Official buildroot SDK (64M RAM)dd
Milk-V Duo Official buildroot SDK (64M RAM, with Python)dd
Milk-V Duo (256M RAM)Milk-V Duo Official buildroot SDK (256M RAM)dd
Milk-V Duo Official buildroot SDK (256M RAM, with Python)dd
Milk-V Duo SMilk-V Duo S (generic variant)Milk-V Duo S Official buildroot SDK (FreeRTOS, on SD card)dd
Milk-V MarsMilk-V Mars (generic variant)Milk-V Mars Official Debian Desktop SDK (on SD card)dd
Milk-V Mars CMMilk-V Mars CM (generic variant)Milk-V Mars CM Official Debian Desktop SDK (on SD card)dd
Milk-V VegaMilk-V Vega (generic variant)Milk-V Vega Official Buildroot SDK (documentation-only)
Milk-V Pioneer BoxMilk-V Pioneer Box (v1.3)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
RevyOS for Milk-V Pioneerdd
Milk-V Pioneer Box (v1.2)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
Milk-V Pioneer Box (v1.1)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
SiFive HiFive UnmatchedSiFive HiFive Unmatched (generic variant)openEuler RISC-V (base system) for SiFive HiFive Unmatcheddd
openKylin for SiFive HiFive Unmatcheddd
openEuler RISC-V (XFCE) for SiFive HiFive Unmatcheddd
OpenWrt for SiFive HiFive Unmatcheddd
Ubuntu Server for SiFive HiFive Unmatcheddd
Sipeed Lichee RVSipeed Lichee RV (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Sipeed LicheePi 4ASipeed LicheePi 4A (8G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (8G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (8G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (8G RAM)fastboot
Sipeed LicheePi 4A (16G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (16G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (16G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (16G RAM)fastboot
StarFive VisionFiveStarFive VisionFive (generic variant)openEuler RISC-V (base system) for StarFive VisionFivedd
openEuler RISC-V (XFCE) for StarFive VisionFivedd
StarFive VisionFive2StarFive VisionFive2 (generic variant)openEuler RISC-V (base system) for StarFive VisionFive2dd
openEuler RISC-V (XFCE) for StarFive VisionFive2dd

刷写工具根据板卡的不同依赖 ddfastboot 命令, RUYI 将自动调用 sudo 提权。

需要注意的是一些镜像的解包需要占用大量的磁盘空间,使用 RUYI 工具刷写镜像前请务必留足磁盘空间; 一些厂家提供的镜像在刷写后并不会自动扩展分区来充分利用整块磁盘,而需要用户自行扩展磁盘分区大小。

- +License: Apache-2.0 <https://www.apache.org/licenses/LICENSE-2.0>

板卡镜像刷写

在 0.7.0 版本,板卡镜像刷写功能所支持的板卡增加到 13 款。

注意 Milkv-V Vega 暂时没有提供官方镜像下载,故此处只提供了文档链接而没有刷写支持。

板卡支持列表:

开发板版本镜像刷写方式
Allwinner Nezha D1Allwinner Nezha D1 (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Canaan Kendryte K230Canaan Kendryte K230 (generic variant)Canaan Kendryte K230 Official CanMV Debian SDKdd
Canaan Kendryte K230 Official CanMV Ubuntu SDKdd
Milk-V DuoMilk-V Duo (64M RAM)Milk-V Duo Official buildroot SDK (64M RAM)dd
Milk-V Duo Official buildroot SDK (64M RAM, with Python)dd
Milk-V Duo (256M RAM)Milk-V Duo Official buildroot SDK (256M RAM)dd
Milk-V Duo Official buildroot SDK (256M RAM, with Python)dd
Milk-V Duo SMilk-V Duo S (generic variant)Milk-V Duo S Official buildroot SDK (FreeRTOS, on SD card)dd
Milk-V MarsMilk-V Mars (generic variant)Milk-V Mars Official Debian Desktop SDK (on SD card)dd
Milk-V Mars CMMilk-V Mars CM (generic variant)Milk-V Mars CM Official Debian Desktop SDK (on SD card)dd
Milk-V VegaMilk-V Vega (generic variant)Milk-V Vega Official Buildroot SDK (documentation-only)
Milk-V Pioneer BoxMilk-V Pioneer Box (v1.3)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
RevyOS for Milk-V Pioneerdd
Milk-V Pioneer Box (v1.2)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
Milk-V Pioneer Box (v1.1)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
SiFive HiFive UnmatchedSiFive HiFive Unmatched (generic variant)openEuler RISC-V (base system) for SiFive HiFive Unmatcheddd
openKylin for SiFive HiFive Unmatcheddd
openEuler RISC-V (XFCE) for SiFive HiFive Unmatcheddd
OpenWrt for SiFive HiFive Unmatcheddd
Ubuntu Server for SiFive HiFive Unmatcheddd
Sipeed Lichee RVSipeed Lichee RV (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Sipeed LicheePi 4ASipeed LicheePi 4A (8G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (8G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (8G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (8G RAM)fastboot
Sipeed LicheePi 4A (16G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (16G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (16G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (16G RAM)fastboot
StarFive VisionFiveStarFive VisionFive (generic variant)openEuler RISC-V (base system) for StarFive VisionFivedd
openEuler RISC-V (XFCE) for StarFive VisionFivedd
StarFive VisionFive2StarFive VisionFive2 (generic variant)openEuler RISC-V (base system) for StarFive VisionFive2dd
openEuler RISC-V (XFCE) for StarFive VisionFive2dd

刷写工具根据板卡的不同依赖 ddfastboot 命令, RUYI 将自动调用 sudo 提权。

需要注意的是一些镜像的解包需要占用大量的磁盘空间,使用 RUYI 工具刷写镜像前请务必留足磁盘空间; 一些厂家提供的镜像在刷写后并不会自动扩展分区来充分利用整块磁盘,而需要用户自行扩展磁盘分区大小。

+ \ No newline at end of file diff --git a/zh/ruyi/updates/0.8.1.html b/zh/ruyi/updates/0.8.1.html index 62edb217..e4d5a20c 100644 --- a/zh/ruyi/updates/0.8.1.html +++ b/zh/ruyi/updates/0.8.1.html @@ -8,11 +8,11 @@ - + - - + + @@ -36,8 +36,8 @@ License 2.0 (https://mozilla.org/MPL/2.0/). You can get the respective project's sources from the project's official website: -* certifi: https://github.com/certifi/python-certifi

板卡镜像刷写

从 0.8.0 版本开始,板卡镜像刷写功能所支持的板卡增加到 14 款。

板卡支持列表:

开发板版本镜像刷写方式
Allwinner Nezha D1Allwinner Nezha D1 (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Canaan Kendryte K230Canaan Kendryte K230 (generic variant)Canaan Kendryte K230 Official CanMV Debian SDKdd
Canaan Kendryte K230 Official CanMV Ubuntu SDKdd
Milk-V DuoMilk-V Duo (64M RAM)Milk-V Duo Official buildroot SDK (64M RAM)dd
Milk-V Duo Official buildroot SDK (64M RAM, with Python)dd
Milk-V Duo (256M RAM)Milk-V Duo Official buildroot SDK (256M RAM)dd
Milk-V Duo Official buildroot SDK (256M RAM, with Python)dd
Milk-V Duo SMilk-V Duo S (generic variant)Milk-V Duo S Official buildroot SDK (FreeRTOS, on SD card)dd
Milk-V MarsMilk-V Mars (generic variant)Milk-V Mars Official Debian Desktop SDK (on SD card)dd
Milk-V Mars CMMilk-V Mars CM (generic variant)Milk-V Mars CM Official Debian Desktop SDK (on SD card)dd
Milk-V MelesMilk-V Meles (4G RAM)RevyOS for Milk-V Meles (4G RAM)fastboot
Milk-V Meles (8G RAM)RevyOS for Milk-V Meles (8G RAM)fastboot
Milk-V VegaMilk-V Vega (generic variant)Milk-V Vega Official Buildroot SDK (documentation-only)
Milk-V Pioneer BoxMilk-V Pioneer Box (v1.3)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
RevyOS for Milk-V Pioneerdd
Milk-V Pioneer Box (v1.2)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
Milk-V Pioneer Box (v1.1)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
SiFive HiFive UnmatchedSiFive HiFive Unmatched (generic variant)openEuler RISC-V (base system) for SiFive HiFive Unmatcheddd
openKylin for SiFive HiFive Unmatcheddd
openEuler RISC-V (XFCE) for SiFive HiFive Unmatcheddd
OpenWrt for SiFive HiFive Unmatcheddd
Ubuntu Server for SiFive HiFive Unmatcheddd
Sipeed Lichee RVSipeed Lichee RV (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Sipeed LicheePi 4ASipeed LicheePi 4A (8G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (8G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (8G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (8G RAM)fastboot
Sipeed LicheePi 4A (16G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (16G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (16G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (16G RAM)fastboot
StarFive VisionFiveStarFive VisionFive (generic variant)openEuler RISC-V (base system) for StarFive VisionFivedd
openEuler RISC-V (XFCE) for StarFive VisionFivedd
StarFive VisionFive2StarFive VisionFive2 (generic variant)openEuler RISC-V (base system) for StarFive VisionFive2dd
openEuler RISC-V (XFCE) for StarFive VisionFive2dd

刷写工具根据板卡的不同依赖 ddfastboot 命令。

在使用普通用户调用 dd 命令刷写镜像失败时,RUYI 将尝试调用 sudo 提权。

在使用 fastboot 工具刷写镜像时, RUYI 则只会使用当前普通用户,故需要用户自行配置 udev 规则。

需要注意的是一些镜像的解包需要占用大量的磁盘空间,使用 RUYI 工具刷写镜像前请务必留足磁盘空间; 一些厂家提供的镜像在刷写后并不会自动扩展分区来充分利用整块磁盘,而需要用户自行扩展磁盘分区大小。

- +* certifi: https://github.com/certifi/python-certifi

板卡镜像刷写

从 0.8.0 版本开始,板卡镜像刷写功能所支持的板卡增加到 14 款。

板卡支持列表:

开发板版本镜像刷写方式
Allwinner Nezha D1Allwinner Nezha D1 (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Canaan Kendryte K230Canaan Kendryte K230 (generic variant)Canaan Kendryte K230 Official CanMV Debian SDKdd
Canaan Kendryte K230 Official CanMV Ubuntu SDKdd
Milk-V DuoMilk-V Duo (64M RAM)Milk-V Duo Official buildroot SDK (64M RAM)dd
Milk-V Duo Official buildroot SDK (64M RAM, with Python)dd
Milk-V Duo (256M RAM)Milk-V Duo Official buildroot SDK (256M RAM)dd
Milk-V Duo Official buildroot SDK (256M RAM, with Python)dd
Milk-V Duo SMilk-V Duo S (generic variant)Milk-V Duo S Official buildroot SDK (FreeRTOS, on SD card)dd
Milk-V MarsMilk-V Mars (generic variant)Milk-V Mars Official Debian Desktop SDK (on SD card)dd
Milk-V Mars CMMilk-V Mars CM (generic variant)Milk-V Mars CM Official Debian Desktop SDK (on SD card)dd
Milk-V MelesMilk-V Meles (4G RAM)RevyOS for Milk-V Meles (4G RAM)fastboot
Milk-V Meles (8G RAM)RevyOS for Milk-V Meles (8G RAM)fastboot
Milk-V VegaMilk-V Vega (generic variant)Milk-V Vega Official Buildroot SDK (documentation-only)
Milk-V Pioneer BoxMilk-V Pioneer Box (v1.3)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
RevyOS for Milk-V Pioneerdd
Milk-V Pioneer Box (v1.2)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
Milk-V Pioneer Box (v1.1)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
SiFive HiFive UnmatchedSiFive HiFive Unmatched (generic variant)openEuler RISC-V (base system) for SiFive HiFive Unmatcheddd
openKylin for SiFive HiFive Unmatcheddd
openEuler RISC-V (XFCE) for SiFive HiFive Unmatcheddd
OpenWrt for SiFive HiFive Unmatcheddd
Ubuntu Server for SiFive HiFive Unmatcheddd
Sipeed Lichee RVSipeed Lichee RV (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Sipeed LicheePi 4ASipeed LicheePi 4A (8G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (8G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (8G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (8G RAM)fastboot
Sipeed LicheePi 4A (16G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (16G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (16G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (16G RAM)fastboot
StarFive VisionFiveStarFive VisionFive (generic variant)openEuler RISC-V (base system) for StarFive VisionFivedd
openEuler RISC-V (XFCE) for StarFive VisionFivedd
StarFive VisionFive2StarFive VisionFive2 (generic variant)openEuler RISC-V (base system) for StarFive VisionFive2dd
openEuler RISC-V (XFCE) for StarFive VisionFive2dd

刷写工具根据板卡的不同依赖 ddfastboot 命令。

在使用普通用户调用 dd 命令刷写镜像失败时,RUYI 将尝试调用 sudo 提权。

在使用 fastboot 工具刷写镜像时, RUYI 则只会使用当前普通用户,故需要用户自行配置 udev 规则。

需要注意的是一些镜像的解包需要占用大量的磁盘空间,使用 RUYI 工具刷写镜像前请务必留足磁盘空间; 一些厂家提供的镜像在刷写后并不会自动扩展分区来充分利用整块磁盘,而需要用户自行扩展磁盘分区大小。

+ \ No newline at end of file diff --git a/zh/ruyi/updates/0.9.0.html b/zh/ruyi/updates/0.9.0.html index fffb18d8..2d0d74f7 100644 --- a/zh/ruyi/updates/0.9.0.html +++ b/zh/ruyi/updates/0.9.0.html @@ -8,11 +8,11 @@ - + - - + + @@ -36,8 +36,8 @@ License 2.0 (https://mozilla.org/MPL/2.0/). You can get the respective project's sources from the project's official website: -* certifi: https://github.com/certifi/python-certifi

板卡镜像刷写

从 0.9.0 版本开始,板卡镜像刷写功能所支持的板卡增加到 20 款。

板卡支持列表:

开发板版本镜像刷写方式
Allwinner Nezha D1Allwinner Nezha D1 (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Canaan Kendryte K230Canaan Kendryte K230 (generic variant)Canaan Kendryte K230 Official CanMV Debian SDKdd
Canaan Kendryte K510Canaan Kendryte K510 (generic variant)Canaan Kendryte K510 Official Buildroot SDK (documentation-only)
Canaan Kendryte K230 Official CanMV Ubuntu SDKdd
Milk-V DuoMilk-V Duo (64M RAM)Milk-V Duo Official buildroot SDK (64M RAM)dd
Milk-V Duo Official buildroot SDK (64M RAM, with Python)dd
Milk-V Duo (256M RAM)Milk-V Duo Official buildroot SDK (256M RAM)dd
Milk-V Duo Official buildroot SDK (256M RAM, with Python)dd
Milk-V Duo SMilk-V Duo S (generic variant)Milk-V Duo S Official buildroot SDK (FreeRTOS, on SD card)dd
Milk-V MarsMilk-V Mars (generic variant)Milk-V Mars Official Debian Desktop SDK (on SD card)dd
Milk-V Mars CMMilk-V Mars CM (generic variant)Milk-V Mars CM Official Debian Desktop SDK (on SD card)dd
Milk-V MelesMilk-V Meles (4G RAM)RevyOS for Milk-V Meles (4G RAM)fastboot
Milk-V Meles (8G RAM)RevyOS for Milk-V Meles (8G RAM)fastboot
Milk-V VegaMilk-V Vega (generic variant)Milk-V Vega Official Buildroot SDK (documentation-only)
Milk-V Pioneer BoxMilk-V Pioneer Box (v1.3)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
RevyOS for Milk-V Pioneerdd
Milk-V Pioneer Box (v1.2)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
Milk-V Pioneer Box (v1.1)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
SiFive HiFive UnmatchedSiFive HiFive Unmatched (generic variant)openEuler RISC-V (base system) for SiFive HiFive Unmatcheddd
openKylin for SiFive HiFive Unmatcheddd
openEuler RISC-V (XFCE) for SiFive HiFive Unmatcheddd
OpenWrt for SiFive HiFive Unmatcheddd
Ubuntu Server for SiFive HiFive Unmatcheddd
Sipeed Lichee Cluster 4ASipeed Lichee Cluster 4A (8G RAM)RevyOS for Sipeed Lichee Cluster 4A (8G RAM)fastboot
Sipeed Lichee Cluster 4A (16G RAM)RevyOS for Sipeed Lichee Cluster 4A (16G RAM)fastboot
Sipeed Lichee Console 4ASipeed Lichee Console 4A (8G RAM)RevyOS for Sipeed Lichee Console 4A (8G RAM)fastboot
Sipeed Lichee Console 4A (16G RAM)RevyOS for Sipeed Lichee Console 4A (16G RAM)fastboot
Sipeed Lichee RVSipeed Lichee RV (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Sipeed LicheeRV NanoSipeed LicheeRV Nano (generic variant)Sipeed LicheeRV Nano Official buildroot SDK (Linux & FreeRTOS)dd
Debian for Sipeed LicheeRV Nano (from https://github.com/Fishwaldo)dd
Sipeed Maix-ISipeed Maix-I (generic variant)Sipeed Maix-I Official FreeRTOS SDK (documentation-only)
Sipeed Tang Mega 138K ProSipeed Tang Mega 138K Pro (generic variant)Sipeed Tang Mega 138K Pro FPGA & FreeRTOS SDK (documentation-only)
Sipeed Tang Mega 138K Pro FPGA & RT-Thread SDK (documentation-only)
Sipeed LicheePi 4ASipeed LicheePi 4A (8G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (8G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (8G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (8G RAM)fastboot
Sipeed LicheePi 4A (16G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (16G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (16G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (16G RAM)fastboot
StarFive VisionFiveStarFive VisionFive (generic variant)openEuler RISC-V (base system) for StarFive VisionFivedd
openEuler RISC-V (XFCE) for StarFive VisionFivedd
StarFive VisionFive2StarFive VisionFive2 (generic variant)openEuler RISC-V (base system) for StarFive VisionFive2dd
openEuler RISC-V (XFCE) for StarFive VisionFive2dd

刷写工具根据板卡的不同依赖 ddfastboot 命令。

在使用普通用户调用 dd 命令刷写镜像失败时,RUYI 将尝试调用 sudo 提权。

在使用 fastboot 工具刷写镜像时, RUYI 则只会使用当前普通用户,故需要用户自行配置 udev 规则。

需要注意的是一些镜像的解包需要占用大量的磁盘空间,使用 RUYI 工具刷写镜像前请务必留足磁盘空间; 一些厂家提供的镜像在刷写后并不会自动扩展分区来充分利用整块磁盘,而需要用户自行扩展磁盘分区大小。

- +* certifi: https://github.com/certifi/python-certifi

板卡镜像刷写

从 0.9.0 版本开始,板卡镜像刷写功能所支持的板卡增加到 20 款。

板卡支持列表:

开发板版本镜像刷写方式
Allwinner Nezha D1Allwinner Nezha D1 (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Canaan Kendryte K230Canaan Kendryte K230 (generic variant)Canaan Kendryte K230 Official CanMV Debian SDKdd
Canaan Kendryte K510Canaan Kendryte K510 (generic variant)Canaan Kendryte K510 Official Buildroot SDK (documentation-only)
Canaan Kendryte K230 Official CanMV Ubuntu SDKdd
Milk-V DuoMilk-V Duo (64M RAM)Milk-V Duo Official buildroot SDK (64M RAM)dd
Milk-V Duo Official buildroot SDK (64M RAM, with Python)dd
Milk-V Duo (256M RAM)Milk-V Duo Official buildroot SDK (256M RAM)dd
Milk-V Duo Official buildroot SDK (256M RAM, with Python)dd
Milk-V Duo SMilk-V Duo S (generic variant)Milk-V Duo S Official buildroot SDK (FreeRTOS, on SD card)dd
Milk-V MarsMilk-V Mars (generic variant)Milk-V Mars Official Debian Desktop SDK (on SD card)dd
Milk-V Mars CMMilk-V Mars CM (generic variant)Milk-V Mars CM Official Debian Desktop SDK (on SD card)dd
Milk-V MelesMilk-V Meles (4G RAM)RevyOS for Milk-V Meles (4G RAM)fastboot
Milk-V Meles (8G RAM)RevyOS for Milk-V Meles (8G RAM)fastboot
Milk-V VegaMilk-V Vega (generic variant)Milk-V Vega Official Buildroot SDK (documentation-only)
Milk-V Pioneer BoxMilk-V Pioneer Box (v1.3)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
RevyOS for Milk-V Pioneerdd
Milk-V Pioneer Box (v1.2)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
Milk-V Pioneer Box (v1.1)openEuler RISC-V (base system) for Milk-V Pioneer (rootfs on NVMe)dd
openEuler RISC-V (XFCE) for Milk-V Pioneer (rootfs on NVMe)dd
SiFive HiFive UnmatchedSiFive HiFive Unmatched (generic variant)openEuler RISC-V (base system) for SiFive HiFive Unmatcheddd
openKylin for SiFive HiFive Unmatcheddd
openEuler RISC-V (XFCE) for SiFive HiFive Unmatcheddd
OpenWrt for SiFive HiFive Unmatcheddd
Ubuntu Server for SiFive HiFive Unmatcheddd
Sipeed Lichee Cluster 4ASipeed Lichee Cluster 4A (8G RAM)RevyOS for Sipeed Lichee Cluster 4A (8G RAM)fastboot
Sipeed Lichee Cluster 4A (16G RAM)RevyOS for Sipeed Lichee Cluster 4A (16G RAM)fastboot
Sipeed Lichee Console 4ASipeed Lichee Console 4A (8G RAM)RevyOS for Sipeed Lichee Console 4A (8G RAM)fastboot
Sipeed Lichee Console 4A (16G RAM)RevyOS for Sipeed Lichee Console 4A (16G RAM)fastboot
Sipeed Lichee RVSipeed Lichee RV (generic variant)openEuler RISC-V (base system) for Allwinner D1dd
openEuler RISC-V (XFCE) for Allwinner D1dd
Sipeed LicheeRV NanoSipeed LicheeRV Nano (generic variant)Sipeed LicheeRV Nano Official buildroot SDK (Linux & FreeRTOS)dd
Debian for Sipeed LicheeRV Nano (from https://github.com/Fishwaldo)dd
Sipeed Maix-ISipeed Maix-I (generic variant)Sipeed Maix-I Official FreeRTOS SDK (documentation-only)
Sipeed Tang Mega 138K ProSipeed Tang Mega 138K Pro (generic variant)Sipeed Tang Mega 138K Pro FPGA & FreeRTOS SDK (documentation-only)
Sipeed Tang Mega 138K Pro FPGA & RT-Thread SDK (documentation-only)
Sipeed LicheePi 4ASipeed LicheePi 4A (8G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (8G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (8G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (8G RAM)fastboot
Sipeed LicheePi 4A (16G RAM)openEuler RISC-V (headless) for Sipeed LicheePi 4A (16G RAM)fastboot
openEuler RISC-V (XFCE) for Sipeed LicheePi 4A (16G RAM)fastboot
RevyOS for Sipeed LicheePi 4A (16G RAM)fastboot
StarFive VisionFiveStarFive VisionFive (generic variant)openEuler RISC-V (base system) for StarFive VisionFivedd
openEuler RISC-V (XFCE) for StarFive VisionFivedd
StarFive VisionFive2StarFive VisionFive2 (generic variant)openEuler RISC-V (base system) for StarFive VisionFive2dd
openEuler RISC-V (XFCE) for StarFive VisionFive2dd

刷写工具根据板卡的不同依赖 ddfastboot 命令。

在使用普通用户调用 dd 命令刷写镜像失败时,RUYI 将尝试调用 sudo 提权。

在使用 fastboot 工具刷写镜像时, RUYI 则只会使用当前普通用户,故需要用户自行配置 udev 规则。

需要注意的是一些镜像的解包需要占用大量的磁盘空间,使用 RUYI 工具刷写镜像前请务必留足磁盘空间; 一些厂家提供的镜像在刷写后并不会自动扩展分区来充分利用整块磁盘,而需要用户自行扩展磁盘分区大小。

+ \ No newline at end of file diff --git a/zh/sdk/gnu/index.html b/zh/sdk/gnu/index.html index 2e2d86b9..c86b1e1a 100644 --- a/zh/sdk/gnu/index.html +++ b/zh/sdk/gnu/index.html @@ -8,17 +8,17 @@ - + - - + + -
Skip to content

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选项,由编译器自动配置选取合适的处理数量。

扩展支持

工具链版本扩展名称
Upstreami, 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, xtheadvector(RVV 0.7), xventanacondops
有特定优化,不支持 Zfinx, K, RVV1.0, Zc, Xcv 等系列扩展
RuyiSDK额外支持 RV64-ILP32, Profiles(RV20/22), zpn, zpsfoperand, zbpbo
- +
Skip to content

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选项,由编译器自动配置选取合适的处理数量。

扩展支持

工具链版本扩展名称
Upstreami, 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, xtheadvector(RVV 0.7), xventanacondops
有特定优化,不支持 Zfinx, K, RVV1.0, Zc, Xcv 等系列扩展
RuyiSDK额外支持 RV64-ILP32, Profiles(RV20/22), zpn, zpsfoperand, zbpbo
+ \ No newline at end of file diff --git a/zh/sdk/llvm/index.html b/zh/sdk/llvm/index.html index 0285a4fe..70c09b06 100644 --- a/zh/sdk/llvm/index.html +++ b/zh/sdk/llvm/index.html @@ -8,17 +8,17 @@ - + - - + + - - + + \ No newline at end of file diff --git a/zh/usecase/index.html b/zh/usecase/index.html index da6cf505..13b27a62 100644 --- a/zh/usecase/index.html +++ b/zh/usecase/index.html @@ -8,17 +8,17 @@ - + - - + + - - + + \ No newline at end of file diff --git a/zh/usecase/rvbook/index.html b/zh/usecase/rvbook/index.html index 9dcd6e50..c1047f64 100644 --- a/zh/usecase/rvbook/index.html +++ b/zh/usecase/rvbook/index.html @@ -8,11 +8,11 @@ - + - - + + @@ -38,8 +38,8 @@ ruyi extract coremark ls -al

交叉编译coremark

  1. 设置coremark源码中的编译配置信息(参考coremark仓库自述文档)
bash
sed -i 's/\bgcc\b/riscv64-plctxthead-linux-gnu-gcc/g' linux64/core_portme.mak
  1. 执行交叉编译和构建,得到可执行程序coremark.exe
bash
make PORT_DIR=linux64 link
 ls -al    #新增可执行程序coremark.exe
  1. 查看rv64可执行程序文件属性信息。
bash
file coremark.exe
-# 命令回显信息显示了文件的架构相关信息

运行验证

  1. 直接运行riscv64 coremark可执行程序
bash
./coremark.exe
- +# 命令回显信息显示了文件的架构相关信息

运行验证

  1. 直接运行riscv64 coremark可执行程序
bash
./coremark.exe
+ \ No newline at end of file diff --git a/zh/usecase/setupos/index.html b/zh/usecase/setupos/index.html index 8a7dd127..99b8e864 100644 --- a/zh/usecase/setupos/index.html +++ b/zh/usecase/setupos/index.html @@ -8,11 +8,11 @@ - + - - + + @@ -69,8 +69,8 @@ * board-image/revyos-sipeed-lpi4a * board-image/uboot-revyos-sipeed-lpi4a-16g -Proceed? (y/N)

您只需要按照引导提示一步步执行即可。

- +Proceed? (y/N)

您只需要按照引导提示一步步执行即可。

+ \ No newline at end of file diff --git a/zh/usecase/x86pc/index.html b/zh/usecase/x86pc/index.html index d19ff45d..7a5fe41d 100644 --- a/zh/usecase/x86pc/index.html +++ b/zh/usecase/x86pc/index.html @@ -8,11 +8,11 @@ - + - - + + @@ -24,8 +24,8 @@ ruyi extract coremark ls -al

交叉编译coremark

  1. 设置coremark源码中的编译配置信息(参考coremark仓库自述文档)
bash
sed -i 's/\bgcc\b/riscv64-unknown-linux-gnu-gcc/g'  linux64/core_portme.mak
  1. 执行交叉编译和构建,得到可执行程序coremark.exe
bash
make PORT_DIR=linux64 link
 ls -al    #新增可执行程序coremark.exe
  1. 查看rv64可执行程序文件属性信息。
bash
file coremark.exe
-# 命令回显信息显示了文件的架构相关信息

qemu-user 模式下运行 riscv64 coremark 可执行程序

  1. qemu user模式下执行riscv64 coremark可执行程序
bash
ruyi-qemu coremark.exe
  1. 退出虚拟环境
bash
ruyi-deactivate
- +# 命令回显信息显示了文件的架构相关信息

qemu-user 模式下运行 riscv64 coremark 可执行程序

  1. qemu user模式下执行riscv64 coremark可执行程序
bash
ruyi-qemu coremark.exe
  1. 退出虚拟环境
bash
ruyi-deactivate
+ \ No newline at end of file diff --git a/zh/usedirection/developmentside/environments/index.html b/zh/usedirection/developmentside/environments/index.html index 7a4b2469..938cabb1 100644 --- a/zh/usedirection/developmentside/environments/index.html +++ b/zh/usedirection/developmentside/environments/index.html @@ -8,11 +8,11 @@ - + - - + + @@ -105,8 +105,8 @@ «Ruyi qemu_venv» $ riscv64-plctxthead-linux-gnu-gcc -O3 test.c -o test «Ruyi qemu_venv» $ ruyi-qemu ./test hello, ruyi
  1. 退出编译环境:
bash
«Ruyi qemu_venv» $ ruyi-deactivate
-$
- +$ + \ No newline at end of file diff --git a/zh/usedirection/developmentside/index.html b/zh/usedirection/developmentside/index.html index 98060873..c53f8682 100644 --- a/zh/usedirection/developmentside/index.html +++ b/zh/usedirection/developmentside/index.html @@ -8,11 +8,11 @@ - + - - + + @@ -51,8 +51,8 @@ ruyi-qemu coremark.exe #在编译和运行结束后,退出虚拟环境 -ruyi-deactivate

调试

TODO

上述结合使用场景简单的介绍了 RuyiSDK 包管理器和工具的使用,ruyi 的更多命令和命令具体使用方法详见“RUYI 包管理器”章节介绍。此外,目前也有一些简单的使用案例供参考。

- +ruyi-deactivate

调试

TODO

上述结合使用场景简单的介绍了 RuyiSDK 包管理器和工具的使用,ruyi 的更多命令和命令具体使用方法详见“RUYI 包管理器”章节介绍。此外,目前也有一些简单的使用案例供参考。

+ \ No newline at end of file diff --git a/zh/usedirection/developmentside/sources/coremark/index.html b/zh/usedirection/developmentside/sources/coremark/index.html index 52073c1b..866702f6 100644 --- a/zh/usedirection/developmentside/sources/coremark/index.html +++ b/zh/usedirection/developmentside/sources/coremark/index.html @@ -8,11 +8,11 @@ - + - - + + @@ -53,8 +53,8 @@ [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 - +CoreMark 1.0 : 2011.937496 / GCC13.1.0 -O2 -static / Heap + \ No newline at end of file diff --git a/zh/usedirection/developmentside/typeselection/index.html b/zh/usedirection/developmentside/typeselection/index.html index 084b038c..cb53ac9d 100644 --- a/zh/usedirection/developmentside/typeselection/index.html +++ b/zh/usedirection/developmentside/typeselection/index.html @@ -8,17 +8,17 @@ - + - - + + -
Skip to content

RuyiSDK中编译工具链类型简介

编译工具链存在实现了不同扩展指令集而形成不同版本实现的现状。这种现象是由于处理器架构的发展、厂商定制和优化、标准和规范的演进以及特定应用需求等因素相互作用的结果。

  1. 处理器架构的发展:随着时间的推移,处理器架构不断演进和改进。新的处理器架构可能引入了新的指令集扩展,以提供更高的性能、更多的功能和更好的能效。为了充分利用这些新的指令集扩展,需要更新和升级编译工具链。因此,不同版本的编译工具链可以支持不同处理器架构的特定指令集,并满足不同处理器版本的需求。
  2. 厂商定制和优化:不同的处理器厂商可能对同一个扩展指令集进行了不同程度的定制和优化。它们可能通过改进指令执行流程、优化编译器生成的代码、添加特定的硬件加速器等方式,针对自己的处理器架构实现了特定版本的编译工具链。这样可以最大限度地发挥其处理器的性能和功能,并提供与其他竞争对手不同的优势。
  3. 标准和规范的演进:某些扩展指令集是由标准和规范定义的。然而,即使在同一个指令集标准下,不同版本的工具链也可能存在细微的差异和改进,以提供更好的性能、稳定性或兼容性。
  4. 特定应用需求:某些特定的应用领域可能对扩展指令集有特殊的需求。例如,嵌入式系统、机器学习、图像处理等领域可能需要针对特定指令集的优化和定制。不同版本的编译工具链可以提供针对这些特定应用领域的优化和支持,以满足其特定的需求。

上述原因导致了编译工具链版本的多样性,这样的多样性为开发者提供了更多选择,并可以根据具体需求和目标平台选择适合的编译工具链版本。

RuyiSDK计划为持有不同RISC-V开发板的开发者们提供支持,让他们在RuyiSDK这个中心化的工具中便捷的获取使用和开发所需的支持。目前RuyiSDK已经提供的编译工具链有如下几种:

编译工具链类型说明
GNU工具链gnu-upstream
gnu-plct'gnu-plct(==0.20240324.0)' 支持了香山南湖微架构
gnu-plct-xtheadfor xuantie
gnu-plct-rv64ilp32-elf非通用工具链,支持 rv64ilp32 的裸机工具链,目标代码格式是elf。[仓库] [文章]
LLVM工具链llvm-upstream
QEMU模拟器qemu-system-riscv-upstream
qemu-user-riscv-upstream
qemu-user-riscv-xthead
- +
Skip to content

RuyiSDK中编译工具链类型简介

编译工具链存在实现了不同扩展指令集而形成不同版本实现的现状。这种现象是由于处理器架构的发展、厂商定制和优化、标准和规范的演进以及特定应用需求等因素相互作用的结果。

  1. 处理器架构的发展:随着时间的推移,处理器架构不断演进和改进。新的处理器架构可能引入了新的指令集扩展,以提供更高的性能、更多的功能和更好的能效。为了充分利用这些新的指令集扩展,需要更新和升级编译工具链。因此,不同版本的编译工具链可以支持不同处理器架构的特定指令集,并满足不同处理器版本的需求。
  2. 厂商定制和优化:不同的处理器厂商可能对同一个扩展指令集进行了不同程度的定制和优化。它们可能通过改进指令执行流程、优化编译器生成的代码、添加特定的硬件加速器等方式,针对自己的处理器架构实现了特定版本的编译工具链。这样可以最大限度地发挥其处理器的性能和功能,并提供与其他竞争对手不同的优势。
  3. 标准和规范的演进:某些扩展指令集是由标准和规范定义的。然而,即使在同一个指令集标准下,不同版本的工具链也可能存在细微的差异和改进,以提供更好的性能、稳定性或兼容性。
  4. 特定应用需求:某些特定的应用领域可能对扩展指令集有特殊的需求。例如,嵌入式系统、机器学习、图像处理等领域可能需要针对特定指令集的优化和定制。不同版本的编译工具链可以提供针对这些特定应用领域的优化和支持,以满足其特定的需求。

上述原因导致了编译工具链版本的多样性,这样的多样性为开发者提供了更多选择,并可以根据具体需求和目标平台选择适合的编译工具链版本。

RuyiSDK计划为持有不同RISC-V开发板的开发者们提供支持,让他们在RuyiSDK这个中心化的工具中便捷的获取使用和开发所需的支持。目前RuyiSDK已经提供的编译工具链有如下几种:

编译工具链类型说明
GNU工具链gnu-upstream
gnu-plct'gnu-plct(==0.20240324.0)' 支持了香山南湖微架构
gnu-plct-xtheadfor xuantie
gnu-plct-rv64ilp32-elf非通用工具链,支持 rv64ilp32 的裸机工具链,目标代码格式是elf。[仓库] [文章]
LLVM工具链llvm-upstream
QEMU模拟器qemu-system-riscv-upstream
qemu-user-riscv-upstream
qemu-user-riscv-xthead
+ \ No newline at end of file diff --git a/zh/usedirection/index.html b/zh/usedirection/index.html index 297c184a..3ae407c2 100644 --- a/zh/usedirection/index.html +++ b/zh/usedirection/index.html @@ -8,17 +8,17 @@ - + - - + + -
Skip to content

使用RuyiSDK

开发者在进行RISC-V开发时,主要的设备包括开发侧的个人电脑(开发环境)和运行侧的RISC-V设备(运行环境)。

开发环境目前更多的是x86_64架构的个人电脑,但是一些高性能的RISC-V设备也可以。在开发侧,通常完成目标可执行程序的准备工作:

  1. 准备RISC-V开发环境,如安装编译工具链、模拟器、调试工具等等
  2. 准备代码
  3. 编译代码
  4. 模拟运行
  5. 调试

运行环境主要是RISC-V硬件设备。在运行侧,通常用来运行RISC-V架构目标可执行程序以达到验证或者使用的目的。

  1. 为RISC-V开发板安装操作系统
  2. 安装目标程序运行所需的运行时环境/语言虚拟机等软件(通常由操作系统提供)
  3. 运行RISC-V目标程序

RuyiSDK针对上述常见的需求提供了包管理器、安装器、集成开发环境来为开发者提供方便。

- +
Skip to content

使用RuyiSDK

开发者在进行RISC-V开发时,主要的设备包括开发侧的个人电脑(开发环境)和运行侧的RISC-V设备(运行环境)。

开发环境目前更多的是x86_64架构的个人电脑,但是一些高性能的RISC-V设备也可以。在开发侧,通常完成目标可执行程序的准备工作:

  1. 准备RISC-V开发环境,如安装编译工具链、模拟器、调试工具等等
  2. 准备代码
  3. 编译代码
  4. 模拟运行
  5. 调试

运行环境主要是RISC-V硬件设备。在运行侧,通常用来运行RISC-V架构目标可执行程序以达到验证或者使用的目的。

  1. 为RISC-V开发板安装操作系统
  2. 安装目标程序运行所需的运行时环境/语言虚拟机等软件(通常由操作系统提供)
  3. 运行RISC-V目标程序

RuyiSDK针对上述常见的需求提供了包管理器、安装器、集成开发环境来为开发者提供方便。

+ \ No newline at end of file diff --git a/zh/usedirection/operationside/index.html b/zh/usedirection/operationside/index.html index 991bd9bb..3f345107 100644 --- a/zh/usedirection/operationside/index.html +++ b/zh/usedirection/operationside/index.html @@ -8,17 +8,17 @@ - + - - + + -
Skip to content

准备RISC-V运行环境

为RISC-V开发板安装操作系统

可以通过下载安装最新的 ruyi 包管理器工具并执行以下命令为设备安装系统:

bash
$ ruyi device provision

按照引导信息一步步执行即可。

运行RISC-V目标程序

C程序,直接运行即可。

其它高级语言,如Java程序,python等,需要先安装运行时环境或语言虚拟机。

- +
Skip to content

准备RISC-V运行环境

为RISC-V开发板安装操作系统

可以通过下载安装最新的 ruyi 包管理器工具并执行以下命令为设备安装系统:

bash
$ ruyi device provision

按照引导信息一步步执行即可。

运行RISC-V目标程序

C程序,直接运行即可。

其它高级语言,如Java程序,python等,需要先安装运行时环境或语言虚拟机。

+ \ No newline at end of file