[RTT][ENV][PACKAGE]如何製作軟件包

1.官方資料

首先看下官方文檔:

https://www.rt-thread.org/document/site/development-guide/package/package/

  1. 再看下官方視頻:

https://www.bilibili.com/video/av79943543?p=1


看完這個,基本上差不多會知道如何做一個軟件包了。

 

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 文件


mainmenu "RT-Thread Configuration"
config BSP_DIR
string
option env="BSP_ROOT"
default "."
config RTT_DIR
string
option env="RTT_ROOT"
default "../../.."
config PKGS_DIR
string
option env="PKGS_ROOT"
default "packages"
source "$RTT_DIR/Kconfig"
source "$PKGS_DIR/Kconfig"
source "../libraries/Kconfig"
source "board/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語法整理

基本上會Kconfig語法,你就知道menuconfig該怎麼改了,唯一要記住的是剛纔那個變量。

配置完之後,系統都會保存到.config文件:
這個是最重要的,前面無論你怎麼配置,最後都影響的是.config文件。
你也可以直接改.config文件。

 

這裏你可以看到配置改了,所以有時候,編譯linux內核的時候,只要.config文件就可以編譯成功了,就是這個道理。
保存之後,
我們用命令pkgs –update,就會看到package中會多出來一個文件,就是你的軟件包。

//小測問:
github 我們國內clone的時候,都很慢,爲啥env下載的時候很快?

3.scons

在做軟件包前面基本已經差不多了。接下來講的scons,其實是和編譯相關的,你可以理解爲,scons就是make, scons裏面的SConscript SConstruct就是裏面的makefile文件,你軟件包需要寫好寫對Scons的腳本,才能編譯進去,或者生成的project生成進去。

這個時候就看官方文檔:

Scons 構建工具

官方文檔已經很詳細很詳細了。學完,你就會用你自己的軟件包。

理解這些,基本上你應該知道自己接下來該怎麼做了:
基本思路是這樣的:

  1. 先做一個軟件包,把名字起好,對應到相應的目錄,比如tools。
  2. github上搞一個倉庫(gitee也可以,只要路徑填對即可),將你的軟件包中要放的.c .h等代碼放入到git上。
  3. 將github地址放到你的package.json中
  4. 把這個軟件包放到env中package對應的目錄中,(暫時)
  5. 這個時候你在你的bsp裏面敲menuconfig,會發現,你的軟件包並沒有出現在目錄中。
  6. 根據Kconfig語法,知道是在你的tools目錄下面也有個Kconfig,需要把目錄加進去。
  7. menuconfig裏面配置選好,pkgs –update
  8. 這個時候,檢查你的包裏面的東西的完整性就好。
  9. 根據scons語法和Kconfig語法,寫你的軟件包中的scons語法,如果是配置的話,要放到env中的package Kconfig修改。
  10. 基本上把你的目錄提交到官方的package收入即可。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章