开发板资源包制作

[复制链接]
925|9
手机看帖
扫描二维码
随时随地手机跟帖
keer_zu|  楼主 | 2022-4-25 09:25 | 显示全部楼层 |阅读模式
这部分主要介绍如何从一个BSP转化为Studio工程,然后再以Studio工程为基础,借助开发板资源包制作工具制作一个开发板资源包。最后可以将开发板资源包贡献到SDK上。(BSP的获取可以从 [color=var(--theme-color, #42b983)]新手推荐开发板列表及其BSP这篇**中获取,或者按照教程制作自己的BSP,这里不再赘述)

使用特权

评论回复
keer_zu|  楼主 | 2022-4-25 09:26 | 显示全部楼层
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工程。

使用特权

评论回复
keer_zu|  楼主 | 2022-4-25 09:27 | 显示全部楼层
2.开发板资源包制作
这里需要借助开发板资源包制作工具来制作。下面介绍开发板资源制作工具的使用方法。
准备工作
  • RT-Thread Studio V2.1.0及以上版本
  • Studio工程
  • 开发板的基本信息,如开发板名称、厂商、调试器、调试接口等
  • 开发板所用芯片的基本信息,如芯片厂商,芯片名等
  • 开发板的大、小图片各一张,小图片尺寸为200x300
  • 开发板的文档

使用方法
打开Studio,点击工具栏新建按钮旁的下拉三角,选择开发板支持包
Create_BSP.png
下图即为开发板制作包工具,共有五栏信息需要填写,左上角打*号的表示该项为必填项。
BSP_Info.png
下面对一些所填项进行解释说明,方便大家填写。
BSP_Info2.png
BSP_Features.png
Project_Info.png
到此所有信息都填写完成了,可以点击右上角预览按钮,检查开发板信息是否填写无误。检查没有问题后可点击生成按钮即可生成开发板资源包
Project_Info2.png

使用特权

评论回复
keer_zu|  楼主 | 2022-4-25 09:28 | 显示全部楼层
3.测试
测试的过程就是通过离线导入资源包,并查看资源包的功能是否正常
  • 将开发板资源包打包成zip格式,目录结构如下:
    fzip.png
  • 打开SDK 管理器,离线导入资源包 SDK_manager.png
  • 新建开发板工程并编译,测试是否可以正常编译通过。


使用特权

评论回复
keer_zu|  楼主 | 2022-4-25 09:30 | 显示全部楼层
本帖最后由 keer_zu 于 2022-4-25 09:34 编辑

4.部署开发板支持包到Studio SDK Manager简述
rt-thread studio 作为一款支持众多芯片厂商的IDE,必不可少地具备了资源包管理的功能。rt-thread studio 采用SDK manager 在线管理资源包。目前包含以下类型的资源包。
[td]
资源包名内容
Board Support Packages开发板支持包,rt-thread studio 新建开发板工程时使用的模板
Chip Support Packages芯片支持包,rt-thread studio 新建芯片工程时使用的模板
Debugger调试器后端,如J-Link,PyOCD等
RT-Thread Source CodeRT-Thread 源码包
ThirdParty Support Packages第三方工具支持包:例如 PlatformIO
Tool Chain工具链支持包
SDK manager 通过 SDK index(托管在github) 查找各个资源包的下载地址,下载至本地并解压,因此整个资源包上线的过程就是完善SDK-index中对应信息的过程。
上线流程
  • 在github.com 新建一个仓库,存储制作好的开发板支持包,需要满足以下格式
  • 将开发板支持包 push 到建好的 github 仓库中,并发布一个 release,需满足以下条件
  • release 版本号 tag version 与 yaml 里的 pkg version 保持一致,格式需为三位数字 [0-9].[0-9].[0-9] ,例如 1.0.0
  • 记录 Source code 的下载链接,在后续步骤使用
    release.png

  • Fork 一份RT-Thread Studio 的 SDK 索引仓库 https://github.com/RT-Thread-Studio/sdk-index 到个人 github 账号下
  • 在本地sdk-index 仓库的 sdk-index/Board_Support_Packages 下添加一个新的开发板信息
    这里需要注意:

    • 如果是新的半导体厂商,需要在 sdk-index/Board_Support_Packages/index.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
    {
        "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的下载链接
    {
        "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编写规范见下节

  • 将改好的 sdk-index 仓库 push 到 github,并向官方 sdk-index 提出 PR
  • 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
{
"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,字段与上述类似
  • 工具链的版本号字段需要以芯片厂商缩写+工具链版本号命名,示例如下
    {
        "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"
            }
        ]
    }

    工具链打包发布时的目录层级需要保持一下结构
    toolchain.png

注:注意 json 和 yaml 文件的语法格式是否正确,可以在以下两个网站进行检查:

SDKmanger.png

使用特权

评论回复
keer_zu|  楼主 | 2022-4-25 09:35 | 显示全部楼层
MarkDown 编辑
RT-Thread Studio 自带 MarkDown 编辑器,若工程里有 md 文件,只需要双击即可打开 md 文件进行编辑,如下图所示:
editmd.png

使用特权

评论回复
keer_zu|  楼主 | 2022-4-25 09:36 | 显示全部楼层
本帖最后由 keer_zu 于 2022-4-25 09:37 编辑

版本控制 Git 简介
Git 是目前最先进的分布式版本控制系统。什么是版本控制系统? 形象地讲,版本控制就是按照纵向或横向的维度记录当前工程下的变更并进行管理,方便用户可以穿梭于当前工程的不同的变更状态,纵向的维度就是时间的维度,而横向的维度就是分支的维度。在软件开发中经常利用分支的功能将稳定和变动隔离开来,已经稳定的代码是默认的主分支,而新的特性,功能等则是其他分支。 如何使用 Git 的分支特性并无标准答案,但却有大家总结或约定俗称的使用方式,这里推荐简要了解一下git分支管理策略。 那么什么是分布式版本控制系统?版本控制系统并非只有 Git 一种,再此之前还有 SVN 和 CSV,相对的,这两者是集中式版本控制系统。分布式版本控制系统会在每台部署了版本控制的电脑上存储完整的版本库,而集中式版本控制系统则只会在一台主机上保存版本库。因此分布式版本库不仅不需要联网就可以使用,而且更安全,更方便。
Git 基本概念
想要用好 Git,首先要了解 Git 的几个基本概念
git0.png
Workspace: 工作区,平时存放工程代码的地方,也就是工程文件夹。
Index / Stage: 暂存区,用于临时存放你的改动,实际上这是一个文件,里面保存即将提交的文件的信息,一般存放在隐藏目录.git 目录下的 index 文件中。
Repository: 仓库区(或版本库),本地仓库,当前工程路径下的隐藏目录 .git。
Remote: 远端仓库。
Git 工作流程
以上图为例:
  • 从远端仓库 clone 一个仓库到本地,或在本地创建并初始化一个仓库
  • 在工作区中对文件进行添加、编辑、修改、删除
  • 将需要进行版本管理的文件从工作区中 add 后放入暂存区
  • 确认需要保存的更改从暂存区中 commit 至版本库
  • 最后如果需要将本地版本库同步就将版本库 push 至远端工作区
RT-Thread studio 中 git 信息的配置
按如下图配置 RT-Thread studio 中的 git 插件
  • 打开窗口 -> 首选项 -> 配置 git1.png
  • 在图中 user下填入代码托管平台的 email 和 name,如需配置网络代理,可配置 http 代理信息 [color=var(--theme-color, #42b983)] git2.png
RT-Thread studio 中 Git 视图面板介绍
按下图打开 git 视图
上图所示, 从左至右的按钮的功能分别为
  • 导入外部已存在的本地版本库
  • 从远端仓库 clone 一个版本库至本地
  • 创建一个新的版本库并添加至当前视图
  • 刷新
  • 与工作树所选内容连接
  • 显示平行分支布局
  • 显示最新分支的提交
  • 左边区域为版本库的文件树
  • 右边区域为git相关操作的面板,通过打开不同的选项卡可以进行如diff,commit等基本操作

使用特权

评论回复
keer_zu|  楼主 | 2022-4-25 09:38 | 显示全部楼层
Studio创建本地仓库
切换至 git 视图后按如下步骤新建本地仓库
也可以直接从菜单栏新建本地仓库
注:新建本地仓库后需要新建工程并保存至仓库路径,然后添加至暂存区才可以跟踪工程文件的变更

使用特权

评论回复
keer_zu|  楼主 | 2022-4-25 09:39 | 显示全部楼层
RT-Thread studio 导入外部仓库
切换至 git 视图后按如下步骤添加外部已存在仓库至 RT-Thread studio

使用特权

评论回复
keer_zu|  楼主 | 2022-4-25 09:40 | 显示全部楼层
本帖最后由 keer_zu 于 2022-4-25 09:43 编辑

RT-Thread studio 克隆远程仓库
按如下图所示步骤克隆远程仓库至 RT-Thread studio
git11.png
克隆后导入工程(注:只有 eclipse 工程才可以导入成功)
注:从远程仓库克隆至本地后需要导入 RT-Thread studio 工程,才可以在项目资源管理器中显示工程内容
Git 在 RT-Thread studio 中的基本操作  拉取远程仓库代码添加文件到暂存区暂存区内容添加到仓库推送本地仓库至远程仓库文件历史版本比较
按如图所示打开文件变更比较
RT-Thread studio 工程与.gitignore
.gitignore用来描述不被git添加到版本管理中的文件,RT-Thread studio的工程中大概有如下几类文件可以不被包括到版本管理中
  • 工程编译过程中产生的文件,如.elf、.bin、.hex、.map、.o,Debug 目录下以及 build 目录下的文件等
  • 与当前工程不相关的工程配置文件,如.vscode目录下的文件,.uvguix*等
快捷键  如何查看和修改快捷键
通过帮助菜单打开键辅助可查看快捷键
look_key1.png
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.png
由于首选项数量大,种类多,首选项对话框左侧以树形的形式展示所有的首选项,点击对应的首选项类别即可展开对应的首选项配置树,若要查找某个首选项,可直接在 输入过滤文本 框中,输入关键字,进行查找。
首选项右侧即为具体的可配置项页面,修改 后直接点击 应用 即可保存配置,若想恢复当前配置页默认值,点击 恢复默认值 按钮即可。
首选项配置还可以通过左下角 导入,导出 功能,将配置进行保存或者在不同用户间传递或者共享配置,导出功能将把所有配置导出到 .epf 文件中,其它用户直接导入这个 .epf 文件,即可使用该文件记录的所有配置。
optmenu.png
设置主题
通过 首选项 的 外观 配置项选择 “DevStyle Theme” 即可启用新的黑色主题,切换主题后需要重启 Studio 后才会生效
devstyle1.png
通过 DevStyle Theme 的 Color Themes 配置项选择 “Editor theme” 可以切换其他黑色主题,切换主题后需要重启 Studio 后才会生效
devstyle2.png

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1287

主题

12161

帖子

53

粉丝