本文介紹如何搭建開發環境和基于各版本的SDK編譯固件。

準備開發環境

  1. 搭建SDK的開發環境。

    建議您在64位Ubuntu下搭建設備端SDK的開發環境,并使用vim編輯代碼。該部分的操作請自行查閱網絡相關文檔完成。

    說明 暫不支持在Windows系統(含Windows子系統)下編譯生活物聯網平臺SDK。
  2. 安裝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
  3. 安裝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
  4. 安裝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。

  1. 在開發環境中解壓下載的SDK壓縮包。
    如果您通過Git命令的方式下載SDK,則無需解壓。
  2. 將開發的業務代碼存放到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
  3. 編譯SDK。
    1. 在SDK根目錄,執行vim build.sh命令打開build.sh文件。
    2. 根據硬件使用的模組型號和要編譯的應用,修改文件中的如下參數。
      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
    3. 執行./build.sh命令。

      以基于uno-91h模組編譯smart_outlet應用為例,編譯完成后,在out\smart_outlet@uno-91h目錄下會生成smart_outlet@uno-91h_all.bin文件。該文件為需要燒錄到真實設備中的固件。

      說明 : build.sh腳本會自動判斷指定模組的toolchain(交叉編譯工具鏈)是否已經安裝,如果沒有安裝,腳本會自動安裝。

      編譯該版本SDK時,如果出現頭文件、靜態庫缺失等錯誤,請參見常見問題

編譯含AliOS Things的SDK(V1.1.0及以下版本)

如果您基于含AliOS Things的SDK V1.1.0或者V1.0.0版本(原天貓精靈Wi-Fi SDK)來開發設備固件,請根據以下步驟來編譯SDK。

  1. 在開發環境中解壓下載的SDK壓縮包。
    如果您通過Git命令的方式下載SDK,則無需解壓。
  2. 將開發的業務代碼存放到SDK相應的目錄下。

    可以將開發的代碼存放到example/應用名下,如您基于linkkitapp開發,即把新增加的代碼合入example/linkkitapp目錄。

    SDK V1.1.0之前版本與SDK V1.3.0及以上版本的目錄對比如下。

    目錄機構對比
  3. 編譯SDK。
    1. 以mk3060模組為例,如果是第一次編譯,在SDK根目錄,執行編譯如下命令,會自動安裝指定模組的toolchain。
      aos make helloworld@mk3060
    2. 如已經安裝toolchain,在SDK根目錄,執行編譯如下命令。
      aos make linkkitapp@mk3060

      編譯完成后,在out\linkkitapp@mk3060\binary目錄下會生成linkkitapp@mk3060_crc.bin文件。該文件為需要燒錄到真實設備中的固件。

      如果編譯失敗且提示頭文件或靜態庫缺失的錯誤,請參見常見問題。

編譯無AliOS Things的SDK

如果您基于無AliOS Things的SDK來開發設備固件,請根據以下步驟來編譯SDK(無AliOS Things SDK各版本的編譯操作一致)。

  1. 在開發環境中解壓下載的SDK壓縮包。
    如果您通過Git命令的方式下載SDK,則無需解壓。
  2. 將開發的業務代碼存放到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
  3. 編譯SDK。
    1. 在SDK根目錄,執行vim make.settings命令打開make.settings文件。
    2. 根據硬件使用的模組型號和要編譯的應用,修改文件中的如下參數。

      其中詳細的參數解釋請參見基于非認證的模組開發

      #=========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
    3. 執行make distclean命令。
    4. 執行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
    5. 執行make命令。

      以編譯config.ubuntu.x86為例,編譯完成后,在output/release/bin目錄下會生成living_platform文件為demo。如果您編譯真實固件請參見無AliOS Things的SDK適配指南