生活物联网平台提供了已封装设备端与物联网平台交互协议的SDK。您可以直接基于这些SDK开发真实设备的固件,从而使真实设备具备连接物联网的能力。以基于AliOS Things的蓝牙Mesh SDK(V1.2.0)调试TG7100开发板为例,介绍设备固件的开发和烧录操作。

前提条件

已完成开发环境的搭建和依赖包的安装,详细请参见准备开发环境

一、准备开发环境

  1. 搭建SDK的开发环境。

    建议您在64位Ubuntu下搭建设备端SDK的开发环境,并使用vim编辑代码。如果您是Win10操作系统可以在应用商店下载安装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(V1.2.0)
    蓝牙Mesh SDK基于C语言开发,目前该SDK仅对部分用户开放。您需要使用阿里云账号(普通账号即可)登录https://code.aliyun.com/后才能下载。如果您登录后仍然没法下载,请通过工单联系我们。
  2. 将下载的ZIP包上传至开发环境中,并解压ZIP包。
  3. 在SDK根目录,执行编译命令。

    本文档以在TG7100开发板上编译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线将TG7100开发板与电脑连接,并打开烧写工具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!

四、烧录设备证书

  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

后续步骤

调试设备连云