RTT黑科技: 添加手动打包和编译特定bsp功能

如何手动打包rtt 上的bsp
    part 01
简介
 有很多小伙伴喜欢用 scons --dist 功能下载包,但是又有时候不想下载rt-thread的所有的包,这个时候,可以考虑看下这篇文章,说不定对你有帮助。这边我提供了一种手动来trigger 生成特定bsp的project文件。 part 02
如何使用
 打开仓库:https://github.com/rt-thread/rt-thread比如想生成qemu-vexpress-a9的单独的project,可以参考下面图的操作:这个时候,你可以选择自己熟悉的bsp,只需要告诉action你需要编译的bsp路径就可以了,然后选择一下tool_chain, 自己应该知道平时用的是哪个toolchain。 注意事项:你需要有这个仓库的权限才行,所以如果小伙伴发现没有这个按钮,你可以把仓库fork下来,在自己fork之后的仓库来操作 最后如果需要,可以选择一个配置进行选择配置,比如config_bsp_using_i2c ,最后执行run worflow 绿色的小按钮。之后就可以让action帮你生成了。 part 03
生成之后的文件在哪里
 点完之后,会稍微需要等一会,因为action在跑运行。稍微等个5分钟以内吧。然后就可以获得工程文件,参考下图:这个时候,你就可以把这个下载下来。当然这个action也会帮你检查bsp的scons编译情况(可以加特定config 配置情况),你不需要每次都把最新的代码下载下来。 part 04
最后文件
 最后zip包里面有两个文件,project.zip 和qemu-vexpress-a9 这两个文件,project.zip 就是我们平时用的scons --dist 生成出来的。另外一个文件就是原来master分支上bsp经过scons编译之后,里面包含可执行文件,如果qemu-vexpress-a9,你可以在scons直接执行,里面已经有rtthread.elf 文件。 part 05
原理讲解
 如何实现上述功能呢?这里很多是关于github action的内容,方便后续维护。这个功能添加的pr 链接:https://github.com/rt-thread/rt-thread/pull/7648  输入功能github action 有一个input输入功能,可以用来手动trigger 1# controls when the action will run. triggers 'scons --dist' to build the dist 2on: 3  workflow_dispatch: 4    # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onworkflow_dispatchinputs 5    inputs: 6      bsp_options: 7        description: 'which bsp path would you want dist in bsp?like stm32/stm32l496-st-nucleo ' 8        required: false 9        type: string 10        default: 'qemu-vexpress-a9' 11      bsp_tool_chain: 12        description: 'choice tool_chain' 13        required: false 14        default: 'sourcery-arm' 15        type: choice 16        options: 17          - sourcery-arm 18          - llvm-arm 19          - sourcery-aarch64 20          - sourcery-mips 21          - sourcery-riscv-none-embed 22          - sourcery-riscv64-unknown-elf 23      bsp_config: 24        description: 'type a config you want mannual test in .config, like config_bsp_using_i2c config_bsp_using_wdt ' 25        required: false 26        type: string 27        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也拷贝出来,方便后面上传。 1      - name: bsp scons compile 2        if: ${{ success() }} 3        shell: bash 4        env: 5          rtt_bsp: ${{ github.event.inputs.bsp_options }} 6          rtt_tool_chain: ${{ github.event.inputs.bsp_tool_chain}} 7        run: | 8          source ~/.env/env.sh 9          echo $rtt_bsp 10          ls bsp/$rtt_bsp/kconfig && scons -c bsp/$rtt_bsp --pyconfig-silent 11          sed -i s/# ${{ github.event.inputs.bsp_config }} is not set/${{ github.event.inputs.bsp_config }}=y/g bsp/$rtt_bsp/.config 12          pushd bsp/$rtt_bsp && pkgs --update && popd 13          scons -c bsp/$rtt_bsp -j$(nproc)  14          mkdir -p ${{ github.workspace }}/$rtt_bsp  15          cp -r bsp/$rtt_bsp ${{ github.workspace }}/$rtt_bsp/ 16          scons --dist -c bsp/$rtt_bsp 17          cp bsp/$rtt_bsp/dist/project.zip ${{ github.workspace }}/$rtt_bsp/ 18          ls bsp/$rtt_bsp/dist 19          pwd    如何上传中间文件那如何上传中间文件的呢?这里就要用到github中的一个小功能了。只需要在action中添加下面的代码。· name 是你要显示的名字· path 是你要上传的文件路径 1      - uses: actions/upload-artifact@v3 2        with: 3          name: dist_file 4          path: ${{ github.workspace }}/${{ github.event.inputs.bsp_options }}/*   part 06
总结
 这个方便生成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 官网
原文标题:rtt黑科技: 添加手动打包和编译特定bsp功能
文章出处:【微信公众号:rtthread物联网操作系统】欢迎添加关注!文章转载请注明出处。

速腾聚创香港交易所主板成功上市
热像仪助力生命科学研究—肿瘤细胞靶向治疗(三)
推动新型工业化|VX系列闪测仪、SJ6000激光干涉仪亮相华南国际工业博览会
马斯克与何小鹏隔空互怼的背后,是愤怒还是不安
高通发布最新4核APQ8064芯片
RTT黑科技: 添加手动打包和编译特定bsp功能
容器JVM内存配置最佳实践
小米回应造车传闻 是谣言
NVIDIA:国内有三家头显公司在进行VirtualLink接口头显设计
新能源汽车陷入了资金泥潭 银隆和蔚来面临困境
数组和指针不相同吗?数组和指针有哪些区别
ROHM推出小尺寸实现超高额定功率的分流电阻器“GMR50”
数字技术革命:走向大规模应用
Microchip发布全新GestIC控制器,使嵌入式设备添加3D手势识别设计一步到位
万亿级消费级市场——物联网
Windows Phone 7智能手机电影应用概念终实现
比特币BBC说币种配置策略之后起新秀
解读通信干扰技术的发展
ArcGIS Runtime和ArcGIS Engine、ArcGIS Server的比较_arcgis desktop、arcgis engine和arcgis server三者之间有什么区别
python字典是什么