0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

快使用yml看护主线bsp,让bsp维护更简单!

RT-Thread官方账号 2024-12-03 01:07 次阅读

问题

目前,RT-Thread仓库中的CI(持续集成)系统对BSP(板级支持包)的检查主要限于基本的GPIO和UART编译配置。这种限制可能导致其他一些.c文件未被检测到,从而可能会导致系统更新的时候出现编译不过的情况。通过添加BSP的YML文件,我们可以让CI系统编译更多配置,确保更全面的代码编译覆盖率。

引入yml有以下几点优势:

可读性和易用性:YML文件采用一种简洁明了的格式,非常接近人类语言,便于阅读和理解,即使是非技术人员也能很容易地进行编辑。

集中管理:使用YML文件可以将所有配置选项集中在一个地方,便于统一管理和修改,减少了分散管理带来的复杂性和可能的错误。

版本控制友好:YML文件是文本文件,可以轻松集成到Git等版本控制系统中。这允许跟踪配置变化历史,并在需要时回滚到之前的版本。

扩展性强:YML文件结构化良好,支持嵌套配置,适合用于描述复杂的配置场景,并且易于扩展以满足新的需求。

自动化集成:YML配置文件可以方便地与CI/CD工具集成,实现自动化构建、测试和部署流程,确保各环境下的一致性。

以下是yml文件的主要内容如下所示。

e5ce0d04-b0cf-11ef-8084-92fbcf53809c.png

简介

我们的RT-Thread仓库中,BSP的CI检测已经涵盖了大部分BSP,所有检测配置都集中在.github/workflow/bsp_buildings.yml文件中。当新的BSP提交时,只需在此YML文件中添加相关配置即可。这一过程已经在300多个BSP中得到了应用,每次Pull Request(PR)都会触发相应的检测。

以下是bsp_buildings.yml中的部分内容

e5e7f354-b0cf-11ef-8084-92fbcf53809c.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/csi.attachconfig.yml

参考链接

https://github.com/RT-Thread/rt-thread/blob/master/bsp/nrf5x/nrf52840/.ci/attachconfig/ci.attachconfig.yml

注意这里的文件夹结构和文件名不要改变。

第二步,添加对应的CONFIG

在YML文件中填写需要启用的menuconfig选项。例如,为测试segger_rtt,可参考以下配置:

添加如下配置

e6055232-b0cf-11ef-8084-92fbcf53809c.png

这里的配置就是差异的配置,你可以在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的检测

e61da2d8-b0cf-11ef-8084-92fbcf53809c.png

找到你的BSP查看修改是否生效

e63b56ca-b0cf-11ef-8084-92fbcf53809c.png

这里可以看到编译是否通过,如果不通过,需要修改对应的.c文件

额外功能

添加scons 参数

另外如果需要加--strict 强制编译的话。

直接添加一个参数scons_arg:

例如:

e6620414-b0cf-11ef-8084-92fbcf53809c.png

添加依赖

如果想要复用之前的config,可以参考下图,添加depends 节点

e6786312-b0cf-11ef-8084-92fbcf53809c.png

添加引用

如果想复用之前的scons_arg: 参数也可以参考下面写法:

e691aeee-b0cf-11ef-8084-92fbcf53809c.pnge6ab475a-b0cf-11ef-8084-92fbcf53809c.png

这个主体功能在https://github.com/RT-Thread/rt-thread/blob/master/tools/ci/bsp_buildings.py 中实现。

总结

通过引入YML配置文件,可以有效保存和管理常用的menuconfig配置。这种方法有助于在CI中维护稳定的配置环境,使得常用的配置不会在编译过程中出现问题。建议在添加YML文件时遵循以下规则:

采用单独的yml文件放所有的配置,

每个配置名称尽量不同,如果相同请用--- 号隔开,可以参考yml语法

尽量在kconfig中写出所有修改的配置,保证config配置能够尽可能方便验证。

#表示注释

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 检测
    +关注

    关注

    5

    文章

    4463

    浏览量

    91423
  • BSP
    BSP
    +关注

    关注

    1

    文章

    87

    浏览量

    26130
  • RT-Thread
    +关注

    关注

    31

    文章

    1281

    浏览量

    40019
