生活物聯網平臺提供了已封裝設備端與物聯網平臺交互協議的SDK。您可以直接基于這些SDK開發真實設備的固件,從而使真實設備具備連接物聯網的能力。以基于AliOS Things的藍牙Mesh SDK(V1.2.6)調試TG7100B開發板為例,介紹設備固件的開發和燒錄操作。

前提條件

  • 已完成開發環境的搭建和依賴包的安裝。詳細操作,請參見準備開發環境
  • 已完成基于AliOS Things的藍牙Mesh SDK。具體操作,請參見獲取SDK

準備開發環境

  1. 搭建SDK的開發環境。

    建議您在64位Ubuntu下搭建設備端SDK的開發環境,并使用vim編輯代碼。如果您是Windows10操作系統可以在應用商店下載安裝Ubuntu18.04 LTS,如果是其他操作系統可以安裝虛擬機軟件。該部分的操作請自行查閱網絡相關文檔完成。

  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

開發設備固件

  1. 下載設備端SDK代碼。
    藍牙Mesh SDK基于C語言開發,目前該SDK僅對部分用戶開放,請參見獲取SDK頁面申請權限。
  2. 將下載的ZIP包上傳至開發環境中,并解壓ZIP包。
  3. 在SDK根目錄,執行編譯命令。

    本文檔以在TG7100B開發板上編譯light_ctl程序為例,選擇以下任一命令執行即可。

    • ./build.sh bluetooth.light_ctl tg7100b 1
    • aos make bluetooth.light_ctl@tg7100b

    出現以下提示時,則編譯成功。

                            AOS MEMORY MAP
    |=================================================================|
    | MODULE                                  | ROM       | RAM       |
    |=================================================================|
    | newlib_stub                             | 0         | 270       |
    | kv                                      | 0         | 3615      |
    | bt_common                               | 0         | 7705      |
    | crc                                     | 0         | 128       |
    | mcu_tg7100b                             | 0         | 38556     |
    | rhino                                   | 0         | 19885     |
    | vfs                                     | 0         | 860       |
    | libgcc                                  | 0         | 8552      | 
    | ref_impl                                | 0         | 1972      |
    | bt_mesh                                 | 0         | 54456     |
    | bt_host                                 | 0         | 43334     |
    | cli                                     | 0         | 9039      |
    | yloop                                   | 0         | 1205      |
    | board_tg7100b                           | 0         | 965       |
    | libc_nano                               | 0         | 13100     |
    | genie_service                           | 0         | 24533     |
    | auto_component                          | 0         | 2         |
    | driver_bt                               | 0         | 18408     |
    | osal                                    | 0         | 950       |
    | log                                     | 0         | 428       |
    | armv6m                                  | 0         | 336       |
    | light_ctl                               | 0         | 2841      |
    | *fill*                                  | 0         | 938       |
    |=================================================================|
    | TOTAL (bytes)                           | 0         | 252078    |
    |=================================================================|
    [INFO] Create bin files
    sign all partitions with key:def_otp
    ----------------------------------------------------------------
                   bomtb, 0, 0, 0x11002100, 0x00001000, 0x11003100, bomtb
                    FCDS, 0, 0, 0x11004000, 0x00001000, 0x11005000
                    imtb, 0, 0, 0x11005000, 0x00002000, 0x11007000, imtb
                      kv, 0, 0, 0x11007000, 0x00002000, 0x11009000
                    boot, 0, 0, 0x11009000, 0x00005000, 0x1100e000, boot
                  jumptb, 1, 2, 0x1100e000, 0x00001000, 0x1100f000, jumptb
                    prim, 1, 2, 0x1100f000, 0x00012000, 0x11021000, prim
                    misc, 0, 0, 0x11021000, 0x00039000, 0x1105a000
                   xprim, 1, 2, 0x1105a000, 0x00026000, 0x11080000, xprim
       bomtb,       16 bytes
        boot,    17696 bytes
      jumptb,     1024 bytes
        prim,    70996 bytes
       xprim,   140172 bytes
        imtb,     8192 bytes
    ----------------------------------------------------------------
    [out/bluetooth.light_ctl@tg7100b/binary/fota.bin]FULL==>:jumptb,size:1024,[isforce:0]
    [out/bluetooth.light_ctl@tg7100b/binary/fota.bin]FULL==>:prim,size:70996,[isforce:0]
    [out/bluetooth.light_ctl@tg7100b/binary/fota.bin]FULL==>:xprim,size:140172,[isforce:0]
    Build complete
    Making .gdbinit
    build time is 9min 48s
  4. 查看編譯結果。
    編譯成功后,在out/bluetooth.light_ctl@tg7100b/binary目錄下會生成total_image.hexf文件。該文件為需要燒錄到設備中的固件。fota.bin為可用于OTA升級的固件。

