Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
BSP
github
github_CI_action
还在担心bsp不好维护吗?快使用yml管理主线bsp
发布于 2024-11-24 23:45:33 浏览:339
订阅该版
[tocm] # 如何在master上的BSP中添加配置yml文件 ## 问题 目前,RT-Thread仓库中的CI(持续集成)系统对BSP(板级支持包)的检查主要限于基本的GPIO和UART编译配置。这种限制可能导致其他一些.c文件未被检测到,从而可能会导致系统更新的时候出现编译不过的情况。通过添加BSP的YML文件,我们可以让CI系统编译更多配置,确保更全面的代码编译覆盖率。 引入yml有以下几点优势: - **可读性和易用性**:YML文件采用一种简洁明了的格式,非常接近人类语言,便于阅读和理解,即使是非技术人员也能很容易地进行编辑。 - **集中管理**:使用YML文件可以将所有配置选项集中在一个地方,便于统一管理和修改,减少了分散管理带来的复杂性和可能的错误。 - **版本控制友好**:YML文件是文本文件,可以轻松集成到Git等版本控制系统中。这允许跟踪配置变化历史,并在需要时回滚到之前的版本。 - **扩展性强**:YML文件结构化良好,支持嵌套配置,适合用于描述复杂的配置场景,并且易于扩展以满足新的需求。 - **自动化集成**:YML配置文件可以方便地与CI/CD工具集成,实现自动化构建、测试和部署流程,确保各环境下的一致性。 以下是yml文件的主要内容如下所示。 ![image-20241124232006233.png](https://oss-club.rt-thread.org/uploads/20241124/96ace3d2a5faf7bfd43946ba2bdf57ee.png.webp) ## 简介 我们的RT-Thread仓库中,BSP的CI检测已经涵盖了大部分BSP,所有检测配置都集中在.github/workflow/bsp_buildings.yml文件中。当新的BSP提交时,只需在此YML文件中添加相关配置即可。这一过程已经在300多个BSP中得到了应用,每次Pull Request(PR)都会触发相应的检测。 以下是bsp_buildings.yml中的部分内容 ![image-20241124231650166.png](https://oss-club.rt-thread.org/uploads/20241124/ba78819c2c5e49d3e7f7c4d3464113d2.png) 之前论坛有文章介绍了如何使用attach文件来扩大CI检测范围,当前的目标基本一致,即希望CI能检测更多配置,从而编译更多的.c文件。此外,用户还可以上传自己的常用配置以便复用。 RT-THREAD论坛上搜索"attach"关键字大家可以查看文章。 attach: 大致上可以理解为不同的config配置,提供给CI,让CI来进行编译检查。 ## yml文件 我们引入了一个包含所有配置的YML文件,方便统一管理和修改。这种方式与attach文件功能相同,采用YML文件更易管理和编辑,也可以采用之前attach文件方式,目前是兼容的。 参考yml文件 https://github.com/RT-Thread/rt-thread/blob/master/bsp/nrf5x/nrf5340/.ci/attachconfig/ci.attachconfig.yml ## 如何添加yml文件 ### 第一步添加ci.attachconfig.yml 在你常用的bsp下面添加文件`.ci/attachconfig/ci.attachconfig.yml` 比如`bsp/nrf5x/nrf5340/.ci/attachconfig/ci.attachconfig.yml` 参考链接 https://github.com/RT-Thread/rt-thread/blob/master/bsp/nrf5x/nrf52840/.ci/attachconfig/ci.attachconfig.yml 请确保文件夹结构和文件名保持不变。 ### 第二步,添加对应的CONFIG 在YML文件中填写需要启用的menuconfig选项。例如,为测试segger_rtt,可参考以下配置: 添加如下配置 ``` segger: kconfig: - CONFIG_PKG_USING_SEGGER_RTT=y - CONFIG_RT_USING_SERIAL_V2=y ``` 这里的配置就是差异的配置,你可以在menuconfig之后,查看`.config` 的差异,找到这些修改之后的配置。这里注意只需要填写主要的menuconfig的那个主配置,比如这里选中软件包`CONFIG_PKG_USING_SEGGER_RTT` 其他默认配置不需要添加,只添加修改的配置即可。 如果想要disable某个配置也是添加`CONFIG_RT_USING_SERIAL_V2=n`即可。 ### 第三步,提PR验证 通常提交PR之后,会有一个对所有BSP的检测 https://github.com/RT-Thread/rt-thread/actions/workflows/bsp_buildings.yml 这里是所有bsp的检测 ![image-20241124232719919.png](https://oss-club.rt-thread.org/uploads/20241124/e5f6fb6376aa28150a4deb4c1831ca01.png.webp) 找到你的BSP查看修改是否生效 ![image-20241124232847980.png](https://oss-club.rt-thread.org/uploads/20241124/8c9745a1ee169fb906b7cb7cc8df96b0.png.webp) 这里可以看到编译是否通过,如果不通过,需要修改对应的.c文件 ## 额外功能 ### 添加scons 参数 另外如果需要加`--strict` 强制编译检查的话。 直接添加一个参数` scons_arg:` 例如: ``` devices.gpio: scons_arg: - '--strict' kconfig: - CONFIG_BSP_USING_GPIO=y ``` ### 添加依赖 如果想要复用之前的config,可以参考下图,添加`depends` 节点 ![image-20241124233431433.png](https://oss-club.rt-thread.org/uploads/20241124/98ac4c5c2e700877e8071331be3b7f6e.png) ### 添加引用 如果想复用之前的scons_arg: 参数也可以参考下面写法: ``` scons.args: &scons scons_arg: - '--strict' devices.gpio: <<: *scons kconfig: - CONFIG_BSP_USING_GPIO=y ``` ![image-20241124233535738.png](https://oss-club.rt-thread.org/uploads/20241124/9772a3b27239a9d6a8900181a073c82d.png) 这个主体功能在`https://github.com/RT-Thread/rt-thread/blob/master/tools/ci/bsp_buildings.py` 中实现。 ## 总结 通过引入YML配置文件,可以有效保存和管理常用的menuconfig配置。这种方法有助于在CI中维护稳定的配置环境,使得常用的配置不会在编译过程中出现问题。建议在添加YML文件时遵循以下规则: - 采用单独的yml文件放所有的配置, - 每个配置名称尽量不同,如果相同请用`---` 号隔开,可以参考yml语法 - 尽量在kconfig中写出所有修改的配置,保证config配置能够尽可能方便验证。 - `#`表示注释 ## 参考引用: 官方文档:https://yaml.org/spec/1.2.2/ yml转jason: https://nodeca.github.io/js-yaml/ yml语法教程:https://mp.weixin.qq.com/s/S6l5KHyufsV0FGDgm-ZW9g
3
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
RTT_逍遥
https://github.com/supperthomas
文章
36
回答
500
被采纳
75
关注TA
发私信
相关文章
1
STM32 407 串口接收数据 系统卡死
2
RTT nrf24l01 设备驱动程序
3
stm32f10x串口只能发送数据,无法接收
4
第一次尝试移植rt-thread 到stm32F103系列问题
5
有人把stm32L07xx的bsp移到rtt上来了吗?求一个
6
rt-thread线程调度异常在stm32f103芯片上
7
RTT是否支持STM32F429
8
请问谁有 STM32F40x HAL + RT-THREAD 模板
9
rt-thread在stm32f411下的移植问题
10
针对STM32F7系列平台的MPU,Cache特性,需要注意哪些问题?
推荐文章
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
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1444
个答案
289
次被采纳
张世争
808
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
catcatbing
3
篇文章
4
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部