開發(fā)設(shè)備
生活物聯(lián)網(wǎng)平臺提供了已封裝設(shè)備端與物聯(lián)網(wǎng)平臺交互協(xié)議的SDK。您可以直接基于這些SDK開發(fā)真實設(shè)備的固件,從而使真實設(shè)備具備連接物聯(lián)網(wǎng)的能力。以基于AliOS Things的藍(lán)牙Mesh SDK(V1.2.6)調(diào)試TG7100B開發(fā)板為例,介紹設(shè)備固件的開發(fā)和燒錄操作。
前提條件
- 已完成開發(fā)環(huán)境的搭建和依賴包的安裝。詳細(xì)操作,請參見準(zhǔn)備工作。
- 已完成基于AliOS Things的藍(lán)牙Mesh SDK。具體操作,請參見獲取SDK。
準(zhǔn)備開發(fā)環(huán)境
- 搭建SDK的開發(fā)環(huán)境。
建議您在64位Ubuntu下搭建設(shè)備端SDK的開發(fā)環(huán)境,并使用vim編輯代碼。如果您是Windows10操作系統(tǒng)可以在應(yīng)用商店下載安裝Ubuntu 20.04 LTS,如果是其他操作系統(tǒng)可以安裝虛擬機(jī)軟件。該部分的操作請自行查閱網(wǎng)絡(luò)相關(guān)文檔完成。
- 安裝Ubuntu(版本20.04 X64)程序運行時庫。
請您按順序逐條執(zhí)行命令。
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(版本20.04 X64)依賴軟件包。
請您按順序逐條執(zhí)行命令。
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依賴包。
請您按順序逐條執(zhí)行命令。
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。如果在安裝過程中遇到網(wǎng)絡(luò)問題,可使用國內(nèi)鏡像文件。
### 安裝/升級 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
開發(fā)設(shè)備固件
- 下載設(shè)備端SDK代碼。藍(lán)牙Mesh SDK基于C語言開發(fā),目前該SDK僅對部分用戶開放,請參見獲取SDK頁面申請權(quán)限。
- 將下載的ZIP包上傳至開發(fā)環(huán)境中,并解壓ZIP包。
- 在SDK根目錄,執(zhí)行編譯命令。
本文檔以在TG7100B開發(fā)板上編譯light_ctl程序為例,選擇以下任一命令執(zhí)行即可。
./build.sh bluetooth.light_ctl tg7100b 1
aos make bluetooth.light_ctl@tg7100b
出現(xiàn)以下提示時,則編譯成功。
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
- 查看編譯結(jié)果。編譯成功后,在out/bluetooth.light_ctl@tg7100b/binary目錄下會生成total_image.hexf文件。該文件為需要燒錄到設(shè)備中的固件。fota.bin為可用于OTA升級的固件。
燒錄固件
- 使用USB線將TG7100B開發(fā)板與電腦連接,并打開燒寫工具TG71XX Programmer.exe。如果您的電腦沒有安裝硬件驅(qū)動,則還需要按照提示完成驅(qū)動的安裝。
- 選中右上角的UART Setting復(fù)選框,并如下圖所示設(shè)置開發(fā)板串口的各參數(shù)。
驅(qū)動安裝成功后,TG71XX Programmer.exe工具可自動識別您的串口號,示例中為COM3。
- 單擊Connect。此時,Log區(qū)域出現(xiàn)以下日志。
******************************* Current port: COM3 Current baudrate: 115200 Current stopBits: 1 Current parity: No Serial opened!! *******************************
- 選擇 ,雙擊空白處(圖中③所示),上傳待燒錄的文件。
- 在左下方Single頁簽中,從TYPE列表中選擇MAC,并配置MAC地址。
MAC地址需配置為設(shè)備的DeviceName。詳細(xì)請參見添加設(shè)備。
- 確認(rèn)TG7100B開發(fā)板的撥碼開關(guān)已置于VDD(圖①所示),并按reset鍵(圖②所示)復(fù)位硬件。
此時,Log區(qū)域打印出以下日志內(nèi)容。
UART RX : cmd>>:
- 單擊Flash_writer頁簽頂部的Erase,擦除固件Flash。
Log區(qū)域打印出以下日志內(nèi)容,則擦除成功。
Send erase successfully! Receive #OK! Erase successfully!
- 單擊Flash_writer頁簽頂部的Write,燒寫固件。
Log區(qū)域打印出以下日志內(nèi)容,則固件燒寫成功。
============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!
燒錄設(shè)備證書
- 斷開燒寫工具TG71XX Programmer.exe,并將開發(fā)板的撥碼開關(guān)置于GND,并按下開發(fā)板上的reset鍵。
- 打開串口調(diào)試工具SecureCRT,選擇 ,并如下圖所示設(shè)置開發(fā)板串口的各參數(shù)。說明 其中端口號與TG71XX Programmer.exe工具自動識別的串口號一致。您也可以右擊我的電腦,選擇來查看(不同系統(tǒng)下打開設(shè)備管理器的操作路徑略有差異,請根據(jù)您電腦的實際路徑操作)。
- 單擊連接。
- (可選)輸入AT+MESHMAC?命令,查看設(shè)備的MAC地址。
# +MESHMAC: 28:xx:xx:xx:xx:b2 OK
- 輸入AT+FACTYTEST命令,進(jìn)入產(chǎn)測模式。命令執(zhí)行后返回以下結(jié)果。
# OK DUT Start
- 輸入以下命令,燒錄設(shè)備證書。
AT+TRITUPLE=<product id>,<Device Secret>,<Device Name>
說明- 該命令中product id、Device Secret、Device Name(即MAC),三者為添加設(shè)備中生成的設(shè)備證書。
- 在串口燒錄工具中輸入該命令后,還需要回車(CR)和換行(LF)。
命令執(zhí)行后,返回以下結(jié)果。
55xxx10 aaded522xxxxxxxc88105d10e81d 28xxxxxxxb2 OK