構建工具
aos-tools 是 AliOS Things 的命令行編譯系統(tǒng),支持組件管理、程序編譯、燒錄等功能。aos-tools 使用Git 來獲取組件的代碼和維護代碼的版本管理。
使用miniconda3創(chuàng)建一個虛擬環(huán)境,并在其虛擬環(huán)境中安裝aos-tools。
pip install -U aos-tools
詳細安裝操作請參考《HaaS100快速開始》。
使用 aos-tools 需遵循的格式如下:
aos command options
可選元素顯示在方括號 [ ] 中。例如,許多命令會用到組件名
參數(shù):
aos install [component0 component1 ... componentn]
aos list [-r]
help
通過 aos 的 help 命令,可以查看 aos-tools 支持哪些命令,并可以獲取該命令完整的使用說明。
aos help
可以通過在 aos 工作目錄下運行以下命令來查看有關某個命令的詳細信息:
aos help command
例如,以下命令會生成 aos init
參數(shù)的說明和選項列表,該參數(shù)會在當前目錄中初始化 aos,創(chuàng)建 aos 工作目錄。
aos help init
如果您僅想查看可用選項的列表,請運行:
aos command --help
或者
aos command -h
例如:
aos init --help
init
通過 aos init 命令來初始AliOS Things 的工作區(qū):
mkdir alios_iot
cd alios_iot
aos init
執(zhí)行完畢之后,會在alios_iot
目錄生成一個隱藏的.aos
文件,存儲的內(nèi)容為 key: value
形式鍵值對。內(nèi)容為:
gitee_token: 32exxxxxxxxxxxxxxxxxxxxxx
occ_host: occ.t-head.cn
repo: https://gitee.com/alios-things/manifest.git
branch: master
如果使用定制化的manifest倉庫(包含各個組件的類型、倉庫url、版本等),如git@gitlab.alibaba-inc.com:alios_iot/manifest.git,分支為v1.0.0,則使用一下命令初始化工作區(qū):
aos init git@gitlab.alibaba-inc.com:alios_iot/manifest.git -b v1.0.0
search
在aos工作目錄下使用。 根據(jù)關鍵字從云端查找相應的組件,并列出組件的簡單描述。
aos search rhino
install
aos install helloworld_demo
下載 helloworld_demo
示例工程,以及該所依賴的組件,每一個組件都對應一個 Git 倉庫,通過 git clone
命令將遠程代碼庫中代碼復制到本地目錄。下載完組件后,當前的工作目錄結構如下:
components/
hardware/arch
hardware/board
hardware/chip
kernel/
solutions/helloworld_demo/
如果下載指定branch或tag的組件,則使用 -b
選項,如下載v1.0.0分支。
aos install cli -b v1.0.0
如果從本地的組件壓縮包,安裝組件,則使用:
aos install -L xxx_v1.0.zip
uninstall
刪除單個組件,不修改其它組件的依賴關系。
aos uninstall component1
list
在 aos 工作目錄下使用。顯示單個或者多個組件的描述信息。 下面介紹幾種典型場景的使用:
顯示服務器所有的組件信息,并更新組件描述信息到本地數(shù)據(jù)庫:
aos list -r
如果組件本地也存在,那么會在組件名字前顯示 * 標記,例如:
* aos (V7.3.0) - aos kernel api
* at (V7.3.0) - AT 組件負責完成 AT 命令的發(fā)送、命令接收等整個 AT 命令數(shù)據(jù)交互流程。
aui_cloud (V7.3.0) - 專為rtos打造的語音解決方案,提供了語音合成、語義理解、本地語義端文本理解等接口。
av (V7.3.0) - av是一個輕量級的多媒體組件,主要包含AV基礎框架、播放器和音頻服務三部分。
ble_mesh (V7.3.0) - ble_host and mesh stack
board_dummy (V7.3.0) - csi_dummy development board configure.
button (V7.3.0) - 按鍵服務組件,支持通過GPIO和ADC控制。
cb2201 (V7.3.0) - CB2201 board configure.
顯示本地所有組件信息
aos list
顯示組件的依賴信息,包括依賴和被依賴的組件信息:
aos list rhino -d
顯示各種類型的組件信息,包括solution組件、chip組件、board組件、common組件:
aos list -s
aos list -c
aos list -b
aos list -m
rename
在 aos 工作目錄下使用。此命令不會對云端進行操作。一般是在用戶基于某個已經(jīng)存在的組件進行開發(fā),當開發(fā)完畢時需要修改組件名字時用到。 運行此命令會修改以下幾部分的內(nèi)容:
文件夾名字
package.yaml
里面name
字段當被其他組件依賴時,在其他組件的
package.yaml
文件里的depend
字段內(nèi)容也會進行修改
copy
復制一個已有組件為一個新的組件。運行該命令會修改:
文件夾名字
package.yaml
里面name
字段
show
在 aos 工作目錄下的solution類型組件下使用。用于顯示方案依賴的組件列表、庫(路徑)、頭文件、宏定義、變量、編譯選項、鏈接選項、鏈接腳本、工具鏈、組件源碼等信息。當一個solution依賴單個或者多個board組件時,可以通過命令 aos show -b board_name
來查看方案依賴的組件列表和指定的board信息。
toolchain
可以在任意目錄下使用。可以安裝csky和arm的工具鏈,安裝路徑在~/.aliot
下。可以使用-d
選項刪除已安裝的toolchain。
export
在aos工作目錄下使用。 此命令可以將AliOS Things工作目錄下的單個組件或者多個組件以及這些組件所依賴的組件全部導出到指定的目錄。
在solution類型組件下使用此命令可以導出所有類型組件到指定目錄
在其他目錄下使用此命令可以導出除solution組件外的其他組件到指定目錄
aos export csi_pangu button /tmp/1
pack
在aos工作目錄下使用。 此命令可以將AliOS Things工作目錄下的單個組件,壓縮成zip包后導出到指定的目錄。該命令與 aos install -L
配合使用, aos pack
負責將組件打成壓縮包,然后共享給其他開發(fā)者;其他開發(fā)者獲取到該壓縮包后,可使用aos install -L
命令安裝
aos pack component1 ../destdir
upgrade
在aos目錄下使用,將package.yaml里面的version作為倉庫分支,更新組件代碼。
format
在aos工作目錄下使用此命令可以格式化組件的package.yaml
文件,并保存到組件相應的目錄中。
aos format component1
config
在solution類型組件目錄下使用該命令可以將該solution的配置變量顯示出來。比如:
BOARD_PATH = /home/xxx/work/git_project/yoc7.3/boards/csky/pangu_cpu0
BOARD = PANGU_CPU0
CONFIG_TEE_CA = 1
CONFIG_CHIP_PANGU = 1
cpu_num = 804
CHIP = CSI_PANGU
CONFIG_DECODER_AMRNB = 1
ARCH = CSKY
CPU = CK804EF
CONFIG_DECODER_AMRWB = 1
CONFIG_DECODER_PCM = 1
CHIP_PATH = /home/xxx/work/git_project/yoc7.3/components/csi_pangu
convert
在aos工作目錄下使用。 當用戶想把一個源碼目錄快速變?yōu)橐粋€ AliOS Things 組件時,可以使用這個命令。 執(zhí)行以下命令會在<dir>
目錄下生成package.yaml
文件模板,用戶可根據(jù)需求再適當?shù)恼{(diào)整修改package.yaml
文件。
aos convert <dir>
make
當您通過 aos install helloworld_demo
命令下載了一個示例工程后,對應的工程代碼及相關的組件代碼已經(jīng)安裝到AliOS Things 工作環(huán)境中,可以通過以下命令,實現(xiàn)工程的編譯:
cd solutions/helloworld_demo
aos make
如果您是第一次使用 aos-tools , aos make
命令會自動下載對應的編譯工具鏈,并安裝到系統(tǒng)的~/.aliot
目錄,您將看以下信息:
scons: Reading SConscript files ...
100.00% [##################################################] Speed: 6.787MB/S
scons: done reading SConscript files.
scons: Building targets ...
使用solution組件依賴的其它板子,如haas100,編譯工程,則輸入命令:
aos make -b haas100
使用V=1
可以查看編譯的詳細信息。
aos make V=1
make clean
在solution目錄下使用,清除當前solution的編譯信息。
aos make clean
make distclean
在solution目錄下使用,清除當前solution的編譯信息。
aos make distclean
burn
在solution目錄下使用,使用aos make編譯完成后,使用該命令燒錄固件。燒錄的參數(shù)配置,燒錄工具,由當前solution使用的board組件或chip組件指定;燒錄的文件,從solution組件的SConstruct文件中獲取;如果SConstruct文件中未指定,則從當前solution的out目錄下獲取那個最新的*@*.bin
格式的文件。
aos burn
如果是使用aos make -b <board_name>編譯的話,則燒錄固件時,也需要指定同樣的板子。比如:
# 編譯時指定板子haas100
aos make -b haas100
# 燒錄固件時也必須指定同樣的板子
aos burn -b haas100
成功燒錄以后,將在當前目錄生成.config_burn
文件,保存串口號。如果下次燒錄時,串口號有變化,則刪除該文件后,重新燒錄。
默認情況下,burn命令只燒錄編譯出來的bin文件。如果想要燒錄更多文件,則需要在指定flash_program
的那個package.yaml
文件里,加上program_data_files
字段。比如要額外燒錄haas1000組件里release/write_flash_tool/ota_bin/littlefs.bin
文件,則需要在haas1000組件的package.yaml
里面,按照如下修改:
hw_info:
flash_program: release/aos_burn_tool/flash_program.py
# 以下為新增內(nèi)容:在flash_program下面添加program_data_files,注意"-"號和對齊。
program_data_files:
- filename: release/write_flash_tool/ota_bin/littlefs.bin
address: 0xB32000
debug
在solution目錄下使用,啟動gdb server。配合Visual Studio Code的調(diào)試功能使用。
monitor
在solution目錄下使用,使用該命令打開串口。該命令成功執(zhí)行之后,將在當前目錄生成.config_monitor
文件,保存串口號和波特率。下次可直接使用 aos monitor
,而無需再指定串口和波特率。
aos monitor [port] [baudrate]
make solution@board -c config
為了兼容aos-cube的功能,保留該指令。在aos頂層目錄下使用,配置當前需要編譯的solution和board。該命令將在當前目錄下生成一個 .config
文件。
aos make helloworld_demo@haas100 -c config
當配置完成以后,上述的aos make
、aos make clean
、aos make distclean
、aos burn
指令也隨之升級,可以在aos頂層目錄下使用。另外,相比于aos make clean
的功能, aos make distclean
命令將會額外執(zhí)行刪除.config
文件的操作。
create project
在非AliOS Things倉庫目錄下運行,創(chuàng)建工作區(qū),并下載指定的solution作為模板解決方案,進行二次開發(fā)。
aos create project -b <board> -t <solution> -d <destdir> <solution_name>
其中 -b 選項,指定開發(fā)板名稱,如haas100;-t 選項,指定已有的解決方案名稱,如http_demo。如果未設置,默認為helloworld_demo;-d 選項,指定工作區(qū)workspace目錄,如果該目錄指向已 初始化過的工作區(qū) ,則復用原來的工作區(qū);-r 選項,指定遠程manifest倉庫地址,默認為 https://gitee.com/alios-things/manifest.git
;-B 選項,指定遠程manifest倉庫的分支,默認為 master
;solution_name,指定新的solution名字,是將 -t選項指定的解決方案重命名。
# 根據(jù)模板helloworld_demo,創(chuàng)建一個新的解決方案mysolution
aos create project -b haas100 -t helloworld_demo -d /home/johnny/myworkspace mysolution
sdk
在solution目錄下使用,復制當前solution的所依賴組件的頭文件和庫文件至aos_sdk目錄下。用戶可將該solution目錄提供給其他開發(fā)者,做二次開發(fā)。