燒錄固件

  1. 使用USB線將TG7100B開發板與電腦連接,并打開燒寫工具TG71XX Programmer.exe。
    如果您的電腦沒有安裝硬件驅動,則還需要按照提示完成驅動的安裝。
  2. 選中右上角的UART Setting復選框,并如下圖所示設置開發板串口的各參數。

    驅動安裝成功后,TG71XX Programmer.exe工具可自動識別您的串口號,示例中為COM3

    設置串口
  3. 單擊Connect
    此時,Log區域出現以下日志。
    *******************************
    Current port: COM3
    Current baudrate: 115200
    Current stopBits: 1
    Current parity: No
    Serial opened!!
    *******************************
  4. 選擇Flash_writer > HEX,雙擊空白處(圖中③所示),上傳待燒錄的文件。
    上傳燒錄文件
  5. 在左下方Single頁簽中,從TYPE列表中選擇MAC,并配置MAC地址。

    MAC地址需配置為設備的DeviceName。詳細請參見添加設備

    配置MAC地址
  6. 確認TG7100開發板的撥碼開關已置于VDD(圖①所示),并按reset鍵(圖②所示)復位硬件。
    開發板圖示

    此時,Log區域打印出以下日志內容。

    UART RX : cmd>>:
  7. 單擊Flash_writer頁簽頂部的Erase,擦除固件Flash。

    Log區域打印出以下日志內容,則擦除成功。

    Send erase successfully!
    Receive #OK!
    Erase successfully!
  8. 單擊Flash_writer頁簽頂部的Write,燒寫固件。

    Log區域打印出以下日志內容,則固件燒寫成功。

    ============Write hexf File [10/10]============
    Send cpbin successfully!
    UART RX ASCII: by hex mode:
    Receive image request!
    Send image successful! Waiting to receive checksum...
    Send checksum successfully!
    UART RX ASCII: checksum is: 0x0041c6a4
    #OK>>:
    Receive #OK!
    Write images successfully!
    write address: 0x4000, value: 0xB276A87A
    write address: 0x4004, value: 0x0000FA28
    Write registers successfully!
說明 TG7100B芯片與TG7100B開發板的資料,請參見TG7100B獲取。

燒錄設備證書

  1. 斷開燒寫工具TG71XX Programmer.exe,并將開發板的撥碼開關置于GND,并按下開發板上的reset鍵。
  2. 打開串口調試工具SecureCRT,選擇文件 > 快速連接,并如下圖所示設置開發板串口的各參數。
    說明 其中端口號與TG71XX Programmer.exe工具自動識別的串口號一致。您也可以右擊我的電腦,選擇管理 > 系統工具 > 設備管理器 > 端口(COM和LPT)來查看(不同系統下打開設備管理器的操作路徑略有差異,請根據您電腦的實際路徑操作)。
    設置串口工具
  3. 單擊連接
  4. (可選)輸入AT+MESHMAC?命令,查看設備的MAC地址。
    # +MESHMAC: 28:xx:xx:xx:xx:b2
    OK
  5. 輸入AT+FACTYTEST命令,進入產測模式。
    命令執行后返回以下結果。
    # OK
    DUT Start
  6. 輸入以下命令,燒錄設備證書。
    AT+TRITUPLE=<product id>,<Device Secret>,<Device Name>           
    說明
    • 該命令中product idDevice SecretDevice Name(即MAC),三者為添加設備中生成的設備證書。
    • 在串口燒錄工具中輸入該命令后,還需要回車(CR)和換行(LF)。

    命令執行后,返回以下結果。

    55xxx10 aaded522xxxxxxxc88105d10e81d 28xxxxxxxb2
    OK

后續步驟

調試設備連云