Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
github
[github][action] RTT黑科技: 添加手动打包和编译特定bsp功能
发布于 2023-06-11 09:02:37 浏览:751
订阅该版
[tocm] # 如何手动打包RTT 上的bsp ## 简介 有很多小伙伴喜欢用`scons --dist` 功能下载包,但是又有时候不想下载RT-THREAD的所有的包,这个时候,可以考虑看下这篇文章,说不定对你有帮助。 这边我提供了一种手动来trigger 生成特定bsp的project文件。 ## 如何使用 打开仓库:https://github.com/RT-Thread/rt-thread 比如想生成qemu-vexpress-a9的单独的project,可以参考下面图的操作: ![image-20230611083740485.png](https://oss-club.rt-thread.org/uploads/20230611/f794c4e108b17996396166057427f8d6.png.webp) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230815/f2997597881abb33ae105fd1d3ae1276.png.webp) 这个时候,你可以选择自己熟悉的bsp,只需要告诉action你需要编译的bsp路径就可以了,然后选择一下tool_chain, 自己应该知道平时用的是哪个toolchain。 - 注意事项:你需要有这个仓库的权限才行,所以如果小伙伴发现没有这个按钮,你可以把仓库fork下来,在自己fork之后的仓库来操作 最后如果需要,可以选择一个配置进行选择配置,比如`CONFIG_BSP_USING_I2C` ,最后执行`Run worflow` 绿色的小按钮。之后就可以让action帮你生成了。 ## 生成之后的文件在哪里 点完之后,会稍微需要等一会,因为action在跑运行。 ![image-20230611084022124.png](https://oss-club.rt-thread.org/uploads/20230611/875542abfad5db170c34383880f86dc1.png) 稍微等个5分钟以内吧。然后就可以获得工程文件,参考下图: ![image-20230611084324727.png](https://oss-club.rt-thread.org/uploads/20230611/e51fcc810d4affeea23ce21c944f8afc.png.webp) 这个时候,你就可以把这个下载下来。当然这个action也会帮你检查bsp的scons编译情况(可以加特定config 配置情况),你不需要每次都把最新的代码下载下来。 ## 最后文件 最后zip包里面有两个文件,`project.zip` 和`qemu-vexpress-a9` 这两个文件,`project.zip` 就是我们平时用的`scons --dist` 生成出来的。另外一个文件就是原来master分支上bsp经过scons编译之后,里面包含可执行文件,如果qemu-vexpress-a9,你可以在scons直接执行,里面已经有`rtthread.elf` 文件。 ## 原理讲解 如何实现上述功能呢? 这里很多是关于github action的内容,方便后续维护。 这个功能添加的PR 链接:https://github.com/RT-Thread/rt-thread/pull/7648 ### 输入功能 github action 有一个input输入功能,可以用来手动trigger ``` # Controls when the action will run. Triggers 'scons --dist' to build the dist on: workflow_dispatch: # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onworkflow_dispatchinputs inputs: bsp_options: description: 'Which bsp path Would you want dist in bsp?like stm32/stm32l496-st-nucleo ' required: false type: string default: 'qemu-vexpress-a9' bsp_tool_chain: description: 'Choice tool_chain' required: false default: 'sourcery-arm' type: choice options: - "sourcery-arm" - "llvm-arm" - "sourcery-aarch64" - "sourcery-mips" - "sourcery-riscv-none-embed" - "sourcery-riscv64-unknown-elf" bsp_config: description: 'Type a config you want mannual test in .config, like CONFIG_BSP_USING_I2C CONFIG_BSP_USING_WDT ' required: false type: string default: 'CONFIG_BSP_USING_GPIO' ``` 这里可以具体内容参考github中的文档: https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onworkflow_dispatchinputs 大概看yaml也能大概看懂,就是输入的一些参数改成变量`bsp_options`, `bsp_tool_chain`,`bsp_config` 有了这3个变量,我们就可以编译特定的bsp了。 ### 如何编译执行 如何编译执行,这里参考了一下action.yml中的操作,将.config按照要求修改,然后执行`pkgs --update` 更新下软件包,然后执行下`scons`, 把scons之后的bsp先拷贝出来,之后再执行`scons --dist` 最后将project.zip也拷贝出来,方便后面上传。 ``` - name: Bsp Scons Compile if: ${{ success() }} shell: bash env: RTT_BSP: ${{ github.event.inputs.bsp_options }} RTT_TOOL_CHAIN: ${{ github.event.inputs.bsp_tool_chain}} run: | source ~/.env/env.sh echo $RTT_BSP ls bsp/$RTT_BSP/Kconfig && scons -C bsp/$RTT_BSP --pyconfig-silent sed -i "s/# ${{ github.event.inputs.bsp_config }} is not set/${{ github.event.inputs.bsp_config }}=y/g" bsp/$RTT_BSP/.config pushd bsp/$RTT_BSP && pkgs --update && popd scons -C bsp/$RTT_BSP -j$(nproc) mkdir -p ${{ github.workspace }}/$RTT_BSP cp -r bsp/$RTT_BSP ${{ github.workspace }}/$RTT_BSP/ scons --dist -C bsp/$RTT_BSP cp bsp/$RTT_BSP/dist/project.zip ${{ github.workspace }}/$RTT_BSP/ ls bsp/$RTT_BSP/dist pwd ``` ### 如何上传中间文件 那如何上传中间文件的呢? 这里就要用到github中的一个小功能了。 只需要在action中添加下面的代码。 - name 是你要显示的名字 - path 是你要上传的文件路径 ``` - uses: actions/upload-artifact@v3 with: name: dist_file path: ${{ github.workspace }}/${{ github.event.inputs.bsp_options }}/* ``` ## 总结 这个方便生成dist之后的文件。大家如果觉得好用,可以在评论区留言。如果觉得有哪里还有可以改进的地方,也可也在评论区里面建议或者提PR,都可以~非常欢迎。 这个功能刚开始做,所以肯定有很多地方可以完善的地方。后续我会继续考虑完善它。大家可以试试帮我试试自己常用的bsp,看下是否ok。如果有问题欢迎反馈~。
3
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
RTT_逍遥
https://github.com/supperthomas
文章
37
回答
504
被采纳
77
关注TA
发私信
相关文章
1
RT_Thread ENV 下载问题
2
github下载时总是中断失败
3
提高github的响应速度
4
RT-thread ENV 工具配置软件包时总是无法连上git网址,无法下载?
5
软件包下载问题解决经验
6
无法下载littlevgl 软件包
7
软件包无法下载(已解决)
8
RT-Thread studio 如何更换git下载源?
9
【github】大家在用github有哪些问题
10
github登录不了,重置密码也不行
推荐文章
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
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
xusiwei1236
8
个答案
2
次被采纳
踩姑娘的小蘑菇
1
个答案
2
次被采纳
用户名由3_15位
7
个答案
1
次被采纳
bernard
4
个答案
1
次被采纳
RTT_逍遥
3
个答案
1
次被采纳
本月文章贡献
聚散无由
2
篇文章
15
次点赞
catcatbing
2
篇文章
5
次点赞
Wade
2
篇文章
2
次点赞
Ghost_Girls
1
篇文章
6
次点赞
YZRD
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部