1
介绍
接着本教程的上一篇文章:泰凌微电子Thread RCP和NCP方案介绍(一),本篇将演示使用LinuxBDT工具将OpenThread RCP和 NCP固件烧录到 Telink B91 开发板,并且分别与树莓派协同工作,创建和管理Thread网络的所必须的步骤。
学习内容
分别将OpenThread Co-Processor固件( ot-ncp-ftd 和 ot-rcp )烧录到两块Telink B91开发板上。
在Raspberry Pi 3B+或更高版本上,使用Docker和RCP搭建OpenThread边界路由器(OTBR)。
在Raspberry Pi 3B+或更高版本上,使用 Pyspinel 验证NCP功能。
所需条件
硬件:
2块B91开发套件。
1台Raspberry Pi 3B+或更高版本,并安装Raspbian操作系统映像。
软件:
Telink烧录和调试工具 —— LinuxBDT。
其他工具,比如Git和West。
2
固件烧录
泰凌LinuxBDT设置
下载Telink Linux BDT烧录工具,并将其解压到Linux主机的本地目录,例如 ~,以允许用户将固件烧录到B91开发板。
$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开发板连接到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开发板做好标记区分,烧录 ot-ncp-ftd 的开发板标记为“NCP”,烧录 ot-rcp 的开发板标记为“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
无线电协处理器(RCP)
ot-rcp固件的烧录步骤参考ot-ncp-ftd烧录过程,将B91开发板连接到树莓派的USB端口上,连接方式如下图所示。
安装Docker
重新启动树莓派并打开一个SSH终端窗口。
1、安装Docker。
$curl-sSLhttps://get.docker.com|sh
2、将当前用户添加到Docker组中,授予权限,这样在每个命令前都不需要加上sudo。
$sudousermod-aGdocker$USER
你需要重启树莓派来使改动生效。
3、若Docker尚未启动,请将其启动:
$sudodockerd
4、OTBR 防火墙脚本在 Docker 容器内创建规则。运行 modprobe 以加载 iptables 的内核模块。
$sudomodprobeip6table_filter
配置并运行Docker
本教程直接从OpenThread Docker Hub拉取OTBR Docker镜像,该镜像已经过OpenThread团队的测试和验证。
1、拉取镜像:
$dockerpullopenthread/otbr:latest
2、查看Docker容器中的镜像列表:
$dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE openthread/otbrlatestdb081f4de15f6daysago766MB
3、通过检查 /dev 确定RCP设备的串行端口名称, 出现 ttyACM0表示RCP正确连接。
$ls/dev/tty* ... /dev/ttyACM0 ...
4、第一次运行OTBR Docker, 并引用RCP的串行端口(ttyACM0),此后若要继续使用该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网络。
$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
网络协处理器(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网络。
spinel-cli>ifconfigup Done spinel-cli>threadstart Done spinel-cli>state detached Done spinel-cli>state leader Done
可以看到NCP已成为leader,Thread网络被成功创建。
可选用的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
总结
您现在已经知道:
如何搭建并使用Telink Zephyr开发环境。
如何构建 ot-ncp-ftd 和 ot-rcp 两种二进制文件并将其烧录到B91开发板。
如何使用Docker和RCP将Raspberry Pi 3B+ 或更高版本设置为OpenThread边界路由器(OTBR)。
在Raspberry Pi 3B+或更高版本上,使用 Pyspinel 验证NCP功能。
由此可见,RCP和NCP方案都可以实现OTBR的功能。不过,从目前的社区的支持力度看,RCP更适合用于OTBR的开发。
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芯片解决方案,包括经典蓝牙,蓝牙低功耗,蓝牙Mesh,Zigbee,Thread,Matter,Apple HomeKit,Apple“查找(Find My)”,和私有协议等低功耗2.4GHz多协议无线连接系统级芯片和丰富的固件协议栈。公司产品广泛应用于智能照明,智能家居/楼宇,智能遥控,无线外设,智能零售,穿戴设备,无线音频,智能玩具,物流追踪,智慧城市等各类消费和商业应用场景中。
-
Linux
+关注
关注
87文章
11292浏览量
209318 -
NCP
+关注
关注
0文章
48浏览量
23811 -
RCP
+关注
关注
0文章
26浏览量
9035 -
树莓派
+关注
关注
116文章
1706浏览量
105606 -
Thread
+关注
关注
2文章
83浏览量
25923 -
泰凌微
+关注
关注
7文章
147浏览量
10806
发布评论请先 登录
相关推荐
评论