問題
目前,RT-Thread倉庫中的CI(持續(xù)集成)系統(tǒng)對BSP(板級支持包)的檢查主要限于基本的GPIO和UART編譯配置。這種限制可能導致其他一些.c文件未被檢測到,從而可能會導致系統(tǒng)更新的時候出現(xiàn)編譯不過的情況。通過添加BSP的YML文件,我們可以讓CI系統(tǒng)編譯更多配置,確保更全面的代碼編譯覆蓋率。
引入yml有以下幾點優(yōu)勢:
可讀性和易用性:YML文件采用一種簡潔明了的格式,非常接近人類語言,便于閱讀和理解,即使是非技術(shù)人員也能很容易地進行編輯。
集中管理:使用YML文件可以將所有配置選項集中在一個地方,便于統(tǒng)一管理和修改,減少了分散管理帶來的復雜性和可能的錯誤。
版本控制友好:YML文件是文本文件,可以輕松集成到Git等版本控制系統(tǒng)中。這允許跟蹤配置變化歷史,并在需要時回滾到之前的版本。
擴展性強:YML文件結(jié)構(gòu)化良好,支持嵌套配置,適合用于描述復雜的配置場景,并且易于擴展以滿足新的需求。
自動化集成:YML配置文件可以方便地與CI/CD工具集成,實現(xiàn)自動化構(gòu)建、測試和部署流程,確保各環(huán)境下的一致性。
以下是yml文件的主要內(nèi)容如下所示。

簡介
我們的RT-Thread倉庫中,BSP的CI檢測已經(jīng)涵蓋了大部分BSP,所有檢測配置都集中在.github/workflow/bsp_buildings.yml文件中。當新的BSP提交時,只需在此YML文件中添加相關(guān)配置即可。這一過程已經(jīng)在300多個BSP中得到了應用,每次Pull Request(PR)都會觸發(fā)相應的檢測。
以下是bsp_buildings.yml中的部分內(nèi)容

之前論壇有文章介紹了如何使用attach文件來擴大CI檢測范圍,當前的目標基本一致,即希望CI能檢測更多配置,從而編譯更多的.c文件。此外,用戶還可以上傳自己的常用配置以便復用。RT-Thread論壇上搜索”attach”關(guān)鍵字大家可以查看文章。
attach: 大致上可以理解為不同的config配置,提供給CI,讓CI來進行編譯檢查。
yml文件
我們引入了一個包含所有配置的YML文件,方便統(tǒng)一管理和修改。這種方式與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
注意這里的文件夾結(jié)構(gòu)和文件名不要改變。
第二步,添加對應的CONFIG
在YML文件中填寫需要啟用的menuconfig選項。例如,為測試segger_rtt,可參考以下配置:
添加如下配置

這里的配置就是差異的配置,你可以在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的檢測

找到你的BSP查看修改是否生效
這里可以看到編譯是否通過,如果不通過,需要修改對應的.c文件
額外功能
添加scons 參數(shù)
另外如果需要加--strict 強制編譯的話。
直接添加一個參數(shù)scons_arg:
例如:
添加依賴
如果想要復用之前的config,可以參考下圖,添加depends 節(jié)點
添加引用
如果想復用之前的scons_arg: 參數(shù)也可以參考下面寫法:
這個主體功能在https://github.com/RT-Thread/rt-thread/blob/master/tools/ci/bsp_buildings.py 中實現(xiàn)。
總結(jié)
通過引入YML配置文件,可以有效保存和管理常用的menuconfig配置。這種方法有助于在CI中維護穩(wěn)定的配置環(huán)境,使得常用的配置不會在編譯過程中出現(xiàn)問題。建議在添加YML文件時遵循以下規(guī)則:
采用單獨的yml文件放所有的配置,
每個配置名稱盡量不同,如果相同請用--- 號隔開,可以參考yml語法
盡量在kconfig中寫出所有修改的配置,保證config配置能夠盡可能方便驗證。
#表示注釋
-
檢測
+關(guān)注
關(guān)注
5文章
4615瀏覽量
92576 -
BSP
+關(guān)注
關(guān)注
1文章
91瀏覽量
26768 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1372瀏覽量
41570
發(fā)布評論請先 登錄
STM32系列的BSP框架
STM32系列BSP制作教程簡介
STM32系列BSP制作教程相關(guān)資料分享
rttstudio使用at32的bsp library驅(qū)動為什么和github主線上at32的bsp里面的文件有很大差異呢?
基于VxWorks的BSP技術(shù)分析
VxWorks實時操作系統(tǒng)下BSP
vxworks BSP設計
bsp是什么
Petalinux BSP安裝與構(gòu)建過程
STM32系列RT-Thread系統(tǒng)BSP制作教程免費下載

Xilinx全新開發(fā)工具Vitis里,如何配置BSP?

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

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

BSP 入門簡介 | 九七的BSP

評論