收藏 人收藏

    评论

    相关推荐

    STM32系列的BSP框架

    为了广大开发者更好、方便地使用 BSP 进行开发,RT-Thread 开发团队重新整理了现有的 STM32 系列的 BSP,推出了新的 BSP
    发表于 08-09 08:51

    STM32系列BSP制作教程简介

    STM32 系列 BSP 制作教程简介为了广大开发者更好、方便地使用 BSP 进行开发,RT-Thread 开发团队重新整理了现有的 STM32 系列的
    发表于 08-24 06:53

    STM32系列BSP制作相关资料推荐

    存放在 Library 文件夹中,通过在特定 BSP 中引用这些文件的方式,来包含 BSP 中所需的库文件或者驱动文件。这种方式不仅大大提高了代码复用率,降低了 BSP维护成本,而
    发表于 09-07 16:02

    STM32系列BSP制作教程相关资料分享

    存放在 Library 文件夹中,通过在特定 BSP 中引用这些文件的方式,来包含 BSP中所需的库文件或者驱动文件。这种方式不仅大大提高了代码复用率,降低了 BSP维护成本,而且可
    发表于 10-10 15:43

    rttstudio使用at32的bsp library驱动为什么和github主线上at32的bsp里面的文件有很大差异呢?

    请问rttstudio里面使用at32的bsp library里面的驱动为啥和现在github主线上at32的bsp里面的文件有很大差异呢 是studio自动建立的工程现在没有跟上更新吗 比如这里面的驱动代码版本就不太一样,
    发表于 09-07 16:39

    基于VxWorks的BSP技术分析

    结合嵌入式操作系统设计的主要特点,针对486 目标机上VxWorks 的定制,运用其BSP 技术解决了移植过程中底层硬件与上层软件无关性的问题。描述了BSP 的概念和启动流程,介绍了BSP
    发表于 08-15 10:45 17次下载

    VxWorks实时操作系统下BSP

    文中介绍实时操作系统V Works中BSP的概念,以及开发BSP必须要了解的交叉调试环境、系统的启动过程、V works Image的分类以及BSP文件的组成等内容。
    发表于 11-27 16:19 16次下载

    vxworks BSP设计

    BSP是Board Support Package的缩写。该术语通常用于嵌入式领域,主要指在开发嵌人式应用时系统开发商提供的各种粗动支持库。在嵌人式领域人们对BSP有各种不同的理解
    发表于 01-15 18:54 2843次阅读

    bsp是什么

    一、BSP是什么 板级支持包(BSP)是介于主板硬件和操作系统中驱动层程序之间的一层,一般认为它属于操作系统一部分,主要是实现对操作系统的支持,为上层的驱动程序提供访问硬件设备寄存器的函数包,使之能
    发表于 10-16 15:59 13.3w次阅读

    Petalinux BSP安装与构建过程

    Petalinux参考bsp可以用户迅速启动。并且,这些设计可以作为用户设计的基。Petalinux BSP是标准可安装格式,包含启动所需的设计和配置文件。BSP包中设计好的软硬件可
    发表于 11-15 11:50 7951次阅读

    STM32系列RT-Thread系统BSP制作教程免费下载

    为了广大开发者更好、方便地使用 BSP 进行开发,RT-Thread 开发团队重新整理了现有的 STM32 系列的 BSP,推出了新的 BSP
    发表于 02-25 08:00 47次下载
    STM32系列RT-Thread系统<b class='flag-5'>BSP</b>制作教程免费下载

    Xilinx如何配置BSP工程包含的的公共模块

    Xilinx的SoC在业界应用非常广泛。对应的开发工具SDK也很成熟。在SDK里,每一个baremetal工程,对应一个BSP工程,它包含一些Xilinx提供的公共模块,比如硬件的驱动
    的头像 发表于 10-09 12:22 3579次阅读
    Xilinx如何配置<b class='flag-5'>BSP</b>工程包含的的公共模块

    嵌入式中的BSP---BSP到底是什么

    转自: http://blog.chinaunix.net/uid-20788636-id-1841270.html(1)什么是BSPBSP是板级支持包,(board support
    发表于 10-21 13:36 5次下载
    嵌入式中的<b class='flag-5'>BSP---BSP</b>到底是什么

    MCU软件开发——如何设计bsp

    如何设计bsp
    发表于 11-05 16:35 8次下载
    MCU软件开发——如何设计<b class='flag-5'>bsp</b>

    BSP 入门简介 | 九七的BSP

    BSP Camera开发BSP(Board Support Package),板级支持包,也称为硬件抽象层HAL或者中间层。看不懂没关系,等看完所有的文档,你的疑惑都会得到解决的。作为BSP
    发表于 01-17 12:16 7次下载
    <b class='flag-5'>BSP</b> 入门简介 | 九七的<b class='flag-5'>BSP</b>