Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
sdk-bsp-gd32vf103v-eval提交记录(二)
发布于 2022-05-22 13:22:18 浏览:555
订阅该版
[tocm] sdk-bsp-gd32vf103v-eval的提交分为三部分: 1. gd32vf103v-eval 在rtthread studio可编译的demo 工程,gcc和debug 工具测试 2. PR nuclei gcc , nuclei openocd 和 sdk-bsp-gd32vf103v-eval(v1.0.0版本) 3. 优化源码部分,提供jlink调试配置(v1.0.1版本) 上一篇已经介绍了 [sdk-bsp-gd32vf103v-eval提交记录(一)](https://club.rt-thread.org/ask/article/450adf542fa20b1b.html) 这次补一下第二部分 :PR nuclei gcc , nuclei openocd 和 sdk-bsp-gd32vf103v-eval(v1.0.0版本) 这次主要是流程问题,稍显枯燥。 # 1 PR tools 因为SDK 管理器里关于 gd32vf103 只有GD32VF103-NuCLEI-RVSTA 一个BSP,这个kit 是Nuclei的评估板,大家使用的并不多 ![image-20220521195148535.png](https://oss-club.rt-thread.org/uploads/20220522/2d02da8fcbfc3229e1c8a0a4ca3f1837.png.webp) 另外这个sdk 在studio里只能编译,不能直接下载和调试,比较鸡肋,这也是要做gd32vf103v-eval sdk的原因 它的编译和下载,readme里推荐的是在scons 使用nuclei的 gcc 和 openocd。为了同步官方工具,我们也使用同样的工具,但 studio SDK里目前并没有 所以需要我们自己先添加nuclei的gcc 和debugger tools两个包。 ## 1.1 Nuclei GCC ### 1.1.1 下载 先从官网https://www.nucleisys.com/download.php上下载最新的2022.04 版gcc ![image-20220521202730377.png](https://oss-club.rt-thread.org/uploads/20220522/44265a2898c47bea21d3c3c6991dc570.png.webp) ### 1.1.2 新建仓库 在github上新建 sdk-toolchain-risc-v-gcc-nuclei公开仓库, ![image-20220521203931139.png](https://oss-club.rt-thread.org/uploads/20220522/f55e2f4e5dc7f7daae2670a7a5374852.png.webp) 在本地按照SDK命名方式新建sdk-toolchain-risc-v-gcc-nuclei文件夹,把下载的gcc解压至该目录,保证bin在根目录下 新建本地仓库,添加并提交所有文件 ![image-20220522075202650.png](https://oss-club.rt-thread.org/uploads/20220522/eca1a7cd717e920e759950b59b2da56e.png.webp) 然后,添加远程仓库为刚刚新建的github 仓库,并push ![image-20220521204529077.png](https://oss-club.rt-thread.org/uploads/20220522/e9d2818e1460acc38f4b1c719264dd15.png.webp) ### 1.1.3 clone 对比 因为这些都是预编译的可以执行文件,虽然我们没有ignore任何文件,但不保证git提交时会自动忽略某些文件。保险起见,拉下来对比一下: ![image-20220522074704458.png](https://oss-club.rt-thread.org/uploads/20220522/36f3627c5d0a2d5c20eec18cef23cee2.png.webp) > 除了几个空文件夹不同,其他均相同 ### 1.1.4 更新 sdk-index 从rtt 远程更新本地master分支,然后新建feature/nuclei_tools ``` LT@DESKTOP-Win10 MINGW64 /e/Gitea/sdk-index (feature/nuclei_tools) $ git remote -v origin git@github.com:blta/sdk-index.git (fetch) origin git@github.com:blta/sdk-index.git (push) rtt https://github.com/RT-Thread-Studio/sdk-index.git (fetch) rtt https://github.com/RT-Thread-Studio/sdk-index.git (push) ``` 1)在 sdk-index/Tool_Chain/index.json 追加 "RISC-V-GCC-NUCLEI" 工具链 ![image-20220521214027026.png](https://oss-club.rt-thread.org/uploads/20220522/5b230d660bf96d794d195832f8491f0b.png.webp) 2)然后在 Tool_Chain目录下新建 RISC-V-GCC-NUCLEI目录 并新建index.json文件如下 ![image-20220521214522378.png](https://oss-club.rt-thread.org/uploads/20220522/d66325c037afa694bb8250fbd2d577d4.png.webp) > - URL 一定要以zip结尾的格式,不然CI不识别,不能下载 > > - 第一个版本上传出错了, 2022.05还是2022.04版本 ## 1.2 NuClei OpenOCD 和GCC操作几乎一致 ### 1.2.1 下载 先从官网https://www.nucleisys.com/download.php上下载最新的2022.04 版 Nuclei OpenOCD ![image-20220521202730377.png](https://oss-club.rt-thread.org/uploads/20220522/44265a2898c47bea21d3c3c6991dc570.png.webp) ### 1.2.2 新建仓库 在github上新建**[sdk-debugger-openocd-nuclei](https://github.com/blta/sdk-debugger-openocd-nuclei)** 公开仓库, ![image-20220521214906134.png](https://oss-club.rt-thread.org/uploads/20220522/5b7bd043d973194f1916c8829c1d7f13.png.webp) 在本地按照SDK命名方式新建 sdk-debugger-openocd-nuclei文件夹,把下载的openocd解压至该目录,保证bin在根目录下 新建本地仓库,添加所有文件并提交 ![image-20220521203212922.png](https://oss-club.rt-thread.org/uploads/20220522/6c2bff26fc7a924557d4cb6ebc2a5dce.png.webp) 然后,添加远程仓库为刚刚新建的github 仓库,并push ![image-20220522075348717.png](https://oss-club.rt-thread.org/uploads/20220522/cfcf901323ecf56686874355817d8eab.png.webp) ### 1.2.3 clone 对比 完全一致 ![image-20220522075643763.png](https://oss-club.rt-thread.org/uploads/20220522/f39d6a8cc2a8c555a7824a30bdd4420a.png.webp) ### 1.2.4 更新 sdk-index 在 feature/nuclei_tools基础上继续: 1)在 sdk-index/Debugger/index.json 追加 "OpenOCD-Nuclei" 工具链 ![image-20220522080030245.png](https://oss-club.rt-thread.org/uploads/20220522/1ccd4c19908a11c2c773d10bd7298cb2.png.webp) 2)然后在 Debugger目录下新建 OpenOCD-Nuclei目录, 并新建index.json文件如下 ![image-20220522080148425.png](https://oss-club.rt-thread.org/uploads/20220522/aec6efbfb51ba00ae5039f4c93465189.png.webp) > - URL 一定要以zip结尾的格式,不然CI不识别,不能下载 > > - 第一个版本上传出错了, 2022.05还是2022.04版本 ## 1.3 PR 本地提交修改后,push到自己的github仓库,就可以向[RT-Thread-Studio/sdk-index](https://github.com/RT-Thread-Studio/sdk-index) 发起PR 需要注意的是: 1.目前studio SDK 并不支持 ToolChain_Support_Packages 和 Debugger_Support_Packages 本地导入自测 2.如果你的PR已经被合并,CI会自动把你的zip包下载国内的gitee服务器上,新建分支或者仓库 [riscv-gnu_toolchain](https://gitee.com/RT-Thread-Studio-Mirror/riscv-gnu-toolchain)下新建了一个分支 ![image-20220522082142764.png](https://oss-club.rt-thread.org/uploads/20220522/64d06940ba19aafad250b6e43f210aad.png.webp) [RT-Thread-Studio-Mirror](https://gitee.com/RT-Thread-Studio-Mirror)下新建了一个仓库 ![image-20220522082717277.png](https://oss-club.rt-thread.org/uploads/20220522/b8174104178a1292db92140090d95bcc.png.webp) 3.前两条意味着,**只要你的PR被合并,CI同步完成后, 你在本地测试发现问题了,也只能更新升级,重新PR,还要升级版本号**. **所以提交之前多检测几遍!** ## 1.4 测试 PR合并后,在SDK manager里发现了最新的 Nuclei GCC and OpenOCD,具体的功能测试放在后面的工程里。 ![image-20220522102628468.png](https://oss-club.rt-thread.org/uploads/20220522/71c57c2e415e0c65e4be2592fa385499.png.webp) # 2 PR BSP ## 2.1 配置demo 在[sdk-bsp-gd32vf103v-eval提交记录(一)](https://club.rt-thread.org/ask/article/450adf542fa20b1b.html) 里我们新建了一个可以运行的Demo,还需要调整一下配置 ![image-20220522092516526.png](https://oss-club.rt-thread.org/uploads/20220522/cdbbd23b386d4f3844824a286e61bcb9.png.webp) ### 2.1.1 输出文件名 把输出文件名统一改成rtthread, 最后会生成rtthread.elf 用于debugger配置 ![image-20220522101736576.png](https://oss-club.rt-thread.org/uploads/20220522/25e8ad0aeb2cf5886b48347e646db89d.png.webp) ### 2.1.2 添加nature 属性 如果.project文件内缺少了 org.rt-thread.studio.rttnature 属性,请添加一下,不然后面不能生成和打开debugger配置 ![image-20220522102017035.png](https://oss-club.rt-thread.org/uploads/20220522/93da1831736e12981e90121a02795266.png.webp) > 感谢RTT工作人员的支持 ### 2.1.3 Toolchains设置 更新一下Nuclei GCC系统路径(需要提前在SDK里下载好) ![image-20220522102401179.png](https://oss-club.rt-thread.org/uploads/20220522/70ace596f3938209353b6256f728d49d.png.webp) ### 2.1.4 hardware_adapter projcfg.ini 里的 hardware_adapter决定了使用那种debugger配置 ![image-20220522103447174.png](https://oss-club.rt-thread.org/uploads/20220522/8c21fdadbdd3938ec4292464565add1a.png.webp) ### 2.1.5 .Debug.rttlaunch 如果.setting下没有`.Debug.rttlaunch`文件,单击配置工程时,会自动生成一个`工程名.调试器类型.Debug.rttlaunch`文件 并根据它生成配置界面 ![image-20220522103808684.png](https://oss-club.rt-thread.org/uploads/20220522/5e77528247ddd53be060826fbea19a09.png.webp) 基于最新的SDK Nuclei tools 调整OpenOCD 和 GDB路径 ![image-20220522104040583.png](https://oss-club.rt-thread.org/uploads/20220522/748948aae7728e65c5449d78c5277908.png.webp) ### 2.1.6 再次编译测试 重新编译,并debugger一次,测试一下新的toolchains 和 opeocd debugger ### 2.1.7 readme.md 编译测试没有问题后,就需要在工程根目录下添加或修改readme.md,提示用户编译,下载,驱动支持等注意事项 ![image-20220523081046407.png](https://oss-club.rt-thread.org/uploads/20220523/ceda0e4a1e73031172dd6f8940d934b5.png.webp) 上述步骤全部没有问题后,就可以保存工程作为制作sdk-bsp的demo了。 ## 2.2 新建 sdk-bsp Studio里 文件->新建->开发板支持包 ### 2.2.1 开发版支持包信息 ![image-20220522093808111.png](https://oss-club.rt-thread.org/uploads/20220522/9dd02fd006ce5e7aa0f751066f9ae954.png.webp) ### 2.2.2 开发板信息 ![image-20220522093032400.png](https://oss-club.rt-thread.org/uploads/20220522/5bc24cda3b370b106621908a871e35a4.png.webp) ### 2.2.3 开发板特性 ![image-20220522093106510.png](https://oss-club.rt-thread.org/uploads/20220522/376e03348752fc1b7b76ea7a982ffabf.png.webp) ### 2.2.4 文档信息 ![image-20220522093136343.png](https://oss-club.rt-thread.org/uploads/20220522/7d27cd9bdbf162caa7a76a0fdaf0a53a.png.webp) ### 2.2.5 工程信息 添加一个工程模板,工程路径选择我们的demo工程。 ![image-20220522093458250.png](https://oss-club.rt-thread.org/uploads/20220522/87c2014a169e52f9e6c0b5af7a731d17.png.webp) ### 2.2.6 生成 点击右上角生成按钮,生成sdk-bsp ![image-20220522093730270.png](https://oss-club.rt-thread.org/uploads/20220522/550dc9dbf7ae3251d7c16ba16dd65e45.png.webp) ### 2.2.7 本地repo track sdk-bsp 一次性成功的概率很小,需要不断测试(我这里省略了很多中间调试),另外也要往github上推送。所以先建立一个本地仓库追踪一下 ![image-20220522100243844.png](https://oss-club.rt-thread.org/uploads/20220522/221a1666775e6bf84ccd066607ae8199.png.webp) 另外建议把生成的sdk-bsp 放到仓库根目录: 1. 平时修改基于根目录下的 project0 和 yaml文件,忽略 sdk-bsp-gd32vf103v-eval文件夹变更 2. 测试没有问题后,把最后的sdk-bsp-gd32vf103v-eval里的内容拷贝到根目录 ## 2.3 本地导入测试 ### 2.3.1 sdk-bsp导入 压缩刚刚生成的sdk-bsp为zip类型文件, sdk manager本地导入 ![image-20220522101007177.png](https://oss-club.rt-thread.org/uploads/20220522/58c676fa0ad1282378c0604ee1b9a003.png.webp) 导入成功后看到一个offline的 bsp support packages ![image-20220522101116536.png](https://oss-club.rt-thread.org/uploads/20220522/1853377afc0be9b259b38bfee953ef60.png.webp) ### 2.3.2 新建工程测试 基于刚刚的SDK-bsp新建一个测试工程 ![image-20220522101341950.png](https://oss-club.rt-thread.org/uploads/20220522/98b8d8d9d79f03c5f475499126b5896a.png.webp) ### 2.3.3 工程测试 测试一下新生成工程下面的功能是否正确: - RT-Thread Setting, - 编译 - OpenOCD 下载和Debugger功能 ![image-20220522104740422.png](https://oss-club.rt-thread.org/uploads/20220522/ea57bf789fbb757351bd3bc6d981763a.png.webp) ## 2.4 PR ### 2.4.1 sdk-bsp 远程仓库 本地测试生成的sdk-bsp没有问题后,就可以推送到远程github自己的账号下了 ``` $ git remote -v gitea ssh://git@192.168.0.103:10022/Emb_RT-Thread/sdk-bsp-gd32vf103v-eval.git (fetch) gitea ssh://git@192.168.0.103:10022/Emb_RT-Thread/sdk-bsp-gd32vf103v-eval.git (push) origin git@github.com:blta/sdk-bsp-gd32vf103v-eval.git (fetch) origin git@github.com:blta/sdk-bsp-gd32vf103v-eval.git (push) LT@DESKTOP-Win10 MINGW64 /e/Gitea/sdk-bsp-gd32vf103v-eval (master) $ git push origin master Everything up-to-date ``` ### 2.4.2 远程仓库release 远程仓库需要release一个版本给下面的sdk-index使用 ![image-20220522112307993.png](https://oss-club.rt-thread.org/uploads/20220522/f978534efc60950d53ac3f7a454ab76d.png.webp) ### 2.4.3 再次更新sdk-index 这次更新的是Board_Support_Packages, 基于最新的RT-Thread-Studio/sdk-index 新建本地分支feature/sdk-bsp-gd32vf103v-eval ``` LT@DESKTOP-Win10 MINGW64 /e/Gitea/sdk-index (master) $ git remote -v origin git@github.com:blta/sdk-index.git (fetch) origin git@github.com:blta/sdk-index.git (push) rtt https://github.com/RT-Thread-Studio/sdk-index.git (fetch) rtt https://github.com/RT-Thread-Studio/sdk-index.git (push) LT@DESKTOP-Win10 MINGW64 /e/Gitea/sdk-index (master) $ git pull rtt master From https://github.com/RT-Thread-Studio/sdk-index * branch master -> FETCH_HEAD Already up to date. LT@DESKTOP-Win10 MINGW64 /e/Gitea/sdk-index (master) $ git ck -b feature/sdk-bsp-gd32vf103v-eval Switched to a new branch 'feature/sdk-bsp-gd32vf103v-eval' ``` ### 2.4.4 追加`"GD32VF103V-GD-EVAL"` BSP 在Board_Support_Packages/GigaDevice/index.json里最追加`"GD32VF103V-GD-EVAL"` BSP ![image-20220522111142042.png](https://oss-club.rt-thread.org/uploads/20220522/12b80c424e50d8c511b836a00ffc4334.png.webp) ### 2.4.5 新建GD32VF103V-GD-EVAL/index.json ![image-20220522111334118.png](https://oss-club.rt-thread.org/uploads/20220522/36a266a62dca37a2cabddea85b8ea84b.png.webp) > Note: > > - repository : 要填写`2.4.1 sdk-bsp 远程仓库`中使用的仓库地址 > > - releases/url: 要填写`2.4.2 远程仓库release`得到的URL ### 2.4.6 PR 把上述更改本地提交后,推送到github自己账户下,随后向https://github.com/RT-Thread-Studio/sdk-index发起PR ![image-20220522112647046.png](https://oss-club.rt-thread.org/uploads/20220522/800761bd5cfee6b0ec8f27c5527db9d8.png.webp) > 另外说一下这个sdk-bsp 不支持Nuclei GCC and OpenOCD两个依赖包的自动下载, 尝试加了,但生成的工程有问题,v1.0.0版本先放弃了 > > 请在本地先手动下载它们。 > >![image-20220522102628468.png](https://oss-club.rt-thread.org/uploads/20220522/71c57c2e415e0c65e4be2592fa385499.png.webp) ## 2.5 本地测试 PR合并后就可以在SDK manager里发现最新的bsp了,下载后,基于`bsp 1.0.0` 新建工程测试一下 ![image-20220522113442243.png](https://oss-club.rt-thread.org/uploads/20220522/a9b38e50e172a011c52a4ad28e9a6bbc.png.webp) > Note: bsp 后面带`(offline)`的是本地导入的 **第二部分PR v1.0.0 完成**
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
blta
这家伙很懒,什么也没写!
文章
12
回答
9
被采纳
2
关注TA
发私信
相关文章
1
有关动态模块加载的一篇论文
2
最近的调程序总结
3
晕掉了,这么久都不见layer2的踪影啊
4
继续K9ii的历程
5
[GUI相关] FreeType 2
6
[GUI相关]嵌入式系统中文输入法的设计
7
20081101 RT-Thread开发者聚会总结
8
嵌入式系统基础
9
linux2.4.19在at91rm9200 上的寄存器设置
10
[转]基于嵌入式Linux的通用触摸屏校准程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
xiaorui
1
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部