如何手動打包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文章
1273瀏覽量
39926
原文標題:RTT黑科技: 添加手動打包和編譯特定bsp功能
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論