From 3f219f299a9e4eb477e257d81942ed2640f70f4e Mon Sep 17 00:00:00 2001 From: rcitach Date: Wed, 11 Jun 2025 07:11:29 +0000 Subject: [PATCH 1/3] Improve xuanite quick start documentation --- rt-thread-version/rt-thread-smart/_sidebar.md | 1 + .../quick-start/qemu-xuantie/figures/ext4.png | Bin 0 -> 70795 bytes .../qemu-xuantie/figures/samrt_sept.svg | 1 + .../qemu-xuantie/figures/sept1.png | Bin 0 -> 26837 bytes .../qemu-xuantie/figures/sept2.png | Bin 0 -> 43971 bytes .../qemu-xuantie/figures/sept3.png | Bin 0 -> 36424 bytes .../qemu-xuantie/figures/userapps.png | Bin 0 -> 2392 bytes .../quick-start/qemu-xuantie/quickstart.md | 308 ++++++++++++++++++ 8 files changed, 310 insertions(+) create mode 100644 rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/ext4.png create mode 100644 rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/samrt_sept.svg create mode 100644 rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/sept1.png create mode 100644 rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/sept2.png create mode 100644 rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/sept3.png create mode 100755 rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/userapps.png create mode 100644 rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/quickstart.md diff --git a/rt-thread-version/rt-thread-smart/_sidebar.md b/rt-thread-version/rt-thread-smart/_sidebar.md index 1cba969..95e3805 100644 --- a/rt-thread-version/rt-thread-smart/_sidebar.md +++ b/rt-thread-version/rt-thread-smart/_sidebar.md @@ -9,6 +9,7 @@ - 快速上手 - [QEMU快速上手(Win)](/rt-thread-version/rt-thread-smart/quick-start/qemu-win/quickstart.md) - [QEMU快速上手(Linux)](/rt-thread-version/rt-thread-smart/quick-start/qemu-linux/quickstart.md) + - [QEMU快速上手(xuantie)](/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/quickstart.md) - [ART-Pi Smart快速上手](/rt-thread-version/rt-thread-smart/quick-start/artpi-smart/quickstart.md) - 设备和驱动 - [DevFS设备管理](/rt-thread-version/rt-thread-smart/device/DevFS/DevFS.md) diff --git a/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/ext4.png b/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/ext4.png new file mode 100644 index 0000000000000000000000000000000000000000..d3c4f84b453bd1e37d86a240255ea576f76693aa GIT binary patch literal 70795 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

