本文介紹如何搭建開發環境和基于各版本的SDK編譯固件。
準備開發環境
- 搭建SDK的開發環境。
建議您在64位Ubuntu下搭建設備端SDK的開發環境,并使用vim編輯代碼。該部分的操作請自行查閱網絡相關文檔完成。
說明 暫不支持在Windows系統(含Windows子系統)下編譯生活物聯網平臺SDK。 - 安裝Ubuntu(版本16.04 X64)程序運行時庫。
請您按順序逐條執行命令。
sudo apt-get update sudo apt-get -y install libssl-dev:i386 sudo apt-get -y install libncurses-dev:i386 sudo apt-get -y install libreadline-dev:i386
- 安裝Ubuntu(版本16.04 X64)依賴軟件包。
請您按順序逐條執行命令。
sudo apt-get update sudo apt-get -y install git wget make flex bison gperf unzip sudo apt-get -y install gcc-multilib sudo apt-get -y install libssl-dev sudo apt-get -y install libncurses-dev sudo apt-get -y install libreadline-dev sudo apt-get -y install python python-pip
- 安裝Python依賴包。
請您按順序逐條執行命令。
python -m pip install setuptools python -m pip install wheel python -m pip install aos-cube python -m pip install esptool python -m pip install pyserial python -m pip install scons
說明 安裝完成后,請您使用aos-cube --version查看aos-cube的版本號,需確保aos-cube的版本號大于等于0.5.11。如果在安裝過程中遇到網絡問題,可使用國內鏡像文件。
### 安裝/升級 pip python -m pip install --trusted-host=mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple/ --upgrade pip ### 基于pip依次安裝第三方包和aos-cube pip install --trusted-host=mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple/ setuptools pip install --trusted-host=mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple/ wheel pip install --trusted-host=mirrors.aliyun.com -i https://mirrors.aliyun.com/pypi/simple/ aos-cube
編譯含AliOS Things的SDK(V1.3.0及以上版本)
如果您基于含AliOS Things的SDK(V1.3.0及以上版本)來開發設備固件,請根據以下步驟來編譯SDK。
- 在開發環境中解壓下載的SDK壓縮包。如果您通過Git命令的方式下載SDK,則無需解壓。
- 將開發的業務代碼存放到SDK相應的目錄下。
如果您基于V1.3.0以上版本開發設備固件,可以將開發的代碼存放到Products/品類目錄/應用名/…下(例如Products/example/smart_outlet為單路智能插座參考實現)。
SDK V1.3.0及以上版本的詳細目錄結構如下所示。
ali-smartliving-device-alios-things ├── build.sh ├── LICENSE ├── Living_SDK │ ├── 3rdparty │ ├── app │ ├── board │ ├── build │ ├── device │ ├── doc │ ├── example │ ├── framework │ ├── gen_firmware.sh -> example/smart_led_strip/gen_firmware.sh │ ├── include │ ├── kernel │ ├── LICENSE │ ├── NOTICE │ ├── platform │ ├── projects │ ├── README.md │ ├── security │ ├── site_scons │ ├── test │ ├── tools │ ├── ucube.py │ └── utility ├── Products │ ├── example │ ├── Smart_lighting │ └── Smart_outlet ├── README.md ├── Service │ └── version └── tools ├── 5981a.sh ├── amebaz_dev ├── amebaz_dev.sh ├── asr5501 ├── asr5501.sh ├── bk7231u ├── bk7231udevkitc.sh ├── cmd ├── mk3060.sh ├── mk3080.sh ├── moc108 ├── mx1270.sh ├── rda5981 ├── rtl8710bn └── scripts
- 編譯SDK。
- 在SDK根目錄,執行
vim build.sh
命令打開build.sh文件。 - 根據硬件使用的模組型號和要編譯的應用,修改文件中的如下參數。
default_type="example" //配置產品類型 default_app="smart_outlet" //配置編譯的應用名稱 default_board="uno-91h" //配置編譯的模組型號 default_region=SINGAPORE //配置設備的連云區域: //V1.5.0及以下版本:設備在中國內地激活配置為MAINLAND,其余地區激活配置為SINGAPORE //V1.6.0及以上版本:配置為MAINLAND或SINGAPORE都可以,設備可以全球范圍內激活 default_env=ONLINE //配置連云環境 Debug log:default_debug=0 default_args="" //配置其他編譯參數 //更多介紹請參見README.md
- 執行./build.sh命令。
以基于uno-91h模組編譯smart_outlet應用為例,編譯完成后,在out\smart_outlet@uno-91h目錄下會生成smart_outlet@uno-91h_all.bin文件。該文件為需要燒錄到真實設備中的固件。
說明 : build.sh腳本會自動判斷指定模組的toolchain(交叉編譯工具鏈)是否已經安裝,如果沒有安裝,腳本會自動安裝。編譯該版本SDK時,如果出現頭文件、靜態庫缺失等錯誤,請參見常見問題。
- 在SDK根目錄,執行
編譯含AliOS Things的SDK(V1.1.0及以下版本)
如果您基于含AliOS Things的SDK V1.1.0或者V1.0.0版本(原天貓精靈Wi-Fi SDK)來開發設備固件,請根據以下步驟來編譯SDK。
- 在開發環境中解壓下載的SDK壓縮包。如果您通過Git命令的方式下載SDK,則無需解壓。
- 將開發的業務代碼存放到SDK相應的目錄下。
可以將開發的代碼存放到example/應用名下,如您基于linkkitapp開發,即把新增加的代碼合入example/linkkitapp目錄。
SDK V1.1.0之前版本與SDK V1.3.0及以上版本的目錄對比如下。
- 編譯SDK。
- 以mk3060模組為例,如果是第一次編譯,在SDK根目錄,執行編譯如下命令,會自動安裝指定模組的toolchain。
aos make helloworld@mk3060
- 如已經安裝toolchain,在SDK根目錄,執行編譯如下命令。
aos make linkkitapp@mk3060
編譯完成后,在out\linkkitapp@mk3060\binary目錄下會生成linkkitapp@mk3060_crc.bin文件。該文件為需要燒錄到真實設備中的固件。
如果編譯失敗且提示頭文件或靜態庫缺失的錯誤,請參見常見問題。
- 以mk3060模組為例,如果是第一次編譯,在SDK根目錄,執行編譯如下命令,會自動安裝指定模組的toolchain。
編譯無AliOS Things的SDK
如果您基于無AliOS Things的SDK來開發設備固件,請根據以下步驟來編譯SDK(無AliOS Things SDK各版本的編譯操作一致)。
- 在開發環境中解壓下載的SDK壓縮包。如果您通過Git命令的方式下載SDK,則無需解壓。
- 將開發的業務代碼存放到SDK相應的目錄下。
不含AliOS Things的SDK目錄結構如下所示。
ali-smartliving-device-sdk-c ├── build-rules │ ├── docs │ ├── funcs.mk │ ├── hooks │ ├── misc │ ├── pre-build.sh │ ├── _rules-complib.mk │ ├── _rules-coverage.mk │ ├── _rules-dist.mk │ ├── _rules-flat.mk │ ├── _rules-kmod.mk │ ├── _rules-libs.mk │ ├── rules.mk │ ├── _rules-modinfo.mk │ ├── _rules-origin.mk │ ├── _rules-prefix.mk │ ├── _rules-prog.mk │ ├── _rules-repo.mk │ ├── _rules-submods.mk │ ├── _rules-top.mk │ ├── scripts │ └── settings.mk ├── CMakeLists.txt ├── components │ ├── tick_notify │ └── timer_service ├── Config.in ├── Config.linkkit ├── docs │ ├── 智能生活C-SDK適配FreeRTOS幫助文檔.pdf │ ├── 智能生活SDK復位功能介紹.pdf │ └── 智能生活設備配網綁定問題分析參考.pdf ├── examples │ ├── cJSON.c │ ├── cJSON.h │ ├── iot.mk │ └── linkkit ├── include │ ├── exports │ ├── imports │ ├── iot_export.h │ └── iot_import.h ├── lib │ ├── ANDES_N10 │ ├── ARM968E-S │ ├── Cortex-M4 │ ├── linux │ └── xtensa ├── LICENSE ├── linkkit_kv.bin ├── makefile ├── make.settings ├── output │ └── release ├── prebuilt │ ├── extra │ ├── mdm9206 │ ├── ubuntu │ └── win7 ├── project.mk ├── README.md ├── sdk-c.mk └── src ├── board ├── infra ├── protocol ├── ref-impl ├── sdk-impl ├── security ├── services └── tools
- 編譯SDK。
- 在SDK根目錄,執行
vim make.settings
命令打開make.settings文件。 - 根據硬件使用的模組型號和要編譯的應用,修改文件中的如下參數。
其中詳細的參數解釋請參見基于非認證的模組開發。
#=========Basic Features========== FEATURE_SRCPATH="." FEATURE_MQTT_COMM_ENABLED=y FEATURE_MQTT_AUTO_SUBSCRIBE=y FEATURE_DEVICE_MODEL_ENABLED=y FEATURE_OTA_ENABLED=y FEATURE_DEV_BIND_ENABLED=y FEATURE_SUPPORT_TLS=y #Support unified service post FEATURE_DM_UNIFIED_SERVICE_POST=y #=========Basic Features========== #=========User Config Features========== FEATURE_ALCS_ENABLED=y # FEATURE_DEVICE_MODEL_GATEWAY=n # # AWSS Configurations # FEATURE_WIFI_PROVISION_ENABLED=y FEATURE_AWSS_SUPPORT_SMARTCONFIG=y FEATURE_AWSS_SUPPORT_ZEROCONFIG=y FEATURE_AWSS_SUPPORT_DEV_AP=y
- 執行make distclean命令。
- 執行make reconfig命令,并在出現以下提示后,輸入選項對應的序號。
請根據要編譯的目標平臺(即board)來選擇。如果您編譯demo,則選擇7。
SELECT A CONFIGURATION: 1) config.esp8266.aos 6) config.rhino.make 2) config.freertos.esp8266 7) config.ubuntu.x86 3) config.macos.x86 8) config.win7.mingw32 4) config.mk3060.aos 9) config.xboard.make 5) config.mk3080.aos
- 執行make命令。
以編譯config.ubuntu.x86為例,編譯完成后,在output/release/bin目錄下會生成living_platform文件為demo。如果您編譯真實固件請參見無AliOS Things的SDK適配指南。
- 在SDK根目錄,執行