找回密码
 立即注册

使用微信账号登录

只需一步,快速开始

查看: 8|回复: 0

[Nordic] 探索 OpenThread Command Line Interface 代码(1)

[复制链接]
连续签到天数:1天
签到总天数:8天
签到总奖励:36金币
发表于 7 小时前 | 显示全部楼层 |阅读模式
OpenThread 的协议栈是用 C++ 编写的。本文通过分析 nRF connect SDK 中的例程代码 OpenThread Command Line Interface,来分享一些 C++ 的基础知识。目的在帮助大家更好的理解 OpenThread 的源代码。
OpenThread Architectures
下面是 OpenThread 网络的描述,它有几个关特性:IPv6,低功耗,IEEE 802.15.4,mesh network
  • Thread® is an IPv6-based networking protocol designed for low-power Internet of Things devices
  • IEEE 802.15.4-2006 wireless mesh network, commonly called a Wireless Personal Area Network (WPAN)
OpenThread网络中的设备类型分为以下几种。CLI 例程中默认的设备类型是 FTD。
  • Full Thread Device (FTD) Router 是一种 FTD 设备。 Leader 是一个特殊的 Router, 它是整个 Thread 网络的中心,同一个网络中只能有一个 Leader。
  • Minimal Thread Device (MTD)
  • Minimal End Device (MED)
    • Sleepy End Device (SED)
    • Synchronized Sleepy End Device (SSED)

OpenThread stack architecture
nRF connect SDK 中 OpenThread 的代码框架如下图。PHY 层是 Nordic 提供的 IEEE 802.15.4 的驱动。中间层是 google 提供的 OpenThread 的 MAC 层和 网络层。上层有 Zephyr 提供的 BSD socket 接口和各种应用层网络协议。
下面是 OpenThread 的数据发送的流程图。后面我们会在 UDP 数据通讯演示部分具体分析。
OpneThread CLI Example
我们分析的代码位于 nRF connect SDK 2.6.0 的目录 nrf\samples\openthread\cli 下。它支持的开发板如下:
Hardware
Platforms         PCA                 Board name                      Build target



nRF5340 DK    PCA10095        nrf5340dk_nrf5340      nrf5340dk_nrf5340_cpuapp_ns
                                                                                      nrf5340dk_nrf5340_cpuapp



nRF52840        PCA10059     nrf52840dongle_nrf52840   nrf52840dongle_nrf52840
Dongle



nRF52840 DK   PCA10056      nrf52840dk_nrf52840           nrf52840dk_nrf52840



nRF21540 DK   PCA10112       nrf21540dk_nrf52840           nrf21540dk_nrf52840



这里我们选用 nRF52840 DK。我们可以通过下面的命令编译
west build -p -b nrf52840dk_nrf52840
编译结束后我们可以看到整个代码占用的 flash 和 RAM 的大小,如下图:
[td]

Memory region             Used Size              Region Size                      %age Used




FLASH                              463928 B                          1MB                     44.24%




RAM                                 104360 B                         256KB                    39.81%




IDT_LIST                                  0 GB                         32KB                       0.00%



下面的命令用来烧写代码
west flash
烧写完成后,连接串口终端。然后输入下面的指令启动 OpenThread 网络:
uart:~$ *** Booting nRF Connect SDK v3.5.99-ncs1 ***> ot channel 11ot channel 11Doneuart:~s> ot panid0 xabcoot panid OxabcdDoneuart:~$>ot networkkey 00112233445566778899aabbccddeeffot networkkey 00112233445566778899aabbccddeeffDoneuart:~$> ot ifconfig upot ifconfig upDoneuart:        ~$> ot thread startot thread startDoneuart:         ~$
当启动网络后,可以使用下面的命令来查看网络状态和IP地址。我们可以看到这台设备的角色是 leader。任何一台 FTD 都可以成为 leader. 当一台设备使能了 thread 网络后,它会首先试图加入一个已有的 Thread 网络。当搜索了一段时间,发现没有可加入的网络后,FTD 设备会构建一个 Thread 网络,自己成为 leader。一个设备可以有多个IP地址。
uart: ~$ ot stateot stateleaderDoneuart:~$ > ot ipaddrot ipaddrfdde: ad00: beef: 0: 0: ff: fe00: fc00fdde: ad00: beef: 0: 0: ff: fe00: 8c00fdde: ad00: beef: 0 : 8b97 : a8be: 52b3 : a367fe80: 0: 0: 0: a0cc: 601b: ea6b: 4ba1Doneuart:~$

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册  

×
楼主热帖
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

小黑屋|手机版|我爱蓝牙网 - 52Bluetooth

GMT+8, 2025-7-3 17:53 , Processed in 0.081566 second(s), 12 queries , Gzip On, MemCached On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表