生活物联网平台提供了已封装设备端与物联网平台交互协议的SDK。您可以直接基于这些SDK开发真实设备的固件,从而使真实设备具备连接物联网的能力。以基于AliOS Things的蓝牙Mesh SDK(V1.2.6)调试TG7100B开发板为例,介绍设备固件的开发和烧录操作。
前提条件
准备开发环境
- 搭建SDK的开发环境。
建议您在64位Ubuntu下搭建设备端SDK的开发环境,并使用vim编辑代码。如果您是Windows10操作系统可以在应用商店下载安装Ubuntu18.04 LTS,如果是其他操作系统可以安装虚拟机软件。该部分的操作请自行查阅网络相关文档完成。
- 安装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
开发设备固件
- 下载设备端SDK代码。蓝牙Mesh SDK基于C语言开发,目前该SDK仅对部分用户开放,请参见获取SDK页面申请权限。
- 将下载的ZIP包上传至开发环境中,并解压ZIP包。
- 在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
- 查看编译结果。编译成功后,在out/bluetooth.light_ctl@tg7100b/binary目录下会生成total_image.hexf文件。该文件为需要烧录到设备中的固件。fota.bin为可用于OTA升级的固件。
烧录固件
- 使用USB线将TG7100B开发板与电脑连接,并打开烧写工具TG71XX Programmer.exe。如果您的电脑没有安装硬件驱动,则还需要按照提示完成驱动的安装。
- 选中右上角的UART Setting复选框,并如下图所示设置开发板串口的各参数。
驱动安装成功后,TG71XX Programmer.exe工具可自动识别您的串口号,示例中为COM3。
- 单击Connect。此时,Log区域出现以下日志。
******************************* Current port: COM3 Current baudrate: 115200 Current stopBits: 1 Current parity: No Serial opened!! *******************************
- 选择 ,双击空白处(图中③所示),上传待烧录的文件。
- 在左下方Single页签中,从TYPE列表中选择MAC,并配置MAC地址。
MAC地址需配置为设备的DeviceName。详细请参见添加设备。
- 确认TG7100开发板的拨码开关已置于VDD(图①所示),并按reset键(图②所示)复位硬件。
此时,Log区域打印出以下日志内容。
UART RX : cmd>>:
- 单击Flash_writer页签顶部的Erase,擦除固件Flash。
Log区域打印出以下日志内容,则擦除成功。
Send erase successfully! Receive #OK! Erase successfully!
- 单击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获取。
烧录设备证书
- 断开烧写工具TG71XX Programmer.exe,并将开发板的拨码开关置于GND,并按下开发板上的reset键。
- 打开串口调试工具SecureCRT,选择 ,并如下图所示设置开发板串口的各参数。说明 其中端口号与TG71XX Programmer.exe工具自动识别的串口号一致。您也可以右击我的电脑,选择 来查看(不同系统下打开设备管理器的操作路径略有差异,请根据您电脑的实际路径操作)。
- 单击连接。
- (可选)输入AT+MESHMAC?命令,查看设备的MAC地址。
# +MESHMAC: 28:xx:xx:xx:xx:b2 OK
- 输入AT+FACTYTEST命令,进入产测模式。命令执行后返回以下结果。
# OK DUT Start
- 输入以下命令,烧录设备证书。
AT+TRITUPLE=<product id>,<Device Secret>,<Device Name>
说明- 该命令中product id、Device Secret、Device Name(即MAC),三者为添加设备中生成的设备证书。
- 在串口烧录工具中输入该命令后,还需要回车(CR)和换行(LF)。
命令执行后,返回以下结果。
55xxx10 aaded522xxxxxxxc88105d10e81d 28xxxxxxxb2 OK