From db2d3f2cdd40c92fecbef4491474621cb9b932a6 Mon Sep 17 00:00:00 2001 From: shinu_61 Date: Thu, 30 Sep 2021 13:46:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=BC=80=E5=8F=91=E6=9D=BF?= =?UTF-8?q?=E8=B5=84=E6=BA=90=E5=8C=85=E5=88=B6=E4=BD=9C=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../um/figures/SDK_manager.png | Bin 0 -> 79439 bytes .../rtthread-studio/um/figures/SDKmanger.png | Bin 0 -> 64358 bytes .../rtthread-studio/um/figures/fzip.png | Bin 0 -> 27229 bytes .../rtthread-studio/um/figures/toolchain.png | Bin 0 -> 28796 bytes .../rtthread-studio/um/studio-user-manual.md | 2043 +++++++++-------- 5 files changed, 1095 insertions(+), 948 deletions(-) create mode 100644 development-tools/rtthread-studio/um/figures/SDK_manager.png create mode 100644 development-tools/rtthread-studio/um/figures/SDKmanger.png create mode 100644 development-tools/rtthread-studio/um/figures/fzip.png create mode 100644 development-tools/rtthread-studio/um/figures/toolchain.png diff --git a/development-tools/rtthread-studio/um/figures/SDK_manager.png b/development-tools/rtthread-studio/um/figures/SDK_manager.png new file mode 100644 index 0000000000000000000000000000000000000000..9d2a046dd1e0530d38aa89a78ba55da06b8bab3c GIT binary patch literal 79439 zcmeFZWl&sE*Di>=yEHDrHMj=|F2UUi7Tn$4A;Ad}++7-n;2sF>?(RBGlJ~pct-4b) zw`%UcIW!H`eNOMa_F3|*XRY1git-Z32m}aVU|`5nl443=V31p2U=U+)FrZgRiRQ0C z&tOtwA}VefN6X$$fbGn854O&YdJKbXFtA9R@CE_f6$BqT(aC~L%=}nn2mCaI@=d6- z(~shiQl%;k6CHE;j*3gj_!d$#T9+JMcl8FA1y$#^r-OR|1*yeGTUU|kE%~vL z?WfnPVv91}mIjf0GV-@0tpg9tYnN};!igvB@1Yje-YzIcpbPisee&FIJGqfeM#A!9 ze~xK5q=E3iCldI9^PvAZK0*GJ_O9NHmpDIIROWU*(iNj%qLk_`W|tZn88dv?!q4E& z?4I0b=T3xr$vdTJI!3kC9C5(>doiO07376)^*h$HU~BG{dT6uy`fPy%)q<>y^q%$2 z!t}=2gl9K@q z0$?>E|R}zdkq-sJwmsQy?L+Ok*@y8U!1NwwA$nub#tl1_rivejbTxNW?Jq{NQscaF} z4T!TdWQdp*hp>k)s|`$|DNH)EA>T1I5mPGC@!!eKST|K5a_x$M{aK%KF>&L1@~qDk zQW!4B3#u27x-Blh+m@)T25etlPx}j*JJ2d#U&AOxAl4uxflNvjkyw6T4>z85ZB^@7 z3_n|0FscUR_N}LNBfhleC{iKj${OGb`qaW~cyEIAn>+Inhr2ho?wG72C;M-YeZSXMom;%2GarS8AFJrc&{?3Rh%z|zQ`>Px7T z=1U|vo2!1o{-ZKlK033=&+Yh-7nyvn8);TT5oSJ@l}!gFr4H?j^;WnQ%{M>hnjOt_ zlQnBXp4NRm2qq<=aBZ65efiHw&f154NfM_0!zgn&Fho4xN5q)Z1C3ap&iZ3j+6>6l zG;~W6g+I*Xn5t=qd=BMzL!;KwmiWL}MymjO3%@)DHTMBd$aEP3KomiFU%a)_gi}+$ zMTH6f!D_(Nyy0**$diOIC!2)AXS4}v*=3zgH}j7!CuNsb01?KYcJ%E>>q$n7L7%qS z3vqorX%Ya%ba1C(m2h?HS!FBa?*9fpWT;V(@Ck}D$k)&++>nn?_}{qpS`y9X2eb?>2{C{ z3&3*fh<43YNrjSC7FME?L~|#qR2@^o)~L}#ixN$#G8Fmt6+`OLXZK6mae1TNIxh?s z1QhipT`VNr|n0G)B0AQ_kKsDurr`l$}WFT`VIib_FnnMGL&5)Jo3n?28FK*;R76LnS(}( zoo;1=W<2HTt7)TulmWRvi!Pi@KyJ31?GBX(PooMnRTg&Mu$m$kewy{;6l^VI>)3MZ zq;69Zf|Qcu(AvTmsXxx}z5cg`dZyXW>1oP?U!B3+h)b(3%X{1|eH%Nwnp zC*B=bAKm{D`}rCZb?foITb=9eKW+|d-_>Qj^~^Q_<~|wD`h=}9PnmO>R@#gK>zn*k3eKIX001-O?5~wf;kXrc%c2E%rMArz-rMtpHE4K+s=fD z;zb$EY){fv z*KgCin)x@p)nR=-=(Hvabg+25IX-c1zsw9^ep!==T~~NHaz2PQM?_$Q*Dv4#X^93TBO%Nmst_rFqcPk3G(Qd0Ia?IJ>yR6n& z!%&}lT7|;%HF>odu>Ez*B58~h6)MdR`p&;qo%I_h{GLu<34hT4d6PUhSdop?41xEr zSx$DtA5TaB0|YoQkPiP&f-(3n902ye#sOe!UAu(3Q5)@c?muLN|6+zZ7Pd-(mV?%h zI6o#TTnTg`{xf9HSLgr52XjDep%CAt1XaG)jhG9mlC|$+AuW0&t3H$e10G4K1P~7R z`d+`FP7=;LBlG(owkc3-?nLJwTSl7x4k<=2SGEL)>LuHKt4DXf-B0DkeD^y1K1Jc6 zX-k|4wUy>bc)0OuzAG#7?}L<7GHQGVNf3@a z^QxX*SvZ!B*Sl<~o;ry5&*WfTpBH+^q;UB<-uWq{uB;|91={~z2d!#4ThVsSwGiCv zrG_;h%ZKRn+CaVgf*9{Cj3zuVy}GmEQQr0@{C`4XDT)``u(jU_`0KCaZ(@V_1y}km zbtA7{Do=S=3a?dm5Zu1hYKC45eCqgx@z3F6nl8re&Xx5%q(zh;Qi0hoU0W4q-#ms? z?srB4Z?keMd4?Ov`b`O31dC^tZ2sLIs&b$ozXU{OI}|Ac(X%qOi#*KBt1`AW3A ze{=)8Y~$;-{tA`hp~oO%(X;%#joVK`>h^sG6a4?&x6B&wdq|SYfD`=}!|Xz*RnSaB zo;h0I-;|TcG%~;YHyF#Wo8!f0#;iw_3f{^|@xl5-qBX>1E+E!Fsjpqf1#VTQhX3g* z`ftSlp`T&koyE$9XX&$qx?ex^$Bc3U;r?BPNDc!w`!T&X`6^k@(g_|8jH&JF*GF9c zKT2*sKiC@jR5Q$EWx`V=)%LTH{O?tW0oMP8c1e?jNWV!lT7r|K3u69pupn$4I?3{P zT|Yr$O~+ww^Z7h+8&%`wPSSuLlu`kdQqfE}f6kap;5;R`P!84aTiW0E_!^uxy|qP& zLLwNYTqtj7V^cBN`xlUF;p||?o%$Xy+nbEXo(%~tt5#l2e=#b;U4}G{X6mb{vt1Qz zz28aab~(aJ7^KvhwRVdCYp6-BX^kE%dJjQ!H;?CXfEpykINf1T+4(vL&kX0}f+6)u`YfU>d zFc4s!K7>7j#Jhw%Jvjl7ibjSCxF>3|_8{o-cBWZCZ~~2xA?VGk%r{2xSA%lzOKC}c zAMZcuxLjLzF4-HLP>yMV1o5!#4Yg^3RlX5g+q2EeG^<9i8Vs!86cGqSHLNN`?eXty zdy@lfg6jzOs>gsquSJEfmo($gniP#$9+(O&xZt3)Jt3Cq`jUaIWzOnGR1%KPsYnc!pMOldX+~i$tN`W{aKtQ@BscMYN== z4v)8IPq9LQciV(^H^AB|v)xxQnc4f!eSPD@dW6q0PYpg)07Bu@pQL@T{j4YkMl^TZ zP$3?*)`Om&ZN4r2FcY)0uu;g_o?l4$JjO};`e7#_{~16ZU3!hr(Wt#F4@K&07Vi@q zIYzeEPQRTVw;z{}CqcZ%JHfMl3JveUcdX~O%(?lSOZUkP%P?LB3{�EY<>ZGhTS! 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

l9O^VpDOSDX?=gY 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

M{#Tb~zj2aBan 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 W+>N<;BZqwoNW|0C&t;ucLK6ULV3F|v literal 0 HcmV?d00001 diff --git a/development-tools/rtthread-studio/um/figures/SDKmanger.png b/development-tools/rtthread-studio/um/figures/SDKmanger.png new file mode 100644 index 0000000000000000000000000000000000000000..1a3fa7a7fd19441f319459e8731ddce08ec484fa GIT binary patch literal 64358 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 YT#8iRFckp03f_A8LRGHlxsl(000ib8@Bjb+ literal 0 HcmV?d00001 diff --git a/development-tools/rtthread-studio/um/studio-user-manual.md b/development-tools/rtthread-studio/um/studio-user-manual.md index b790be7..7c6b6b4 100644 --- a/development-tools/rtthread-studio/um/studio-user-manual.md +++ b/development-tools/rtthread-studio/um/studio-user-manual.md @@ -1,948 +1,1095 @@ -# RT-Thread Studio 用户手册 - -## 界面介绍 - -### 界面简介 - -RT-Thread Studio 基于 eclipse 平台开发,界面设计和风格继承自 eclipse,RT-Thread Studio 启动后主界面结构如下图所示: - -![studio-frame](figures/studio-frame.png) - -### 透视图简介 - -透视图定义了当前界面呈现的菜单栏,工具栏,以及功能窗口集合及其布局。不同透视图提供了完成特定类型任务的功能集合。例如 C 透视图组合了项目开发,源文件编辑,项目构建等常用的开发功能窗口,菜单和功能按钮,调试透视图包含了调试项目程序常用的调试功能窗口,菜单和功能按钮。 - -RT-Thread Studio 已实现启动调试时自动切换到调试透视图,停止调试时自动恢复到 C 透视图,用户平时也可以根据需要从 ` 透视图切换栏 ` 手动进行透视图切换,切换到其它透视图进行相关工作。 - -### 功能窗口特性 - -#### 可移动 - -RT-Thread Studio 在初次打开的时候功能窗口位置呈现的是默认布局,但所有功能窗口位置都不是固定的,可以在窗口标题处按住鼠标左键,随意拖动窗口的位置,如下图所示左键按住 ` 属性 ` 窗口,拖动到 ` 项目资源管理器 ` 窗口下方,会出现一个灰色方框指示 ` 属性 ` 窗口将要被放置的位置,此时松开鼠标按键即可将 ` 属性 ` 窗口放置在该位置: - -![shuxing](figures/shuxing.png) - -#### 可恢复 - -当窗口拖乱了,或者整体布局不满意想恢复回默认布局的样子时,可以通过 ` 复位透视图 ` 菜单功能恢复默认窗口布局,如下图所示: - -![reset-see](figures/reset-see.png) - -#### 可关闭 - -每个功能窗口标题旁边都有一个 `X` 可以通过点击该处,关闭功能窗口,如下图所示: - -![can-close](figures/can-close.png) - -若想再次打开已关闭的功能窗口,可通过菜单栏的 ` 窗口 ` 菜单的子菜单 ` 显示视图 ` 菜单中再次打开对应功能窗口,如果当前菜单中没显示想要打开的功能窗口,可以点击从 ` 其他 ` 菜单中查找。 - -![open-set](figures/open-set.png) - -#### 最大化 - -每个功能窗口都有自己单独的工具栏,工具栏最右边是最小化和最大化功能按钮,如下图所示: - -![max-size](figures/max-size.png) - -在功能窗口的标题上双击或者点击功能窗口栏上最大化按钮,即可将窗口最大化,占满整个功能窗口区域,其它窗口将会暂时最小化到侧栏内,如下图所示: - -![max-pic](figures/max-pic.png) - -再次双击 ` 项目资源管理器 ` 功能窗口即可恢复之前的功能窗口位置和状态。 - -#### 最小化 - -点击功能窗口最小化按钮,功能窗口将会暂时缩小到侧栏位置放置,点击 ` 恢复 ` 按钮即可恢复原来状态,如下图所示: - -![restore](figures/restore.png) - -### 工具栏按钮介绍 - -#### 编译 - -选中一个项目,然后点击 ` 编译 ` 按钮即可完成编译,如下图所示: - -![](figures/compile.png) - -#### 重构建 - -选中一个项目,然后点击 ` 重构建 ` 按钮即可完成重构建,如下图所示: - -![](figures/rebuild_project.png) - -#### 构建配置 - -构建项目之前如果需要对项目进行构建参数配置,点击工具栏上 ` 打开构建配置 ` 按钮对项目进行构建参数配置,如下图所示: - -![build-entry](figures/build-entry.png) - -#### 调试配置 - -进行下载或启动调试之前如果需要对项目进行相关调试参数配置,通过点击工具栏上的 ` 调试配置 ` 按钮,可打开调试配置对话框界面,如下图所示: - -![debugentry](figures/debugentry.png) - -#### 启动调试 - -选中一个项目,然后点击 ` 启动调试 ` 按钮即可进入调试模式,如下图所示: - -![](figures/debuger.png) - -#### 打开元素 - -` 打开元素 ` 按钮其实就是一个搜索功能,可以指定搜索的类型,如下图所示: - -![](figures/open-element.png) - - - -#### 搜索 - -通过搜索菜单或者搜索按钮,选择对应的搜索功能,如下图所示: - -![search-menu](figures/search-menu.png) - -#### 打开终端 - -通过点击工具栏 ` 打开终端 ` 按钮即可打开终端选择界面,如下图所示: - -![terminal](figures/terminal.png) - -#### 打开 RT-Thread RTOS API 文档 - -通过点击工具栏 ` 打开 RT-Thread RTOS API 文档 ` 按钮即可打开 RT-Thread API 参考手册,如下图所示: - -![](figures/RTOS-API.png) - -#### 下载程序 - -` 下载程序 ` 按钮除了可以下载程序以外,还可以通过旁边的三角下拉按钮来切换调试器,如下图所示: - -![switchdebug](figures/switchdebug.png) - -#### SDK Manger - -`SDK Manger` 可以管理源码包、芯片支持包、开发板资源包、工具链资源包、调试工具包、第三方资源包,可以根据需要进行下载相应的资源。 - -![](figures/SDK-Manager.png) - -## 欢迎页 - -RT-Thread Studio 每次启动打开软件主界面后会展示一个最大化的欢迎页窗口,如下图所示: - -![welcome-page](figures/welcome-page.png) - -欢迎页左侧有四个便利的功能入口:` 创建 RT-Thread 项目 `,`RT-Thread 论坛 `,` 视频教程 `,` 帮助文档 `,直接点击相应的功能名称即可使用对应功能。欢迎页右侧展示了三类内容:` 最新动态 `,` 视频教程 `,` 最新 PR`,点击对应的标签即可查看或者浏览对应标签页的内容。 - - -## 新建 - -新建资源功能包括新建各类资源,例如工程,文件,文件夹等,新建入口有菜单,工具栏按钮,和工程右键菜单如下图所示: - -![new-resource](figures/new-resource.png) - - -## 导入 - -RT-Thread Studio 的导入功能不仅支持导入现有的 RT-Thread Studio 工程,还支持用户将 MDK/IAR 格式的工程导入到 RT-Thread Studio 中,便于用户迁移开发环境。 - -### RT-Thread Studio 项目导入 - -在 Studio 资源管理器窗口中点击右键,在下拉菜单中选择导入功能: - -![select_import](figures/select_import.png) - -打开导入功能向导,选择导入 RT-Thread Studio 工程: - -![select_rtt_project](figures/select_rtt_project.png) - -点击 **下一步** 后,点击 **浏览** 按钮选择要导入项目所在的工程目录,导入程序会自动扫描该目录下所有可导入的工程,将结果列出在项目列表中。在工程列表中勾选要导入的工程,然后点击 ` 完成 ` 即可。 - -![importdone](figures/importdone.png) - -### MDK 项目导入 - -开发者可以将现有的 RT-Thread MDK 工程直接导入到 RT-Thread Studio 中,MDK 工程在导入到 RT-Thread Studio 后,将有如下特性: - -- 保持原有项目的目录结构 -- 保持保持原有项目的源文件 -- 保持原有项目的头文件路径 -- 保持原有项目的宏定义 - -#### 导入示例 - -本小节将以 `bsp/stm32/stm32l475-atk-pandora` 工程为例,演示如何导入一个 MDK 工程到 RT-Thread Studio 中,导入前工程目录如下图所示: - -![image-20210311151949938](figures/mdk_0.png) - -在 Studio 资源管理器窗口中点击右键,在下拉菜单中选择导入功能,然后选择导入 MDK 项目到工作空间,然后点击下一步, 如下图所示: - -![image-20210311152111005](figures/mdk_1.png) - -点击浏览选择工程目录下要导入的 MDK 工程,选择 MDK的可执行文件,然后输入导入后的工程名,点击完成即可, 如下图所示: - -![image-20210315105833737](figures/mdk_2.png) - -导入成功后,会在原工程目录下创建 .rtt-studio 的工程目录文件夹,如下图所示: - -![image-20210311152405473](figures/mdk_3.png) - -项目资源管理器此时显示界面, 如下图所示 : - -![image-20210311152544090](figures/mdk4.png) - -当一个 MDK 工程被导入到 RT-Thread Studio 之后,原工程的组织结构会保持不变,如下图所示: - -![image-20210315104707598](figures/mdk_5.png) - -与原 MDK 工程相同,RT-Thread Studio Group 中的源文件也可以存放在工程的各个位置,而不必实际上按照这种组织结构而存放文件。 - -可以注意到导入的 Group 和源文件右下角有一个小方块和箭头指示,表示区别于原生 eclipse 那种所见即所得的文件组织形式。这种右下角带方框或者箭头标识的文件夹或者文件,在 RT-Thread Studio 中分别称为虚拟文件夹和链接文件。 - -此时直接在 RT-Thread Studio 中点击编译按钮编译成功后,如下图所示: - -![image-20210311152817183](figures/mdk_6.png) - -#### RT-Thread Studio 与 MDK 工程同步 - -为了方便工程可以畅通无阻地在 RT-Thread Studio 和 MDK 之间切换使用,在工程右键菜单中有 同步 MDK 工程的菜单,并且分为两个子菜单,可分别从 MDK 同步到 RT-Thread Studio 和从 RT-Thread Studio 同步到 MDK,如下图所示: - -![image-20210312103256691](figures/mdk_7.png) - -#### MDK 工程配置 - -RT-Thread Studio 定制了一套配置 MDK 工程的界面,只要打开工程设置按钮即可: - -![image-20210312103657961](figures/mdk_8.png) - -配置界面中主要包含有:全局配置,、C/C++ 配置、汇编语言配置、链接配置。在 C/C++ 配置中,配置包含路径和符号时,可以打开 Settings 来添加、编辑、删除已有的值,下图以配置包含路径 ( Include Paths ) 为例演示: - -![image-20210312104002319](figures/mdk_9.png) - -#### MDK 工程编译、下载、调试 - -与普通的 RT-Thread Studio 工程一样,直接点击下图三个按钮,即可执行编译、下载、调试,如果遇到下载或者调试没有反应,请在下载按钮右侧选择正确的调试器。 - -![image-20210312104616966](figures/mdk_10.png) - - - -### IAR 项目导入 - -开发者可以将现有的 RT-Thread IAR 工程直接导入到 RT-Thread Studio 中,然后就可以使用 RT-Thread Studio 提供的更多工程配置功能。 - -`IAR` 工程在导入到 RT-Thread Studio 后,将有如下特性: - -- 保持原有项目的目录结构 -- 保持保持原有项目的源文件 -- 保持原有项目的头文件路径 -- 保持原有项目的宏定义 -- 将原工程中使用的 libc 库相关配置转换为 newlibc -- 可以使用 RT-Thread Studio 提供的 RT-Thread 系统配置及软件包配置功能 - -注意 :目前仅支持 STM32 系列芯片的工程导入,后续会支持更多芯片。 - -#### 导入示例 - -本小节将以 `bsp/stm32/stm32f429-atk-apollo` 工程为例,演示如何导入一个 IAR 工程到 RT-Thread Studio 中,导入前工程目录如下图所示: - -![apollo_project](figures/apollo_project.png) - -在 Studio 资源管理器窗口中点击右键,在下拉菜单中选择导入功能,然后选择导入 IAR 项目到工作空间,然后点击下一步, 如下图所示: - -​ ![image-20210311151216392](figures/iar_1.png) - -点击浏览选择工程目录下要导入的 IAR 工程,然后输入导入后的工程名,点击完成即可, 如下图所示: - -​ ![image-20210311151747705](figures/iar2.png) - -导入成功后,会在原工程目录下创建 RT-Thread Studio 的工程目录文件夹,如下图所示: - -![generate_dirs](figures/generate_dirs.png) - -项目资源管理器此时显示界面, 如下图所示 : - -![windows_express](figures/windows_express.png) - -此时直接点击编译按钮编译成功后,如下图所示: - -![build_project](figures/build_project.png) - -#### 导入工程管理 - -##### 添加与删除源文件 - -如果想在导入的工程中添加源文件,此时只需要保证该文件存在于工程目录中,然后手动拖入到相应的 group 中。如果想要从工程中删除某个源文件,则可以右键点击该文件,在下拉菜单中选择删除即可,如下图所示: - -![add_file_1](figures/1587036090606.png) - -即可在工程中看到 README.md 文件: - -![add_file_2](figures/1587034628405.png) - -如果想要创建一个虚拟文件夹 (虚拟文件夹并不是真实存在的文件夹,并没有实际的逻辑结构,其显示的内容可能实际上是分散于若干个真实的文件夹中,虚拟文件夹只是起到了一个归纳和汇总的作用),可以采用如下方式: - -![create_folder_1](figures/1587034767730.png) - -![create_folder_2](figures/1587034943959.png) - -即可在工程中看到新创建的文件夹: - -![create_folder_3](figures/1587034996637.png) - -#### 导入错误说明 - -本小节将介绍在导入过程中可能出现的错误,以及遇到这类问题该如何解决。由于在导入的过程中要根据用户所导入的工程进行芯片检查以及一些文件的替换,有时会遇到芯片不支持或者文件找不到的情况,此时用户可以自行手动替换某些缺少的文件,使得工程可以构建成功。 - -常见的错误提示信息如下: - -- **ERROR STM32MP157AAAx doesn't support import to RT-Thread Studio now** - - 说明 RT-Thread Studio 暂不支持导入当前系列的芯片。 - -- **ERROR get IAR version failed. Please update the IAR installation path in rtconfig.py!** - - 说明找不到 IAR 的安装路径 打开工程目录下 rtconfig.py 文件 , 修改 IAR 的 **EXEC_PATH** 。 - - > elif CROSS_TOOL == 'iar': - > PLATFORM = 'iar' - > EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0' - -- **WARNING Can't auto specific link.lds file, Please specific a linker file mannually.** - - 出现这种错误意味着在导入过程中不能自动替换链接脚本文件,需要手动指定链接脚本的位置。 - - ![specific_linker_file](figures/specific_linker_file.png) - -- **WARNING Can't find xxx_startup_stm32fxxx.s, replace startup files failed.** - - 出现这种错误意味着在导入过程中不能找到可自动替换的芯片启动文件,需要手动添加启动文件到工程中。此时直接将可用的 gcc 启动文件拷贝到工程中,然后拖到相应的 group 中即可。 - -## RT-Thread 配置 - -### 打开 RT-Thread 配置界面 - -通过双击工程根目录下的 `RT-Thread Settings` 文件,可以打开 RT-Thread 配置界面,如下图所示: - -![pro-set](figures/pro-set.png) - -### 软件包中心 - -通过点击 ` 立即查看 ` 进入软件包中心,软件包中心首先展示了软件包的大分类,在软件包中心,可以先选择一个分类,也可以直接搜索软件包,点击搜索到的软件包进入软件包详情页面后,可以通过点击 ` 添加软件包到工程 ` 按钮将软件包添加到工程,如下图所示: - -![add-packages](figures/add-packages.png) - -当软件包成功添加到工程后,软件包中心会提示 ` 软件包添加成功 `,同时添加的软件包会显示在软件包层,该软件包依赖的组件也会被自动启用,例如添加 `pahomqtt` 软件包,`DFS`,`SAL`,`POSIX`,`libc` 组件会自动被启用,如下图所示: - -![pahomqtt](figures/pahomqtt.png) - -### 组件和服务层 - -在图标上双击可直接启用该组件。启用的组件是亮色图标,未启用组件为灰色图标。通过在组件和服务层的图标上右键弹出可操作的右键菜单,如果该组件已经启用,则该组件的右键菜单有 ` 停用 `、` 查看依赖 `、` 详情配置 ` 三个选项,如果该组件未启用,则该组件右键菜单只有 ` 启用 ` 选项,如下图所示: - -![component](figures/component.png) - -### 查看依赖 - -在启用的组件上右键选择`查看依赖`,可以查看该组件被哪些组件依赖,例如查看`pin`组件的依赖,`依赖关系图`窗口显示`pin`组件依赖了`gpio`,如下图所示: - -![see-depend](figures/see-depend.png) - -### 查看详细配置 - -在启用的组件上右键选择 ` 详细配置 `,可以打开该组件的详细配置树形界面,例如在 `DFS` 上右键选择 ` 详细配置 `,打开的属性配置界面如下图所示: - -![detail-set](figures/detail-set.png) - -#### 详细配置 - -当打开 RT-Thread 配置界面的时候,详细配置默认是隐藏的,通过启用的组件的右键菜单 ` 详细配置 ` 或者 RT-Thread 配置界面侧栏按钮,可以将详细配置界面调出来,侧栏按钮位置如下图所示: - -![open-detail](figures/open-detail.png) - -详细配置界面即右侧的树形配置界面,树形配置界面分成了四大类配置: `内核`, `组件`, `软件包`, `硬件` 。通过标签可以切换不同的配置类别,点击侧栏按钮可以隐藏该属性配置界面,如下图所示: - -![look-detail](figures/look-detail.png) - -#### 搜索配置 - -当需要搜索某个配置的时候,需要在详细配置里选中任意配置树节点右键,会弹出 ` 搜索 ` 菜单,或者在详细配置里选中任意配置树节点后,按下快捷键 `Ctrl + F` 即可弹出配置搜索对话框,输入搜索关键词点击搜索即可搜索出所有匹配关键词的配置,在结果列表里选择不同结果查看时,配置树会自动跳转到对应配置位置,如下图所示: - -![search-set](figures/search-set.png) - -#### 保存配置 - -当配置修改后,`RT-Thread Configuration` 标签会有脏标记,配置完后要记得点击 ` 保存 ` 按钮,将配置保存并应用到工程中。保存的时候会弹出进度提示框,提示保存进度,如下图所示: - -![save-set](figures/save-set.png) - -## CubeMX 配置 - -RT-Thread Studio 为 STM32CubeMX 提供了快捷的配置入口,可将 STM32CubeMX 配置的内容应用到 RT-Thread Studio 的工程中,不需要用户手动去搬运代码。**前提是您的电脑上已经安装了 STM32CubeMX 软件**。目前只支持完整版或者 Nano 版的基于芯片创建的 ST 系列的工程。 - -### 启动 STM32CubeMX - -这里以 stm32f411RE 为例,演示如何打开 CubeMX 配置。 - -双击工程目录下的 CubeMX Settings, 可以看到执行 CubeMX 的进度框: - -![image-20210312105629551](figures/cubemx_0.png) - -等待十几秒,第一次打开可能时间会稍长,可以看到 STM32CubeMX 已经打开。 - -### 配置 STM32CubeMX - -您可以根据你的需求进行配置,配置完成后,点击 GENERATE CODE,然后点击右上角关闭: - -![image-20210312110838150](figures/cubemx_1.png) - -关闭时,STM32CubeMX 会提示您 cubemx.ioc 已经被修改,是否要保存配置,请点击 Yes,这样您做的配置才会在 RT-Thread Studio 的工程中生效: - -![image-20210312110054727](figures/cubemx_2.png) - -查看工程目录,您会发现在工程目录下自动生成了 STM32CubeMX 的代码: - -![image-20210312110932425](figures/cubemx_3.png) - -接下来,您就可以正常的编译啦。 - -## 代码编辑 - -### 编码修改 - -- **设置当前文件的编码格式** - - 在当前文件中,按`Alt+Enter`,会出现下图所示界面。可以看到设置编码格式的选项(如图中红色矩形所示)。下拉列表中可以选择想要的编码格式。 - -![](figures/Encoding_01.png) - -- **设置当前项目工程(Project)的编码格式** - - 选中你所创建的项目,右键点击会弹出以下界面,选择最下面的一个选项`属性`(图中红色矩形样式),点击进入。 - -![](figures/Encoding_02.png) - -点击`属性`之后,弹出以下页面,默认的是`从容器继承`,我们选择`其他`, 下拉框选择编码,然后点击`Apply and Close`即可 - -![](figures/Encoding_03.png) - -- **设置工作区间的编码格式** - - 通过`窗口`菜单打开`首选项`窗口弹出如下图界面: - -![](figures/Encoding_04.png) - -​ 点击`常规`选项后再点击`工作空间`会出现设置编码格式的选项。默认的是`缺省值(GBK)`,这里我们选择`其他`,下拉框选择编码,然后点击`Apply and Close`即可 - -![](figures/Encoding_05.png) - -### 编辑 - -通过 ` 编辑 ` 菜单或者直接在源码编辑器内右键菜单,可以选择对应的编辑系列功能,如下图所示: - -![code-edit](figures/code-edit.png) - -### 源码 - -通过 ` 源码 ` 菜单或者直接在源码编辑器内右键菜单,可以选择对应的源码系列功能,如下图所示: - -![source](figures/source.png) - -### 重构 - -通过 ` 重构 ` 菜单或者直接在源 码编辑器内右键菜单,可以选择对应的重构系列功能,如下图所示: - -![rebuild](figures/rebuild.png) - -### 导航 - -通过 ` 导航 ` 菜单或者直接在源码编辑器内右键菜单,可以选择对应的导航系列功能,如下图所示: - -![start-menu](figures/start-menu.png) - -### 搜索 - -通过搜索菜单或者搜索按钮,选择对应的搜索功能,如下图所示: - -![search-menu](figures/search-menu.png) - -### 辅助键 - -通过 ` 帮助 ` 菜单的子菜单 ` 辅助键 ` 查看所有的快捷键,如下图所示: - -![help-bottom](figures/help-bottom.png) - -## 构建配置 - -### 构建配置入口 - -构建项目之前如果需要对项目进行构建参数配置,点击工具栏上 ` 打开构建配置 ` 按钮对项目进行构建参数配置,如下图所示: - -![build-entry](figures/build-entry.png) - -### 配置头文件包含 - -若要增删改头文件路径,在 ` 工具设置 ` 配置页,点击 `GNU ARM Cross C Compiler` 下的 `Includes` 配置项即可打开头文件路径配置参数,点击 `Inlucde paths(-I)` 配置栏相应的按钮即可进行头文件的增删改操作,如下图所示: - -![path-include](figures/path-include.png) - -### 配置宏定义 - -若要增删改宏定义,在 ` 工具设置 ` 配置页,点击 `GNU ARM Cross C Compiler` 下的 `Preprocessor` 配置项即可打开宏定义配置参数,点击 `Define symbols(-D)` 配置栏相应的按钮即可进行宏定义的增删改操作,如下图所示: - -![setmicro](figures/setmicro.png) - -### 配置链接脚本 - -若要增删改链接脚本配置,在 ` 工具设置 ` 配置页,点击 `Cross ARM C Linker` 下的 `General` 配置项即可设置链接脚本文件,点击 `Script files(-T)` 配置栏相应的按钮即可进行链接脚本的增删改操作,在 `Script files(-T)` 下方有一些基本的链接参数可配置,如下图所示: - -![setlinkscripts](figures/setlinkscripts.png) - -### 配置外部二进制库文件 - -若要增删改外部二进制库文件,在 ` 工具设置 ` 配置页,点击 `Cross ARM C Linker` 下的 `Libraries` 配置项即可设置外部二进制库文件,点击 `Libraries(-l)` 配置栏相应的按钮即可进行库文件的增删改操作,在 `Library search path(-L)` 配置栏配置库文件相应的路径。 - -如下图所示: - -- 项目本地新增 GCC 二进制库文件,命名为:libxxx.a(如图中示例 libwifi_1.0.0_gcc.a)。 -- 在 `Libraries(-l)` 配置栏增加二进制库文件名称:xxx(如图中示例 wifi_1.0.0_gcc),注意需要去掉前缀 `lib` 与后缀 `.a` 。 -- 在 `Library search path(-L)` 配置栏,添加该库文件所在的路径。 - -![add binary library](figures/add-binary-library-re.png) - -![add binary library cfg](figures/add-binary-library.png) - -### 如何生成 HEX 文件 - -选中工程后,点击工具栏上的`打开构建配置`按钮,将相应的输出文件格式设置成 hex 文件格式,即可实现输出 hex 文件,如下图所示: - -![hexfile](../faq/figures/hexfile.png) - -如果需要同时生成 bin 文件和 hex 文件,需要在`构建后步骤`里添加构建后生成 HEX 文件的命令,如下图所示: - -![binfile](../faq/figures/binfile.png) - -构建后生成的 hex 文件,在工程的`Debug`目录下,如下图所示: - -![buildhe](../faq/figures/buildhe.png) - -### 配置其它 - -配置其它构建参数可直接在 ` 工具设置 ` 配置页面中选择相应类型配置树节点,并设置其提供的详细配置项,配置完成后,点击 ` 应用并关闭 ` 按钮配置即可生效。如下图所示: - -![setother](figures/setother.png) - -## 调试配置 - -### 调试配置入口 - -进行下载或启动调试之前如果需要对项目进行相关调试参数配置,通过点击工具栏上的 ` 调试配置 ` 按钮,可打开调试配置对话框界面,如下图所示: - -![debugentry](figures/debugentry.png) - -### 调试配置项 - -选中一个调试配置后,调试配置对话框将展示所有配置项,配置项通过 ` 配置项分类标签页 ` 进行了分类,通过点击不同 ` 标签页 ` 展示不同类别配置项,修改配置项后,点击 ` 确定 ` 按钮即可保存配置修改,如下图所示: - -![debugset](figures/debugset.png) - -## 下载功能 - -### 切换调试器 - -目前 RT-Thread Studio 支持 JLink 、ST-Link、DAP-Link 以及软件仿真器 QEMU,新建工程的时候可以在新建工程向导里选择硬件调试器也可以选择软件仿真器 QEMU。工程创建好之后,如果想切换硬件调试器或直接进行软件仿真,可以通过工具栏下载程序按钮旁边的三角下拉按钮来切换硬件调试器或软件仿真器 QEMU,如下图所示: - -![switchdebug](figures/switchdebug.png) - - -## 调试 - -### 调试常用操作 - -当调试启动成功后,程序会在 main 方法处挂起,这时可以通过工具栏上的调试相关操作按钮或者快捷键进行常用的调试操作,如下图所示: - -![debugopt](figures/debugopt.png) - -### 启用汇编单步调试模式 - -点击工具栏上的 ` 汇编单步模式 ` 按钮,会自动打开 ` 反汇编 ` 功能窗口,此时 ` 汇编单步模式 ` 按钮呈凹下去的状态,代表此时处于汇编单步模式,如下图所示: - -![asmstep](figures/asmstep.png) - -当进入 ` 汇编单步模式 ` 后,所有单步调试操作将变为以一条汇编指令为单位进行单步执行,此时指令跳转情况可以在 ` 反汇编 ` 窗口进行查看。 - -若要退出 ` 汇编单步模式 `,直接再次点击 ` 汇编单步模式 ` 按钮即可。 - -### 查看寄存器 - -通过 ` 窗口 ` 菜单的 ` 显示视图 ` 子菜单,选择打开 ` 寄存器 ` 窗口即可查看核心寄存器,如下图所示: - -![seereg](figures/seereg.png) - -### 查看外设寄存器 - -点击 `Peripherals` 窗口,让 `Peripherals` 窗口显示在最前面,若 RT-Thread Studio 存在相应的 svd 文件,该窗口将会显示所有外设名称及其地址和描述。可在 `Peripherals` 窗口勾选要查看的外设,内存窗口将会显示该外设的所有寄存器的名称及其地址和当前值,如下图所示: - -![seeperial](figures/seeperial.png) - -若需要修改某个寄存器的当前值,可以直接点击进入寄存器 `Value` 那一列,输入想要修改的值后,敲击回车键即可执行修改。(注:只有可读可写的寄存器可以修改值,只读寄存器无法修改值。) - -![editreg](figures/editreg.png) - -### 查看变量 - -点击 ` 变量 ` 窗口,让 ` 变量 ` 窗口显示在最前面,即可查看当前程序挂起时所有可见的变量,点击 ` 变量 ` 窗口最右边的三角下拉菜单,可以设置变量显示的数值格式,如下图所示: - -![seevalue](figures/seevalue.png) - -### 查看内存 - -点击 ` 内存 ` 窗口,让 ` 内存 ` 窗口显示在最前面。点击 ` 添加内存监视器 ` 按钮,在弹出的输入框内,输入要查看内存的起始地址,点击 ` 确定 ` 即可添加要查看的内存,如下图所示: - -![seememreg](figures/seememreg.png) - -添加内存监视器后,内存窗口会立即展示刚输入的内存起始地址的一段内存,如下图所示: - -![seemem](figures/seemem.png) - -### 断点 - -在源码编辑窗口边栏,双击即可设置断点,再次双击即可删除断点,打开 ` 断点 ` 窗口即可查看和管理所有断点,通过 ` 断点 ` 窗口工具栏可以进行删除,取消等断点管理操作,如下图所示: - -![breakpoint](figures/breakpoint.png) - -### 表达式 - -在源码内选中表达式后点击右键,选择 ` 添加监看表达式 ` 即可将表达式添加到 ` 表达式 ` 窗口,或者直接点击 ` 表达式 ` 窗口内的 ` 添加新的表达式 ` 通过直接输入的方式,添加想要查看的表达式的值。 - -![addformat](figures/addformat.png) - -### 取消启动调试前的自动构建 - -首先通过`窗口`菜单打开`首选项`窗口,然后展开`运行/调试`选项并点击进入`启动`选项,最后将`在启动之前构建(如必需)`选项取消勾选即可取消启动调试前的自动构建,如下图所示: - -![bulid_cancel](../faq/figures/bulid_cancel.png) - -## 模拟器仿真 - -### QEMU 模拟器仿真 - -QEMU 是一个支持跨平台虚拟化的虚拟机,它可以虚拟很多开发板。为了方便在没有开发板的情况下体验 RT-Thread,RT-Thread Studio 提供了 QEMU 模拟仿真调试器。 本文主要介绍在 Windows 平台上使用 RT-Thread Studio QEMU 模拟器进行仿真。 - -#### 创建工程 - -点击新建一个工程,选择或者设置各个配置选项,Adapter 配置项可以先选择 QEMU,并且配置适合的模拟器。目前的最新版本中,系列、子系列需要手动选择,还未与模拟器支持的系列关联起来。点击完成,即会在工作空间中创建一个 QEMU 调式的工程。 - -![qemu](figures/qemu_new_project.png) - -#### 切换调试器到 QEMU - -如果当前工程为老工程或者当前选择的调试器是 QEMU 以外的调试器,想使用 QEMU 进行调试,可点击下载按钮右边的下拉框,选择 QEMU : - -![qemu](figures/switch_to_qemu.png) - -若当前工程还未配置 QEMU ,那么在选择 QEMU 后,会弹出【跳转到配置界面】的提示,点击【是】,会显示 QEMU 配置界面,具体详情将在下一节介绍。 - -![qemu](figures/switch_qemu_prompt.png) - -#### QEMU 配置 - -点击【打开调试配置】或者其他情况下跳转到 QEMU 配置界面,需要配置的参数如下: - -| 参数 | 英文 | 命令 | -| :-----------------------: | :------------------------: | :-------: | -| 开发板型号 | Board Name | -M | -| 支持 Cpu 的数量 | Cpu Quantity | -smp | -| 是否支持网络 | Enable Network | -net | -| 是否支持图形 | Don't open grapgic windows | -nographic | -| SD 卡内存大小 | SD Card Memory | -sd | -| 额外的命令 | Extra Commands | 无 | - -填写完整后,点击确定,即可正常进行调试和运行。 - -![qemu](figures/qemu_configure.png) - - - -#### 仿真调试 - -在编译正常的情况下,点击调式按钮,IDE 会自动启动 QEMU 并打开串口,并进入断点调试模式,在此模式中,可一步一步观察每次断点的输出情况,亦可在串口中执行自己的命令。 - -- ** 注:在 windows 上 QEMU 不支持上下键查看历史命令。** - -![qemu](figures/qemu_debug.png) - -#### 网络仿真 - -- 基于开发板创建一个 stm32f4 的工程 - -![](figures/qemu_network_new_stm32f4.png) - -- 打开 RT-Thread Settings ,使能 SAL, 切换到 【硬件】栏,使能以太网,Ctrl + S 保存配置,编译 - - ![](figures/qemu_network_rt-thread_settings.png) - -![](figures/qemu_network_rtthread_setting2.png) - -- 配置 QEMU,选择模拟器,配置网卡(配置TAP 过程可参考 https://www.rt-thread.org/document/site/tutorial/qemu-network/qemu_setup/qemu_setup/) - - ![](figures/qemu_network_configure_stm32f4.png) - -- 点击下载按钮,程序会自动启动并下载,进入到终端页面,显示 lwip initialized. - - ![image-20210112094953008](figures/qemu_network_debug_stm32f4.png) - -- 输入网络命令测试一下 - -![](figures/qemu_network_test_stm32f4.png) - -## PlatformIO - -RT-Thread Studio 自 V2.0.0 版本开始支持 PlatformIO 工程的创建、编译和调试。下面,我们一步步的来实践这个过程 - -- 在 SDK Manager 下载 PlatformIO 资源包,此下载安装过程可能需要花费一定时间,请耐心等待 - - ![](figures/platformio_download.png) - -- 新建 RT-Thread 工程,选择基于 PlatformIO,选择您需要的开发板、框架,点击 **Finish**,自动创建了一个 PlatformIO 的工程 - - ![](figures/platformio_new_project.png) - -- 打开 src/main.cpp, 添加您自己的代码,然后点击编译按钮编译工程 - - ![](figures/platformio_build_project.png) - -- 编译成功后,点击下载按钮,下载程序到开发板 - - ![](figures/platformio_download_project.png) - -- 下载成功后,打开串口查看输出内容 - - ![](figures/platformio_open_serial.png) - -- 调试。点击调试按钮,自动进入调试界面,您可以查看寄存器信息,进行单步调试操作 - - ![](figures/platformio_debug_view.png) - - ![](figures/platformio_debug_project.png) - -## 终端 - -通过点击工具栏 ` 终端 ` 按钮即可打开终端选择界面如下图所示: - -![terminal](figures/terminal.png) - -点击 ` 确定 ` 按钮后,即会自动打开对应的终端功能窗口,如下图所示: - -![seeterminal](figures/seeterminal.png) - - -## SDK Manager - -### SDK Manager 简介 - -通过 SDK Manager 维护 RT-Thread Studio 内部的 RT-Thread SDK 资源包,包括安装,卸载,升级各类资源包。通过工具栏的 `SDK Manager` 按钮即可打开 SDK Manager 功能界面,如下图所示: - -![sdkmanager](figures/SDK-Manager.png) - -### SDK Manager 功能 - -#### 安装资源包 - -勾选状态为 `Not installed` 的资源包,点击 `Install packages` 按钮即可启动资源包安装过程,如下图所示: - -![installsdk](figures/installsdk.png) - -#### 卸载资源包 - -勾选状态为 `Installed` 的资源包,点击 `Delete packages` 按钮即可启动卸载过程,如下图所示: - -![deletesdk](figures/deletesdk.png) - -#### 升级资源包 - -点击资源包对应的 ` 升级 ` 按钮,可以将资源包同步更新到最新状态。如下图所示: - -![updatesdk](figures/updatesdk.png) - -## 开发板资源包制作 - -本文主要介绍如何从一个BSP转化为Studio工程,然后再以Studio工程为基础,借助开发板资源包制作工具制作一个开发板资源包。最后可以将开发板资源包贡献到SDK上。(BSP的获取可以从 [新手推荐开发板列表及其BSP](https://www.rt-thread.org/document/site/tutorial/quick-start/more/#stm32-bsp)这篇文章中获取,或者按照教程制作自己的BSP,这里不再赘述) - -### 1.Studio工程制作 - -**前提条件**:在 RT-Thread 主线分支 2021-01-18 之后的版本中,添加了对 --dist-ide 的增强支持,能够通过 scons --dist-ide 将一个bsp 转换为studio 工程,使用方法如下 - -+ git pull 同步最新的 rt-thread 代码 -+ 进入到bsp文件夹的目录中,打开 env工具输入` scons --dist-ide --project-path=dist_studio(存储的文件夹名字) --project-name=project_name_xxx(生成的工程名)`即可生成studio工程。 - -### 2.开发板资源包制作 - -这里需要借助开发板资源包制作工具来制作。下面介绍开发板资源制作工具的使用方法。 - -#### 准备工作 - -1. RT-Thread Studio V2.1.0及以上版本 -2. Studio工程 -3. 开发板的基本信息,如开发板名称、厂商、调试器、调试接口等 -4. 开发板所用芯片的基本信息,如芯片厂商,芯片名等 -5. 开发板的大、小图片各一张,小图片尺寸为200x300 -6. 开发板的文档 - -#### 使用方法 - -打开Studio,点击工具栏`新建`按钮旁的下拉三角,选择`开发板支持包` - -![](figures/Create_BSP.png) - -下图即为开发板制作包工具,共有五栏信息需要填写,左上角打*号的表示该项为必填项。 - -![](figures/BSP_Info.png) - -下面对一些所填项进行解释说明,方便大家填写。 - -![](figures/BSP_Info2.png) - -![](figures/BSP_Features.png) - -![](figures/Project_Info.png) - -到此所有信息都填写完成了,可以点击右上角`预览`按钮,检查开发板信息是否填写无误。检查没有问题后可点击`生成`按钮即可生成开发板资源包 - -![](figures/Project_Info2.png) - -### 3.部署开发板支持包到Studio SDK Manager - -1. 在github.com 新建一个仓库,存储制作好的开发板支持包,需要满足以下格式 - - + 仓库名字以 “sdk-bsp-” 为首,例如 sdk-bsp-stm32h750-realthread-artpi - + 开发板支持包描述文件 (yaml) 需要位于仓库的根目录下 - - 参考仓库:https://github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi - -2. 将开发板支持包 push 到建好的 github 仓库中,并发布一个 release,需满足以下条件 - - + release 版本号 tag version 与 yaml 里的 pkg version 保持一致,格式需为三位数字 [0-9].[0-9].[0-9] ,例如 1.0.0 - + 记录 Source code 的下载链接,在后续步骤使用 - - ![](figures/release.png) - -3. Fork 一份RT-Thread Studio 的 SDK 索引仓库 https://github.com/RT-Thread-Studio/sdk-index 到个人 github 账号下 - -4. 在本地sdk-index 仓库的 sdk-index/Board_Support_Packages 下添加一个新的开发板信息 - - + 检查 Board_Support_Packages 是否有新添加的开发板支持包的芯片文件夹,如果没有则参考目前已有的芯片添加一个新的芯片厂商文件夹 - + 在芯片厂商文件夹中,检查是否有需要添加的开发板,如果没有则参考其他开发板添加一个 - + 在开发板的文件夹中,添加新的开发板支持包release 信息,url 为 release 时的Source code的下载链接 - - ```json - { - "name": "STM32H750-RT-ART-Pi", - "vendor": "RealThread", - "description": "STM32H750-RT-ART-Pi Board Support Packages", - "license": "", - "repository": "https://github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi.git", - "releases": [ - { - "version": "1.1.0", - "date": "2020-12-01", - "description": "released v1.1.0", - "size": "152 MB", - "url": "https://github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi/archive/1.1.0.zip" - }, - { - "version": "1.0.1", - "date": "2020-10-23", - "description": "released v1.0.1", - "size": "136 MB", - "url": "https://github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi/archive/1.0.1.zip" - } - ] - } - ``` - - + 注意事项: - + 索引仓库中不要出现非ascii 字符 - + 开发板支持包名称 name字段 保持大写字母和中划线组合 - -5. 将改好的 sdk-index 仓库 push 到 github,并向官方 sdk-index 提出 PR - -6. PR 合并后,开发板支持包将会更新在Studio 的SDK Manager 界面里 - -## MarkDown 编辑 - -RT-Thread Studio 自带 MarkDown 编辑器,若工程里有 md 文件,只需要双击即可打开 md 文件进行编辑,如下图所示: - -![editmd](figures/editmd.png) - -## 快捷键 - -### 如何查看和修改快捷键 - -通过`帮助`菜单打开`键辅助`可查看快捷键 - -![lookkey1](../faq/figures/look_key1.png) - -![lookkey2](../faq/figures/look_key2.png) - -### 常用快捷键 - -**代码阅读** - -- Ctrl+H 全局 打开搜索对话框 -- Ctrl+Shift+T 全局 打开类型 -- Ctrl+Shift+R 全局 打开资源 -- Ctrl+Shift+"+" 放大字体 -- Ctrl+"-" 缩小字体 - -**代码编辑** - -- Ctrl+D 删除当前行 - -- Ctrl+/ 注释当前行, 再按则取消注释 - -- Ctrl+Shift+F 格式化 - -- Alt+→ /← 全局 前进 / 后退历史记录 - -- Ctrl+Q 定位到最后编辑的地方 - -- Ctrl+K 参照选中的 Word 快速定位到下一个 - -- Ctrl+L 定位在某行 - -- Alt+→ /← 前一个 / 下一个编辑的页面 - -- Shift+Enter 在当前行的下一行插入空行 - - -## 首选项 - -### 首选项介绍 - -RT-Thread Studio 基于 eclipse 平台开发,eclipse 是一个高度可定制的平台,基于 eclipse 实现的功能都会提供大量的配置项,来定制功能的行为方式,来满足用户自身的使用习惯,这些配置项 eclipse 称为首选项。 - -通过点击 ` 窗口 ` 菜单的字菜单 ` 首选项 ` 即可进入首选项配置界面,如下图所示: - -![firstopt](figures/firstopt.png) - -由于首选项数量大,种类多,首选项对话框左侧以树形的形式展示所有的首选项,点击对应的首选项类别即可展开对应的首选项配置树,若要查找某个首选项,可直接在 ` 输入过滤文本 ` 框中,输入关键字,进行查找。 - -首选项右侧即为具体的可配置项页面,修改 后直接点击 ` 应用 ` 即可保存配置,若想恢复当前配置页默认值,点击 ` 恢复默认值 ` 按钮即可。 - -首选项配置还可以通过左下角 ` 导入 `,` 导出 ` 功能,将配置进行保存或者在不同用户间传递或者共享配置,导出功能将把所有配置导出到 `.epf` 文件中,其它用户直接导入这个 `.epf` 文件,即可使用该文件记录的所有配置。 - -![optmenu](figures/optmenu.png) - -### 设置主题 - -通过 ` 首选项 ` 的 ` 外观 ` 配置项选择 “DevStyle Theme” 即可启用新的黑色主题,切换主题后需要重启 Studio 后才会生效 - -![devstyle1](figures/devstyle1.png) - -通过 `DevStyle Theme` 的 `Color Themes` 配置项选择 “Editor theme” 可以切换其他黑色主题,切换主题后需要重启 Studio 后才会生效 - -![devstyle2](figures/devstyle2.png) - - - +# RT-Thread Studio 用户手册 + +## 界面介绍 + +### 界面简介 + +RT-Thread Studio 基于 eclipse 平台开发,界面设计和风格继承自 eclipse,RT-Thread Studio 启动后主界面结构如下图所示: + +![studio-frame](figures/studio-frame.png) + +### 透视图简介 + +透视图定义了当前界面呈现的菜单栏,工具栏,以及功能窗口集合及其布局。不同透视图提供了完成特定类型任务的功能集合。例如 C 透视图组合了项目开发,源文件编辑,项目构建等常用的开发功能窗口,菜单和功能按钮,调试透视图包含了调试项目程序常用的调试功能窗口,菜单和功能按钮。 + +RT-Thread Studio 已实现启动调试时自动切换到调试透视图,停止调试时自动恢复到 C 透视图,用户平时也可以根据需要从 ` 透视图切换栏 ` 手动进行透视图切换,切换到其它透视图进行相关工作。 + +### 功能窗口特性 + +#### 可移动 + +RT-Thread Studio 在初次打开的时候功能窗口位置呈现的是默认布局,但所有功能窗口位置都不是固定的,可以在窗口标题处按住鼠标左键,随意拖动窗口的位置,如下图所示左键按住 ` 属性 ` 窗口,拖动到 ` 项目资源管理器 ` 窗口下方,会出现一个灰色方框指示 ` 属性 ` 窗口将要被放置的位置,此时松开鼠标按键即可将 ` 属性 ` 窗口放置在该位置: + +![shuxing](figures/shuxing.png) + +#### 可恢复 + +当窗口拖乱了,或者整体布局不满意想恢复回默认布局的样子时,可以通过 ` 复位透视图 ` 菜单功能恢复默认窗口布局,如下图所示: + +![reset-see](figures/reset-see.png) + +#### 可关闭 + +每个功能窗口标题旁边都有一个 `X` 可以通过点击该处,关闭功能窗口,如下图所示: + +![can-close](figures/can-close.png) + +若想再次打开已关闭的功能窗口,可通过菜单栏的 ` 窗口 ` 菜单的子菜单 ` 显示视图 ` 菜单中再次打开对应功能窗口,如果当前菜单中没显示想要打开的功能窗口,可以点击从 ` 其他 ` 菜单中查找。 + +![open-set](figures/open-set.png) + +#### 最大化 + +每个功能窗口都有自己单独的工具栏,工具栏最右边是最小化和最大化功能按钮,如下图所示: + +![max-size](figures/max-size.png) + +在功能窗口的标题上双击或者点击功能窗口栏上最大化按钮,即可将窗口最大化,占满整个功能窗口区域,其它窗口将会暂时最小化到侧栏内,如下图所示: + +![max-pic](figures/max-pic.png) + +再次双击 ` 项目资源管理器 ` 功能窗口即可恢复之前的功能窗口位置和状态。 + +#### 最小化 + +点击功能窗口最小化按钮,功能窗口将会暂时缩小到侧栏位置放置,点击 ` 恢复 ` 按钮即可恢复原来状态,如下图所示: + +![restore](figures/restore.png) + +### 工具栏按钮介绍 + +#### 编译 + +选中一个项目,然后点击 ` 编译 ` 按钮即可完成编译,如下图所示: + +![](figures/compile.png) + +#### 重构建 + +选中一个项目,然后点击 ` 重构建 ` 按钮即可完成重构建,如下图所示: + +![](figures/rebuild_project.png) + +#### 构建配置 + +构建项目之前如果需要对项目进行构建参数配置,点击工具栏上 ` 打开构建配置 ` 按钮对项目进行构建参数配置,如下图所示: + +![build-entry](figures/build-entry.png) + +#### 调试配置 + +进行下载或启动调试之前如果需要对项目进行相关调试参数配置,通过点击工具栏上的 ` 调试配置 ` 按钮,可打开调试配置对话框界面,如下图所示: + +![debugentry](figures/debugentry.png) + +#### 启动调试 + +选中一个项目,然后点击 ` 启动调试 ` 按钮即可进入调试模式,如下图所示: + +![](figures/debuger.png) + +#### 打开元素 + +` 打开元素 ` 按钮其实就是一个搜索功能,可以指定搜索的类型,如下图所示: + +![](figures/open-element.png) + + + +#### 搜索 + +通过搜索菜单或者搜索按钮,选择对应的搜索功能,如下图所示: + +![search-menu](figures/search-menu.png) + +#### 打开终端 + +通过点击工具栏 ` 打开终端 ` 按钮即可打开终端选择界面,如下图所示: + +![terminal](figures/terminal.png) + +#### 打开 RT-Thread RTOS API 文档 + +通过点击工具栏 ` 打开 RT-Thread RTOS API 文档 ` 按钮即可打开 RT-Thread API 参考手册,如下图所示: + +![](figures/RTOS-API.png) + +#### 下载程序 + +` 下载程序 ` 按钮除了可以下载程序以外,还可以通过旁边的三角下拉按钮来切换调试器,如下图所示: + +![switchdebug](figures/switchdebug.png) + +#### SDK Manger + +`SDK Manger` 可以管理源码包、芯片支持包、开发板资源包、工具链资源包、调试工具包、第三方资源包,可以根据需要进行下载相应的资源。 + +![](figures/SDK-Manager.png) + +## 欢迎页 + +RT-Thread Studio 每次启动打开软件主界面后会展示一个最大化的欢迎页窗口,如下图所示: + +![welcome-page](figures/welcome-page.png) + +欢迎页左侧有四个便利的功能入口:` 创建 RT-Thread 项目 `,`RT-Thread 论坛 `,` 视频教程 `,` 帮助文档 `,直接点击相应的功能名称即可使用对应功能。欢迎页右侧展示了三类内容:` 最新动态 `,` 视频教程 `,` 最新 PR`,点击对应的标签即可查看或者浏览对应标签页的内容。 + + +## 新建 + +新建资源功能包括新建各类资源,例如工程,文件,文件夹等,新建入口有菜单,工具栏按钮,和工程右键菜单如下图所示: + +![new-resource](figures/new-resource.png) + + +## 导入 + +RT-Thread Studio 的导入功能不仅支持导入现有的 RT-Thread Studio 工程,还支持用户将 MDK/IAR 格式的工程导入到 RT-Thread Studio 中,便于用户迁移开发环境。 + +### RT-Thread Studio 项目导入 + +在 Studio 资源管理器窗口中点击右键,在下拉菜单中选择导入功能: + +![select_import](figures/select_import.png) + +打开导入功能向导,选择导入 RT-Thread Studio 工程: + +![select_rtt_project](figures/select_rtt_project.png) + +点击 **下一步** 后,点击 **浏览** 按钮选择要导入项目所在的工程目录,导入程序会自动扫描该目录下所有可导入的工程,将结果列出在项目列表中。在工程列表中勾选要导入的工程,然后点击 ` 完成 ` 即可。 + +![importdone](figures/importdone.png) + +### MDK 项目导入 + +开发者可以将现有的 RT-Thread MDK 工程直接导入到 RT-Thread Studio 中,MDK 工程在导入到 RT-Thread Studio 后,将有如下特性: + +- 保持原有项目的目录结构 +- 保持保持原有项目的源文件 +- 保持原有项目的头文件路径 +- 保持原有项目的宏定义 + +#### 导入示例 + +本小节将以 `bsp/stm32/stm32l475-atk-pandora` 工程为例,演示如何导入一个 MDK 工程到 RT-Thread Studio 中,导入前工程目录如下图所示: + +![image-20210311151949938](figures/mdk_0.png) + +在 Studio 资源管理器窗口中点击右键,在下拉菜单中选择导入功能,然后选择导入 MDK 项目到工作空间,然后点击下一步, 如下图所示: + +![image-20210311152111005](figures/mdk_1.png) + +点击浏览选择工程目录下要导入的 MDK 工程,选择 MDK的可执行文件,然后输入导入后的工程名,点击完成即可, 如下图所示: + +![image-20210315105833737](figures/mdk_2.png) + +导入成功后,会在原工程目录下创建 .rtt-studio 的工程目录文件夹,如下图所示: + +![image-20210311152405473](figures/mdk_3.png) + +项目资源管理器此时显示界面, 如下图所示 : + +![image-20210311152544090](figures/mdk4.png) + +当一个 MDK 工程被导入到 RT-Thread Studio 之后,原工程的组织结构会保持不变,如下图所示: + +![image-20210315104707598](figures/mdk_5.png) + +与原 MDK 工程相同,RT-Thread Studio Group 中的源文件也可以存放在工程的各个位置,而不必实际上按照这种组织结构而存放文件。 + +可以注意到导入的 Group 和源文件右下角有一个小方块和箭头指示,表示区别于原生 eclipse 那种所见即所得的文件组织形式。这种右下角带方框或者箭头标识的文件夹或者文件,在 RT-Thread Studio 中分别称为虚拟文件夹和链接文件。 + +此时直接在 RT-Thread Studio 中点击编译按钮编译成功后,如下图所示: + +![image-20210311152817183](figures/mdk_6.png) + +#### RT-Thread Studio 与 MDK 工程同步 + +为了方便工程可以畅通无阻地在 RT-Thread Studio 和 MDK 之间切换使用,在工程右键菜单中有 同步 MDK 工程的菜单,并且分为两个子菜单,可分别从 MDK 同步到 RT-Thread Studio 和从 RT-Thread Studio 同步到 MDK,如下图所示: + +![image-20210312103256691](figures/mdk_7.png) + +#### MDK 工程配置 + +RT-Thread Studio 定制了一套配置 MDK 工程的界面,只要打开工程设置按钮即可: + +![image-20210312103657961](figures/mdk_8.png) + +配置界面中主要包含有:全局配置,、C/C++ 配置、汇编语言配置、链接配置。在 C/C++ 配置中,配置包含路径和符号时,可以打开 Settings 来添加、编辑、删除已有的值,下图以配置包含路径 ( Include Paths ) 为例演示: + +![image-20210312104002319](figures/mdk_9.png) + +#### MDK 工程编译、下载、调试 + +与普通的 RT-Thread Studio 工程一样,直接点击下图三个按钮,即可执行编译、下载、调试,如果遇到下载或者调试没有反应,请在下载按钮右侧选择正确的调试器。 + +![image-20210312104616966](figures/mdk_10.png) + + + +### IAR 项目导入 + +开发者可以将现有的 RT-Thread IAR 工程直接导入到 RT-Thread Studio 中,然后就可以使用 RT-Thread Studio 提供的更多工程配置功能。 + +`IAR` 工程在导入到 RT-Thread Studio 后,将有如下特性: + +- 保持原有项目的目录结构 +- 保持保持原有项目的源文件 +- 保持原有项目的头文件路径 +- 保持原有项目的宏定义 +- 将原工程中使用的 libc 库相关配置转换为 newlibc +- 可以使用 RT-Thread Studio 提供的 RT-Thread 系统配置及软件包配置功能 + +注意 :目前仅支持 STM32 系列芯片的工程导入,后续会支持更多芯片。 + +#### 导入示例 + +本小节将以 `bsp/stm32/stm32f429-atk-apollo` 工程为例,演示如何导入一个 IAR 工程到 RT-Thread Studio 中,导入前工程目录如下图所示: + +![apollo_project](figures/apollo_project.png) + +在 Studio 资源管理器窗口中点击右键,在下拉菜单中选择导入功能,然后选择导入 IAR 项目到工作空间,然后点击下一步, 如下图所示: + +​ ![image-20210311151216392](figures/iar_1.png) + +点击浏览选择工程目录下要导入的 IAR 工程,然后输入导入后的工程名,点击完成即可, 如下图所示: + +​ ![image-20210311151747705](figures/iar2.png) + +导入成功后,会在原工程目录下创建 RT-Thread Studio 的工程目录文件夹,如下图所示: + +![generate_dirs](figures/generate_dirs.png) + +项目资源管理器此时显示界面, 如下图所示 : + +![windows_express](figures/windows_express.png) + +此时直接点击编译按钮编译成功后,如下图所示: + +![build_project](figures/build_project.png) + +#### 导入工程管理 + +##### 添加与删除源文件 + +如果想在导入的工程中添加源文件,此时只需要保证该文件存在于工程目录中,然后手动拖入到相应的 group 中。如果想要从工程中删除某个源文件,则可以右键点击该文件,在下拉菜单中选择删除即可,如下图所示: + +![add_file_1](figures/1587036090606.png) + +即可在工程中看到 README.md 文件: + +![add_file_2](figures/1587034628405.png) + +如果想要创建一个虚拟文件夹 (虚拟文件夹并不是真实存在的文件夹,并没有实际的逻辑结构,其显示的内容可能实际上是分散于若干个真实的文件夹中,虚拟文件夹只是起到了一个归纳和汇总的作用),可以采用如下方式: + +![create_folder_1](figures/1587034767730.png) + +![create_folder_2](figures/1587034943959.png) + +即可在工程中看到新创建的文件夹: + +![create_folder_3](figures/1587034996637.png) + +#### 导入错误说明 + +本小节将介绍在导入过程中可能出现的错误,以及遇到这类问题该如何解决。由于在导入的过程中要根据用户所导入的工程进行芯片检查以及一些文件的替换,有时会遇到芯片不支持或者文件找不到的情况,此时用户可以自行手动替换某些缺少的文件,使得工程可以构建成功。 + +常见的错误提示信息如下: + +- **ERROR STM32MP157AAAx doesn't support import to RT-Thread Studio now** + + 说明 RT-Thread Studio 暂不支持导入当前系列的芯片。 + +- **ERROR get IAR version failed. Please update the IAR installation path in rtconfig.py!** + + 说明找不到 IAR 的安装路径 打开工程目录下 rtconfig.py 文件 , 修改 IAR 的 **EXEC_PATH** 。 + + > elif CROSS_TOOL == 'iar': + > PLATFORM = 'iar' + > EXEC_PATH = r'C:/Program Files (x86)/IAR Systems/Embedded Workbench 8.0' + +- **WARNING Can't auto specific link.lds file, Please specific a linker file mannually.** + + 出现这种错误意味着在导入过程中不能自动替换链接脚本文件,需要手动指定链接脚本的位置。 + + ![specific_linker_file](figures/specific_linker_file.png) + +- **WARNING Can't find xxx_startup_stm32fxxx.s, replace startup files failed.** + + 出现这种错误意味着在导入过程中不能找到可自动替换的芯片启动文件,需要手动添加启动文件到工程中。此时直接将可用的 gcc 启动文件拷贝到工程中,然后拖到相应的 group 中即可。 + +## RT-Thread 配置 + +### 打开 RT-Thread 配置界面 + +通过双击工程根目录下的 `RT-Thread Settings` 文件,可以打开 RT-Thread 配置界面,如下图所示: + +![pro-set](figures/pro-set.png) + +### 软件包中心 + +通过点击 ` 立即查看 ` 进入软件包中心,软件包中心首先展示了软件包的大分类,在软件包中心,可以先选择一个分类,也可以直接搜索软件包,点击搜索到的软件包进入软件包详情页面后,可以通过点击 ` 添加软件包到工程 ` 按钮将软件包添加到工程,如下图所示: + +![add-packages](figures/add-packages.png) + +当软件包成功添加到工程后,软件包中心会提示 ` 软件包添加成功 `,同时添加的软件包会显示在软件包层,该软件包依赖的组件也会被自动启用,例如添加 `pahomqtt` 软件包,`DFS`,`SAL`,`POSIX`,`libc` 组件会自动被启用,如下图所示: + +![pahomqtt](figures/pahomqtt.png) + +### 组件和服务层 + +在图标上双击可直接启用该组件。启用的组件是亮色图标,未启用组件为灰色图标。通过在组件和服务层的图标上右键弹出可操作的右键菜单,如果该组件已经启用,则该组件的右键菜单有 ` 停用 `、` 查看依赖 `、` 详情配置 ` 三个选项,如果该组件未启用,则该组件右键菜单只有 ` 启用 ` 选项,如下图所示: + +![component](figures/component.png) + +### 查看依赖 + +在启用的组件上右键选择`查看依赖`,可以查看该组件被哪些组件依赖,例如查看`pin`组件的依赖,`依赖关系图`窗口显示`pin`组件依赖了`gpio`,如下图所示: + +![see-depend](figures/see-depend.png) + +### 查看详细配置 + +在启用的组件上右键选择 ` 详细配置 `,可以打开该组件的详细配置树形界面,例如在 `DFS` 上右键选择 ` 详细配置 `,打开的属性配置界面如下图所示: + +![detail-set](figures/detail-set.png) + +#### 详细配置 + +当打开 RT-Thread 配置界面的时候,详细配置默认是隐藏的,通过启用的组件的右键菜单 ` 详细配置 ` 或者 RT-Thread 配置界面侧栏按钮,可以将详细配置界面调出来,侧栏按钮位置如下图所示: + +![open-detail](figures/open-detail.png) + +详细配置界面即右侧的树形配置界面,树形配置界面分成了四大类配置: `内核`, `组件`, `软件包`, `硬件` 。通过标签可以切换不同的配置类别,点击侧栏按钮可以隐藏该属性配置界面,如下图所示: + +![look-detail](figures/look-detail.png) + +#### 搜索配置 + +当需要搜索某个配置的时候,需要在详细配置里选中任意配置树节点右键,会弹出 ` 搜索 ` 菜单,或者在详细配置里选中任意配置树节点后,按下快捷键 `Ctrl + F` 即可弹出配置搜索对话框,输入搜索关键词点击搜索即可搜索出所有匹配关键词的配置,在结果列表里选择不同结果查看时,配置树会自动跳转到对应配置位置,如下图所示: + +![search-set](figures/search-set.png) + +#### 保存配置 + +当配置修改后,`RT-Thread Configuration` 标签会有脏标记,配置完后要记得点击 ` 保存 ` 按钮,将配置保存并应用到工程中。保存的时候会弹出进度提示框,提示保存进度,如下图所示: + +![save-set](figures/save-set.png) + +## CubeMX 配置 + +RT-Thread Studio 为 STM32CubeMX 提供了快捷的配置入口,可将 STM32CubeMX 配置的内容应用到 RT-Thread Studio 的工程中,不需要用户手动去搬运代码。**前提是您的电脑上已经安装了 STM32CubeMX 软件**。目前只支持完整版或者 Nano 版的基于芯片创建的 ST 系列的工程。 + +### 启动 STM32CubeMX + +这里以 stm32f411RE 为例,演示如何打开 CubeMX 配置。 + +双击工程目录下的 CubeMX Settings, 可以看到执行 CubeMX 的进度框: + +![image-20210312105629551](figures/cubemx_0.png) + +等待十几秒,第一次打开可能时间会稍长,可以看到 STM32CubeMX 已经打开。 + +### 配置 STM32CubeMX + +您可以根据你的需求进行配置,配置完成后,点击 GENERATE CODE,然后点击右上角关闭: + +![image-20210312110838150](figures/cubemx_1.png) + +关闭时,STM32CubeMX 会提示您 cubemx.ioc 已经被修改,是否要保存配置,请点击 Yes,这样您做的配置才会在 RT-Thread Studio 的工程中生效: + +![image-20210312110054727](figures/cubemx_2.png) + +查看工程目录,您会发现在工程目录下自动生成了 STM32CubeMX 的代码: + +![image-20210312110932425](figures/cubemx_3.png) + +接下来,您就可以正常的编译啦。 + +## 代码编辑 + +### 编码修改 + +- **设置当前文件的编码格式** + + 在当前文件中,按`Alt+Enter`,会出现下图所示界面。可以看到设置编码格式的选项(如图中红色矩形所示)。下拉列表中可以选择想要的编码格式。 + +![](figures/Encoding_01.png) + +- **设置当前项目工程(Project)的编码格式** + + 选中你所创建的项目,右键点击会弹出以下界面,选择最下面的一个选项`属性`(图中红色矩形样式),点击进入。 + +![](figures/Encoding_02.png) + +点击`属性`之后,弹出以下页面,默认的是`从容器继承`,我们选择`其他`, 下拉框选择编码,然后点击`Apply and Close`即可 + +![](figures/Encoding_03.png) + +- **设置工作区间的编码格式** + + 通过`窗口`菜单打开`首选项`窗口弹出如下图界面: + +![](figures/Encoding_04.png) + + 点击`常规`选项后再点击`工作空间`会出现设置编码格式的选项。默认的是`缺省值(GBK)`,这里我们选择`其他`,下拉框选择编码,然后点击`Apply and Close`即可 + +![](figures/Encoding_05.png) + +### 编辑 + +通过 ` 编辑 ` 菜单或者直接在源码编辑器内右键菜单,可以选择对应的编辑系列功能,如下图所示: + +![code-edit](figures/code-edit.png) + +### 源码 + +通过 ` 源码 ` 菜单或者直接在源码编辑器内右键菜单,可以选择对应的源码系列功能,如下图所示: + +![source](figures/source.png) + +### 重构 + +通过 ` 重构 ` 菜单或者直接在源 码编辑器内右键菜单,可以选择对应的重构系列功能,如下图所示: + +![rebuild](figures/rebuild.png) + +### 导航 + +通过 ` 导航 ` 菜单或者直接在源码编辑器内右键菜单,可以选择对应的导航系列功能,如下图所示: + +![start-menu](figures/start-menu.png) + +### 搜索 + +通过搜索菜单或者搜索按钮,选择对应的搜索功能,如下图所示: + +![search-menu](figures/search-menu.png) + +### 辅助键 + +通过 ` 帮助 ` 菜单的子菜单 ` 辅助键 ` 查看所有的快捷键,如下图所示: + +![help-bottom](figures/help-bottom.png) + +## 构建配置 + +### 构建配置入口 + +构建项目之前如果需要对项目进行构建参数配置,点击工具栏上 ` 打开构建配置 ` 按钮对项目进行构建参数配置,如下图所示: + +![build-entry](figures/build-entry.png) + +### 配置头文件包含 + +若要增删改头文件路径,在 ` 工具设置 ` 配置页,点击 `GNU ARM Cross C Compiler` 下的 `Includes` 配置项即可打开头文件路径配置参数,点击 `Inlucde paths(-I)` 配置栏相应的按钮即可进行头文件的增删改操作,如下图所示: + +![path-include](figures/path-include.png) + +### 配置宏定义 + +若要增删改宏定义,在 ` 工具设置 ` 配置页,点击 `GNU ARM Cross C Compiler` 下的 `Preprocessor` 配置项即可打开宏定义配置参数,点击 `Define symbols(-D)` 配置栏相应的按钮即可进行宏定义的增删改操作,如下图所示: + +![setmicro](figures/setmicro.png) + +### 配置链接脚本 + +若要增删改链接脚本配置,在 ` 工具设置 ` 配置页,点击 `Cross ARM C Linker` 下的 `General` 配置项即可设置链接脚本文件,点击 `Script files(-T)` 配置栏相应的按钮即可进行链接脚本的增删改操作,在 `Script files(-T)` 下方有一些基本的链接参数可配置,如下图所示: + +![setlinkscripts](figures/setlinkscripts.png) + +### 配置外部二进制库文件 + +若要增删改外部二进制库文件,在 ` 工具设置 ` 配置页,点击 `Cross ARM C Linker` 下的 `Libraries` 配置项即可设置外部二进制库文件,点击 `Libraries(-l)` 配置栏相应的按钮即可进行库文件的增删改操作,在 `Library search path(-L)` 配置栏配置库文件相应的路径。 + +如下图所示: + +- 项目本地新增 GCC 二进制库文件,命名为:libxxx.a(如图中示例 libwifi_1.0.0_gcc.a)。 +- 在 `Libraries(-l)` 配置栏增加二进制库文件名称:xxx(如图中示例 wifi_1.0.0_gcc),注意需要去掉前缀 `lib` 与后缀 `.a` 。 +- 在 `Library search path(-L)` 配置栏,添加该库文件所在的路径。 + +![add binary library](figures/add-binary-library-re.png) + +![add binary library cfg](figures/add-binary-library.png) + +### 如何生成 HEX 文件 + +选中工程后,点击工具栏上的`打开构建配置`按钮,将相应的输出文件格式设置成 hex 文件格式,即可实现输出 hex 文件,如下图所示: + +![hexfile](../faq/figures/hexfile.png) + +如果需要同时生成 bin 文件和 hex 文件,需要在`构建后步骤`里添加构建后生成 HEX 文件的命令,如下图所示: + +![binfile](../faq/figures/binfile.png) + +构建后生成的 hex 文件,在工程的`Debug`目录下,如下图所示: + +![buildhe](../faq/figures/buildhe.png) + +### 配置其它 + +配置其它构建参数可直接在 ` 工具设置 ` 配置页面中选择相应类型配置树节点,并设置其提供的详细配置项,配置完成后,点击 ` 应用并关闭 ` 按钮配置即可生效。如下图所示: + +![setother](figures/setother.png) + +## 调试配置 + +### 调试配置入口 + +进行下载或启动调试之前如果需要对项目进行相关调试参数配置,通过点击工具栏上的 ` 调试配置 ` 按钮,可打开调试配置对话框界面,如下图所示: + +![debugentry](figures/debugentry.png) + +### 调试配置项 + +选中一个调试配置后,调试配置对话框将展示所有配置项,配置项通过 ` 配置项分类标签页 ` 进行了分类,通过点击不同 ` 标签页 ` 展示不同类别配置项,修改配置项后,点击 ` 确定 ` 按钮即可保存配置修改,如下图所示: + +![debugset](figures/debugset.png) + +## 下载功能 + +### 切换调试器 + +目前 RT-Thread Studio 支持 JLink 、ST-Link、DAP-Link 以及软件仿真器 QEMU,新建工程的时候可以在新建工程向导里选择硬件调试器也可以选择软件仿真器 QEMU。工程创建好之后,如果想切换硬件调试器或直接进行软件仿真,可以通过工具栏下载程序按钮旁边的三角下拉按钮来切换硬件调试器或软件仿真器 QEMU,如下图所示: + +![switchdebug](figures/switchdebug.png) + + +## 调试 + +### 调试常用操作 + +当调试启动成功后,程序会在 main 方法处挂起,这时可以通过工具栏上的调试相关操作按钮或者快捷键进行常用的调试操作,如下图所示: + +![debugopt](figures/debugopt.png) + +### 启用汇编单步调试模式 + +点击工具栏上的 ` 汇编单步模式 ` 按钮,会自动打开 ` 反汇编 ` 功能窗口,此时 ` 汇编单步模式 ` 按钮呈凹下去的状态,代表此时处于汇编单步模式,如下图所示: + +![asmstep](figures/asmstep.png) + +当进入 ` 汇编单步模式 ` 后,所有单步调试操作将变为以一条汇编指令为单位进行单步执行,此时指令跳转情况可以在 ` 反汇编 ` 窗口进行查看。 + +若要退出 ` 汇编单步模式 `,直接再次点击 ` 汇编单步模式 ` 按钮即可。 + +### 查看寄存器 + +通过 ` 窗口 ` 菜单的 ` 显示视图 ` 子菜单,选择打开 ` 寄存器 ` 窗口即可查看核心寄存器,如下图所示: + +![seereg](figures/seereg.png) + +### 查看外设寄存器 + +点击 `Peripherals` 窗口,让 `Peripherals` 窗口显示在最前面,若 RT-Thread Studio 存在相应的 svd 文件,该窗口将会显示所有外设名称及其地址和描述。可在 `Peripherals` 窗口勾选要查看的外设,内存窗口将会显示该外设的所有寄存器的名称及其地址和当前值,如下图所示: + +![seeperial](figures/seeperial.png) + +若需要修改某个寄存器的当前值,可以直接点击进入寄存器 `Value` 那一列,输入想要修改的值后,敲击回车键即可执行修改。(注:只有可读可写的寄存器可以修改值,只读寄存器无法修改值。) + +![editreg](figures/editreg.png) + +### 查看变量 + +点击 ` 变量 ` 窗口,让 ` 变量 ` 窗口显示在最前面,即可查看当前程序挂起时所有可见的变量,点击 ` 变量 ` 窗口最右边的三角下拉菜单,可以设置变量显示的数值格式,如下图所示: + +![seevalue](figures/seevalue.png) + +### 查看内存 + +点击 ` 内存 ` 窗口,让 ` 内存 ` 窗口显示在最前面。点击 ` 添加内存监视器 ` 按钮,在弹出的输入框内,输入要查看内存的起始地址,点击 ` 确定 ` 即可添加要查看的内存,如下图所示: + +![seememreg](figures/seememreg.png) + +添加内存监视器后,内存窗口会立即展示刚输入的内存起始地址的一段内存,如下图所示: + +![seemem](figures/seemem.png) + +### 断点 + +在源码编辑窗口边栏,双击即可设置断点,再次双击即可删除断点,打开 ` 断点 ` 窗口即可查看和管理所有断点,通过 ` 断点 ` 窗口工具栏可以进行删除,取消等断点管理操作,如下图所示: + +![breakpoint](figures/breakpoint.png) + +### 表达式 + +在源码内选中表达式后点击右键,选择 ` 添加监看表达式 ` 即可将表达式添加到 ` 表达式 ` 窗口,或者直接点击 ` 表达式 ` 窗口内的 ` 添加新的表达式 ` 通过直接输入的方式,添加想要查看的表达式的值。 + +![addformat](figures/addformat.png) + +### 取消启动调试前的自动构建 + +首先通过`窗口`菜单打开`首选项`窗口,然后展开`运行/调试`选项并点击进入`启动`选项,最后将`在启动之前构建(如必需)`选项取消勾选即可取消启动调试前的自动构建,如下图所示: + +![bulid_cancel](../faq/figures/bulid_cancel.png) + +## 模拟器仿真 + +### QEMU 模拟器仿真 + +QEMU 是一个支持跨平台虚拟化的虚拟机,它可以虚拟很多开发板。为了方便在没有开发板的情况下体验 RT-Thread,RT-Thread Studio 提供了 QEMU 模拟仿真调试器。 本文主要介绍在 Windows 平台上使用 RT-Thread Studio QEMU 模拟器进行仿真。 + +#### 创建工程 + +点击新建一个工程,选择或者设置各个配置选项,Adapter 配置项可以先选择 QEMU,并且配置适合的模拟器。目前的最新版本中,系列、子系列需要手动选择,还未与模拟器支持的系列关联起来。点击完成,即会在工作空间中创建一个 QEMU 调式的工程。 + +![qemu](figures/qemu_new_project.png) + +#### 切换调试器到 QEMU + +如果当前工程为老工程或者当前选择的调试器是 QEMU 以外的调试器,想使用 QEMU 进行调试,可点击下载按钮右边的下拉框,选择 QEMU : + +![qemu](figures/switch_to_qemu.png) + +若当前工程还未配置 QEMU ,那么在选择 QEMU 后,会弹出【跳转到配置界面】的提示,点击【是】,会显示 QEMU 配置界面,具体详情将在下一节介绍。 + +![qemu](figures/switch_qemu_prompt.png) + +#### QEMU 配置 + +点击【打开调试配置】或者其他情况下跳转到 QEMU 配置界面,需要配置的参数如下: + +| 参数 | 英文 | 命令 | +| :-----------------------: | :------------------------: | :-------: | +| 开发板型号 | Board Name | -M | +| 支持 Cpu 的数量 | Cpu Quantity | -smp | +| 是否支持网络 | Enable Network | -net | +| 是否支持图形 | Don't open grapgic windows | -nographic | +| SD 卡内存大小 | SD Card Memory | -sd | +| 额外的命令 | Extra Commands | 无 | + +填写完整后,点击确定,即可正常进行调试和运行。 + +![qemu](figures/qemu_configure.png) + + + +#### 仿真调试 + +在编译正常的情况下,点击调式按钮,IDE 会自动启动 QEMU 并打开串口,并进入断点调试模式,在此模式中,可一步一步观察每次断点的输出情况,亦可在串口中执行自己的命令。 + +- ** 注:在 windows 上 QEMU 不支持上下键查看历史命令。** + +![qemu](figures/qemu_debug.png) + +#### 网络仿真 + +- 基于开发板创建一个 stm32f4 的工程 + +![](figures/qemu_network_new_stm32f4.png) + +- 打开 RT-Thread Settings ,使能 SAL, 切换到 【硬件】栏,使能以太网,Ctrl + S 保存配置,编译 + + ![](figures/qemu_network_rt-thread_settings.png) + +![](figures/qemu_network_rtthread_setting2.png) + +- 配置 QEMU,选择模拟器,配置网卡(配置TAP 过程可参考 https://www.rt-thread.org/document/site/tutorial/qemu-network/qemu_setup/qemu_setup/) + + ![](figures/qemu_network_configure_stm32f4.png) + +- 点击下载按钮,程序会自动启动并下载,进入到终端页面,显示 lwip initialized. + + ![image-20210112094953008](figures/qemu_network_debug_stm32f4.png) + +- 输入网络命令测试一下 + +![](figures/qemu_network_test_stm32f4.png) + +## PlatformIO + +RT-Thread Studio 自 V2.0.0 版本开始支持 PlatformIO 工程的创建、编译和调试。下面,我们一步步的来实践这个过程 + +- 在 SDK Manager 下载 PlatformIO 资源包,此下载安装过程可能需要花费一定时间,请耐心等待 + + ![](figures/platformio_download.png) + +- 新建 RT-Thread 工程,选择基于 PlatformIO,选择您需要的开发板、框架,点击 **Finish**,自动创建了一个 PlatformIO 的工程 + + ![](figures/platformio_new_project.png) + +- 打开 src/main.cpp, 添加您自己的代码,然后点击编译按钮编译工程 + + ![](figures/platformio_build_project.png) + +- 编译成功后,点击下载按钮,下载程序到开发板 + + ![](figures/platformio_download_project.png) + +- 下载成功后,打开串口查看输出内容 + + ![](figures/platformio_open_serial.png) + +- 调试。点击调试按钮,自动进入调试界面,您可以查看寄存器信息,进行单步调试操作 + + ![](figures/platformio_debug_view.png) + + ![](figures/platformio_debug_project.png) + +## 终端 + +通过点击工具栏 ` 终端 ` 按钮即可打开终端选择界面如下图所示: + +![terminal](figures/terminal.png) + +点击 ` 确定 ` 按钮后,即会自动打开对应的终端功能窗口,如下图所示: + +![seeterminal](figures/seeterminal.png) + + +## SDK Manager + +### SDK Manager 简介 + +通过 SDK Manager 维护 RT-Thread Studio 内部的 RT-Thread SDK 资源包,包括安装,卸载,升级各类资源包。通过工具栏的 `SDK Manager` 按钮即可打开 SDK Manager 功能界面,如下图所示: + +![sdkmanager](figures/SDK-Manager.png) + +### SDK Manager 功能 + +#### 安装资源包 + +勾选状态为 `Not installed` 的资源包,点击 `Install packages` 按钮即可启动资源包安装过程,如下图所示: + +![installsdk](figures/installsdk.png) + +#### 卸载资源包 + +勾选状态为 `Installed` 的资源包,点击 `Delete packages` 按钮即可启动卸载过程,如下图所示: + +![deletesdk](figures/deletesdk.png) + +#### 升级资源包 + +点击资源包对应的 ` 升级 ` 按钮,可以将资源包同步更新到最新状态。如下图所示: + +![updatesdk](figures/updatesdk.png) + +## 开发板资源版制作 + +这部分主要介绍如何从一个BSP转化为Studio工程,然后再以Studio工程为基础,借助开发板资源包制作工具制作一个开发板资源包。最后可以将开发板资源包贡献到SDK上。(BSP的获取可以从 [新手推荐开发板列表及其BSP](https://www.rt-thread.org/document/site/tutorial/quick-start/more/#stm32-bsp)这篇文章中获取,或者按照教程制作自己的BSP,这里不再赘述) + +#### 1.Studio工程制作 + +**前提条件**:在 RT-Thread 主线分支 2021-01-18 之后的版本中,添加了对 --dist-ide 的增强支持,能够通过 scons --dist-ide 将一个bsp 转换为studio 工程,使用方法如下 + ++ git pull 同步最新的 rt-thread 代码 + ++ 进入到bsp文件夹的目录中,打开 env工具输入` scons --dist-ide --project-path=dist_studio(存储的文件夹名字) --project-name=project_name_xxx(生成的工程名)`即可生成studio工程。 + +#### 2.开发板资源包制作 + +这里需要借助开发板资源包制作工具来制作。下面介绍开发板资源制作工具的使用方法。 + +**准备工作** + +1. RT-Thread Studio V2.1.0及以上版本 + +2. Studio工程 + +3. 开发板的基本信息,如开发板名称、厂商、调试器、调试接口等 + +4. 开发板所用芯片的基本信息,如芯片厂商,芯片名等 + +5. 开发板的大、小图片各一张,小图片尺寸为200x300 + +6. 开发板的文档 + +**使用方法** + +打开Studio,点击工具栏`新建`按钮旁的下拉三角,选择`开发板支持包` + +![img](/figures/Create_BSP.png) + +下图即为开发板制作包工具,共有五栏信息需要填写,左上角打*号的表示该项为必填项。 + +![img](/figures/BSP_Info.png) + +下面对一些所填项进行解释说明,方便大家填写。 + +![img](/figures/BSP_Info2.png) + +![img](/figures/BSP_Features.png) + +![img](/figures/Project_Info.png) + +到此所有信息都填写完成了,可以点击右上角`预览`按钮,检查开发板信息是否填写无误。检查没有问题后可点击`生成`按钮即可生成开发板资源包 + +![img](/figures/Project_Info2.png) + +#### 3.测试 + +测试的过程就是通过离线导入资源包,并查看资源包的功能是否正常 + +1. 将开发板资源包打包成zip格式,目录结构如下: + + ![image-20210930114508453](./figures/fzip.png) + +2. 打开SDK 管理器,离线导入资源包 + ![image-20210924135108554](/figures/SDK_manager.png) + +3. 新建开发板工程并编译,测试是否可以正常编译通过。 + +#### 4.部署开发板支持包到Studio SDK Manager + +##### 简述 + +rt-thread studio 作为一款支持众多芯片厂商的IDE,必不可少地具备了资源包管理的功能。rt-thread studio 采用SDK manager 在线管理资源包。目前包含以下类型的资源包。 + +| 资源包名 | 内容 | +| --------------------------- | --------------------------------------------------------- | +| Board Support Packages | 开发板支持包,rt-thread studio 新建开发板工程时使用的模板 | +| Chip Support Packages | 芯片支持包,rt-thread studio 新建芯片工程时使用的模板 | +| Debugger | 调试器后端,如J-Link,PyOCD等 | +| RT-Thread Source Code | RT-Thread 源码包 | +| ThirdParty Support Packages | 第三方工具支持包:例如 PlatformIO | +| Tool Chain | 工具链支持包 | + +SDK manager 通过 SDK index(托管在github) 查找各个资源包的下载地址,下载至本地并解压,因此整个资源包上线的过程就是完善SDK-index中对应信息的过程。 + + + +##### 上线流程 + +1. 在github.com 新建一个仓库,存储制作好的开发板支持包,需要满足以下格式 + ++ 仓库名字以 “sdk-bsp-” 为首,例如 sdk-bsp-stm32h750-realthread-artpi + ++ 开发板支持包描述文件 (yaml) 需要位于仓库的根目录下 + + 参考仓库:https://github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi + +2. 将开发板支持包 push 到建好的 github 仓库中,并发布一个 release,需满足以下条件 + ++ release 版本号 tag version 与 yaml 里的 pkg version 保持一致,格式需为三位数字 [0-9].[0-9].[0-9] ,例如 1.0.0 + ++ 记录 Source code 的下载链接,在后续步骤使用 + + ![img](/figures/release.png) + +3. Fork 一份RT-Thread Studio 的 SDK 索引仓库 https://github.com/RT-Thread-Studio/sdk-index 到个人 github 账号下 + +4. 在本地sdk-index 仓库的 sdk-index/Board_Support_Packages 下添加一个新的开发板信息 + + 这里需要注意: + + + 如果是新的半导体厂商,需要在 sdk-index/Board_Support_Packages/index.json 添加对应厂商名字的字段 + + ```json + { + "name": "Board_Support_Packages", + "description": "Device vendor Board Support Packages", + "index": [ + "Allwinner", + "AlphaScale", + "ARM", + "ArteryTek", + "Bluetrum", + "GigaDevice", + "MicroChip", + "Microsemi", + "MindMotion", + "NXP", + "RaspberryPi", + "STMicroelectronics", + "Synwit", + "TI", + "WCH", + "essemi", + "Other" + ] + } + ``` + + + + + 新建芯片厂商文件夹,名字于上述添加字段相同,如 STMicroelectronics,文件夹中新建index.json,并在此文件中添加此芯片厂商包含的开发板支持包,对于已存在的芯片厂商只需要在已存在的 index.json 中添加新的开发板字段,例如ST + + ```json + { + "name": "STM32 Series Board Support Packages", + "dvendor": "STMicroelectronics", + "description": "STM32 series Board Support Packages", + "index": [ + "STM32F072-ST-NUCLEO", + "STM32F091-ST-NUCLEO", + "STM32F103-DOFLY-M3S", + "STM32F103-DOFLY-LYC8" + ] + } + ``` + + + 新建开发板支持包文件夹,名字与上述index.json中对应字段相同,如 STM32F072-ST-NUCLEO,并在文件夹中新建index.json,在此文件中添加对应开发板信息,如 STM32H750-RT-ART-Pi ,url 为 release 时的 Source code的下载链接 + + ```json + { + "name": "STM32H750-RT-ART-Pi", // 开发板支持包名称 + "vendor": "RealThread", // 开发板厂商 + "description": "STM32H750-RT-ART-Pi Board Support Packages", // 资源包描述 + "license": "", // license 描述 + "repository": "https://github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi.git", // 资源包仓库URL + "releases": [ + { + "version": "1.1.0", + "date": "2020-12-01", + "description": "released v1.1.0", + "size": "152 MB", + "url": "https://github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi/archive/1.1.0.zip" + }, + { + "version": "1.0.1", // 资源包版本号 + "date": "2020-10-23", // 发布日期 + "description": "released v1.0.1", // 版本描述 + "size": "136 MB", // 资源包大小 + "url": "https://github.com/RT-Thread-Studio/sdk-bsp-stm32h750-realthread-artpi/archive/1.0.1.zip" // 资源包下载URL(包格式为zip) + } + ] + } + ``` + ++ 注意事项: + + 索引仓库中不要出现非ascii 字符 + + 开发板支持包名称 name字段 保持大写字母和中划线组合 + + 上述json编写规范见[下节](#1) + +5. 将改好的 sdk-index 仓库 push 到 github,并向官方 sdk-index 提出 PR +6. PR 合并后,开发板支持包将会更新在 Studio 的 SDK Manager 界面里 + +##### index.json 编写规范 {#1} + +索引库按照资源包类型进行目录划分,各级目录下有对应的 index.json 作为索引,下面以添加 STMicroelectronics 的 STM32F746-ST-DISCO 开发板支持包为例,简述编写规范 + +目录结构如下,并在 STM32F746-ST-DISCO 目录下新建 index.json + +sdk-index/Board_Support_Packages/STMicroelectronics/STM32F746-ST-DISCO/index.json + +```json +{ +"name": "STM32F746-ST-DISCO", // 开发板支持包名称 +"vendor": "RealThread", // 开发板厂商 +"description": "STM32F746-ST-DISCO Board Support Packages", // 资源包描述 +"license": "", // license 描述 +"repository": "https://github.com/RT-Thread-Studio/sdk-bsp-stm32f746-st-disco.git", // 资源包仓库URL +"releases": [ +{ + "version": "1.0.0", // 资源包版本号 + "date": "2021-02-23", // 发布日期 + "description": "released v1.0.0", // 版本描述 + "size": "7 MB", // 资源包大小 + "url": "https://github.com/RT-Thread-Studio/sdk-bsp-stm32f746-st-disco/archive/1.0.0.zip" // 资源包下载URL(包格式为zip) +} +] +} +``` + +**注:** + +* 若为新加入的半导体厂商,需要修改 Board_Support_Packages 目录下的 index.json,字段与上述类似 + +* 工具链的版本号字段需要以芯片厂商缩写+工具链版本号命名,示例如下 + + ```json + { + "name": "RISC-V-GCC", + "vendor": "RISC-V", + "description": "RISC-V-GCC Tool Chain", + "license": "", + "releases": [ + { + "version": "XXXX_10.1.0", //厂商缩写+版本号 + "date": "2020-09-10", + "description": " only for xxx released v10.1.0", // 工具链如有定制,描述中加入是针对哪款芯片或开发板 + "size": "80.7 MB", + "url": "https://github.com/RT-Thread-Studio/sdk-toolchain-RISC-V-GCC/archive/10.1.0.zip" + } + ] + } + ``` + + 工具链打包发布时的目录层级需要保持一下结构 + + ![image-20210903144008613](figures/toolchain.png) + +**注:**注意 json 和 yaml 文件的语法格式是否正确,可以在以下两个网站进行检查: + +​ json: https://www.json.cn/ + +​ yaml:https://www.json2yaml.com/ + +## MarkDown 编辑 + +RT-Thread Studio 自带 MarkDown 编辑器,若工程里有 md 文件,只需要双击即可打开 md 文件进行编辑,如下图所示: + +![editmd](figures/editmd.png) + +## 快捷键 + +### 如何查看和修改快捷键 + +通过`帮助`菜单打开`键辅助`可查看快捷键 + +![lookkey1](../faq/figures/look_key1.png) + +![lookkey2](../faq/figures/look_key2.png) + +### 常用快捷键 + +**代码阅读** + +- Ctrl+H 全局 打开搜索对话框 +- Ctrl+Shift+T 全局 打开类型 +- Ctrl+Shift+R 全局 打开资源 +- Ctrl+Shift+"+" 放大字体 +- Ctrl+"-" 缩小字体 + +**代码编辑** + +- Ctrl+D 删除当前行 + +- Ctrl+/ 注释当前行, 再按则取消注释 + +- Ctrl+Shift+F 格式化 + +- Alt+→ /← 全局 前进 / 后退历史记录 + +- Ctrl+Q 定位到最后编辑的地方 + +- Ctrl+K 参照选中的 Word 快速定位到下一个 + +- Ctrl+L 定位在某行 + +- Alt+→ /← 前一个 / 下一个编辑的页面 + +- Shift+Enter 在当前行的下一行插入空行 + + +## 首选项 + +### 首选项介绍 + +RT-Thread Studio 基于 eclipse 平台开发,eclipse 是一个高度可定制的平台,基于 eclipse 实现的功能都会提供大量的配置项,来定制功能的行为方式,来满足用户自身的使用习惯,这些配置项 eclipse 称为首选项。 + +通过点击 ` 窗口 ` 菜单的字菜单 ` 首选项 ` 即可进入首选项配置界面,如下图所示: + +![firstopt](figures/firstopt.png) + +由于首选项数量大,种类多,首选项对话框左侧以树形的形式展示所有的首选项,点击对应的首选项类别即可展开对应的首选项配置树,若要查找某个首选项,可直接在 ` 输入过滤文本 ` 框中,输入关键字,进行查找。 + +首选项右侧即为具体的可配置项页面,修改 后直接点击 ` 应用 ` 即可保存配置,若想恢复当前配置页默认值,点击 ` 恢复默认值 ` 按钮即可。 + +首选项配置还可以通过左下角 ` 导入 `,` 导出 ` 功能,将配置进行保存或者在不同用户间传递或者共享配置,导出功能将把所有配置导出到 `.epf` 文件中,其它用户直接导入这个 `.epf` 文件,即可使用该文件记录的所有配置。 + +![optmenu](figures/optmenu.png) + +### 设置主题 + +通过 ` 首选项 ` 的 ` 外观 ` 配置项选择 “DevStyle Theme” 即可启用新的黑色主题,切换主题后需要重启 Studio 后才会生效 + +![devstyle1](figures/devstyle1.png) + +通过 `DevStyle Theme` 的 `Color Themes` 配置项选择 “Editor theme” 可以切换其他黑色主题,切换主题后需要重启 Studio 后才会生效 + +![devstyle2](figures/devstyle2.png) + + + -- Gitee