1
介紹
接著本教程的上一篇文章:泰凌微電子Thread RCP和NCP方案介紹(一),本篇將演示使用LinuxBDT工具將OpenThread RCP和 NCP固件燒錄到 Telink B91 開發(fā)板,并且分別與樹莓派協(xié)同工作,創(chuàng)建和管理Thread網(wǎng)絡的所必須的步驟。
學習內(nèi)容
分別將OpenThread Co-Processor固件( ot-ncp-ftd 和 ot-rcp )燒錄到兩塊Telink B91開發(fā)板上。
在Raspberry Pi 3B+或更高版本上,使用Docker和RCP搭建OpenThread邊界路由器(OTBR)。
在Raspberry Pi 3B+或更高版本上,使用 Pyspinel 驗證NCP功能。
所需條件
硬件:
2塊B91開發(fā)套件。
1臺Raspberry Pi 3B+或更高版本,并安裝Raspbian操作系統(tǒng)映像。
1個已連接互聯(lián)網(wǎng)的交換機(或路由器)和若干條以太網(wǎng)電纜。
軟件:
Telink燒錄和調(diào)試工具 —— LinuxBDT。
其他工具,比如Git和West。
2
固件燒錄
泰凌LinuxBDT設置
下載Telink Linux BDT燒錄工具,并將其解壓到Linux主機的本地目錄,例如 ~,以允許用戶將固件燒錄到B91開發(fā)板。
$cd~ $wgethttp://wiki.telink-semi.cn/tools_and_sdk/Tools/BDT/LinuxBDT.tar.bz2 $tar-vxfLinuxBDT.tar.bz2
將BDT通過USB接口連接到Linux主機上,在命令行輸入如下指令。
$cdLinuxBDT $sudo./bdtlsusb-v Bus002Device001:ID1d6b:0003xHCIHostController Bus001Device003:ID0bda:565aIntegrated_Webcam_HD Bus001Device023:ID413c:301aDellMS116USBOpticalMouse Bus001Device037:ID248a:826aTelinkWebDebuggerv3.6 Bus001Device001:ID1d6b:0002xHCIHostController
能搜索到Telink Web Debugger v3.6,代表BDT燒錄器順利連接到Linux主機。
固件燒錄
如下圖所示,使用USB連接線將一塊Telink B91開發(fā)板連接到Telink燒錄板。
在命令行輸入如下指令(以燒錄ot-ncp-ftd固件為例)。
$cd~/zephyrproject/build_ot_ncp_ftd/zephyr $cpzephyr.bin~/LinuxBDT/bin/ot-ncp-ftd.bin $cd~/LinuxBDT $sudo./bdt9518ac ActivateOK! $sudo./bdt9518wf0-ibin/ot-ncp-ftd.bin EraseSectorsize... TotalTime:2181ms Flashwriting... [100%][-][##################################################] FileDownloadtoFlashataddress0x000000:491700bytes TotalTime:30087ms
ot-rcp 的燒錄方法和 ot-ncp-ftd 的基本一樣,不同之處在于固件名稱。燒錄完成后分別將兩塊B91開發(fā)板做好標記區(qū)分,燒錄 ot-ncp-ftd 的開發(fā)板標記為“NCP”,燒錄 ot-rcp 的開發(fā)板標記為“RCP”。
3
固件應用
本教程使用樹莓派來驗證RCP和NCP兩種固件功能。
樹莓派安裝Docker作為OTBR的Host端,驗證RCP功能。
樹莓派安裝并運行Pyspinel,驗證NCP功能。
樹莓派
1、確保寫入SD卡中的是Raspbian Bullseye Lite OS image或Raspbian Bullseye with Desktop。
2、您可以選擇通過SSH連接到樹莓派,也可以直接在Raspbian桌面上操作。本教程將使用SSH。
3、在下一步安裝OTBR Docker或Pyspinel之前,先更新本地代碼庫和軟件包管理器。
$sudoapt-getupdate $sudpapt-getupgrade
無線電協(xié)處理器(RCP)
ot-rcp固件的燒錄步驟參考ot-ncp-ftd燒錄過程,將B91開發(fā)板連接到樹莓派的USB端口上,連接方式如下圖所示。
安裝Docker
重新啟動樹莓派并打開一個SSH終端窗口。
1、安裝Docker。
$curl-sSLhttps://get.docker.com|sh
2、將當前用戶添加到Docker組中,授予權限,這樣在每個命令前都不需要加上sudo。
$sudousermod-aGdocker$USER
你需要重啟樹莓派來使改動生效。
3、若Docker尚未啟動,請將其啟動:
$sudodockerd
4、OTBR 防火墻腳本在 Docker 容器內(nèi)創(chuàng)建規(guī)則。運行 modprobe 以加載 iptables 的內(nèi)核模塊。
$sudomodprobeip6table_filter
配置并運行Docker
本教程直接從OpenThread Docker Hub拉取OTBR Docker鏡像,該鏡像已經(jīng)過OpenThread團隊的測試和驗證。
1、拉取鏡像:
$dockerpullopenthread/otbr:latest
2、查看Docker容器中的鏡像列表:
$dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE openthread/otbrlatestdb081f4de15f6daysago766MB
3、通過檢查 /dev 確定RCP設備的串行端口名稱, 出現(xiàn) ttyACM0表示RCP正確連接。
$ls/dev/tty* ... /dev/ttyACM0 ...
4、第一次運行OTBR Docker, 并引用RCP的串行端口(ttyACM0),此后若要繼續(xù)使用該OTBR Docker,請使用命令 docker start otbr。
$dockerrun--name"otbr"--sysctl"net.ipv6.conf.all.disable_ipv6=0net.ipv4.conf.all.forwarding=1net.ipv6.conf.all.forwarding=1"-p8080:80--dns=127.0.0.1-it--volume/dev/ttyACM0:/dev/ttyACM0--privilegedopenthread/otbr--radio-urlspinel+hdlc+uart:///dev/ttyACM0
5、新開一個SSH終端窗口,測試樹莓派和RCP的連通性,并建立Thread網(wǎng)絡。
$dockerexec-tiotbrsh-c"sudoot-ctl" >state disabled Done >panid0x1022 Done >ifconfigup Done >threadstart Done >state detached Done >state leader Done
可選用的Docker命令:
獲取正在運行的Docker容器信息:
$dockerps-aq
停止OTBR Docker:
$dockerstopotbr
移除OTBR Docker:
$dockerrmotbr
重新加載OTBR Docker:
$dockerrestartotbr
網(wǎng)絡協(xié)處理器(NCP)
關閉樹莓派,拔掉RCP。將NCP連接到樹莓派的USB端口上,再重新啟動樹莓派。連接方式如下圖。
安裝Pyspinel
在樹莓派上打開一個新的SSH終端窗口。
1、安裝依賴項:
$sudoaptinstallpython3-pip $pip3install--userpyserialipaddress
2、下載 pyspinel 的源碼到本地:
$gitclonehttps://github.com/openthread/pyspinel
3、安裝Pyspinel:
$cdpyspinel $sudopython3setup.pyinstall
驗證NCP功能
1、配置NCP連接。
$sudochmoda+rw/dev/ttyACM0
2、運行Pyspinel CLI。
$spinel-cli.py-u/dev/ttyACM0-n1 spinel-cli>
3、查詢NCP版本。
spinel-cli>version OPENTHREAD/aabbee49c;Zephyr;Aug1020231437 Done
4、建立Thread網(wǎng)絡。
spinel-cli>ifconfigup Done spinel-cli>threadstart Done spinel-cli>state detached Done spinel-cli>state leader Done
可以看到NCP已成為leader,Thread網(wǎng)絡被成功創(chuàng)建。
可選用的spinel-cli命令:
查看幫助菜單獲取可用命令。
spinel-cli>help Availablecommands(typehelpformoreinformation): ============================================================ bufferinfoextaddrncp-filterreleaserouterid channelextpanidncp-ll64reset childhncp-ml64rloc16 childmaxhelpncp-rawroute childtimeouthistoryncp-tunrouter clearifconfignetdatarouterdowngradethreshold commissioneripaddrnetworkidtimeoutrouterselectionjitter contextreusedelayjoinernetworkkeyrouterupgradethreshold counterskeysequencenetworknamescan debugleaderdatapanidstate debug-memleaderweightparentthread diagmacpingtxpower discovermacfilterprefixv eidcachemfgqvendor exitmodequitversion
4
總結(jié)
您現(xiàn)在已經(jīng)知道:
如何搭建并使用Telink Zephyr開發(fā)環(huán)境。
如何構建 ot-ncp-ftd 和 ot-rcp 兩種二進制文件并將其燒錄到B91開發(fā)板。
如何使用Docker和RCP將Raspberry Pi 3B+ 或更高版本設置為OpenThread邊界路由器(OTBR)。
在Raspberry Pi 3B+或更高版本上,使用 Pyspinel 驗證NCP功能。
由此可見,RCP和NCP方案都可以實現(xiàn)OTBR的功能。不過,從目前的社區(qū)的支持力度看,RCP更適合用于OTBR的開發(fā)。
5
深入閱讀
查看openthread.io和GitHub,了解各種OpenThread資源,包括:
Supported Platforms
https://openthread.io/platforms/
— discover all the platforms that support OpenThread
Build OpenThread
https://openthread.io/guides
— further details on building and configuring OpenThread
Thread Primer
https://openthread.io/guides/thread-primer
— covers all the Thread concepts featured in this codelab
參考文檔:
OpenThread Co-Processor Designs:
https://openthread.io/platforms/co-processor
OpenThread Pyspinel:
https://openthread.io/guides/pyspinel
OpenThread Border Router:
https://openthread.io/guides/border-router
關 于 泰 凌
泰凌微電子致力于為客戶提供一站式的低功耗高性能無線連接SoC芯片解決方案,包括經(jīng)典藍牙,藍牙低功耗,藍牙Mesh,Zigbee,Thread,Matter,Apple HomeKit,Apple“查找(Find My)”,和私有協(xié)議等低功耗2.4GHz多協(xié)議無線連接系統(tǒng)級芯片和豐富的固件協(xié)議棧。公司產(chǎn)品廣泛應用于智能照明,智能家居/樓宇,智能遙控,無線外設,智能零售,穿戴設備,無線音頻,智能玩具,物流追蹤,智慧城市等各類消費和商業(yè)應用場景中。
-
Linux
+關注
關注
87文章
11292瀏覽量
209328 -
NCP
+關注
關注
0文章
48瀏覽量
23811 -
RCP
+關注
關注
0文章
26瀏覽量
9036 -
樹莓派
+關注
關注
116文章
1706瀏覽量
105607 -
Thread
+關注
關注
2文章
83瀏覽量
25923 -
泰凌微
+關注
關注
7文章
147瀏覽量
10806
發(fā)布評論請先 登錄
相關推薦
評論