1.官方資料
首先看下官方文檔:
https://www.rt-thread.org/document/site/development-guide/package/package/
- 再看下官方視頻:
看完這個,基本上差不多會知道如何做一個軟件包了。
pkgs –wizard
新版本會讓你輸入github地址
操作完成之後。
會生成一個文件夾,兩個文件
Kconfig
這個主要和平時操作menuconfig中的選項相關
package.json
這個主要跟你這個軟件包的git地址相關。
簡單來說軟件包這就算做好了。
至於裏面內容需要分幾個東西來講:
分別是pkgs
menuconfig
scons
1.pkgs
這個工具是專門管理軟件包的。
有以下幾個常用命令:
pkgs --update
這個負責升級,其實本質上就是git clone,從git上下載代碼;
可以看下package.json文件:
這張圖應該很清晰了。
就是你的每個版本對應的git 地址填對了
你的pkgs --update
的時候,更新就會從這個git地址下載你的package包的文件(如果某個package被選中的話)。
pkgs --upgrade
這個用的比較少,
從兩個地址,
package: https://github.com/RT-Thread/packages
這個下載到哪裏了呢?
我們打開env目錄:
env_released_1.2.0\env\packages\packages
就是這裏,其實本質上,就是更新packages的目錄
env: https://github.com/RT-Thread/env
本質上也是從git上下載,只是路徑不一樣。
這個稍微找一會也能找到:
env_released_1.2.0\env\tools\scripts
大家可以打開github和文件夾目錄比較下,
應該都是相同的。
2. menuconfig
這個是linux裏面常用的配置界面,嵌入式RTOS能用上menuconfig的,我只見過RTT這樣用過,其他的還麼見過:
不知道有沒有人稍微瞭解下這幾行命令是如何來顯示的。
其實就是目錄下面的Kconfig
文件
|
其實這個裏面內容比較多,就不展開了,我們現在要做的是軟件包,可以選擇在某個package中menuconfig。
比如你可以進到目錄env_released_1.2.0\env\packages\packages\peripherals\sensors\dht11
menuconfig一下:
看到這個應該能明白大概意思了。
bool類型,只能選y(yes) 和n(no)
後面跟的是顯示的內容
menuconfig代表是一個menu配置 後面跟的是PKG_USING_DHT11
這個是什麼呢?這個其實和下一講的scons相關,
你可以暫且認爲這個就代表這個選項的一個變量,就是敲y
之後,這個變量值PKG_USING_DHT11就變成y了(可以理解成bool類型中的true)。
子菜單:
仔細想下剛纔的操作,是不是隻能點y之後才能進入到子菜單。
其實就是前面有個
if PKG_USING_DHT11
判斷
後面
Kconfig語法可以看:
基本上會Kconfig語法,你就知道menuconfig該怎麼改了,唯一要記住的是剛纔那個變量。
配置完之後,系統都會保存到.config文件:
這個是最重要的,前面無論你怎麼配置,最後都影響的是.config文件。
你也可以直接改.config文件。
這裏你可以看到配置改了,所以有時候,編譯linux內核的時候,只要.config文件就可以編譯成功了,就是這個道理。
保存之後,
我們用命令pkgs –update,就會看到package中會多出來一個文件,就是你的軟件包。
//小測問:
github 我們國內clone的時候,都很慢,爲啥env下載的時候很快?
3.scons
在做軟件包前面基本已經差不多了。接下來講的scons,其實是和編譯相關的,你可以理解爲,scons就是make, scons裏面的SConscript
SConstruct
就是裏面的makefile文件,你軟件包需要寫好寫對Scons的腳本,才能編譯進去,或者生成的project生成進去。
這個時候就看官方文檔:
官方文檔已經很詳細很詳細了。學完,你就會用你自己的軟件包。
理解這些,基本上你應該知道自己接下來該怎麼做了:
基本思路是這樣的:
- 先做一個軟件包,把名字起好,對應到相應的目錄,比如tools。
- github上搞一個倉庫(gitee也可以,只要路徑填對即可),將你的軟件包中要放的.c .h等代碼放入到git上。
- 將github地址放到你的package.json中
- 把這個軟件包放到env中package對應的目錄中,(暫時)
- 這個時候你在你的bsp裏面敲menuconfig,會發現,你的軟件包並沒有出現在目錄中。
- 根據Kconfig語法,知道是在你的tools目錄下面也有個Kconfig,需要把目錄加進去。
- menuconfig裏面配置選好,pkgs –update
- 這個時候,檢查你的包裏面的東西的完整性就好。
- 根據scons語法和Kconfig語法,寫你的軟件包中的scons語法,如果是配置的話,要放到env中的package Kconfig修改。
- 基本上把你的目錄提交到官方的package收入即可。