如何手动打包RTT 上的bsp
PART01
简介
有很多小伙伴喜欢用scons --dist功能下载包,但是又有时候不想下载RT-THREAD的所有的包,这个时候,可以考虑看下这篇文章,说不定对你有帮助。这边我提供了一种手动来trigger 生成特定bsp的project文件。PART02
如何使用
打开仓库:https://github.com/RT-Thread/rt-thread比如想生成qemu-vexpress-a9的单独的project,可以参考下面图的操作:这个时候,你可以选择自己熟悉的bsp,只需要告诉action你需要编译的bsp路径就可以了,然后选择一下tool_chain, 自己应该知道平时用的是哪个toolchain。- 注意事项:你需要有这个仓库的权限才行,所以如果小伙伴发现没有这个按钮,你可以把仓库fork下来,在自己fork之后的仓库来操作
PART03
生成之后的文件在哪里
点完之后,会稍微需要等一会,因为action在跑运行。稍微等个5分钟以内吧。然后就可以获得工程文件,参考下图:这个时候,你就可以把这个下载下来。当然这个action也会帮你检查bsp的scons编译情况(可以加特定config 配置情况),你不需要每次都把最新的代码下载下来。PART04
最后文件
最后zip包里面有两个文件,project.zip 和qemu-vexpress-a9 这两个文件,project.zip 就是我们平时用的scons --dist 生成出来的。另外一个文件就是原来master分支上bsp经过scons编译之后,里面包含可执行文件,如果qemu-vexpress-a9,你可以在scons直接执行,里面已经有rtthread.elf 文件。PART05
原理讲解
如何实现上述功能呢?这里很多是关于github action的内容,方便后续维护。这个功能添加的PR 链接:https://github.com/RT-Thread/rt-thread/pull/7648 输入功能github action 有一个input输入功能,可以用来手动trigger1#Controlswhentheactionwillrun.Triggers'scons--dist'tobuildthedist 2on: 3workflow_dispatch: 4#https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onworkflow_dispatchinputs 5inputs: 6bsp_options: 7description:'WhichbsppathWouldyouwantdistinbsp?likestm32/stm32l496-st-nucleo' 8required:false 9type:string 10default:'qemu-vexpress-a9' 11bsp_tool_chain: 12description:'Choicetool_chain' 13required:false 14default:'sourcery-arm' 15type:choice 16options: 17-"sourcery-arm" 18-"llvm-arm" 19-"sourcery-aarch64" 20-"sourcery-mips" 21-"sourcery-riscv-none-embed" 22-"sourcery-riscv64-unknown-elf" 23bsp_config: 24description:'Typeaconfigyouwantmannualtestin.config,likeCONFIG_BSP_USING_I2CCONFIG_BSP_USING_WDT' 25required:false 26type:string 27default:'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也拷贝出来,方便后面上传。
1-name:BspSconsCompile 2if:${{success()}} 3shell:bash 4env: 5RTT_BSP:${{github.event.inputs.bsp_options}} 6RTT_TOOL_CHAIN:${{github.event.inputs.bsp_tool_chain}} 7run:| 8source~/.env/env.sh 9echo$RTT_BSP 10lsbsp/$RTT_BSP/Kconfig&&scons-Cbsp/$RTT_BSP--pyconfig-silent 11sed-i"s/#${{github.event.inputs.bsp_config}}isnotset/${{github.event.inputs.bsp_config}}=y/g"bsp/$RTT_BSP/.config 12pushdbsp/$RTT_BSP&&pkgs--update&&popd 13scons-Cbsp/$RTT_BSP-j$(nproc) 14mkdir-p${{github.workspace}}/$RTT_BSP 15cp-rbsp/$RTT_BSP${{github.workspace}}/$RTT_BSP/ 16scons--dist-Cbsp/$RTT_BSP 17cpbsp/$RTT_BSP/dist/project.zip${{github.workspace}}/$RTT_BSP/ 18lsbsp/$RTT_BSP/dist 19pwd 如何上传中间文件那如何上传中间文件的呢?这里就要用到github中的一个小功能了。只需要在action中添加下面的代码。·name 是你要显示的名字·path 是你要上传的文件路径
1-uses:actions/upload-artifact@v3 2with: 3name:dist_file 4path:${{github.workspace}}/${{github.event.inputs.bsp_options}}/*
PART06
总结
这个方便生成dist之后的文件。大家如果觉得好用,可以在评论区留言。如果觉得有哪里还有可以改进的地方,也可也在评论区里面建议或者提PR,都可以~非常欢迎。这个功能刚开始做,所以肯定有很多地方可以完善的地方。后续我会继续考虑完善它。大家可以试试帮我试试自己常用的bsp,看下是否ok。如果有问题欢迎反馈~。原文:https://club.rt-thread.org/ask/article/419a30e57384a239.html
———————End———————
RT-Thread线下入门培训
7月 -上海,南京
1.免费2.动手实验+理论3.主办方免费提供开发板4.自行携带电脑,及插线板用于笔记本电脑充电5.参与者需要有C语言、单片机(ARM Cortex-M核)基础,请提前安装好RT-Thread Studio 开发环境
立即扫码报名
报名链接
https://jinshuju.net/f/UYxS2k
巡回城市:青岛、北京、西安、成都、武汉、郑州、杭州、深圳、上海、南京
你可以添加微信:rtthread2020 为好友,注明:公司+姓名,拉进RT-Thread官方微信交流群!
点击阅读原文,进入RT-Thread 官网
-
RT-Thread
+关注
关注
31文章
1271浏览量
39905
原文标题:RTT黑科技: 添加手动打包和编译特定bsp功能
文章出处:【微信号:RTThread,微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论