|kAv*}N(l3y#e`+JDYM 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

hV{-w-JadmIU`dj>lfQ>^d$+l_ry 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 p^811C_=N^U{kJ#*8p`kSnFv;6N|ny}$`iQEMU 启动 RISC-V 加载 RT-Thread Smart 系统流程QEMU 模拟 RISC-V Virt 平台- 配置 CPU、内存、VirtIO 设备等- 模拟流程由QEMU完成,用户只需配置 CPU、内存、VirtIO 等参数即可启动 QEMU 并模拟硬件环境- 如果不设置 -bios 则使用默认的OPENSBI- OpenSBI 运行在 M 模式,提供 SBI 接口- 入口点: 0x80000000- 该流程由QEMU完成,如用自己修改的SBI,需在配置中通过-bios指定加载 OpenSBI 固件到 0x80000000- 通过 -kernel 参数加载 RT-Thread Smart 镜像- 典型入口点: 0x80200000- 包含内核、驱动和用户态支持- 该流程由QEMU完成,如果修改加载地址需要同时需改opensbi与qemu和os,这里不做过多处理加载 RT-Thread Smart 内核到 0x80200000- 设置trap_handler,注册sbi_ecall_exts指定范围ecall的处理函数等等- 此处如果需要添加自己的代码,需要重新编译opensbi并通过-bios指定OpenSBI 初始化- 设置 Hart ID (a0) 和 DTB 地址 (a1)- 切换到 S 模式,进入 RT-Thread Smart 内核入口- 如果要修改跳转地址,需要qemu,opensbi,os三者地址统一,不建议修改OpenSBI 设置上下文并跳转到 0x80200000- 早期mmu初始化- 初始化内存管理、线程调度- 加载设备驱动(基于 VirtIO)- 启动用户态环境等等RT-Thread Smart 内核初始化- RT-Thread Smart 提供实时内核功能- 支持用户态应用和设备管理系统运行 \ No newline at end of file diff --git a/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/sept1.png b/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/sept1.png new file mode 100644 index 0000000000000000000000000000000000000000..fcd5db3f5c6b548534e52f9fd27bc75a6e4495de GIT binary patch literal 26837 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�t@mjIo*n^wK;)hgyKt1761G1kNbcCxU` zFuOVPu8@jck}XpUhCeLEFvuk&hXYbjy5sQl5z=fpw{ZxxIo4lKaKZvP4wWewy)U+1 z+X|{=7^kBFClfAGSw?Xhrz9mnCB@U6pH~_6+mM8LOzzJvG*)qUYFTc*V4#JRVQXv( zLl!nR6EgCLwKYX25@~|=1zhOim|It33KVkZjas@ha&Zyj+4QhTrzd&k9fWfAPfOTW zel$ihfSuGeLacH8+_?oa)?YuRW?=mVR#R@MYu);~8hezO&uIrpp>0F?dX7$wynod_ z28tO+Cyp@jB?$dN#qBw)R#_=d0XtKuB)vh>ZjalSi<0LJbp7|uM(yQZ-qW%8N!ltk zwc4Ze1#xenRmb-iP=6d(a+Hwrq%n_*i%(kIoc5f=gYLmmW#5J%bP(o>1^s&2lQ-~_ zs1XPj%7%^WfGh-s@!=Cm>xM=FIL%hj)LziP%>@ z&I}$p1rroWQEFD+2+ddNA{d)YF$9`{*pRH8gy{dJ*L{4RZCZo0ho9BO4=?n2E#qe% z7XoKYTL?)1m%{!BW%YOk3pVZylZln<;jQ!9D2j7E$ksh)-x7B-Zq0jusYq{b3 z2{2w|*n`({832g#1O2bP{@Pc-dGl^Etxvp2$jARty!Zi-VjNfouhkS@%rN=NgS68U zU4{ow1P_m}lJ>lA8Py?5DjH0w+dbDFRXM+X{H-{S{+mU^|BXWYVo*Cg3>aS`MbjETl)}l zL*uckG25Nx2ZnFWA97DxCFPczYUSZbkA6;#Pz#bjpt!U5#WRtpo-nxQ;k5gLesmpZ zz4DTicAj?n3;?R0kip5VS22;5!8*6|r|To`YXHB0@_wtHqX9>@%bK3I8Go*^j3-G_ z4^ ze0zk6E8TXDXY$DN1+06!GKz|H#^0Bicf5q+BzLS#1rz$vZ5;^|B}P%t6*EPpj%DNM zZhO_m?~mM~tv4xy4ugjM!95A;h!`!{m3t=S!`P!%_cjT{*-|6*J<6RLvZdfwI zx^#O0vmXA(a&TZW6-g2$(@4?yIyIdcroMO=BW2U zL)}d01K4=XhS(Za19lkZUTd6aAc4PCeTTGO+O6fC^N{f|;vFgxenjG$884Dj@5zfa z&#nlrrMR_2uXL?rty=KBS*pq@bAxn$wWl_Zk)vG7Y`wsxMG0?`hfS(tyvYfeSZn>f;j|O2-5y!QXlOY~U-e~!mK+Z6hME3=3_hHBF=ow_;(9ZbuHrcf z4OQI;n(tKjRD2gB?ed+yfmRF%qUf1Qxlo1caO*=hKA!hD{pX|1gaBJ_FU(=d`o?y9 z*$0oy?Eug}fwm{FpXSuhuN`xt0*(c0J$ZfY*#G-^K#ip)Q^GB@@04$2t}vu9v+mZm z>>^B2wB{^RPAFGWq)mq}++jFwK4>get{G?bZm*7niTAw^|Ktma`?Fe}i~y$hkPm{!A610Cd0(XFv6*Sa3c+g3-9mX(HF4- zw@vzwC6;+qH8^dK8%_xKkezwr!pE1wQvY2^-wwR$7jl8di0#dlnr*w1;Ds-#lj$B` z4jS8jQ7Ug_{1d5>K#Rv5T;-~`KHNsJKU*s2a#eqaBV}MexM8U`xl1McYW*gnVd}PM z+i0aXlK^Sv@Lz#AkFo^!H1a)bqs{e}MeXrFtf0Yw@)fv{o$5?Q#(|X`c9;mt3QC09 z9N_HE6vPx}Ht8B@%tQ#wifr%oh%veZ8bK8O%)LeOVHvVzDJ78caANqFJKae(Th2x0 zdWPs6`0A{7aBGZKtmg3&^P2l5oTHxRW$tbT<|Pp^rNq99ak1V|k<81&&u%PVF&~yu zAhIQlAT`@C`|!4PU7$rp0UUc;=0dh1+0&A=_0Uwhy7P6Y7E`_oCQE6KrQWFJyC8z3 zI84P}+$OyakbY?my}Z1=HJs+DeV zxaZE@Dke^v!U`$H1Xu)V&XLBN0ix!_QlPNdJ z+NZ<`?Gu{dZJ((CV^cXNxqk?Hu--W2QDxoerw+Y6UB*UI;Yc~}@%<3aRiRq989|5$ zX)hP8=yd!PrBeKUrE?edYBq59_obcL#6&~VLH8Q_!OEqcaPp>CI7eLXH@DxH@?__k z-S)!el^_0b*L>wjmsuf1?0&*-gnJXsX#IGz%4|hScEY>CfIydNxSUoC(uU=hpNr@O zZ%@lXj2E#OL1s}d0dr=q1OqCg@lbX{zFK5r{IRU9h& zP*18`l#P_9b!3CaTy#+P z%%!uWmcPB+h+|i^C|YX6s9%@+3P5|&!CF6$K?5|)4N$GK{yk8i6+;Kr>GqOg=D+kc zgkqb?f)RDM@Ddg)!O?_2s;7Wbqruy+(!W@3PdZsNok8{XzuPW27tM@7FKk=`iJsi* zeKS!{f9YCH%#VnKEU%tl&e?rESEd3Gqyk9AtOtGImh#Y>8zIZ;qQ#SZ);ou(GPPEB z4k>n=;>vOrP&KM2ERAdzzGAb>Ih`1pNaJ?hy#xGATzL4GVEJptfKm)d<2{8Y&|C|Q zDbA1G&HH^7IpH4S0ST!|??9IgO)Y>>401mR@@ksR_mYbnn-Cc~U2I&<)c8Z-zI3;k z40c@uj1UO?A^m=oz4zfoy?ZRw#3TkyM<1kyMu_0X&Tu~7V8kx{vtru;-2a%n=XB;5 z)Br&flIydNU-l$kHDaZMB}UVV1#4?>Toc-rlRwAQN7v+^ij#CH@c>lop5DDi_~mul zP&BdDp;9}f6J8as0kkqiJPU9JW39%%6E@v6D%u5U>v$ZuDDwk36zncb%z-@7U9C?I zI_r~^6shhPSn*FPLH4d^Q2a1+E2`ca4owR@Nf&MzXHW+Xw`=teD)`)qSkVEy-X9z< zPt|zt0W|mRbv9UeSmVJ`%Q@P#1Ohs3&A$I$G<^R2GCkotLId0!ST>(h9`h)aC^xKJ zW_l;feUwT&O{Hw)_T*UJlR@`@_f=YGvdJb{i|<8QrT zP?yWk0F4lMIiLCM(u=LG=_QkPfxN)>utmGWcAx7Mh?W=iT4 z`{Ma&4}#9Ut`FRj=U&(Eec6$+XNA&E4%%9n@h6FMcZeUP=3eu{T=~xVpS6&dbwjBI ztB7A?mO#t;ZpZr}pY?pe{~G?+|7tSP(XP({A2HRoL_4^ zC56+}UyC`@5h$Ir!+y~QKnLgneRjF2cFm-+K(fr`mo}sBCF8+68iWWI&g+hyJN2wF z#oO^O4r!p`( zWRzRGl(&;Yu95=bPXHGyO+n9s<$j0pTLwwdxbeR7f*)-_3z{AOb1A$Z@`#mMmmWtk zIfFJsTSvOdbho2sLK(kyf4}uGB1|Q$OLCbPi|>QB-R!ObiI05)=e#WuuzywVZ+LDo z2@>1*r5YWbaBEa^p@Sa!H16^js)qO?O&ro8qqg1T#h*)4?;66DMh*mXY%5umSElcC zrMBK0&{=SnY+=0~Z~+d{`nV9FrM}g_FBu=nC@9_O`6hd%w^44*CE-Ji`A};Io2RjJ zkN@sHkhWYt9OEN`tLL-q50K4QqV26{?PYso(0sO^{@Vi0RHyQpG>fYRb~s<)+ucK= zFUr*yN=Z1RM!`)gcGODW5AQ4pf`w9v+sxCKMf z2sidUf#>m4umoBUTB50{Uhy)dzezP(-k_BSgB z#h41aKF24g89j}WV?!4B-o^vFIV=+4TV{8_IIRPiIHbH0sg|HI4bQkwN2r$mmx)ex z^>_5`5bh2J-wt@h`DaO3p53o4FGaG|JTJsWyIQT8z=yUV)J^ot5c4K<%a@~FZC|IX zAT%pah**QXe^qD36B!w&@Z~60q?wfeakF(4$TmmK4yR+TwHzuKjjHCo`Tl7o(NQ}W zl$ss#~{J$MyQ%Q-5*7D6CfVbGWGBT8w=zNVMyAMZ%M_osF#I7s*fF&MU9_L$5 zR~o@E#))1$p{P+E-#z$Dn8Pw|Rca}HlAJB0+2E&Z6r8Ba>-VzevD;vY}H;5?ouci4i= zm7hdyGHkaYng&)2_KsYZSH21xOBkPozFa@GE7JB%%o-nuKh~V%j|r@){<}9RFBd11 zfC4Nyqn$MkrOH0n^DDUyMS!O%C({K#+&_Z6kvq|D!TVFMG2=!sT~ttduwU@)RZ~U$ zl+@F#dOL#23#>Wx1uATXPo5|}5BZhm08c5`wyoM?!-rQ|H1Iw>nVn?}$?Z4^6#1sR zum5-zzaqq6q`qKGrV}!$f8u1YICvl8I!>5*$5DQ=eXdqIs$$nYp95|rMx@)-Rm>vm zX*o+sW-hf(vS_jgf4ovYB3T{R8EUt3TaiQ3eA6L2%?>OarTx)CJQ4KO#q!mW=OeUB zkM6}6K)KMdl~YT&wyZJ@c2^vii0Y@`6_=Xw;A7Nqca{+u*HBpc zffIq9c&$Dc@dzMoI>Pm#(!XDy z!XGM0d53xRDSJz~-N|nr1OoYAb$E zA8^O_Vv9@dllu?WP3!iKKdbCW=#7Z`O5~|+UKkl`(APVVFvryJGSMq%wAhHZdb9OP zSB>)?;IO`17$}`)f^yzFnouc2+nHI-%lh{$;Aq^@tXUxE}>W@_~xE=|=S z92?#pcRy7c-I$2bu*T9CHy@XtD14z%D{5rUqjy^4(j%WSlExVu5>O8-BB>IJv&$M6 ziuFt5+~zEbVAB7YWtUoP<)HR^_tdE2sU+SdgeAXbpKO$yM*E(%6x+LdRdoV9@q?#; z2-wsEBfFly?KpLvMhxD^7hKG99P^?9BDA>mn@b_`7a0$(dsrL*qJFyXbRBhnzqrBPaPy(w1*V)M=4ZSgZH{$F`{6TRr>f(eeo@?c zUuu2O*fjCqNIUUq`)8}^D`FVVMu-X>i4bJW=QZn~6Qaq3I_aHE*zfn=xNo~Jd_6$o z4`3Hg>~1(n@eC>MzX{EVt9?Y4_82tzXYOtAjC~c>sAHWl5-LLfilXj>D%&Zf*`1Xg z94_>jPDD^jF<^jwCh}f`h8%`!coIm~Zr@D)YDtwWm|yN(`Ta8;R4KK3n^2_Ur?J zb-k0djC-v2L7M=?-ZGc+JBal_iheJn?cHcU%#Uyk4)Ls_USxI}WYpVeu*aNYzicwQ zfldUx$pQsTV^nyI3f>=IiNrG`y^4?ek;hiyw~~_Q6kO8>|GCFyKsFNJpaym?VsN$G zww%>45Azgz!a==AYC@G32&qwcu8=RgML6LTx!k6-gFW|c5=YIV?2 zrb0-N2J^ee^{dUD9yrw+?kK5xJ4OsuOVx=YhPIT{Y!MoVXoX}XzeoAo=NHR&!GB4H7ya4|GERE$6 z{;FWO5st^PN+&ty^%7|bNEKDT_>y|;@-%hgHE!AmLEBbQEZ#z zJfnVxX2O9|lV|{^+rAmS>O~^@2AV985?J30rlb;RqgQUi7kD1Yk(Zal(M=G+z@r+f zkBrAwh@*kfXiU*TtM0$z)UiG>L0J*K@#=dm?=Y+Xg!Uz(Obd1gSrbo@<)}-xAJk^A z)P4FZZtknAm6og@#hY*+%WN2y76ZDfaZ+H)GZVKBqL&;;KidlL*xaJOdR&CS<5I{9 z!X_M=Z7Y{4uGL-XT7(u2c7AOn)N&ViI-qqjnxpdO;jRO3RK2W>r7h)mR!a8-iifPA zDj9*EqAbmaSadxKk*>=t*kH9>{4P4`XIt7RD@FK&&X$PYj1W-aqnD-Xf4{XV$}HCi z_a-j8R=Pek;TJYil_Y}Yt-I@MFFZabMH{<>o)=Gny!j-Utza>jWvdu!;|_^(Z}@(1 zxe+4fBF_t3hX57(NbQ}mqc68RDhyS%*EKDW(N(ua{56AWb&?S=U=Lo^M% zgO{JG9fh2#BE^l5LiMz3gnLjwV!mZcusp8}LQK?sViuZT`b7J)9u|n;?GOBE7C8Aa zpjJ-~_F@9PCaCMZ&FMAEwRFz9Ug*tO7PMI(ra-)$D|}6YbKSx0!2Jl)ZbCmJk1Q@$Ov*YyEhDH0}Q^ z@Ym(~00q}1;8?{{;PUlj|Ht#r$@@ihvqhvGkoqRcx+>dh`kfSqy(%Ie_(?#^slv}; z&x7}YAVr7zy0|2)&QG3`4N8@+il#e@^~6|K_ss1!v9Q7wqQ)hs*!VAa;1g*;OfSYA zXR7H9xNC}TrIMeEO`XJvGf;2B-yU1>Fz!pJ1e*0G*5&yL)AYUeE=<(gK2;wpd7IGC zXD4Fz-9%EBdK7c2gw4ZSDUoPrtv~S+JT^Un)Vw1^VCp@ANIseM@r*&q84Y`(^|ykF zc(t$2h}jYMX^Qp7OPyBMyn+YGQRYkFF$GQM$RZx zN>7-?n1}WdK~*Tnk} zkBAMNa zJ8;W~fVIrUdq6vpe%?`FU;@%NYINh1f}fv z$DFQU;6RQjC?%dEH8saRlOzNQnqcOUEt83vQk)!V{gqXr+*95#uhDe&Q4=>d;&)m0 z@S>T=Ch$b);IhwYvj&w(RbYnMLtM;a)51!dW&8(KzUj7=Fhc{f-wO9uJu#?O`Y;m@ zxOxce1;|Zc-X{aSQ3G5ayW*E|(&oE=$`Eq;yjhR|952y4Sz7v{L@bm~3I1@YcNj*Vgx5#|VU~+=rAKaRTEmR$*Lbcoh8GVZ| zc;Dj0w1<5EU+hL9L54!Vkd7PDh-`B@F$+(T2o(i;N)I}y3FBqvdz0xOHOwNc2y9AY z(ee@6%9HZXBv}K9EDv5(*h=VbH&l~NgZ?!KJ97~@Kfrw;?da#^Em54hlg25ruhXi1 z#?cJvA@9=~p1t5$cRlQ;&!*140q4R;YIAoWOjWffSyE zKJ)AA21!xFc2XCuV?e)nQpv8uK~M7Yns8Ie7f<1oywHq?$GmXn>2hTRtGP;R)~*Zt{34Zygc6mmQz zxk^9)tb=omZt-EiW;OoNM`=P%L|zRg^lA13YSfgNk9My8;&j{#pp*oyUZo#-W>W0p z4q9CShaf2fk59KJY`8S*&jrvoT<9u~$O0+iC>uk1D!SLEx+$H*w<|W%*Bc!OJ{3O} zLCNXY&h5!aab4s|zPM1^OM1W!tGJNc_21-G}T!+&^{qu)bJ?k2h&T#DL?Y{cW0t96ujl%j=c}_sq%Hjjm^cUWW-jclUW!1IOEK;0&w!Cgh}Ouh zjSF0Mn=?4def-C>9DOTDG{aM{+Xb&N{3B-qo>SDIqIy+Snw-88yNCB~f{;f&m2T}t z*uZwqlJpt~5P2f&9N1T5UZ#KV4$?k8$Xur)wqj*_CEQY9uR?fDCSWh3$Ji=@JTkj6 z_@*FcS99rSE&cUKqw}^ElAQ3SVZwvNfOo@Dc`1r_mh`lA4Y%Za=i0EHs|u+$G~7W0mrCsF40c@7=}vmx@v z%~IfQ;f;#0jdqaIgZr=eR`L~4kv*eFn`S7Yd8N@*9g)CS|Mi~%BQ62=)A4UNMZpi# z#tqc3%5(%GiLw5GNTVzS(}@RSwtIys*YlhWvOS zF(K*x@S)y)qR87q#4n}1J}zv4wa>~;OKcz}E*eo|#{e-vfcR!_?#CZ^DdY)tF`v6_ z=-*hp*8lV&j{mOT9vlBs#nk(Vr}uL7<_297intWkby(lFeG~+noB>9FLEAaEXV61t z>L6LTS6TT&EvMNT@C+$vGaex*8?^5`dsv#e9;YKd{ppmn<}f>qc}LXbj|hxQ209LC zvtAcA)qEz6VHnPm4J-Zfd`Kr?^+!UM3$>tCBF}o*_ef;%YK1jz-NMGvGN?ZOP5S&% z_!KGvX~g5Pla&fN%kYt3)rQMRO>IAPL*UaHKjL}ZJuh2!TeT3OroF`R)I6DSM}%+q z7N?o~sap9Xm84vkGI+7hVDL~MMd6j)!}&6o8yFMlpjvc7QT97Vl>3E$+>lG{<>#WF&T4+*|$b&j|7YSlM_ zVM_7fUK73J7U(mB^IjKb`3W?)dz)Jz_j`IAF~0GF$%4;btWf@O<*#@}KZp!>cG8^a zrO@NMRClS42RyJ73^ziW%shGn=cFjs@td6-7mjFMjQBvUS&K5f^i zQR=shIn91Wigigt)RlTm0N>DfWV+4-X-*?Qd{2ICKO^gJnz5dp@#N8!8Ss5c6>P4D zrDJeE+PCyZEQJ3Q`o=(2ZdK!U)fftDdynigOXO()C<0hF)$1s_RWpyckGPmYxY_lZ zV$WX3F(Pe=aGzer3Dxm{bztTBcH`=AZr(k91>||s_*Uny4N?OJetbmKy=}V^O8042 z1b9!UL1hZP*UXIzHIPbbKuqct7`&U0rQ~iLW4(I<*I{{&E6^n$owmdIs*Z50U2->kk8tAwX?MirA;G%Zz-TMSHwWr5qcsc9;q|#p zQ76T*&N{Rd+3Faq!J5xH8iti+Pl|pHl*gGy9%7nS%ha%7|)Mx#CD1SVSB0iYSDwEo!F#RLO*b! zPJrx(*&(J~B5&Haz2klo>WYTK$T-c`OmFg%Gd~{dXG~DRb)wB`# z`EC|d3B$o*MdeGgC{xIrj=Sqys#U9xITnuI4vzhXxjX!ejUv&WVMxRt-?^2Ql+(aO z#UZiie%_eP*rHrAv= z>4#6im_Qus^8vn-zYhBz_c+ZAvv*Q~DI7^DVPi)8E@+3dmsFU;gmd`YW#qzpB+o9{ z&KVqz*576v$E`BZJ`OFP*JxlkZ9FA-1@Gj+mvhGLWWOf^> zyKynG#(@Kwi>5C?^77>Lkpgmb?lIwi?xXM7^i<6RUn!$`wS0BgmZ49{%m&#b;@(Ec zXFP54FA!X|{Hc*ezF%g#WS!w+=p-$7>2|UQbPVQZXrf3ybx6h@GBV1(Zx+Ot0tv`O z-Ibt`{A{)*y{zCFt*ovcW9Vh1Ntl%XJ;z}#Wi52uI4ORL2G=NiL3K*EUm+@}&uWlE zR5WlxCID0>4~yl>ICHM!g2rb#LSED8r-5C9`BT5|uesK+-B#%)_a~Du!iW1I;vM+9 zK^BjHdSI)T%`&Vn)?$zNNm5pCTXJ1yCte(2d~_HPLw}76XJ}YivTv*0DR8kce&d0z z$>fL6KI|%z$CV+p!qN_RVlO1E@(=eT9`AS1bd4}jM_D?xd()Tita#n=cY)3hO2&w6 zJ)X8$c4Lb($(YdVf+^?1UI>JYI(yP>)k&+hM#JRuSz+57mhrIhPjd@X=DQy|93G(_ zzqV;o`P|}E;%?!CM?A6zLHsKn&rcn$;mH~Dw?DuvTo`m6WQw8_V8$;O+L zRxE@WK8_(g8O>WfZGKC{oEU=S--;2o&quj3t5op)k_l-Zz&>fa&nUV(BFPO3Sn=jL zWpiKQO5t6b&^I}8j!{y$EtGKJwwX8S7bqsfQ^;a*qDj(UJ!6~X|8YxY=gWLm2!cAB z&C-y^Kj0KD`YSo5GM)&0f#g#$FMxa(IWmW0Unburg?r^XzvC`iL;NsI7Wovmz%#qM zu_vzd&uAcKfPI(pO$Bs);11# zz9X;FsQ!7Mx^3TZV2|gNvl)wsL0}T5RBNyKLx+9?MLJZ~9f1!uW0TEf4zb0OKV_je z|4YU-cj3BEiw8xx;L7<}IMZy?Ue9nnou^+S5!}a|LA_d)UX-rfGMNL2 zt0$myPbevVm{o{)GJ&!?M$%c{RidV0t7r+ChT-xka3nCRr%ar%f)}xyKNTO68n6og z9%ukC@y*G(3UWje3ewx9)ygT<$y$R|Cak7Yu$Z5cM2rO*fQC;vnH(xyeAfiuZ#xb@ zM4Mk#N~9CVx%3u(OU(Rjb3A5zF*1l4$5-zlygyExqPpt%&PBUBAZ4S4%%LA{+r@4s zczD4D7!JijX&AnVkdh((wbE|H%q5h}^$oljL!FYHcf>>U8p)Cy5eEW6m`3N_7C@nk#c4% zPd2SU+KxJh#OURDGw$>vt-nxyb{$fVIw!ESg7nzJV% zOrbl^YzAQ*z=Zg{;6-!C^tm)`9+cgol-#pt{d@x@`wh>vJi{(MxEVRLK00V0Qg~%5(@^^PZV`))uil)6MoAw_Z8}sV^4`C2|z>=VXR;ipWm*;$+ zCj*I$#UJ;sdVr`l82~<3F-O$k#V!PJ#?}GwHj|z{qq=-(KF#^KK;xD-`5z44=_1F! z-&gkaK5$zfp)VjR#g`Yvaz0OW|s;0|C_)z;P1N&ya!3f`lrKP3aUPrRV z#GJZl*rR!}`apUKdQq$;^EhPBetdsv_AWSA?&SU!>gMzoSe9&K%18|?TfLD+O6<0- zIVr};`{R!ZS{uf9gV&h!J+z`fqp>e-8jF?{r)r&t6)j(tvstC7KANk07kR|xOCTAb z?5a`pD*M?&rh={{>W1a3EmMg7YSrZ4ut#B;8!G?!W35#FUpH-6Md0B!Y4M=GyfBd?l3>M2%0jwbcfoMnN^cuR5K7Ciy z^0f`#y3lup&&c44B4D|d!7SD%(4G^R<`Pzyw#eT;?kWotw*U`K2?rNw()%i*fPU3= z6Rog&r6S-z17oaMk$nn$SJ2HWH{;vpNNDi{zLGMQv$K{8PI*A=uuwlqsh7m)G)+Og zHOqppXIJ@Af~~flrY$d5v!{`5FEZ5(p;w@Zaoz$#o3y=xgBhww24x3b&U}#91q9eH6fgg*P^)3jCD}l=Zqi>E`)K1H$c& zr?=WnRR(J7cQ_f=^;+-?ASzdn&VUXGM>$?TzV2!;0=QMzE97)}VZdCY1OS4%?%G|W zcx@H|5QG%i8N4z*RGY?VBZP3?)A*{^u@P%;k`ZeRocMta(nr_6$0mM*UHF!X>A|L~ ziiqe!NLw9}ZUXVh;c}1O@a>@8Q~{yF;+NWX$yHG*%LW){!{1r|8nRs=4X&#>S`|Lr zK76<_jK*`w`RLuBVe@HReS$o%@E{1x=`{AUqM%cfK3YJy*gldl`A%XIs7I@b`RJ$* zw6k+`kk&MrOEdlQXvD(uv~aqUo}%)w{7uiCZotSYv5dyvUdGI|ZeVU-vLJ-t-Lh%_ z=$!5XR?#lvxHm9Sb3KWCOVuIgZGYb;hMit@mpqm6)?sRfrd3xQuHe1P+)v5I% zuQh=;ye?V;QY*%58$Vki7~}0x<*;shc+ntp15HtK<_-vDsy5)vSQTf6QD@GKuAZRb zzs@VEt~Wdjh3<*i8BN_&B8K+7qyS;3Gb?fBfYmz-r!!!@XoiP$>8XvbE>t-gwr=8Y7G0OmiwU7S^J#W`G9fu*@(V3FBQ!{FL-L^4Ni$#A-Ou7J~Vig zSYMgI8)z?QRsg-JzG;RZa(%{Yd(etEn3#(M7B#{J+5*yGC!=s5PcLZQ584g6FUirV zx6_%HoD)6ov*&X+g%;yMYiK>tCn3u2HCJnkZpi+P9;X(;^MA>OyOzxD_{>JuU$He*+ z>TeIHQG1Y{im+Y-DyoV7Ch~Ew=FvQsLp58ap30oF_MfD{bj7+i6we}(R?VvoC`{Z! z6+}ppq-t9i+NI51c-2MmUi`Y5l9KwxQViE9w7*{iG@#HZt@fp)!tkr~l23Ee!xwVM zB-gfG5&bupo6t87*s5L#L^j{$rQh(id}zylQrxF_dWDte``;NLb|QV+kFc&zy?GZ% zP?@)JU2Y-Zv|buuQBV4&y-!XQ(%J6ST2$U0p*JFW7BVx*9N<~4X9eRX1L-1&)1-lt2OBTZ+g zN5#O$fkEI|Zv66^&*o&*yw`81fg~e($0>LSpOa%y`NAC2vXr;U%yk}<$|!E z{AKlSemd0*;~e;M9nwCbTT?^RA|70=01)`Rjky7;g(P+`FkxPXwtx$U3zU-Z;Me{g zmoEwcPC45x@_X0+@PK9pgo^UMexgq^3$P}7)oj-yPM?1U0W+Chx=!c+ObjI9M8iba zrnijZ;z9roZC-_$KE&H>N(FBg?cUllqN9%eQlyx913^{wH|^Th$8LsPMbd9~N)6d{ z9Y{C-y|p?ZRCQ!s;<2%*`^NG}wwb}quTw2|d?~g*XDdU3gED0qyMYSYifuhGu0mcj zK2pVc_QG5<9-{1Aqwu}fYTK&2d(qWbV(@3r*kg#7S6+v|xm=L_wiNoEE@-dmUtd|- z*&T;g&>PZIshFsL>2N}@%zBeQBkNENTTPaO$1V@XNcWP8J-duOUJ!Npa=)SevW)hhzt!C zYX74h{c?1tM>;qYt)sbX@Hgf@HBWcMcLjW%;I=llC=1BO;N7B0RtY^lb27#I{5y0;c8=72V1& zuEmLAR-}1<|Bv&yz{m7oRzW#=&ohr2$^>y@MTA}}E~?J`f-`0B*z$cGPJCBY%PWbt z4)zf!h7}h2?#5c!3a&Bfi&qZdDd=psmkLs96G5vG1KjGbqw%J=7#BraA{f- zqq!OMl$mJPR@i*;?;5%RZ*UAv_rq;i;CWN-_B9DR(8W&v!MF#vAcbf^S#IMI|F%!h zC|Bp|e%rQeOpJ;)wf-3j^a!Wvu-@bKzd5KGtb0r$2=}tesg~S63>cQ8qQHXc(J_y~ zx5R^{c}4>cF+ka&p^op{E$I(bE?jT-7h4Al=#u4o8#vdC#DA;Q+2K6^dt}Pca>mc6 zamwOtXKyT8mlVwB`wWXjof3b^GA=q{&DQ=Q?n=Hx(V*%jELf%I3mnHxu}SbB6?8(>7WdFil%9J;-25KEy9u$8a{R zer5LA7?LW8jAi^cFm;tg1G*LBms3@FlFDbfV^o;sn15DAGv&j2<+}5iRW+S4)C)Zp zo}~b6kfnEj+o3ijYFiq43Mc%ILA`amn6)u6OT|7ZnG^fxYn~| zvqu&24q9od_zojFw6|v8ZPQs8R*hw)4XSJCISAEx>B)-tB?h4o-QO~>5~Nizf3KQ_-2Xc((pn7r-Y4}arjkfHC;kgqwew)Y*r!&RU9JK5813O4(1Jm7mk{Z(D= zsBoHTFj#>v*24xG>;#KE`AO!xv~~*nE=KF#=J|jvk@l=XBkA5?lK)_>;KwZ)YgjdD zhs;6ZS+w9nrH+msX#q9095E(z*35#CL?5@s^YGsY9yg)(^H-U zW^HzIt$<~%f)PD-shs}JpKvPf+`lv#V&D-aXWCS4cbRm?db83-c)jDOGpwEAZKWZ6 zNoPJddlp>RqUCUMKby!coe)3A#4q^!gMxR{u{{V^U&WnAuW-2LGAhWrF-|JHX}KSX z;-4Vi z_kil_bLi^S)THzfRv$`tyL@Ucusq70bJdly7Zr@5OvcmpGaucqE~9hKIe(oeFZ->Q zKL!5YQ!S&Ltt^&$twzLEQ#A!aiEnyKR&|1vO{YzfBKA$STuJJ@F3XA0(GUJI4+rpf&UorASo_0kw=*irtyr?(n=neZGp0MUbKrqHK!W5& z!f<~3R+ens1*fD4>B0dw%&$m2Okj|tDMpPxo1k?1DE33w$%HTesv!MV00Q~&$B2!G zRY?*3jg5@e6LBv}roQspI3+PMgmpEp%{xnWiBy@`Q`Y4#)FzEVR-UbBp*ypX5w&VX zll(i_6c|VK2!tx-PFY{K_b79>sA5%r`Zyqk_iTH+46#O9tx5Z%};fv~lk#kq-I##3s>u(cbI~hl<@}wU)p14A7Tl!uf1#LZaX2 z!Z7_&g@>#r9{&6&&}+;lF5jN6fOcE+-G4K$zGe4-j?PN_I~OE}^Ed>Uw*m}nwj0j9 z^6_8HJOP3k;+Bv2R}Pb}%eg{9hZfA_+OZITbcl*LLrFSVQpS2ljM>=>qqSDdr_9{*@9m7xRBLb=^@-Wnb69E=30w zL<9vT(n9Z5Q9uw-n)HAmB{b>Pz@R8Xq!=JUdJ#hJp(PZ7&_WpqB>@65)X*V>UcQL) zTi@ibtgNh?d)|FH`|Q2%JNJ#=$^ryz79Nl$M(o$Gyy|?MBor>AMhQEK{ z02WG~$RYf=?f%^_O#`c-DoW+wQia)DR5tKBd;qb@7B%vqI#joBMgLk@Z)L?oBT#4_ zg4vJ9f??1-?3ZqJ|$>-{_HiwKd9EG z=p}U#G_UDOvUB!_zq}MLgA>X10CtUS@WBX(;K`6OKx)HjrOvMA*ED?@#p$p^@;u)v>-jlo4rY6!doA1=qvZV8zzJhL}FfD26ENjc3pB0RLIQil|l zok@GNOEG!%LC^}`z!Xh#bWQ@H6V2EqEW}zz^;DfKP@%>XO6vHp= z_^iJ#41brBtIpcPQ~24cw%w%N$+Zl~L2KpD$8VOOw%_`;C%5$*Z_zE$D(J}0VdI}k z2FeXqu?nJhy>ear#jmFrZc)4R5RtiEWx8}+K;$fay#eorse{RMPpOllw8#T_G3eq zz>6y5>@kWt$O@8gA(edkM{DAwLu0-4&u;HGTq|BRI8N%S%>^!c@ zvlP1ocKhCNmD;y%Vr{rZMv2`d86mWP-pv}6g?#|B%10r3d_+08HGu*A4ecip-jMT! zc1o@6V-&&Tb|hrSIx3@f1eioamP91=EM2gw!v65&si(((Wv@_sFqK=Xi3kB8wlME?0N$((3tP{ zU3l%XU^qFXE%LyekdoO>D3&*bT|&L+aSpsvya@7;!7eyHL|b_29E4mZbkE(uDYU5? zl!Tp+Q6~`F%Sd>E=dGAQ)N5bN?BHMwM+LuQi?@S?!KhSP>_HElrn~YOY+XNUpEbv{ z7Pt@cwxPEeWdwnd*-kf!TDn_Gw7KoQuKq_!7}pV`K=7aVwHTbofX;o$Jv z?EyoD)`&Wpw_dl&L*=UH*jrLtKiTR7p0ZU}+Z5qJ#t%yCcgnNsFH-nGY4>}Sbry#C zn9fqKI+$h8M*K-Y%-;)OdXQIaGz7~yf9g%$r`2!)5;@y0#7>q^p5*w;3#s*xq~k8r zfwHkD^LWpt2N)Wd!M0#KZ*yhJ((6?D_S_8f&95W43Y@y#p{vTy%Pgs7SvBv+1 z2sCQB&O$?|x1v2a{wFNZK67KFQAVei*k5V)G-BF#W;BEvJ^p7__juo4;g9`Udb8t7 z7ln6&fsxAMqf?YCHzV`4Ac?6EKbJa>Z`X$hY-N-_An1#E;5|bR-|aezFJsL4S{8 zmDg- z*zQhwi2+h!wbfaKyxvQ5SdBDH)aMkj%$l-hv*=pogWM3zZFD%H-)W-HNVSYRnpGY` zWRU0is5KGD=>&{qc~bby5kc9oPO$KHxdQ*R6XIpC>?|?$&Q7|`r!plv6I&~ps+soq~?m`^Kv_&oR>iW&gS7D%n~X}LMh zBo9Ss1zn7ptH7-ToXFD-1?sp%_ru&vo7OTx&P5I~@9c;Yqy6_{49-3;oiYJOs%fMh z#(?9AHVKoe?V@G}Q~9HH7LFBcw2__{zAW?##p~YWYNSnaF@|0^sgHbR<1a3=H7HMI zFCo8llMYIMuacecH`|lKml5vZUlNp`8yyW^Yoix^cMCI1XN^bJZ&?~HE#J(%C)jqpkF#>U^7oA4`CK6EStu6U$=z>JuRaR(F{&sag5 zqLkrA7GC0LdV@f|#HXC571tL)$~_|W zxu*6C@LJwAr%^igO|29b#Xcjk@YfEfK}peq+WKPNUGjzUaZDi3bRiw^h!lp2LdZ<< z_z+C!vPU2s0}oD~ZX?GvFASObgbJ=ZRkbLfD8@lkg5<8+fM=Jrx<=jG-dmxLwDJAK3PQGfU(7o60%eOV%e0i=sX7)vWr;zol{r`>4xDRk{A z=ze#PZWlJqq84XbZab!@nEb#ugx6}>c+x~t9E=SIOEQLC<(k(?inCZSB@pyj`Ot*x zV{)1lD`E%K`2E{+`pEi+x*p)3F$M2Oa{~8x>sKMgnZzfAuhI% zr@eTik*39+)qE+-6`l38n)c!!J-*!~?EDC4vkIHW`gmB|*qF&e-5oV#Y@FwAP{*)@ zCLdLIt=G1GTgR!>z#VA8RCQ^YF!^n@GmJ8|&NVY`k|iv>cFjH`uh^LgwFrMx@<#vz zf|_qox7jCVP?7xZs9&jmqFlopKo@J26d~MrjxiyE)y&xEU8qsg<9x4Q!dwkch#5`p zpyyF4^*iJ>vm-o+|I76P1X)G~?V$B5Ocknn0IpLFOMdrxZP+|y?mTTdl;!w-GsrXX z10%#ILN>C4Cv*zf_r_AEwYN%A{@D1h8?JA8&YYpw(RljUzS0TOoofU0P>ykLM@)<|}Pd$3XAt3Yi}^7<+djXj>9Q!5Yo4 zK5@Los94MWUaTu2V^HwqA>IW*5@=@RB@L^kK+=wS<#u+^nbW;?DNNS|Bzcd#=_CB% zQ(U!+KaK*Q0G)3Cu-{nw81Z<6Y_Vy!+u&Jshr@X+k;B`U^MPfhI#4~cZBz01onVQ} zll$<=?k9OL=L1%$<6&8cybm4k4D3GZK~erxZd^W@G0h2xTE?Yu_Cm>#IE_1_x67v^ zM_|J@UZr=SWk><_Kn{3hP;uMOi>l}xf$x@=H_wXtqxyTJzv3?%b7fU7{L;qV-qHzJ z2k_Mw$rEAG0l>8ktoxte8p=Q-qn|=oU18zliYcVa%iSmME0XS4zGhJQ?0c=UzDDNPSZ0cU^_>frHIy)?;ZL>6 zb8-Ex&m_Sl_2io#r;2}wEsg0}1YKX14h_qKO6lUZ1x7Mv=X6M_&zHB0rdxV@gwjUc zkokT!rY(bIa86erPAM*UPm2y?_^JBaBuJBe?IUachx4?MXm7P>Octs29}k#T003w; zfp&t(e|(0&n&N1ufOmy*{vSWl*@6uxZqE)I{l3FIYXCF=P72h9<4?G^3gV&A93$ zq=nY%b$`qMAw~d^Kk-LQxk=i@artir2kWDA;>zzHp>81=UNy!E)UwGu8!7QE7w!Xd zst$f1K&tJm5zTXYp9(${4Bd7Ig8rUB-B3iw7D!hKm#o02ze{^^UY#732YFj+H(%NjYlgD}LHqc=7-{TPd2cR9Gj2H)GZf zOd|sC3xV;fYdXSgmo0z6?!EQ=bF?Q;k#2Q(Ls1eDf!{}OhCec*#sr~@wvRjUqsBL0 zTGTKvxXE!8Lr5a8>j_#ZDmU&wio3mh&}3UkjaIywpsb%xLG&9?M#46n0{G;?_y+rW<)|v;o6Vv7l#h_T<$Qz zd`Z#;w%S=a23J+Rl6F%mU}pZ0JD>H%^3?Ae=DlS42LJ=FfH(6yVT~SQUnW-P>)w>g z;dm8e*Tpb8p*#L@;AqRuwpM_z-=W;2KGtDaY<1yc4ZYzEn0-fKO{wG$XlH%mOCjMu zlBu%KCYU=z3Z?G`e)2HHcL)&s!8hSZ&W8oX7Zx&c;Eh@(?K+QS#6EkxY*)qh5ub)} z<`m*u(a%Ikes05kobX*R_xtCNfn2+hQHvRmu9JTaD}i%9P;!pnu+OVWwBwZkQ1x~l z$yWB>ozHH}^#6Wzm%HRqqSgV0SdR%OL z)RmJRcY(zsnq@=|U#H2!(gd6y8fOD(y)gh8*&64}v;d!JW_b_%n#4~~ zFjmLB+hl$b(VnlUeZtF(&(ceeFS+o_^IM)Bph)68RzxkSQc~|uoIEB|u2eZ~m!4xW z4={-ga8+Gxh^;ST3cdfly`kZRg=JN8d z=#C9okRKA1p0T(1C&zu8u8JFVAe$Liie9}-%K`!`PNCjBeX7->bve!Ee#(r$(_K?c z6D+|sFo|hJCl-EZZ*>_*ZXQ17p*8(#+LyQ1e&|vhG;sO6eylbyfA;b5Tk9?wRrg72 z>E;M$ndsDQG-k&FaOp}sXz`U-^|4d_&{XRFJ=1t8=EVUUwJp`a!C0##$f!*DwPgyl(=fMulzc+>|#x-^e-e*0FdZ&_5EL#@N zF{)Fl;+m2buQE4LF%jVnkH6p!1Z>#i^tCzuc0D6j$OAki5}CPK=dAux^!{k;}Y+K zH&M5%NZ@538^6+8Q=nvn+SfbUTEza=%K2}b8~K`rZi!u;8e=AeNl&A2+mN=-vCnRI z)Zf-eVwmz-1;1=bnrUP-mW!>JG-0oOb?@*M^Pe(x$q5xq8{UhLP!Vx=pt!VmVn!|x z{gk}!g3EMa8`8tg8zczJU+K3Sg}sG%`>EVz9&aG`zNdMv00P$0B-{jMW% z=amseZ1$a8tc#yOMMFRQT86%Y!4iv&g!zHmP08sh2Yt&Q#CzWTPIO|=5C66Bogb6} zaRcu0^=DOFd+%s}6h-HW*Z6n^33gN=G{yjg~FFQ+AXjK>URLuK{)A<9W zwc?l@ls`#7-{KDOK(V@q|CX}-yich`;zVf)OF;Elx&(}bL#q*-cHiajRILsBq3dg2 zP0yh!=RPm70@B58l=Y|_i=&ZaTQ+`E?}`^)DVq(BEHbBle#pc7G(ab_wt}>XoYX{! zm#L`vm=QEgVZ0uc#g!598J|8z9nX1FJmsnXGfV`wSgl=iL_3O)Gnj9Wd)Q0V#jAcM z(#hyvI<(=iW-0cr8D~h0DC;p1tzt`@jhaol=<(YEUDKwuW!eEerv65o-@*n#3X_dDO^ijR|k>&p`+`pSee12`7IQL2R|22^_=e{(ZoW(B|Fm$fRu$`g3G*oq- J7OPmj|38-6IwAl7 literal 0 HcmV?d00001 diff --git a/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/sept3.png b/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/sept3.png new file mode 100644 index 0000000000000000000000000000000000000000..233ee3456dda3223f23440f298add2e71a8e4068 GIT binary patch literal 36424 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 NLVV)91z*4a`X50?`_%vd literal 0 HcmV?d00001 diff --git a/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/userapps.png b/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/userapps.png new file mode 100755 index 0000000000000000000000000000000000000000..c303398c831189fcb02d01545bc468a0c21a9e88 GIT binary patch literal 2392 zcmV-e38(gnP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D2<=HkK~#8N?VUYt z8#@qy-!YsYSVfR3NC4L7x#H7goSRdZ_V%2K z9V$P}o9}gA`)!6lwJ^$6b z{1}d(-F!8#eq9dJWh^ITsSk_t;kSAJ{ocHO$Ha~jCt?sQuw8TMc)XZZ$jTFBQ6anY ztDCpvT#)VQb)GKg*o6GWy#8ia$KQT3v1262c(=JQC+qDbv8s@jr%DvEmz7<;J|kNU zPNsfU3&$B&m{KgPj<3vfx@Ga}%ADGIhSG&&zk0^lB?#1ktL*W7tDDPkj^q>DDV7<= zCa(CVNW!m<|Cl!)@Lail0mo6;a2%m4Ymhs}VxA=Z7w>+WGl-vk`U3H?%-`Ahvrj)s z9P5)}T$vEN*qGhj&TKC1Yb#_gW}m(tUdR__v!ko-_N@>_ITQ*Ze>E!*QMsCwR+n7t z`K>)?CCB}35vvm>uB1cTsH|J^m1%2zkjlg~(}leH>|})kbb!cMAxo=ilyNT8P!8t1 zH)l@DMcUP8Qa=jY=Sxxz9~iWLDMnvIxe*lS&TO~4*@UdCX5}f63%T6yCC9x&cIR-l zdV2jfr0Eed5viBCZA)K18cS`OCS;BztWvIVH4O4gD^-$D5;83VVaiIf$9!o8`{L7m zcATK~m2JT???+-nI{`0HSk3lIxhiB`6)Q(hA!J^-4k^yX+_}~5mEW#FA-gS*DMH2% zhrWC?mfAFzkiGD%)NnQGMd_tkN|COP9g>jkG1+nmKzXqBF@y@atP9}sR)mZqmtwv> zwRS?+0IZefhYTzM$sT+C#p3(^bu@wgBqektgWJMuAN z<@+F&iD~-xkh9ff7Rv=3B$tjeGMP%N;Bg_N$fGEd(nuFJ&r7N>&CF_Y#!1ETZ%wy;xtAYG(}F>27s{ZG}kFxRrNN(7a5n zL-2}nC`2L8%}{Djh{3IHj};JW6m4s)fr(cv(Wo@((=d zvnr5GX8zHh_B{O=HuFQ2mAs4^+sbsF3;i6v{I5 zXHtyGE8N?>wq?Ncmfd+TWbza^Dq$D1X?Icjwmx@EguJvYRmdDF|?i=tStd|GVATd=R(Cp+7loh9W^0KeQzfU`R_i&d^+`ZO7%6w;s8UR z;+t2-i+nTp&q*SeFivQk=(swhu^>&lnjL>YPoSPos;^AjN+=_?6IQc$EDF-6O=67# z1o>t{_Gxz@&$aKPt7E-&>1GfzwAsH`zV5tCI-Zm2$iVB2`_BiYYqw$E#%s4co`N(V zr25k9^np{(wJDTigS54UPwU{ymHOUCWy^wTWE2!WtY-g*nC}m5r&OO1gNuNF@Vh(a z-T-=j&i=WHUC0IGGmx2u$}|_NON%0v@%hR+J#u~12xX?#W8TIfxE!oMuR95l6*9zQ z9w%rk?1S#jZ$1m$a2n48SAR_aeDY((TPcOZV^Au|kiwVgI5)mMvg<$1=0 zY?-@%uwpDF(IVtb2JUtIC-gW}Oi3Qg2|1J*UQ=1sB1WVubA5Y0vTFklJwYLKd&x`rO28m5K*f&wB}(Kg2xPpze#$aweS*A*1mij1AJ`|R676lv#x)>q7pFrTpg)RweAo=b5m{JfR=-ZC!ZzSzeF_^#!7SoFwoLy}7<45VCUlD+gAiD0vO*r#mGZXK*UPZX zAkg}ruIoE5&QKN#IFa_HrFQSIF_6?I_ilRImIyVmy6|$ln zB|0|`5f!qc93?t850M5TD~h5he*+b=@+hERtd(%-73KIiG5-TK@sUu1gGuB70000< KMNUMnLSTZ [XUANTIE-RV/qemu](https://github.com/XUANTIE-RV/qemu) + +## QEMU (xuantie) 启动流程介绍 + +相较于实际的硬件平台,QEMU 的 Virt 平台是一个高度抽象的虚拟化平台,旨在提供一个通用的、与具体硬件无关的环境。它不像真实的硬件平台(如特定的 SoC)需要通过 SPL 或 U-Boot 的早期阶段来初始化 DDR(内存)或 eMMC(存储)。在 QEMU Virt 中,内存(RAM)和存储设备(如 VirtIO 块设备)由 QEMU 模拟器直接提供,并已经在模拟器启动时完成初始化。 + +![samrt_sept.svg](./figures/samrt_sept.svg) + +### OPENSBI 阶段 + +在 QEMU 环境下,OpenSBI 通常作为 RISC-V 系统引导流程的第一阶段,运行在 M 模式(Machine Mode),负责初始化硬件并为 S 模式(Supervisor Mode,即操作系统或裸机程序运行的模式)提供必要的服务。 + +在 QEMU 中,OpenSBI 是默认的固件,如果不使用 `-bios`进行指定,默认为`opensbi-riscv64-generic-fw_dynamic.bin`,该文件位于qemu源码的`pc-bios`目录下,定义在`qemu/include/hw/riscv/boot.h`文件中,用于 RISC-V 的引导流程。 + +> 更过详细内容可查看此文档,这里不再做过多介绍:[OPENSBI介绍](https://www.cnblogs.com/arnoldlu/p/18170952) + +#### OPENSBI编译 + +对于编译OPENSBI,可以通过克隆XUANTIE/opensbi仓库进行编译 + +~~~shell +git clone git@github.com:XUANTIE-RV/opensbi.git + +make PLATFORM=generic PLATFORM_RISCV_XLEN=64 BUILD_INFO=y DEBUG=1 CROSS_COMPILE=/opt/Xuantie-900-gcc-linux-6.6.0-musl64-x86_64-V3.0.2/bin/riscv64-unknown-linux-musl- O=build_rv64 +~~~ + +在`build_rv64/platform/generic/firmware`路径下便可查看到编译好的固件,使用时需要通过 -bios 指向固件位置 +>注:此处使用XUANTIE官方提供的工具链[Xuantie-900-gcc-linux-6.6.0-musl64-mingw-V3.1.0-20250522.tar.gz](https://www.xrvm.cn/community/download?id=4453617141140230144) + +### SMART阶段 + +SMART默认运行在S模式,起始代码入口位于`rt-thread/libcpu/risc-v/common64/startup_gcc.S`中,SMART就不过介绍,详情可查看[SMART简介](../../introduction/rt-smart-intro/rt-smart-intro.md) + +## 构建内核镜像 + +### 下载代码 + +下载 smart 用户态应用代码: + +~~~shell +git clone https://github.com/RT-Thread/rt-thread.git +~~~ + +### 配置工具链 + +工具链可以通过 [Xuantie-900-gcc-linux-6.6.0-musl64-x86_64-V3.0.2-20250410.tar.gz](https://github.com/RT-Thread/toolchains-ci/releases/download/v1.9/Xuantie-900-gcc-linux-6.6.0-musl64-x86_64-V3.0.2.tar.gz)获取 + +> 注:与编译opensbi的工具链不是同一个 + +下载完成之后,解压至/opt,然后打开 `~/.bashrc` 文件,添加环境变量: + +~~~shell +export RTT_CC="gcc" +export RTT_EXEC_PATH="/opt/Xuantie-900-gcc-linux-6.6.0-musl64-x86_64-V3.0.2/bin/" +export RTT_CC_PREFIX="riscv64-unknown-linux-musl-" +export PATH="$RTT_EXEC_PATH:$PATH" +~~~ + +### 配置内核 + +~~~shell +cd ./rt-thread/bsp/xuantie/virt64/c906/ #打开 rt-thread 项目目录中的 bsp/xuantie/virt64/c906/ 目录 +scons --menuconfig +~~~ + +基于 rt-thread 仓库的 bsp/xuantie/virt64/c906/ 构建内核镜像,最终生成 `rtthread.bin/rtthread.elf`,需要注意的是,内核默认支持 fat, 如果要挂载 ext4 的文件系统,则还需要额外安装 lwext4 软件包,即使能 `PKG_USING_LWEXT4` +>具体 menuconfig 路径是 (Top) -> RT-Thread online packages -> system packages -> lwext4: an excellent choice of ext2/3/4 filesystem for microcontrollers + +1. **选择 RT-Thread Kernel 选项** + + ![sept1](figures/sept1.png) + +2. **使能 Smart 内核** + + ![sept2](figures/sept2.png) + +3. **使能 lwext4 软件包(不使用ext4文件系统可不选)** + + ![sept3](figures/ext4.png) + +4. **执行 scons 编译** + + ![sept4](figures/sept3.png) + +## 制作根文件系统 + +1. **拉取 [userapps仓库](https://github.com/RT-Thread/userapps)**: + userapps仓库包含了一些应用程序和配置文件,能够快速生成根文件系统,并为 RT-Thread 操作系统构建所需的应用程序。 + + ~~~shell + git clone https://github.com/RT-Thread/userapps + ~~~ + + 在 `userapps` 目录中,将有如下文件: + + ![userapps.png](figures/userapps.png) + + - **apps**:存放应用程序代码,包管理文件夹及编译产物 + - **env.sh**:用于配置环境变量 + - **repo**:用于管理软件包的文件夹 +2. **配置环境**: + + ~~~shell + source env.sh + ~~~ + +3. **拉取工具链和编译根文件系统**: + 为了编译 xuantie 目标平台上的代码,您需要下载并安装交叉编译工具链: + + ~~~shell + cd apps + xmake f -a xuantie + xmake + xmake smart-rootfs + ~~~ + +4. **生成文件系统镜像**: + 生成的文件系统要与kernel互相匹配,如果在上述配置内核时没有使用ext4的文件系统,那么使用如下命令生成fat格式的文件系统,在build目录中生成 `fat.img`文件。 + + ~~~shell + xmake smart-image -f fat + ~~~ + + 如果kernel使用ext4的文件系统,那么使用如下命令生成ext4格式的文件系统,在build目录中生成 `ext4.img`文件。 + + ~~~shell + xmake smart-image + ~~~ + +## 编写自己的应用程序 + +1. **创建新的目录**: + 进入apps目录 + + ~~~bash + cd userapps/apps + mkdir welcome + ~~~ + +2. **创建 C 文件和 `xmake.lua`文件:** + + - **编写 `main.c`:** + + ~~~bash + vim welcome/main.c + ~~~ + + 内容如下: + + ~~~c + #include + + int main(int argc, char **argv) + { + printf("Welcome to RT-Thread!\n"); + + return 0; + } + ~~~ + + - **编写 `xmake.lua`:** + + 指定项目的构建目标,定义这些目标如何依赖源代码文件、头文件、库等。使xmake 知道如何将源代码文件编译成二进制可执行文件或库文件。 + + ~~~bash + vim welcome/xmake.lua + ~~~ + + 内容如下: + + ~~~lua + add_rules("mode.debug", "mode.release") + + target("welcome") + do + add_files("*.c") + end + target_end() + ~~~ + +3. **将创建的文件夹添加至build目录**:因为有些应用kernel还未支持,如sdl库需要图形显示等等。在`userapps/apps/xmake.lua`中的run_apps中添加文件夹路径 + + ~~~shell + local run_apps = { + "busybox", + "cpp", + "hello", + "shm_ping", + "shm_pong", + "smart-fetch", + "zlib", + "welcome", + } + ~~~ + +4. **重新编译**:因为编写了新的应用程序,所以重新编译uesrapps生成新的文件系统镜像。 + + ~~~bash + xmake + xmake smart-rootfs + xmake smart-image / xmake smart-image -f fat (根据kernel支持的文件格式选择不同的指令) + ~~~ + +### 运行 RT-Thread Smart 版 + +qemu下的smart运行需要三个文件,分别为`rtthread.bin`、`ext4.img/fat.img`、`run.sh`、,即内核文件,用户程序镜像,启动脚本。其中,`run.sh`位于bsp`rt-thread/bsp/xuantie/virt64/c906`目录,`rtthread.bin`编译完内核后与`run.sh`位于同一目录,`ext4.img/fat.img`在生成镜像后位于`userapps/apps/build/`目录。 + +将这三个文件放到同一个文件夹下,即可运行smart。示例如下: + +~~~shell +$ bash run.sh ext4.img + +OpenSBI v1.4 + ____ _____ ____ _____ + / __ \ / ____| _ \_ _| + | | | |_ __ ___ _ __ | (___ | |_) || | + | | | | '_ \ / _ \ '_ \ \___ \| _ < | | + | |__| | |_) | __/ | | |____) | |_) || |_ + \____/| .__/ \___|_| |_|_____/|____/_____| + | | + |_| + +Platform Name : riscv-virtio,qemu +Platform Features : medeleg +Platform HART Count : 1 +Platform IPI Device : aclint-mswi +Platform Timer Device : aclint-mtimer @ 10000000Hz +Platform Console Device : uart8250 +Platform HSM Device : --- +Platform PMU Device : --- +Platform Reboot Device : syscon-reboot +Platform Shutdown Device : syscon-poweroff +Platform Suspend Device : --- +Platform CPPC Device : --- +Firmware Base : 0x80000000 +Firmware Size : 323 KB +Firmware RW Offset : 0x40000 +Firmware RW Size : 67 KB +Firmware Heap Offset : 0x48000 +Firmware Heap Size : 35 KB (total), 2 KB (reserved), 9 KB (used), 23 KB (free) +Firmware Scratch Size : 4096 B (total), 328 B (used), 3768 B (free) +Runtime SBI Version : 2.0 + +Domain0 Name : root +Domain0 Boot HART : 0 +Domain0 HARTs : 0* +Domain0 Region00 : 0x0000000000100000-0x0000000000100fff M: (I,R,W) S/U: (R,W) +Domain0 Region01 : 0x0000000010000000-0x0000000010000fff M: (I,R,W) S/U: (R,W) +Domain0 Region02 : 0x0000000002000000-0x000000000200ffff M: (I,R,W) S/U: () +Domain0 Region03 : 0x0000000080040000-0x000000008005ffff M: (R,W) S/U: () +Domain0 Region04 : 0x0000000080000000-0x000000008003ffff M: (R,X) S/U: () +Domain0 Region05 : 0x000000000c400000-0x000000000c5fffff M: (I,R,W) S/U: (R,W) +Domain0 Region06 : 0x000000000c000000-0x000000000c3fffff M: (I,R,W) S/U: (R,W) +Domain0 Region07 : 0x0000000000000000-0xffffffffffffffff M: () S/U: (R,W,X) +Domain0 Next Address : 0x0000000080200000 +Domain0 Next Arg1 : 0x000000008fe00000 +Domain0 Next Mode : S-mode +Domain0 SysReset : yes +Domain0 SysSuspend : yes + +Boot HART ID : 0 +Boot HART Domain : root +Boot HART Priv Version : v1.10 +Boot HART Base ISA : rv64imafdc +Boot HART ISA Extensions : zicntr,zihpm +Boot HART PMP Count : 16 +Boot HART PMP Granularity : 2 bits +Boot HART PMP Address Bits: 54 +Boot HART MHPM Info : 16 (0x0007fff8) +Boot HART MIDELEG : 0x0000000000000222 +Boot HART MEDELEG : 0x000000000000b109 +heap: [0x003404c0 - 0x043404c0] + + \ | / +- RT - Thread Smart Operating System + / | \ 5.2.1 build Jun 13 2025 09:43:35 + 2006 - 2024 Copyright by RT-Thread team +[I/utest] utest is initialize success. +[I/utest] total utest testcase num: (1) +[I/drivers.serial] Using /dev/ttyS0 as default console +[W/DFS.fs] mount / failed with file system type: elm +file system initialization done! +Hello RISC-V +msh />/ # +/ # +/ # ls +bin lib proc sbin usr +dev lost+found root services var +etc mnt run tmp +/ # +~~~ + +## Features + +- vdso完整支持 +- 更多的qemu外设支持,如:网络等 +- 更多的userapps应用支持 + +### 联系人信息 + +如有意向咨询请联系: -- Gitee From 2bd641e29e4fd64c933a16d1876e3cf1b6dd08af Mon Sep 17 00:00:00 2001 From: rcitach Date: Thu, 19 Jun 2025 06:04:01 +0000 Subject: [PATCH 2/3] add rt-thread smart init doc --- .../figures/boot_sequence_riscv.svg | 1 + .../figures/early_mem_setup_sequence.svg | 1 + .../figures/rtthread_board_init_compact.svg | 1 + .../figures/rtthread_boot_sequence.svg | 1 + .../quick-start/qemu-xuantie/quickstart.md | 33 ++++++++++++++++++- 5 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/boot_sequence_riscv.svg create mode 100644 rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/early_mem_setup_sequence.svg create mode 100644 rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/rtthread_board_init_compact.svg create mode 100644 rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/rtthread_boot_sequence.svg diff --git a/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/boot_sequence_riscv.svg b/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/boot_sequence_riscv.svg new file mode 100644 index 0000000..5334585 --- /dev/null +++ b/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/boot_sequence_riscv.svg @@ -0,0 +1 @@ +RISC-V 内核启动时序CPU CoreCPU CoreMMUMMU物理内存物理内存SBI固件SBI固件内核入口内核入口MMU初始化阶段rt_hw_mem_setup_early()返回pv_offset(a0)alt[pv_offset ≠ 0 [需要重定位]]地址重定位"PC重定位_after_pc_relocation - a0""GP寄存器重定位gp = gp - a0""初始化栈指针sp =stack_start+STACKSIZE""设置异常入口csrw stvec, trap_entry"系统初始化sbi_init()调用SBI接口primary_cpu_entry()进入内核主流程关键寄存器状态:• a0 = pv_offset• x1 = 返回地址• sp = 栈顶地址 \ No newline at end of file diff --git a/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/early_mem_setup_sequence.svg b/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/early_mem_setup_sequence.svg new file mode 100644 index 0000000..f40db8b --- /dev/null +++ b/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/early_mem_setup_sequence.svg @@ -0,0 +1 @@ +早期内存初始化关键流程CPUCPUMMUMMU物理内存物理内存PV偏移计算读取_start实际地址读取_start_link_addr链接地址计算pv_off = 实际地址 - 链接地址页表准备对齐__bss_end获取early_pgtbl地址清零页表区域alt[pv_off ≠ 0 [需要重映射]]恒等映射建立1GB大页映射(PC当前运行区域)early_pgtbl[pg_idx] = COMBINEPTE(ps, MMU_MAP_EARLY)重定位映射loop[遍历虚拟地址范围]建立高地址映射(vs_idx -> ps)ps += 1GB激活页表写SATP寄存器(SATP_BASE | early_pgtbl PA)触发sfence.vma刷新TLB \ No newline at end of file diff --git a/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/rtthread_board_init_compact.svg b/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/rtthread_board_init_compact.svg new file mode 100644 index 0000000..a89b3c2 --- /dev/null +++ b/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/rtthread_board_init_compact.svg @@ -0,0 +1 @@ +RT-Thread板级初始化流程MMU初始化页分配器映射激活堆管理中断系统串口控制台系统时钟组件初始化rt_hw_mmu_map_init()• 初始化内核地址空间• 设置页表基址rt_page_init()• 划分物理页• 初始化空闲链表rt_system_heap_init()• 管理RT_HW_HEAP_BEGIN到RT_HW_HEAP_END区域1.物理内存2.建立映射3.动态内存4.中断5.外设6.时钟7.组件 \ No newline at end of file diff --git a/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/rtthread_boot_sequence.svg b/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/rtthread_boot_sequence.svg new file mode 100644 index 0000000..402d4d7 --- /dev/null +++ b/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/figures/rtthread_boot_sequence.svg @@ -0,0 +1 @@ +RT-Thread启动流程(SMP关闭)启动入口执行启动函数1. 板级初始化2. 子系统3. 线程初始化相关4. 调度启动primary_cpu_entry()• 关闭全局中断• 调用entry()rtthread_startup()rt_hw_board_init()• 内存堆• 外设• 控制台• ...rt_system_timer_init()• 定时器初始化rt_system_scheduler_init()• 调度器初始化rt_system_signal_init()• 信号初始化rt_application_init()• 应用初始化,创建main线程rt_system_timer_thread_init()• 定时器线程初始化rt_thread_idle_init()• 空闲线程初始化rt_thread_defunct_init()• 调度器初始化rt_system_scheduler_start() \ No newline at end of file diff --git a/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/quickstart.md b/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/quickstart.md index 291e05c..d0bcffa 100644 --- a/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/quickstart.md +++ b/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/quickstart.md @@ -36,7 +36,38 @@ make PLATFORM=generic PLATFORM_RISCV_XLEN=64 BUILD_INFO=y DEBUG=1 CROSS_COMPILE ### SMART阶段 -SMART默认运行在S模式,起始代码入口位于`rt-thread/libcpu/risc-v/common64/startup_gcc.S`中,SMART就不过介绍,详情可查看[SMART简介](../../introduction/rt-smart-intro/rt-smart-intro.md) +SMART默认运行在S模式,起始代码入口位于`rt-thread/libcpu/risc-v/common64/startup_gcc.S`中,SMART就不过介绍,详情可查看[SMART简介](../../introduction/rt-smart-intro/rt-smart-intro.md),这里说一下RT-Thread Smart内核初始化做了哪些内容 + +1. 早期初始化 +对于riscv架构64位的芯片,RT-Thread SMART的入口代码位于`rt-thread/libcpu/risc-v/common64/startup_gcc.S`目录中,在BSP目录下的链接脚本中可以看到内存的映射,SMART采用高位地址映射策略,将DRAM区域配置于0xFFFFFFC000200000起始处: + + ~~~lds + MEMORY + { + DRAM : ORIGIN = 0xFFFFFFC000200000, LENGTH = 0x1000000 - 0x200000 + } + ~~~ + + 但此时QEMU开始运行SMART时`$PC`仍然是低地址。在`rt_hw_mem_setup_early`中开始进行mmu初始化,建立SV39多级页表。具体流程如下: + + ![early_mem_setup](./figures/early_mem_setup_sequence.svg) + + 但此时`$PC`仍然位于低地址,这也是做恒等映射的原因。在页表激活后经过`_after_pc_relocation`将`$PC`指向高地址区域,如下: + + ![boot_sequence_riscv](./figures/boot_sequence_riscv.svg) + +2. 系统内部初始化 + 进入到`primary_cpu_entry`会执行以下流程: + + ![rtthread_boot_sequence](./figures/rtthread_boot_sequence.svg) + + 其他流程与系统相关,更多文档可以查阅rt-thread文档中心或官方论坛,这里不再过多说明,与BSP相关的主要`rt_hw_board_init`板级初始化 + +3. 板级初始化 + + `primary_cpu_entry`与`rt_hw_board_init`主要位于`rt-thread/bsp/xuantie/virt64/c906/board/board.c`文件,主要完成如下内容: + + ![rtthread_board_init_compact](./figures/rtthread_board_init_compact.svg) ## 构建内核镜像 -- Gitee From f94c265c45ab17b5b5cb6b8502de1954cde60471 Mon Sep 17 00:00:00 2001 From: rcitach Date: Thu, 19 Jun 2025 09:25:24 +0000 Subject: [PATCH 3/3] Added migration instructions --- rt-thread-version/rt-thread-smart/_sidebar.md | 3 + .../rt-thread-smart/port/riscv64/riscv64.md | 75 +++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 rt-thread-version/rt-thread-smart/port/riscv64/riscv64.md diff --git a/rt-thread-version/rt-thread-smart/_sidebar.md b/rt-thread-version/rt-thread-smart/_sidebar.md index 95e3805..666b14d 100644 --- a/rt-thread-version/rt-thread-smart/_sidebar.md +++ b/rt-thread-version/rt-thread-smart/_sidebar.md @@ -22,6 +22,9 @@ +- 移植说明 + - [riscv64架构移植说明](/rt-thread-version/rt-thread-smart/port/riscv64/riscv64.md) + - 应用开发 - [移植Linux应用到smart](/rt-thread-version/rt-thread-smart/application-note/port-app/port-app.md) - [使用VSCode开发GUI应用](/rt-thread-version/rt-thread-smart/application-note/sdl2/sdl2.md) diff --git a/rt-thread-version/rt-thread-smart/port/riscv64/riscv64.md b/rt-thread-version/rt-thread-smart/port/riscv64/riscv64.md new file mode 100644 index 0000000..0529406 --- /dev/null +++ b/rt-thread-version/rt-thread-smart/port/riscv64/riscv64.md @@ -0,0 +1,75 @@ +# RISCV64 移植说明 + +对于riscv架构移植,其对应的目录结构可以参考`/rt-thread/bsp/qemu-virt64-riscv` + +>注: 本文档只叙述 RT-Thread Smart移植相关的说明,在SMART运行之前理应有SPL、SBI等阶段,此处不再过多叙述 + +## 一、工具链获取 + +对于RT-Thread Smart来说,需要使用RT-Thread官方提供的工具链来完成 + +可以在[RT-Thread仓库](https://github.com/RT-Thread/rt-thread/releases)拿到 [riscv64gc-linux-musleabi_for_x86_64-pc-linux-gnu_252938-345d8b6e45.tar.bz2](https://github.com/RT-Thread/rt-thread/releases/download/v5.2.0/riscv64gc-linux-musleabi_for_x86_64-pc-linux-gnu_252938-345d8b6e45.tar.bz2?)工具链。 +> 注:此工具链只支持 lp64 ABI + +## 二、调整链接脚本 + +在`/rt-thread/bsp/qemu-virt64-riscv/`中`link_smart.lds`定义了内存布局,需要根据实际情况做出调整,或直接使用当前的设置。 +在链接脚本中添加了以下代码: + +~~~lds + +INCLUDE "link_stacksize.lds" +~~~ + +此处我们需要设置栈大小,具体方式通过 `scons--menuconfig`进行配置,该配置位于链接脚本同级的文件夹下的`Kconfig`中,在`SConstruct`中将设置好的值写入到`link_stacksize.lds`中,这里建议将其值设置为**16384及以上** + +## 三、完善libcpu + +### 文件说明 + +在[QEMU快速上手(xuantie)](/rt-thread-version/rt-thread-smart/quick-start/qemu-xuantie/quickstart.md)中的分析起始可以得知,`libcpu//risc-v/common64`中已经做好了相关内容该目录提供RT-Thread标准版及SMART版本对rv64体系结构支持,其中包括: + +| 文件名 | 文件内容 | 参考标准 | +| :---------------: | :------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| context_gcc.S | 线程上下文切换 | The RISC-V Instruction Set Manual Volume II: privileged supervisor-level ISA version 1.12 | +| cpuport_gcc.S | 线程统一入口 | | +| cpuport.c | 线程栈初始化 | | +| cpuport.h | 通用寄存器、浮点、向量寄存器个数定义,内存屏障接口 | The RISC-V Instruction Set Manual Volume II: privileged supervisor-level ISA version 1.12 | +| interrupt_gcc.S | 异常/中断处理、全局中断使能/关闭 | The RISC-V Instruction Set Manual Volume II: privileged supervisor-level ISA version 1.12 | +| io.h | 以字节、字、双字读、写IO地址接口 | | +| encoding.h | CSR寄存器定义 | The RISC-V Instruction Set Manual Volume II: privileged supervisor-level ISA version 1.12 | +| ext_context.h | 浮点/向量上下文保存与恢复 | RISC-V "V" Standard Extension for Vector Operations, Version 1.0 "F" Extension for Single-Precision Floating-Point Version 2.2 | +| mmu.c | rv64 sv39 mmu管理接口 | The RISC-V Instruction Set Manual Volume II: privileged supervisor-level ISA version 1.12 | +| mmu.h | rv64 sv39 mmu页表相关定义 | The RISC-V Instruction Set Manual Volume II: privileged supervisor-level ISA version 1.12 | +| asid.c | rv64 mmu asid支持 | The RISC-V Instruction Set Manual Volume II: privileged supervisor-level ISA version 1.12 | +| riscv_mmu.c | 使能/关闭S态访问用户态页表 | The RISC-V Instruction Set Manual Volume II: privileged supervisor-level ISA version 1.12 | +| sbi.c | 通过ecall调用SBI相关信息接口 | RISC-V Supervisor Binary Interface Specification Version 1.0 | +| sbi.h | SBI spec相关接口定义 | RISC-V Supervisor Binary Interface Specification Version 1.0 | +| stack.h | 线程栈数据定义 | The RISC-V Instruction Set Manual Volume II: privileged supervisor-level ISA version 1.12 | +| stackframe.h | 线程上下文保存/恢复 | The RISC-V Instruction Set Manual Volume II: privileged supervisor-level ISA version 1.12 | +| syscall_c.c | 系统调用处理 | | +| tick.c | S态时钟初始化及中断处理 | | +| tlb.h | tlb刷新/无效接口 | The RISC-V Instruction Set Manual Volume II: privileged supervisor-level ISA version 1.12 | +| trap.c | 异常/中断处理,包括中断分发及用户态异常处理 | The RISC-V Instruction Set Manual Volume II: privileged supervisor-level ISA version 1.12 | + +#### 移植指南 + +(1)增加新的CPU支持 + +创建`libcpu/risc-v//`新目录,同时在`libcpu/risc-v/SConscript`中增加该CPU。 + +(2)PLIC中断控制器支持 + +`libcpu/risc-v/virt64/plic.[c|h]`提供了符合《RISC-V Platform-Level Interrupt Controller Specification version 1.0.0 》标准的PLIC中断控制器驱动代码,可作为移植参考。 +`libcpu/risc-v/virt64/interrupt.[c|h]`提供了plic的使用,并对接到 rt-thread 系统,可作为参考移植 + +上述功能在`borad.c`下的`rt_hw_board_init`函数中完成初始化 + +(3)cache支持 + +`libcpu/risc-v/virt64/cache.[c|h]`提供了cache相关的功能,可作为参考。因为qemu中无法真实模拟cache行为,所以该文件中并未真正实现cache功能,但是要确保相关接口存在。具体实现硬件cache行为的可参考 +`libcpu/risc-v/t-head/c906/cache.[c|h]` + +(4)外设支持 + +外设至少要实现串口驱动在,可参考`bsp/qemu-virt64-riscv/driver/drv_uart.[c|h]`,该串口主要用来实现控制台输出,在`borad.c`下的`rt_hw_board_init`函数中完成初始化。 -- Gitee